{"version":3,"file":"chunk-hfs3v8fu.js","sources":["packages/sports/libs/common/client-config-data-access/src/lib/client-config.g.ts","packages/sports/web/app/src/store-persist/state-converter.service.ts","packages/sports/web/app/src/ngrx-reports/services/ngrx-reports.service.ts","packages/sports/web/app/src/highlights-marquee/marquee-tile.model.ts","node_modules/decimal.js/decimal.mjs","packages/sports/libs/odds/feature/converters/src/american-odds-converters.ts","packages/sports/libs/odds/feature/native-price/src/native-fraction.ts","packages/sports/libs/odds/feature/native-price/src/native-price.ts","packages/sports/libs/user/feature/src/services/user.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/helpers/tennis-points-visibility.service.ts","packages/sports/libs/common/core/utils/date/src/lib/date-time.models.ts","packages/sports/libs/common/core/utils/date/src/lib/date-provider.service.ts","packages/sports/libs/common/core/feature/date-time-parser/src/date-time-parser.service.ts","packages/sports/libs/common/core/utils/string/src/lib/string.utils.ts","packages/sports/libs/common/core/data-access/constants/src/lib/app.constants.ts","packages/sports/libs/betting-offer/feature/model/src/scoreboard.model.ts","packages/sports/libs/common/core/feature/date-formatter-service/src/date-formatter.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/american-football-scoreboard.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/baseball-scoreboard.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/message-parser.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/scoreboard-factory.service.ts","packages/sports/libs/common/core/utils/preloaded-data/src/lib/preloaded-data.decorator.ts","packages/sports/libs/betting-offer/feature/model/src/eventid-parser.ts","packages/sports/libs/betting-offer/feature/model/src/event.model.ts","packages/sports/libs/common/core/utils/expiring-cache/src/lib/expiring-cache.ts","packages/sports/libs/common/core/utils/expiring-cache/src/lib/expiring-cache.factory.ts","packages/sports/libs/common/core/utils/cookie-provider/src/cookie-provider.service.ts","packages/sports/libs/common/api-utils/src/lib/api.service.ts","packages/sports/libs/customer-dna/data-access/src/customer-dna-profile-provider.service.ts","packages/sports/libs/content-distribution/feature/src/api-settings.service.ts","packages/sports/libs/common/core/feature/logging/src/lib/sports-remote-logger.service.ts","packages/sports/libs/common/core/feature/logging/src/lib/debug-logger.service.ts","packages/sports/libs/common/core/feature/logging/src/lib/logger-factory.service.ts","packages/sports/libs/content-distribution/feature/src/url.utils.ts","packages/sports/libs/content-distribution/feature/src/cds-api.service.ts","packages/sports/libs/content-distribution/feature/src/cds-api.service.factory.ts","packages/sports/libs/host-app/sports-product/feature/non-root-token/src/dynamic-injector.provider.ts","packages/sports/libs/host-app/sports-product/feature/non-root-token/src/non-root-token.ts","packages/sports/libs/common/core/utils/extended-types/src/lib/extended-types.ts","packages/sports/libs/betting-offer/feature/types/src/cds/angstrom-tag-values.ts","packages/sports/libs/betting-offer/feature/model/src/tv2.model.ts","packages/sports/libs/betting-offer/feature/offer-grouping/src/offer-grouping-api.service.ts","packages/sports/libs/betting-offer/feature/offer-grouping/src/offer-grouping.service.ts","packages/sports/libs/betting-offer/feature/types/src/cds/market-parameter.models.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/detailed-grouping.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/helpers/event-mapper.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/common-fixture.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/helpers/option-sorting.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/helpers/participant-image.helper.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/common-market.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/sports-market-grouping-fallback.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/event-sitemap-grouping.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/detailed-fixture-market.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/linked-fixture.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/detailed-create.factory.ts","packages/sports/web/app/src/event-model/helpers/option-group.service.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/fixture-market.factory.ts","packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/fixture.factory.ts","packages/sports/libs/racing/feature/models/src/win-game-fixture.ts","packages/sports/web/app/src/highlights-marquee/marquee-competitiontiles.service.ts","packages/sports/web/app/src/highlights-marquee/marquee-tile.service.ts","packages/sports/web/app/src/highlights-marquee/marquee-tile.factory.ts","packages/sports/web/app/src/highlights-marquee/marquee-response-mapper.service.ts","packages/sports/libs/common/core/feature/money/src/lib/money.service.ts","packages/sports/web/app/src/crm-offer-data/crm-offer.model.ts","packages/sports/web/app/src/crm-promotion/crm-promotion-replace-parameters.service.ts","packages/sports/web/app/src/crm-promotion/crm-promotion.factory.ts","packages/sports/web/app/src/tokens-base/token-base.models.ts","node_modules/cds-client/dist/models.js","node_modules/@microsoft/signalr/dist/esm/Errors.js","node_modules/@microsoft/signalr/dist/esm/HttpClient.js","node_modules/@microsoft/signalr/dist/esm/ILogger.js","node_modules/@microsoft/signalr/dist/esm/Loggers.js","node_modules/@microsoft/signalr/dist/esm/Utils.js","node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","node_modules/@microsoft/signalr/dist/esm/Subject.js","node_modules/@microsoft/signalr/dist/esm/HubConnection.js","node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","node_modules/@microsoft/signalr/src/HeaderNames.ts","node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","node_modules/@microsoft/signalr/dist/esm/ITransport.js","node_modules/@microsoft/signalr/dist/esm/AbortController.js","node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","node_modules/@microsoft/signalr/dist/esm/index.js","node_modules/cds-client/dist/utils.js","node_modules/cds-client/dist/subscription.js","node_modules/cds-client/dist/subscription-store.js","node_modules/cds-client/dist/logger.js","node_modules/cds-client/dist/client-connector.js","node_modules/cds-client/dist/index.js","packages/sports/libs/content-distribution/feature/src/cds-push.provider.ts","packages/sports/libs/common/core/feature/logging/src/lib/base-custom-logger.service.ts","packages/sports/libs/content-distribution/feature/src/eps-push-logger.service.ts","packages/sports/libs/content-distribution/feature/src/cds-push.service.ts","packages/sports/libs/common/core/utils/timer/src/lib/timer.service.ts","packages/sports/libs/host-app/sports-product/feature/sports-product-service/src/sports-product-service.ts","packages/sports/libs/host-app/sports-product/feature/utils/src/app-injector.ts","packages/sports/libs/host-app/sports-product/feature/utils/src/product-context-utils.ts","packages/sports/web/app/src/crm-offer-data/crm-offer-loader-request-params-base.service.ts","packages/sports/web/app/src/crm-offer-data/crm-offer-loader.service.ts","packages/sports/web/app/src/crm-promotion/cds-subscription.service.ts","packages/sports/web/app/src/crm-promotion/crm-promotion-provider.service.ts","packages/sports/web/app/src/highlights-marquee/marquee-widget-data.service.ts","node_modules/@ngrx/store/fesm2022/ngrx-store.mjs","packages/sports/libs/common/core/utils/redux/src/lib/redux-helpers.ts","packages/sports/web/app/src/media/actions.ts","packages/sports/web/app/src/perf-cdk/main-content-loaded.service.ts","packages/sports/web/app/src/widget/core/widget-page.service.ts","packages/sports/web/app/src/widget/core/widget-loader.service.ts","packages/sports/web/app/src/perf-cdk/run-after-lcp.service.ts","packages/sports/libs/common/core/utils/date/src/lib/date.utils.ts","packages/sports/libs/common/core/data-access/sport-model/src/lib/sport.model.ts","packages/sports/libs/betting-offer/feature/offer-service/src/betting-offer-api.service.ts","packages/sports/web/app/src/calendar/count-interval.service.ts","packages/sports/libs/common/core/utils/translations/src/lib/translation-helper.ts","packages/sports/libs/navigation/core/feature/url-builder/src/url-builder.ts","packages/sports/libs/racing/feature/models/src/racing.model.ts","packages/sports/web/app/src/navigation-core/url-helper.service.ts","packages/sports/web/app/src/calendar/model.ts","packages/sports/web/app/src/calendar/calendar-interval.service.ts","packages/sports/web/app/src/calendar/calendar.service.ts","packages/sports/web/app/src/cds/cds-masterdata-api.service.ts","packages/sports/web/app/src/client-caching/sports-cache.service.ts","packages/sports/libs/common/core/data-access/route/src/lib/route.models.ts","packages/sports/web/app/src/schema-markup/schema-markup-enum.ts","packages/sports/web/app/src/schema-markup/schema-markup.models.ts","packages/sports/web/app/src/schema-markup/schema-markup.service.ts","packages/sports/web/app/src/widget/core/widget.constants.ts","packages/sports/web/app/src/event-list-shared/sport/competitions/competition-id.service.ts","packages/sports/web/app/src/widget/common/widget-context-enhance.service.ts","packages/sports/web/app/src/widget/common/widget-context.service.ts","packages/sports/web/app/src/widget/common/widget-schema-markup.resolver.ts","packages/sports/web/app/src/widget/common/widget.resolver.ts","packages/sports/web/app/src/router/no-match-route.guard.ts","packages/sports/web/app/src/seo/seo-logger.service.ts","packages/sports/web/app/src/seo/seo-redirect.guard.ts","packages/sports/web/app/src/calendar/calendar.resolver.ts","packages/sports/web/app/src/deferred/styles/style-loading.service.ts","packages/sports/libs/common/core/utils/dispatcher/src/lib/dispatcher.service.ts","packages/sports/web/app/src/deferred/component-loader.service.ts","packages/sports/web/app/src/deferred/module-loader.service.ts","packages/vanilla/lib/features/page-visibility/src/page-visibility.service.ts","packages/sports/web/app/src/arc/arc.model.ts","packages/sports/web/app/src/arc/arc-restriction.service.ts","packages/sports/web/app/src/layout/layout.model.ts","packages/sports/web/app/src/layout/adaptive-layout.service.ts","packages/sports/web/app/src/layout/column-measurement.ts","packages/sports/web/app/src/layout/footer-measurement.ts","packages/sports/web/app/src/layout/column-layout.service.ts","packages/sports/libs/tracking/feature/src/tracking.models.ts","packages/sports/libs/tracking/feature/src/tracking.service.ts","packages/sports/web/app/src/native-api/external-native-app.service.ts","packages/sports/web/app/src/event-details/event-switcher-component-loader.service.ts","packages/sports/web/app/src/layout/column-register.service.ts","packages/sports/web/app/src/my-bets/my-bets-component-loader.service.ts","packages/sports/web/app/src/my-bets-base/summary-api.service.ts","packages/sports/web/app/src/my-bets-base/my-bets-summary.service.ts","packages/sports/libs/common/core/utils/dispatcher/src/lib/dispatcher.models.ts","packages/vanilla/lib/shared/login/src/workflow.service.ts","packages/vanilla/lib/shared/login/src/login.client-config.ts","packages/vanilla/lib/shared/login/src/login.service.ts","packages/vanilla/lib/shared/crypto/src/crypto-resource.service.ts","packages/vanilla/lib/shared/crypto/src/crypto.service.ts","packages/vanilla/lib/shared/login-providers/src/base-login-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/apple-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/facebook-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/google-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/login-providers.service.ts","packages/sports/web/app/src/navigation-core/navigation-helper.service.ts","packages/sports/web/app/src/navigation-core/redirect-helper.service.ts","packages/sports/libs/common/core/utils/router-events/src/lib/router-events.service.ts","packages/sports/libs/common/core/feature/scroll-freeze/src/lib/scroll-freeze.service.ts","packages/sports/libs/common/core/utils/dom/src/lib/mutation-observer.service.ts","packages/sports/libs/automation/core-feature/src/lib/automation.service.ts","packages/sports/libs/automation/core-feature/src/lib/automation.directive.ts","packages/sports/libs/automation/core-feature/src/lib/automation.module.ts","node_modules/hammerjs/hammer.js","packages/sports/libs/common/core/utils/window-event/src/window-event.service.ts","packages/sports/libs/common/core/utils/scroll-container/src/scroll-container.service.ts","packages/sports/libs/common/core/utils/deferred/src/lib/deferred.ts","packages/sports/libs/modal/feature/src/common/modal-ref.ts"],"sourcesContent":["// Autogenerated by namespace Frontend.Sports.ContractsBuilder\n\nimport { Injectable } from '@angular/core';\nimport { ClientConfig, ClientConfigProductName, ClientConfigService, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\nimport { AccaBoostCalculations } from '@frontend/sports/types/components/acca-boost';\nimport { ProfileActionsSwitch, ProfileConfiguration } from '@frontend/sports/types/components/a-r-c';\nimport { AZSportsViewModel } from '@frontend/sports/types/components/a-z-menu';\nimport { GamesBannersConfig, JackpotBannersConfig, VirtualsBannersConfig } from '@frontend/sports/types/components/banners';\nimport { BetBuilderAmbassador, IframeUrlParams, ScorecastLongIdPrefixes } from '@frontend/sports/types/components/bet-builder';\nimport { FixtureLimitByMarketType } from '@frontend/sports/types/components/bet-finder';\nimport { BetslipDisplayMode } from '@frontend/sports/types/components/bet-placement';\nimport { SportSpecificPitchStyling } from '@frontend/sports/types/components/betradar-visualization';\nimport { OptionNameMappingConfiguration, OptionNameOverridesViewModel, TranslationsModel } from '@frontend/sports/types/components/bet-recommender';\nimport { BetslipOddsPreferencesReminderConfiguration } from '@frontend/sports/types/components/betslip-odds-preferences-reminder';\nimport { BetslipUpsellMarketsGroup } from '@frontend/sports/types/components/betslip-upsell';\nimport { CalendarModel } from '@frontend/sports/types/components/calendar';\nimport { LinkTemplateForClient } from '@frontend/sports/types/components/client-content';\nimport { AutomatedMarqueeTile, AutomatedMarqueeTileImage, BetBuilderCustomMessage, BetBuilderThemedTab, MarqueeTile } from '@frontend/sports/types/components/content';\nimport { CrmTokenConfig } from '@frontend/sports/types/components/crm-offers';\nimport { CrmPostBetSignpostingConfiguration } from '@frontend/sports/types/components/crm-post-bet-signposting';\nimport { CrmPromotionConfiguration } from '@frontend/sports/types/components/crm-promotions';\nimport { IconInfo } from '@frontend/sports/types/components/event-details';\nimport { EventDetailsSitemapDictionary } from '@frontend/sports/types/components/event-details/types';\nimport { DisabledNotificationSport, GreyhoundsRacingEasyBetViewOption, HorseRacingEasyBetViewOption } from '@frontend/sports/types/components/features';\nimport { CoordinatorSettings, InstallerSettings } from '@frontend/sports/types/components/geolocation';\nimport { MapMarketToGameTemplateIds, MarqueeGroupsOfMarkets, SixPackGridGroupMapping } from '@frontend/sports/types/components/highlights-marquee';\nimport { ImageCompressionFormat, SportCompetitionFormat } from '@frontend/sports/types/components/images';\nimport { HeadlineModel } from '@frontend/sports/types/components/intro-pages';\nimport { MarketingViewModel } from '@frontend/sports/types/components/marketing';\nimport { MatchSimulationConfiguration } from '@frontend/sports/types/components/media';\nimport { MarketGridGroup } from '@frontend/sports/types/components/multi-builder';\nimport { IExportButtonType } from '@frontend/sports/types/components/my-bets';\nimport { SportConfiguration } from '@frontend/sports/types/components/native-alert';\nimport { NextToGoGroupsOfMarkets, NextToGoModule } from '@frontend/sports/types/components/next-to-go';\nimport { OddsDisplayConfiguration } from '@frontend/sports/types/components/odds-display';\nimport { ParticipantImageFormat } from '@frontend/sports/types/components/outrights-grid';\nimport { PopularBetsPodTypes } from '@frontend/sports/types/components/popular-bets';\nimport { QuickLinkViewModel } from '@frontend/sports/types/components/quick-links';\nimport { MarketMappingConfiguration, RandomMultiGeneratorSportsConfig, RandomMultiGeneratorSportsSelection } from '@frontend/sports/types/components/random-multi-generator';\nimport { BackgroundImage, ShowcaseGroupsOfMarkets, ShowcaseViewModel } from '@frontend/sports/types/components/showcase';\nimport { BetBuilder, BetBuilderEntainUI, BetBuilderHelpPage, BetBuilderSignposting, BetFinder, Betslip, BetslipSettings, BetslipUpsell, BetStation, BettingPreferences, CashoutSettings, ContentMessages, Coupons, CouponTags, CrmPostBetSignposting, CrmPromotions, CrmPromotionsBanners, CrmTokens, EarlyPayout, EarlyPayoutErrors, EarlyPayoutSettings, EarlyPayoutV2, ESportsConfig, Event, EventGameNotes, EventGrid, EventGridMarketHeaders, EventScoreboard, FavouritesDashboard, FavouritesMessages, Fixture, FormCoupon, FreeBetOverview, GeoLocation, GlobalMessages, GreyHoundRacing, HorseRacing, LinkExternalAccounts, LiveAnimation, LiveNavigation, LiveSportsVisualizationTranslation, Lobby, MarketHelp, MarketSubtypeLogo, Marquee, Media, Media_NotLoggedin, Menus, ModalDialogs, MultiBuilder, MultiRandomGenerator, MyBets, MyBetsFilterView, MyBetsPrint, NativeAlert, NgrxReports, OddsDisplay, PanicButtonMessages, PopularBetsMessagesConfig, QuickBet, QuickBetButtonStates, QuickBetHelp, QuickBetMessages, QuickBetModalDialog, QuickBetNumpad, ReBet, ReturnsMessage, Seo, ShareMyBet, ShowcaseMessages, SitecoreAccaBoost, SitecoreStatistics, StakeChanges, SystemBets, TeamGrouping, ToastLiveNotifications, ToastNotifications, Widgets } from '@frontend/sports/types/components/sitecore';\nimport { SportOfferOrder, VirtualSportsConfiguration } from '@frontend/sports/types/components/sports';\nimport { AllSportsSection, PopularSection, RecentlyVisitedSection } from '@frontend/sports/types/components/sports-product-menu';\nimport { CompetitionRecordsFormat, DirectMatchesBarColors, PromotionHighlightColorsWithPositions } from '@frontend/sports/types/components/statistics';\nimport { TeamPagesViewModel } from '@frontend/sports/types/components/team-pages';\nimport { TeaserBetPointsSlider, TeaserBetTemplateIds, TeaserPriceTableCacheDuration } from '@frontend/sports/types/components/teaser-bet';\nimport { Tournament } from '@frontend/sports/types/components/tournaments';\nimport { PageRefreshConfig, Widget } from '@frontend/sports/types/components/widget';\nimport { LinkListLayout } from '@frontend/sports/types/components/widget/types';\nimport { CultureUrl } from '@frontend/sports/types/components/world-cup-event-hub';\nimport { EventCarouselVisibilityConfig, MarketGroupsWithNewBadge, MarketSwitcherPositionType, OptionGroupRowsThreshold, OptionPanelThreshold, OptionTypesToFilterTV2MarketOptions, OverrideParticipantNameOptionMarkets, PrimaryNavigationDisplayType, ScorecastRegexValues, VerticalGridGroupOption } from '@frontend/sports/types/configuration';\nimport { BogVersion, EventDetailsModel, SecondaryBroadcastInfo, TokenCardDetailsMessages, TokenCardDetailsReplaceParameters, TrapImage } from '@frontend/sports/types/configuration/client-configuration';\nimport { BetradarImage } from '@frontend/sports/types/models/bet-radar';\nimport { ConfigSettings } from '@frontend/sports/types/models/config-settings';\nimport { CRMTokenImage } from '@frontend/sports/types/models/crm-tokens';\nimport { CdnaUserProfile } from '@frontend/sports/types/models/customer-dna';\nimport { EarlyPayoutPushErrorItem } from '@frontend/sports/types/models/early-payout';\nimport { MyBetsGridScoreBoardConfigResponse, MyBetsImage } from '@frontend/sports/types/models/my-bets';\nimport { NavigationBarItem, NavigationSportsConfig } from '@frontend/sports/types/models/navigation-bar';\nimport { PopularBetsFallbackLogoModel } from '@frontend/sports/types/models/popular-bets';\nimport { PopularSearchModel } from '@frontend/sports/types/models/popular-search';\nimport { ScoreboardBackground, ScoreboardBackgroundModel } from '@frontend/sports/types/models/scoreboard';\nimport { OddsDisplayFormat, UserSettingsData } from '@frontend/sports/types/models/user-settings';\nimport { ClientViewTemplate } from '@frontend/vanilla/content/client/documents';\n\n@ClientConfig({ key:'msAccaBoost' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: accaBoostConfigFactory,\n})\nexport class AccaBoostConfig {\n\taccaBoostCalculation: AccaBoostCalculations;\n\taccaBoostInfoVersion: string;\n\tallowUnAuthenticatedUsers: boolean;\n\tareNotificationsEnabled: boolean;\n\terrorNotificationDuration: number;\n\thideCategoriesInTokenDrawer: boolean;\n\ticon: string;\n\tisCompactLadderEnabled: boolean;\n\tisEnabled: boolean;\n\tisEnhancedLayoutEnabled: boolean;\n\tmaxRewardNotificationDuration: number;\n\tnotificationDuration: number;\n\toneSelectionAwayNotificationDuration: number;\n\tpollingInterval: number;\n\tsitecoreTokenDataCacheTime: number;\n}\n\nexport function accaBoostConfigFactory(service: ClientConfigService): AccaBoostConfig {\n\treturn service.get(AccaBoostConfig);\n}\n\n@ClientConfig({ key:'msAccountBalance' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: accountBalanceConfigFactory,\n})\nexport class AccountBalanceConfig {\n\tretry: number;\n\tretryDelay: number;\n\ttimeout: number;\n}\n\nexport function accountBalanceConfigFactory(service: ClientConfigService): AccountBalanceConfig {\n\treturn service.get(AccountBalanceConfig);\n}\n\n@LazyClientConfig({ key:'msAnimationBackgrounds' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: animationBackgroundsFactory,\n})\nexport class AnimationBackgrounds extends LazyClientConfigBase {\n\tbackgrounds: ScoreboardBackground[];\n}\n\nexport function animationBackgroundsFactory(service: LazyClientConfigService): AnimationBackgrounds {\n\treturn service.get(AnimationBackgrounds);\n}\n\n@ClientConfig({ key:'msAnimation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: animationConfigFactory,\n})\nexport class AnimationConfig {\n\tisBasketballAnimationEnabled: boolean;\n\tisIceHockeyAnimationEnabled: boolean;\n\tisTennisAnimationEnabled: boolean;\n}\n\nexport function animationConfigFactory(service: ClientConfigService): AnimationConfig {\n\treturn service.get(AnimationConfig);\n}\n\n@ClientConfig({ key:'msApp' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: appConfigFactory,\n})\nexport class AppConfig {\n\tappName: string;\n\tlcpFallbackTimeout: number;\n\tmodalDialogGesturesEnabled: boolean;\n\tofflineDurationReloadThreshold: number;\n\tpageHiddenReloadThreshold: number;\n\tpublicAccessId?: string;\n\tsetAccountIdCookie: boolean;\n\tviewTransitionsDirectionalityEnabled: boolean;\n\tviewTransitionsEnabled: boolean;\n\tviewTransitionsNativeTransitionSkippingEnabled: boolean;\n}\n\nexport function appConfigFactory(service: ClientConfigService): AppConfig {\n\treturn service.get(AppConfig);\n}\n\n@ClientConfig({ key:'msARC' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: aRCConfigFactory,\n})\nexport class ARCConfig {\n\tisPlayBreakEnabled: boolean;\n\tisUserProfilingEnabled: boolean;\n\tpageHiddenReloadThreshold: number;\n\tprofileActionsSwitch: ProfileActionsSwitch;\n\tprofileConfiguration: ProfileConfiguration[];\n\tshowSelfExclusionLock: boolean;\n}\n\nexport function aRCConfigFactory(service: ClientConfigService): ARCConfig {\n\treturn service.get(ARCConfig);\n}\n\n@ClientConfig({ key:'msArcUser' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: arcUserConfigFactory,\n})\nexport class ArcUserConfig {\n\tarcPlayBreak: boolean;\n\tarcProfileDetails: ProfileConfiguration;\n}\n\nexport function arcUserConfigFactory(service: ClientConfigService): ArcUserConfig {\n\treturn service.get(ArcUserConfig);\n}\n\n@ClientConfig({ key:'msAutomatedMarqueeTiles' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: automatedMarqueeTilesConfigFactory,\n})\nexport class AutomatedMarqueeTilesConfig {\n\tautomatedMarqueesTileImages: AutomatedMarqueeTileImage[];\n\tautomatedMarqueesTiles: AutomatedMarqueeTile[];\n}\n\nexport function automatedMarqueeTilesConfigFactory(service: ClientConfigService): AutomatedMarqueeTilesConfig {\n\treturn service.get(AutomatedMarqueeTilesConfig);\n}\n\n@ClientConfig({ key:'msAZMenu' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: aZMenuConfigFactory,\n})\nexport class AZMenuConfig {\n\tremoveLetterBreakersInMobile: boolean;\n\tshowAZCustomLinks: boolean;\n\tshowNewBadge: boolean;\n}\n\nexport function aZMenuConfigFactory(service: ClientConfigService): AZMenuConfig {\n\treturn service.get(AZMenuConfig);\n}\n\n@ClientConfig({ key:'msAZSportsData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: aZSportsDataModelFactory,\n})\nexport class AZSportsDataModel {\n\tazSports: AZSportsViewModel[];\n}\n\nexport function aZSportsDataModelFactory(service: ClientConfigService): AZSportsDataModel {\n\treturn service.get(AZSportsDataModel);\n}\n\n@ClientConfig({ key:'msBanners' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: bannersConfigFactory,\n})\nexport class BannersConfig {\n\tappendSessionKey: boolean;\n\tdepositUrl: string;\n\tdesktopCasinoBannerOpenTarget: string;\n\tenabled: boolean;\n\tgames: GamesBannersConfig;\n\tisKYCCheckEnabled: boolean;\n\tjackpot: JackpotBannersConfig;\n\tkeepAliveUrl: string;\n\tlobbyType: string;\n\tparentUrl: string;\n\tresponsibleGamingUrl: string;\n\tshowLearnMoreButton: boolean;\n\tvirtuals: VirtualsBannersConfig;\n}\n\nexport function bannersConfigFactory(service: ClientConfigService): BannersConfig {\n\treturn service.get(BannersConfig);\n}\n\n@ClientConfig({ key:'msBaseTranslation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: baseTranslationConfigFactory,\n})\nexport class BaseTranslationConfig {\n\tdefaultLanguage: string;\n\tisEnabled: boolean;\n}\n\nexport function baseTranslationConfigFactory(service: ClientConfigService): BaseTranslationConfig {\n\treturn service.get(BaseTranslationConfig);\n}\n\n@ClientConfig({ key:'msBetBuilder' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betBuilderConfigFactory,\n})\nexport class BetBuilderConfig {\n\tambassadors: BetBuilderAmbassador[];\n\tbetFeedbackRetryCount: number;\n\tbetFeedbackRetryDelay: number;\n\tbetGeniusIframeUrlParameters?: {[key: string]: IframeUrlParams;};\n\tbetGeniusWidgetLanguage: string;\n\tcustomMessages: {[key: string]: BetBuilderCustomMessage[];};\n\tdefaultSGPExpandedMarketsCount: number;\n\tdefaultSGPOverlayExpandedMarketsCount: number;\n\teditIconButtonOverride: boolean;\n\tenablePrecreatedBetBuilderTab: boolean;\n\thideBetbuilderDrawer: boolean;\n\tincrementForPrecreatedMarketsShowMore: number;\n\tinitialPrecreatedMarketsPerSport: number;\n\tisBetBuilderEnabled: boolean;\n\tisBetBuilderEnabledForSport?: number[];\n\tisBetBuilderInfoMessageEnabled: boolean;\n\tisBetBuilderNewBadgeEnabledForSport?: number[];\n\tisPrecreatedBetBuilderBadgeEnabled: boolean;\n\tisPrecreatedBetBuilderEnabled: boolean;\n\tisPrecreatedBetBuilderNewBadgeEnabledForSport?: number[];\n\tmaxSelectionsPerPick: number;\n\tonboardingMessageEnabledSports?: number[];\n\tonboardingMessageMaxAppearances: number;\n\tpageSize: number;\n\tscorecastLongIdPrefixes?: ScorecastLongIdPrefixes;\n\tshowEntainUiInOverlay: boolean;\n\tthemedTabs: {[key: string]: BetBuilderThemedTab[];};\n\tuseBetBuilderInEntainUI?: number[];\n}\n\nexport function betBuilderConfigFactory(service: ClientConfigService): BetBuilderConfig {\n\treturn service.get(BetBuilderConfig);\n}\n\n@ClientConfig({ key:'msBetContextualTracking' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betContextualTrackingConfigFactory,\n})\nexport class BetContextualTrackingConfig {\n\tallowedPages: string[];\n\tisEnabled: boolean;\n}\n\nexport function betContextualTrackingConfigFactory(service: ClientConfigService): BetContextualTrackingConfig {\n\treturn service.get(BetContextualTrackingConfig);\n}\n\n@ClientConfig({ key:'msBetFinder' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betFinderConfigFactory,\n})\nexport class BetFinderConfig {\n\tfixtureLimitByMarketType: FixtureLimitByMarketType;\n\tloaderTimeDelay: number;\n\tmaxEventsAmount: number;\n\tmaxNumberOfRecentlySearchItems: number;\n\tmaxRecentSearchCount: number;\n\tminSearchStringLength: number;\n\tpopupHeaderOverride: boolean;\n\trecentlySearchedExpirationDays: number;\n\tshowLoader: boolean;\n}\n\nexport function betFinderConfigFactory(service: ClientConfigService): BetFinderConfig {\n\treturn service.get(BetFinderConfig);\n}\n\n@ClientConfig({ key:'msBetradarImages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betradarImagesFactory,\n})\nexport class BetradarImages {\n\timages: BetradarImage[];\n}\n\nexport function betradarImagesFactory(service: ClientConfigService): BetradarImages {\n\treturn service.get(BetradarImages);\n}\n\n@ClientConfig({ key:'msBetradarVisualization' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betradarVisualizationConfigFactory,\n})\nexport class BetradarVisualizationConfig {\n\tclientId: string;\n\tlanguageMapping: {[key: string]: string;};\n\tpitchConfiguration: {[key: string]: string;};\n\tpitchLogoEnabled: number[];\n\tscriptUrl: string;\n\tsideLineLogoEnabled: number[];\n\tsportSpecificPitchConfiguration: {[key: number]: SportSpecificPitchStyling;};\n\tstickyAddonSupportedSports: number[];\n\tsupportedCoverageLevel: {[key: number]: number;};\n\tsupportedSports: number[];\n\tteamInvertCompetitions: {[key: number]: number[];};\n}\n\nexport function betradarVisualizationConfigFactory(service: ClientConfigService): BetradarVisualizationConfig {\n\treturn service.get(BetradarVisualizationConfig);\n}\n\n@ClientConfig({ key:'msBetRecommender' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betRecommenderConfigFactory,\n})\nexport class BetRecommenderConfig {\n\tisEnabled: boolean;\n\tminimumLoadingDelay: number;\n\toptionNameMapping: {[key: number]: OptionNameMappingConfiguration[];};\n}\n\nexport function betRecommenderConfigFactory(service: ClientConfigService): BetRecommenderConfig {\n\treturn service.get(BetRecommenderConfig);\n}\n\n@ClientConfig({ key:'msBetRecommenderConfigData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betRecommenderConfigDataFactory,\n})\nexport class BetRecommenderConfigData {\n\toptionNameOverrides: OptionNameOverridesViewModel[];\n\ttranslations?: TranslationsModel;\n}\n\nexport function betRecommenderConfigDataFactory(service: ClientConfigService): BetRecommenderConfigData {\n\treturn service.get(BetRecommenderConfigData);\n}\n\n@ClientConfig({ key:'msBetslipBar' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betslipBarConfigFactory,\n})\nexport class BetslipBarConfig {\n\tdisplayMyBets: boolean;\n\thideOnEmptyBetslip: boolean;\n\tincludeStakeInWinnings: boolean;\n\tisAngstromSGPEnabled: boolean;\n\tisEnabledDsl: string;\n}\n\nexport function betslipBarConfigFactory(service: ClientConfigService): BetslipBarConfig {\n\treturn service.get(BetslipBarConfig);\n}\n\n@ClientConfig({ key:'msBetslip' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betslipConfigFactory,\n})\nexport class BetslipConfig {\n\tallowBetbuilderCombos: boolean;\n\tallowClientComboPrevention: boolean;\n\tallowMixedVirtualsCombo: boolean;\n\tallowMultipleSingles: boolean;\n\tbetslipToasterVisibilityTimespan: number;\n\tcdsPicksPollingInterval: number;\n\tdepositSuccessfulVisibilityTimespan: number;\n\tdisableOLTracking: boolean;\n\tdisplayMode: BetslipDisplayMode;\n\texcludeNonCombinableBets: boolean;\n\tglobalErrorVisibilityTimespan: number;\n\thideStraightBetDeclined: boolean;\n\tisAcceptAndPlaceBetEnabled: boolean;\n\tisBalanceHeaderEnabled: boolean;\n\tisBankerEnabled: boolean;\n\tisCloseCtaTextEnabled: boolean;\n\tisDepositAndPlaceBetEnabled: boolean;\n\tisDepositOnBetslipConfirmationEnabled: boolean;\n\tisDoubleBetPreventionEnabled: boolean;\n\tisEmptyDefaultStakeEnabled: boolean;\n\tisLineSwitcherEnabled: boolean;\n\tisLinearCollapsibleModulesEnabled: boolean;\n\tisLinearKeypadEnabled: boolean;\n\tisLinearSeparateBetBuilderModuleEnabled: boolean;\n\tisLinearToggleSwitcherEnabled: boolean;\n\tisLiveOneClickDepositEnabled: boolean;\n\tisMinStakeButtonEnabled: boolean;\n\tisMultiReturnsMessageEnabled: boolean;\n\tisRewardCtaEnabled: boolean;\n\tisSportcastAsComboEnabled: boolean;\n\tisSystemBetEnabled: boolean;\n\tisSystemMOfNEnabled: boolean;\n\tlinearBetslipTypesOrder: string[];\n\tlinearModeCheckboxesEnabled: boolean;\n\tmaxBetslipBets: number;\n\tmaxComboBets: number;\n\tmaxSystemBets: number;\n\tmaxTeaserBets: number;\n\tminComboBets: number;\n\tminSystemBets: number;\n\tminTeaserBets: number;\n\tnoWaitingBalanceRefresh: boolean;\n\tpayPalWalletSelectionEnabledForCountries: string[];\n\tpaypalWalletIconClass: {[key: string]: string;};\n\tpaypalWalletUseNewFormula: boolean;\n\tpreventDuplicateRequestOnFrontend: boolean;\n\tremoveAllPicksConfirmationTimeout: number;\n\troundPriceValues: boolean;\n\troundValues: boolean;\n\tselectionsGeneralStakeEnabled: boolean;\n\tshowAccountBalanceWithSportsBonus: boolean;\n\tshowBalanceAndDepositOnBetslip: boolean;\n\tshowBalanceOnQuickBet: boolean;\n\tshowLoginButtonInHeader: boolean;\n\tsportsToHideRegionInfo: number[];\n\tsystemBetsNameType: string;\n\ttaxCalculation: string;\n\tvalidation?: {[key: string]: string;};\n}\n\nexport function betslipConfigFactory(service: ClientConfigService): BetslipConfig {\n\treturn service.get(BetslipConfig);\n}\n\n@ClientConfig({ key:'msBetslipOnboarding' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betslipOnboardingConfigFactory,\n})\nexport class BetslipOnboardingConfig {\n\tcomboOnboardingImageUrl?: string;\n\tsystemOnboardingImageUrl?: string;\n\tteaserOnboardingImageUrl?: string;\n}\n\nexport function betslipOnboardingConfigFactory(service: ClientConfigService): BetslipOnboardingConfig {\n\treturn service.get(BetslipOnboardingConfig);\n}\n\n@ClientConfig({ key:'msBetslipUpsell' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betslipUpsellConfigFactory,\n})\nexport class BetslipUpsellConfig {\n\tblackListedCountries: string[];\n\tisBetslipUpsellExpanded: boolean;\n\tisEnabledForMulti: boolean;\n\tisEnabledForSingle: boolean;\n\tmarketGridGroupIds: BetslipUpsellMarketsGroup[];\n\tmaxUpsells: number;\n\tmoduleBackgroundImage?: string;\n\tmodulePosition: string;\n\toverrideDontShow: boolean;\n\ttimeRangeDifferenceValue: number;\n}\n\nexport function betslipUpsellConfigFactory(service: ClientConfigService): BetslipUpsellConfig {\n\treturn service.get(BetslipUpsellConfig);\n}\n\n@LazyClientConfig({ key:'msBetStationEDSTriggers' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: betStationEDSTriggersConfigFactory,\n})\nexport class BetStationEDSTriggersConfig extends LazyClientConfigBase {\n\tsignpostingEnabled: boolean;\n}\n\nexport function betStationEDSTriggersConfigFactory(service: LazyClientConfigService): BetStationEDSTriggersConfig {\n\treturn service.get(BetStationEDSTriggersConfig);\n}\n\n@ClientConfig({ key:'msBetstationTopScreenModular' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betstationTopScreenModularConfigFactory,\n})\nexport class BetstationTopScreenModularConfig {\n\tisEnabled: boolean;\n}\n\nexport function betstationTopScreenModularConfigFactory(service: ClientConfigService): BetstationTopScreenModularConfig {\n\treturn service.get(BetstationTopScreenModularConfig);\n}\n\n@ClientConfig({ key:'msBetstationWidget' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: betstationWidgetConfigFactory,\n})\nexport class BetstationWidgetConfig {\n\tpageRefreshInterval: PageRefreshConfig[];\n}\n\nexport function betstationWidgetConfigFactory(service: ClientConfigService): BetstationWidgetConfig {\n\treturn service.get(BetstationWidgetConfig);\n}\n\n@ClientConfig({ key:'msBettingInsights' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: bettingInsightsConfigurationFactory,\n})\nexport class BettingInsightsConfiguration {\n\tisEnabled: boolean;\n}\n\nexport function bettingInsightsConfigurationFactory(service: ClientConfigService): BettingInsightsConfiguration {\n\treturn service.get(BettingInsightsConfiguration);\n}\n\n@LazyClientConfig({ key:'msBettingInsightsSitecore' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: bettingInsightsSitecoreConfigFactory,\n})\nexport class BettingInsightsSitecoreConfig extends LazyClientConfigBase {\n\tmoneyBets: string;\n\toverLabel: string;\n\tspreadBets: string;\n\ttotalBets: string;\n\tunderLabel: string;\n}\n\nexport function bettingInsightsSitecoreConfigFactory(service: LazyClientConfigService): BettingInsightsSitecoreConfig {\n\treturn service.get(BettingInsightsSitecoreConfig);\n}\n\n@ClientConfig({ key:'msBettingOffer' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: bettingOfferConfigFactory,\n})\nexport class BettingOfferConfig {\n\tgolfSiblingMapping: {[key: string]: string;};\n\tincludeLinkedFixtures: boolean;\n\tisMainToLiveTransitionEnabled: boolean;\n\tmainToLiveFixedPushDelay: number;\n\tmainToLiveMaxRandomPushDelay: number;\n\tpushBufferingDuration: number;\n}\n\nexport function bettingOfferConfigFactory(service: ClientConfigService): BettingOfferConfig {\n\treturn service.get(BettingOfferConfig);\n}\n\n@ClientConfig({ key:'msCalendar' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: calendarConfigFactory,\n})\nexport class CalendarConfig {\n\tshowCalendarTab: boolean;\n\ttopMenuDateFormat: string;\n}\n\nexport function calendarConfigFactory(service: ClientConfigService): CalendarConfig {\n\treturn service.get(CalendarConfig);\n}\n\n@ClientConfig({ key:'msCalendarData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: calendarDataFactory,\n})\nexport class CalendarData {\n\tcalendarItems: CalendarModel;\n}\n\nexport function calendarDataFactory(service: ClientConfigService): CalendarData {\n\treturn service.get(CalendarData);\n}\n\n@ClientConfig({ key:'msCasinoMiniGames' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: casinoMiniGamesConfigFactory,\n})\nexport class CasinoMiniGamesConfig {\n\tappendSessionKey: boolean;\n\tareMiniGamesEnabled: boolean;\n\tblackListedCountries: string[];\n\tisKYCCheckEnabled: boolean;\n\tsportsSpinnerLoadingDelayTime: number;\n\turl?: string;\n}\n\nexport function casinoMiniGamesConfigFactory(service: ClientConfigService): CasinoMiniGamesConfig {\n\treturn service.get(CasinoMiniGamesConfig);\n}\n\n@ClientConfig({ key:'msCDNCaching' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: cDNCachingConfigFactory,\n})\nexport class CDNCachingConfig {\n\twidgets: string[];\n}\n\nexport function cDNCachingConfigFactory(service: ClientConfigService): CDNCachingConfig {\n\treturn service.get(CDNCachingConfig);\n}\n\n@ClientConfig({ key:'msCds' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: cdsConfigFactory,\n})\nexport class CdsConfig {\n\tmaxFixtureBatchSize: number;\n}\n\nexport function cdsConfigFactory(service: ClientConfigService): CdsConfig {\n\treturn service.get(CdsConfig);\n}\n\n@ClientConfig({ key:'msClickInteraction' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: clickInteractionConfigurationFactory,\n})\nexport class ClickInteractionConfiguration {\n\tisEnabled: boolean;\n}\n\nexport function clickInteractionConfigurationFactory(service: ClientConfigService): ClickInteractionConfiguration {\n\treturn service.get(ClickInteractionConfiguration);\n}\n\n@ClientConfig({ key:'msClientCaching' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: clientCachingConfigFactory,\n})\nexport class ClientCachingConfig {\n\tcoreNavigationCompetitionListTimeout: number;\n\tcouponListTimeout: number;\n\tliveSportListTimeout: number;\n\tproductMenuTimeout: number;\n\tquicklinkCountsTimeout: number;\n\tregionListTimeout: number;\n\tsportListTimeout: number;\n\tsportTimeout: number;\n}\n\nexport function clientCachingConfigFactory(service: ClientConfigService): ClientCachingConfig {\n\treturn service.get(ClientCachingConfig);\n}\n\n@ClientConfig({ key:'msCompetitionTree' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: competitionTreeConfigFactory,\n})\nexport class CompetitionTreeConfig {\n\tshowCountDsl: boolean;\n}\n\nexport function competitionTreeConfigFactory(service: ClientConfigService): CompetitionTreeConfig {\n\treturn service.get(CompetitionTreeConfig);\n}\n\n@ClientConfig({ key:'msComposable' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: composableConfigFactory,\n})\nexport class ComposableConfig {\n\tnumberOfEventsOnShowMoreClick: number;\n\tthresholdToExpandAccordion: number;\n}\n\nexport function composableConfigFactory(service: ClientConfigService): ComposableConfig {\n\treturn service.get(ComposableConfig);\n}\n\n@ClientConfig({ key:'msConnection' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: connectionConfigFactory,\n})\nexport class ConnectionConfig {\n\tcdsMaxRetries: number;\n\tcdsPrefferedTransportType: number;\n\tcdsPushUrl: string;\n\tcdsSkipNegotiation: boolean;\n\tcdsUrlBase: string;\n\tculture: string;\n\tpublicAccessId?: string;\n\tpushAccessId: string;\n\tshopTier?: number;\n}\n\nexport function connectionConfigFactory(service: ClientConfigService): ConnectionConfig {\n\treturn service.get(ConnectionConfig);\n}\n\n@ClientConfig({ key:'msCrm' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: crmConfigFactory,\n})\nexport class CrmConfig {\n\tpromotions: CrmPromotionConfiguration;\n\tsignposting: CrmPostBetSignpostingConfiguration;\n\ttokens: CrmTokenConfig;\n}\n\nexport function crmConfigFactory(service: ClientConfigService): CrmConfig {\n\treturn service.get(CrmConfig);\n}\n\n@ClientConfig({ key:'msCRMTokenImages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: cRMTokenImagesFactory,\n})\nexport class CRMTokenImages {\n\tcrmTokenImages: CRMTokenImage[];\n}\n\nexport function cRMTokenImagesFactory(service: ClientConfigService): CRMTokenImages {\n\treturn service.get(CRMTokenImages);\n}\n\n@ClientConfig({ key:'msCurrency' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: currencyConfigFactory,\n})\nexport class CurrencyConfig {\n\tclientCurrencyFormat?: string;\n\tcurrencySymbolDisplayList: string[];\n\tshowStakeCurrency: boolean;\n}\n\nexport function currencyConfigFactory(service: ClientConfigService): CurrencyConfig {\n\treturn service.get(CurrencyConfig);\n}\n\n@ClientConfig({ key:'msCustomerDnaBettingOffer' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: customerDnaBettingOfferConfigFactory,\n})\nexport class CustomerDnaBettingOfferConfig {\n\tisEnabled: boolean;\n}\n\nexport function customerDnaBettingOfferConfigFactory(service: ClientConfigService): CustomerDnaBettingOfferConfig {\n\treturn service.get(CustomerDnaBettingOfferConfig);\n}\n\n@ClientConfig({ key:'msCustomerDnaDefaultStakeTeaser' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: customerDnaDefaultStakeTeaserConfigFactory,\n})\nexport class CustomerDnaDefaultStakeTeaserConfig {\n\tconfirmationTimeout: number;\n\tisEnabled: boolean;\n\trestPeriod: number;\n\tteaserTimeout: number;\n\tteaserTreshold: number;\n}\n\nexport function customerDnaDefaultStakeTeaserConfigFactory(service: ClientConfigService): CustomerDnaDefaultStakeTeaserConfig {\n\treturn service.get(CustomerDnaDefaultStakeTeaserConfig);\n}\n\n@ClientConfig({ key:'msEarlyPayout' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: earlyPayoutConfigFactory,\n})\nexport class EarlyPayoutConfig {\n\tautoCashOutMarginValue: number;\n\tautoCashoutSgpAllowedCompetitions: {[key: number]: number[];};\n\tisAutoCashOutEnabled: boolean;\n\tisAutoCashOutHelpEnabled: boolean;\n\tisAutoCashOutNotificationEnabled: boolean;\n\tisEarlyPayoutEnabled: boolean;\n\tisEarlyPayoutPushEnabled: boolean;\n\tisEarlyPayoutTACDialogueEnabled: boolean;\n\tshowCashOutInfo: boolean;\n}\n\nexport function earlyPayoutConfigFactory(service: ClientConfigService): EarlyPayoutConfig {\n\treturn service.get(EarlyPayoutConfig);\n}\n\n@ClientConfig({ key:'msEpcot' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: epcotConfigFactory,\n})\nexport class EpcotConfig {\n\tisEnabled: boolean;\n\tmodules: string[];\n\tsitemapDrawerTooltipVisibilityCount: number;\n}\n\nexport function epcotConfigFactory(service: ClientConfigService): EpcotConfig {\n\treturn service.get(EpcotConfig);\n}\n\n@ClientConfig({ key:'msEventDetails' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: eventDetailsConfigFactory,\n})\nexport class EventDetailsConfig {\n\tcollapsibleChevron: boolean;\n\tdefaultExpandedMarketsCount: number;\n\tenableCorrectScoreOptionGroupToggle: boolean;\n\tenableEventPageModular: boolean;\n\tenableHideBreadcrumbOnScroll: boolean;\n\tenableSitemapNavigation: boolean;\n\tenableV2LiveStats: boolean;\n\theaderNavigationScoreboard: {[key: string]: number[];};\n\tisBetBuilderSignpostingBadgeEnabled: boolean;\n\tisHeaderSubNavigationEnabled: boolean;\n\tisNewScoreboardEnabled: boolean;\n\tisSuspendedSelectionVisibilityEnabled: boolean;\n\tmarketTemplatesWithThresholds: {[key: string]: string[];};\n\tmediaSwitcherTabs: {[key: string]: {[key: string]: string[];};};\n\tmessageIcons: {[key: string]: {[key: string]: IconInfo;};};\n\tshowInOverlay: boolean;\n\tsiteMapTooltipViewsThreshold: number;\n\ttabBarTooltipViewsThreshold: number;\n\tteamIndicatorFallbackColors: string[];\n}\n\nexport function eventDetailsConfigFactory(service: ClientConfigService): EventDetailsConfig {\n\treturn service.get(EventDetailsConfig);\n}\n\n@ClientConfig({ key:'msEventSwitcher' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: eventSwitcherConfigFactory,\n})\nexport class EventSwitcherConfig {\n\tisEnabled: boolean;\n\ttoggleIconAllowedSports: number[];\n}\n\nexport function eventSwitcherConfigFactory(service: ClientConfigService): EventSwitcherConfig {\n\treturn service.get(EventSwitcherConfig);\n}\n\n@ClientConfig({ key:'msFavourites' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: favouritesConfigFactory,\n})\nexport class FavouritesConfig {\n\tcollapseSize: number;\n\tinitialSize: number;\n\tisFavouriteSwipeEnabled: boolean;\n\tisLiveFavouritesEnabled: boolean;\n\tisLiveWidgetFavouritesEnabled: boolean;\n\tmaxFavourites: number;\n\tmaxWidgetFavourites: number;\n\tpageSize: number;\n\tshowFavoriteIconOnFavoritesPage: boolean;\n\ttoastMessageTimeOut: number;\n}\n\nexport function favouritesConfigFactory(service: ClientConfigService): FavouritesConfig {\n\treturn service.get(FavouritesConfig);\n}\n\n@ClientConfig({ key:'msFormCoupon' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: formCouponConfigFactory,\n})\nexport class FormCouponConfig {\n\tquickSelectorButtons: number[];\n}\n\nexport function formCouponConfigFactory(service: ClientConfigService): FormCouponConfig {\n\treturn service.get(FormCouponConfig);\n}\n\n@ClientConfig({ key:'msGeolocation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: geolocationConfigFactory,\n})\nexport class GeolocationConfig {\n\tappUrl?: string;\n\tbootstrapAssetPaths: string[];\n\tcoordinatorSettings: CoordinatorSettings;\n\tgdsFetchLocationUrl?: string;\n\tgdsUrl?: string;\n\tgeoGuardAppUrl?: string;\n\tgeoPollingUrlPath?: string;\n\tinitialRetryInterval: number;\n\tinstallerSettings: InstallerSettings;\n\tisBetRestrictionEnabled: boolean;\n\tisGeolocationEnabled: boolean;\n\tisNDBSEnabled: boolean;\n\tisRetryButtonEnabled: boolean;\n\tlogGenericFailureResults: boolean;\n\tretriableErrorCodes: number[];\n\tretryInterval: number;\n\tsaveDeviceDetails: boolean;\n\tshouldCheckNativeGeoLocation: boolean;\n}\n\nexport function geolocationConfigFactory(service: ClientConfigService): GeolocationConfig {\n\treturn service.get(GeolocationConfig);\n}\n\n@ClientConfig({ key:'msGrid' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: gridConfigFactory,\n})\nexport class GridConfig {\n\tareEmptyEventStatisticsVisible: boolean;\n\tcollapseSize?: number;\n\tenableSGPNavigationOverride: boolean;\n\tfallbackMarketOddsThreshold: number;\n\tfallbackMarketsEnabled: boolean;\n\tgameNotesMaxCount: number;\n\tgoalAnimationTimeInterval: number;\n\tgridEventDisplayVersion: string;\n\thideGridTitle: boolean;\n\tinitialSize: number;\n\tis2way3wayEnabled: boolean;\n\tisAllMarketsLinkEnabled: boolean;\n\tisGameNotesLayoutEnabled: boolean;\n\tisGoalAnimationEnabled: number[];\n\tisLeagueChildPageDesign: boolean;\n\tisMarketPillsEnabled: boolean;\n\tisRegionalisedGridEnabled: boolean;\n\tisShortEventInHeaderEnabled: boolean;\n\tisSixPackLayoutEnabled: boolean;\n\tmarketSwitcherPosition: MarketSwitcherPositionType;\n\toverriddenCompetitionLogo: SportCompetitionFormat[];\n\tpageSize: number;\n\tprimaryNavigationType: PrimaryNavigationDisplayType;\n\tshowMarketPillsOnboardingMessage: boolean;\n\tshowMoreRowsThreshold: number;\n\tshowParticipantLogoOrImage: boolean;\n\tshowRedCardsInSoccer: boolean;\n\tverticalGridGroupIds: {[key: string]: VerticalGridGroupOption;};\n}\n\nexport function gridConfigFactory(service: ClientConfigService): GridConfig {\n\treturn service.get(GridConfig);\n}\n\n@ClientConfig({ key:'msGTM' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: gTMConfigFactory,\n})\nexport class GTMConfig {\n\tdelay: number;\n\tenabled: boolean;\n}\n\nexport function gTMConfigFactory(service: ClientConfigService): GTMConfig {\n\treturn service.get(GTMConfig);\n}\n\n@ClientConfig({ key:'msImages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: imagesConfigFactory,\n})\nexport class ImagesConfig {\n\tcompetitionLogoUrl: string;\n\tcompetitionLogos: SportCompetitionFormat[];\n\theadshotEnabledOptionGroups: {[key: number]: string[];};\n\timageQualityParams: ImageCompressionFormat;\n\tisCompetitionImageProfile: boolean;\n\tisLogoBackgroundEnabled: boolean;\n\tisParticipantImageEnabled: boolean;\n\tparticipantImageEnabledMarketTypes: {[key: number]: string[];};\n\tparticipantImageUrl: string;\n\tparticipantLogoUrl: string;\n\tsilkImageUrl: string;\n}\n\nexport function imagesConfigFactory(service: ClientConfigService): ImagesConfig {\n\treturn service.get(ImagesConfig);\n}\n\n@ClientConfig({ key:'msImgConfigurationData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: imgConfigurationDataFactory,\n})\nexport class ImgConfigurationData {\n\tblacklistedCompetitions: number[];\n\thoursToShowImgAnimation: number;\n\tisEnabled: boolean;\n\tisVideoPlaybackEnabled: boolean;\n\tlanguageMapping: {[key: string]: string;};\n\tpitchConfiguration: {[key: string]: string;};\n}\n\nexport function imgConfigurationDataFactory(service: ClientConfigService): ImgConfigurationData {\n\treturn service.get(ImgConfigurationData);\n}\n\n@ClientConfig({ key:'msInternalFeatures' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: internalFeaturesConfigFactory,\n})\nexport class InternalFeaturesConfig {\n\tisAutomationDebugEnabled: boolean;\n\tisBalanceLoggingEnabled: boolean;\n\tisBetplacementLoggingEnabled: boolean;\n\tisEPSDetailedLoggingEnabled: boolean;\n}\n\nexport function internalFeaturesConfigFactory(service: ClientConfigService): InternalFeaturesConfig {\n\treturn service.get(InternalFeaturesConfig);\n}\n\n@ClientConfig({ key:'msIntroPages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: introPagesConfigFactory,\n})\nexport class IntroPagesConfig {\n\tcookieName: string;\n\tid: string;\n\tslides: HeadlineModel[];\n}\n\nexport function introPagesConfigFactory(service: ClientConfigService): IntroPagesConfig {\n\treturn service.get(IntroPagesConfig);\n}\n\n@LazyClientConfig({ key:'msIsQuickDepositAllowedResult' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: isQuickDepositAllowedResultFactory,\n})\nexport class IsQuickDepositAllowedResult extends LazyClientConfigBase {\n\tisQuickDepositAllowed: boolean;\n}\n\nexport function isQuickDepositAllowedResultFactory(service: LazyClientConfigService): IsQuickDepositAllowedResult {\n\treturn service.get(IsQuickDepositAllowedResult);\n}\n\n@ClientConfig({ key:'msLayoutNavigation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: layoutNavigationConfigFactory,\n})\nexport class LayoutNavigationConfig {\n\tbottomNavItemsMapping: {[key: string]: string;};\n\thideMidSectionBreadCrumbItems: boolean;\n\tisDesktopTopNavigationCompact: boolean;\n\tisDynamicCategoryNavigationEnabled: boolean;\n\ttopNavigationVersion: string;\n}\n\nexport function layoutNavigationConfigFactory(service: ClientConfigService): LayoutNavigationConfig {\n\treturn service.get(LayoutNavigationConfig);\n}\n\n@ClientConfig({ key:'msLcpCandidate' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: lcpCandidateConfigFactory,\n})\nexport class LcpCandidateConfig {\n\tisEnabled: boolean;\n}\n\nexport function lcpCandidateConfigFactory(service: ClientConfigService): LcpCandidateConfig {\n\treturn service.get(LcpCandidateConfig);\n}\n\n@ClientConfig({ key:'msLineSwitcher' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: lineSwitcherConfigFactory,\n})\nexport class LineSwitcherConfig {\n\tdisabledLeagues: number[];\n\tdisabledSports: number[];\n\tisHelpBoxEnabled: boolean;\n}\n\nexport function lineSwitcherConfigFactory(service: ClientConfigService): LineSwitcherConfig {\n\treturn service.get(LineSwitcherConfig);\n}\n\n@ClientConfig({ key:'msLinkExternalAccount' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: linkExternalAccountConfigFactory,\n})\nexport class LinkExternalAccountConfig {\n\tisEnabled: boolean;\n}\n\nexport function linkExternalAccountConfigFactory(service: ClientConfigService): LinkExternalAccountConfig {\n\treturn service.get(LinkExternalAccountConfig);\n}\n\n@ClientConfig({ key:'msLiveNavigation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: liveNavigationConfigFactory,\n})\nexport class LiveNavigationConfig {\n\tisEachWayMarketsTabEnabled: boolean;\n\tisLiveEventsNavigationEnabled: boolean;\n\tloadingIndicatorDelay: number;\n\tpollingInterval: number;\n\ttreshold: number;\n}\n\nexport function liveNavigationConfigFactory(service: ClientConfigService): LiveNavigationConfig {\n\treturn service.get(LiveNavigationConfig);\n}\n\n@ClientConfig({ key:'msLiveSection' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: liveSectionConfigFactory,\n})\nexport class LiveSectionConfig {\n\tactiveParticipantIconForSports: number[];\n\thideFiltersForSportIds: number[];\n\tisPagingEnabled: boolean;\n\tliveEventsInfoForLeagueIds: number[];\n\tmaxLiveEventsPerSport: number;\n\tmaxUpcomingEventsPerSport: number;\n\tminEventsPagingSize: number;\n\tpageSize: number;\n\tshowLiveBadgeCount: string[];\n}\n\nexport function liveSectionConfigFactory(service: ClientConfigService): LiveSectionConfig {\n\treturn service.get(LiveSectionConfig);\n}\n\n@ClientConfig({ key:'msLobby' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: lobbyConfigFactory,\n})\nexport class LobbyConfig {\n\thomePageGridsRefreshTimeout: number;\n\thomePageRefreshTimeout: number;\n\tliveSectionNumberOfEventsPerSport: number;\n\tliveSectionNumberOfSports: number;\n\tmainSectionNumberOfEventsPerSport: number;\n\tmainSectionNumberOfSports: number;\n\torderedRenderingTimeout: number;\n\ttopPageRefreshTimeout: number;\n}\n\nexport function lobbyConfigFactory(service: ClientConfigService): LobbyConfig {\n\treturn service.get(LobbyConfig);\n}\n\n@ClientConfig({ key:'msMarketGrouping' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: marketGroupingConfigFactory,\n})\nexport class MarketGroupingConfig {\n\tcorrectScoreOptionsSortOrder?: string;\n\tdisplayTypes: string[];\n\tenablePlayerMilestoneByMarketSubType: boolean;\n\teventCarouselVisibilityConfig: EventCarouselVisibilityConfig[];\n\tisOverUnderAbbreviationEnabled: boolean;\n\tmarketGroupsWithNewBadge: MarketGroupsWithNewBadge[];\n\tmilestoneMarketsDefaultTab: {[key: string]: number;};\n\toptionCollapseSize: OptionPanelThreshold[];\n\toptionGroupRowsThreshold: OptionGroupRowsThreshold;\n\toptionGroupWithPlayerData: string[];\n\toptionTypesToFilterTV2MarketOptions: OptionTypesToFilterTV2MarketOptions[];\n\torderByLineValue: boolean;\n\toutrightsGroupMaxNumberOfLines: number;\n\toverUnderGroupMaxNumberOfLines: number;\n\toverrideParticipantNameOptionMarkets: OverrideParticipantNameOptionMarkets[];\n\tplayerCombinedGroupMaxLines: number;\n\tplayerMilestoneGroupMaxLines: number;\n\tplayerPropsGroupMaxNumberOfLines: number;\n\traceToGroupMaxNumberOfLines: number;\n\tregionalisedGroupingEnabled: boolean;\n\tscorecastPossibleWinningsVisible: boolean;\n\tscorecastRegexValues: ScorecastRegexValues;\n\tscorecastSelectionCacheDurationMs: number;\n\tshouldShowSheetViewForAllMarkets: boolean;\n\tshowMoreBetBuilderCorrectScoreThreshold: number;\n\tshowMoreCorrectScoreThreshold: number;\n\tshowMoreRegularThreshold: number;\n\tspreadGroupMaxNumberOfLines: number;\n\tteamGroupingMaxNumberOfLines: number;\n\tteamGroupingTabVisibilityThreshold: number;\n\ttemplateIdsForSecondChanceBadge: number[];\n}\n\nexport function marketGroupingConfigFactory(service: ClientConfigService): MarketGroupingConfig {\n\treturn service.get(MarketGroupingConfig);\n}\n\n@ClientConfig({ key:'msMarketHelp' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: marketHelpConfigFactory,\n})\nexport class MarketHelpConfig {\n\tenabled: boolean;\n\tmarketHelpCacheTimeout: number;\n\tmarketHelpTextDisplayVersion: string;\n\tsitecoreFallbackItem: string;\n}\n\nexport function marketHelpConfigFactory(service: ClientConfigService): MarketHelpConfig {\n\treturn service.get(MarketHelpConfig);\n}\n\n@ClientConfig({ key:'msMarquee' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: marqueeConfigFactory,\n})\nexport class MarqueeConfig {\n\tautomatedMarqueesOrder: string[];\n\tautomatedRegularMarqueesOrder: {[key: string]: string[];};\n\tdisabledSportIds: number[];\n\tdynamicMarkets: string[];\n\tisAutomatedMarqueesEnabled: boolean;\n\tisFallbackMarqueeEnabled: boolean;\n\tisHighlightsMarqueeEnabled: boolean;\n\tmapMarketToGameTemplateIds: MapMarketToGameTemplateIds[];\n\tmarketListWithOptionDropdown: string[];\n\tmarqueeGroupsOfMarkets: MarqueeGroupsOfMarkets[];\n\tmarqueeMarketOverrides: {[key: string]: string;};\n\tmaxCorrectScoreGoals: number;\n\tmaxMarketsToShowInOptionDropdown: number;\n\tmaxRequestedEvents: number;\n\tmaxTiles: number;\n\toddThresholdValue: number;\n\tscrollingSpeed: {[key: string]: string;};\n\tsixPackGridGroupMapping: SixPackGridGroupMapping[];\n\tspecialLeagueIds: number[];\n}\n\nexport function marqueeConfigFactory(service: ClientConfigService): MarqueeConfig {\n\treturn service.get(MarqueeConfig);\n}\n\n@LazyClientConfig({ key:'msMarqueeTiles' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: marqueeTilesConfigFactory,\n})\nexport class MarqueeTilesConfig extends LazyClientConfigBase {\n\ttiles: MarqueeTile[];\n}\n\nexport function marqueeTilesConfigFactory(service: LazyClientConfigService): MarqueeTilesConfig {\n\treturn service.get(MarqueeTilesConfig);\n}\n\n@ClientConfig({ key:'msMatchList' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: matchListConfigFactory,\n})\nexport class MatchListConfig {\n\tmaxEventThreshold: number;\n\tshowLoader: boolean;\n}\n\nexport function matchListConfigFactory(service: ClientConfigService): MatchListConfig {\n\treturn service.get(MatchListConfig);\n}\n\n@ClientConfig({ key:'msMedia' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: mediaConfigFactory,\n})\nexport class MediaConfig {\n\texpandedMediaEnabledLocations: string[];\n\tisExpandedMediaEnabled: boolean;\n\tisMatchSimulationEnabled: boolean;\n\tisVideoStreamFullscreenEnabled: boolean;\n\tmatchSimulation: MatchSimulationConfiguration;\n\trestrictedSportIds: number[];\n\tshowStatsCenterButton: boolean;\n\tshowVideoStreaming: boolean;\n\tsportsWithMatchSimulation: number[];\n\tsubdivisionRestrictedCountries: string[];\n\ttwitchPlayerLibraryUrl: string;\n\tvideoStreamGeoCoordinatesCountries: string[];\n\tvideoUrlRefreshInterval: {[key: string]: number;};\n}\n\nexport function mediaConfigFactory(service: ClientConfigService): MediaConfig {\n\treturn service.get(MediaConfig);\n}\n\n@LazyClientConfig({ key:'msMobileConfirmationNotificationClient' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: mobileConfirmationNotificationClientConfigFactory,\n})\nexport class MobileConfirmationNotificationClientConfig extends LazyClientConfigBase {\n\tconfirmationIntervalMilliseconds: number;\n\tisEnabled: boolean;\n}\n\nexport function mobileConfirmationNotificationClientConfigFactory(service: LazyClientConfigService): MobileConfirmationNotificationClientConfig {\n\treturn service.get(MobileConfirmationNotificationClientConfig);\n}\n\n@ClientConfig({ key:'msMocks' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: mocksConfigFactory,\n})\nexport class MocksConfig {\n\tisMockLiveStreamGeoCountryEnabled: boolean;\n\tliveStreamGeoCountry?: string;\n}\n\nexport function mocksConfigFactory(service: ClientConfigService): MocksConfig {\n\treturn service.get(MocksConfig);\n}\n\n@ClientConfig({ key:'msMsPage' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: msPageFactory,\n})\nexport class MsPage {\n\ttitle?: string;\n}\n\nexport function msPageFactory(service: ClientConfigService): MsPage {\n\treturn service.get(MsPage);\n}\n\n@LazyClientConfig({ key:'msMultiBuilder' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: multiBuilderConfigFactory,\n})\nexport class MultiBuilderConfig extends LazyClientConfigBase {\n\tcacheTimeOut: number;\n\tcompetitionOrder: {[key: number]: number;};\n\tisEnabled: boolean;\n\tmarketGridGroups: MarketGridGroup[];\n\tmaxCompetitionsCount: number;\n\tmaxFixturesCount: number;\n\tshowStats: boolean;\n}\n\nexport function multiBuilderConfigFactory(service: LazyClientConfigService): MultiBuilderConfig {\n\treturn service.get(MultiBuilderConfig);\n}\n\n@LazyClientConfig({ key:'msMultiSportsHub' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: multiSportsHubConfigFactory,\n})\nexport class MultiSportsHubConfig extends LazyClientConfigBase {\n\tisEnabled: boolean;\n}\n\nexport function multiSportsHubConfigFactory(service: LazyClientConfigService): MultiSportsHubConfig {\n\treturn service.get(MultiSportsHubConfig);\n}\n\n@LazyClientConfig({ key:'msMyBetsBetstation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: myBetsBetstationConfigFactory,\n})\nexport class MyBetsBetstationConfig extends LazyClientConfigBase {\n\tdelayForPayoutStatusCheckAfterCashout: number;\n\tintervalForPayoutVerifyCalls: number;\n\tmyBetsPageSize: number;\n\topenBetReloadDataInterval: number;\n\tpayoutVerifyRetryAttemps: number;\n\ttimeOutToHideBetAfterCashout: number;\n}\n\nexport function myBetsBetstationConfigFactory(service: LazyClientConfigService): MyBetsBetstationConfig {\n\treturn service.get(MyBetsBetstationConfig);\n}\n\n@ClientConfig({ key:'msMyBets' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: myBetsConfigFactory,\n})\nexport class MyBetsConfig {\n\tarchivedMyBetsUrl?: string;\n\tcacheTimeout: number;\n\tdefaultDaysBeforeMigrationDate: number;\n\tearlyPayoutButtonResetTime: string;\n\teditMyBetTimeout: number;\n\tenableBalanceRefresh: boolean;\n\tenablePinning: boolean;\n\tenableRedesignedBetCard: boolean;\n\tenableSGPRepricedOdds: boolean;\n\texportButtonType: IExportButtonType;\n\tisArchivedBetsEnabled: boolean;\n\tisEditMyBetEnabled: boolean;\n\tisIndicatorConnectorEnabled: boolean;\n\tisMyBetTabRedesignEnabled: boolean;\n\tisOpenSummaryLoadingRestricted: boolean;\n\tisOpenTabSortingEnabled: boolean;\n\tisShowOpenBetsCount: boolean;\n\tisTransactionBetsEnabled: boolean;\n\tliveBetsRefreshInterval: string;\n\tmaxPins: number;\n\tmyBetsRefreshInMilliseconds: number;\n\tpageSize: number;\n\tprintBetsThresholdForApp: number;\n\treloadMyBetsTimeInterval: number;\n\tshowAssociatedAccount: boolean;\n\tshowBetTypeAsBadge: boolean;\n\tshowBrowseSportsBook: boolean;\n\tshowGridScoreBoardConfig: MyBetsGridScoreBoardConfigResponse;\n\tshowNetWinnings: boolean;\n\tshowRegionCode: boolean;\n\tshowSportAndCompetitionName: boolean;\n\tstadiumMyBetsTransactionsUrl?: string;\n\tuseOpenBetsPostRequest: boolean;\n}\n\nexport function myBetsConfigFactory(service: ClientConfigService): MyBetsConfig {\n\treturn service.get(MyBetsConfig);\n}\n\n@LazyClientConfig({ key:'msMyBetsVisualizationTracking' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: myBetsVisualizationTrackingConfigFactory,\n})\nexport class MyBetsVisualizationTrackingConfig extends LazyClientConfigBase {\n\tallowedLeagues: {[key: number]: number[];};\n\tisEnabled: boolean;\n\tmarketTemplateMapping: {[key: number]: {[key: string]: number[];};};\n\tmarketTypeMapping: {[key: number]: {[key: string]: string[];};};\n\ttargetStatForMarket: {[key: number]: number[];};\n}\n\nexport function myBetsVisualizationTrackingConfigFactory(service: LazyClientConfigService): MyBetsVisualizationTrackingConfig {\n\treturn service.get(MyBetsVisualizationTrackingConfig);\n}\n\n@ClientConfig({ key:'msNativeAlerts' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: nativeAlertsConfigFactory,\n})\nexport class NativeAlertsConfig {\n\tappNotificationsEnabledCheck: boolean;\n\tenabled: boolean;\n\tfetchingInterval: number;\n\tforceLegacyPosApiEndpoint: boolean;\n\tsports: SportConfiguration[];\n}\n\nexport function nativeAlertsConfigFactory(service: ClientConfigService): NativeAlertsConfig {\n\treturn service.get(NativeAlertsConfig);\n}\n\n@ClientConfig({ key:'msNewCustomerBettingOffer' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: newCustomerBettingOfferConfigFactory,\n})\nexport class NewCustomerBettingOfferConfig {\n\tcompetitionId?: number;\n}\n\nexport function newCustomerBettingOfferConfigFactory(service: ClientConfigService): NewCustomerBettingOfferConfig {\n\treturn service.get(NewCustomerBettingOfferConfig);\n}\n\n@LazyClientConfig({ key:'msNextToGo' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: nextToGoConfigFactory,\n})\nexport class NextToGoConfig extends LazyClientConfigBase {\n\tintervalForRedPreMatchTimer: number;\n\tmarketGridGroupIds: NextToGoGroupsOfMarkets[];\n\tmaxEventsPerSport: number;\n\tminEventsPerSport: number;\n\tmodule: NextToGoModule;\n\tshowOdds: boolean;\n\tshowParticipantLogoOrImage: boolean;\n\tsportsToDisplayCompetitionLogo: number[];\n\ttimeFrame: number;\n}\n\nexport function nextToGoConfigFactory(service: LazyClientConfigService): NextToGoConfig {\n\treturn service.get(NextToGoConfig);\n}\n\n@ClientConfig({ key:'msNgrxReports' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: ngrxReportsConfigurationFactory,\n})\nexport class NgrxReportsConfiguration {\n\tactionsUpdateThreshold: number;\n\tisReportsEnabled: boolean;\n\tmaxActions: number;\n\trestrictedActions: string[];\n}\n\nexport function ngrxReportsConfigurationFactory(service: ClientConfigService): NgrxReportsConfiguration {\n\treturn service.get(NgrxReportsConfiguration);\n}\n\n@ClientConfig({ key:'msNotifications' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: notificationsConfigFactory,\n})\nexport class NotificationsConfig {\n\tappBetNotificationsDisabledForSports: DisabledNotificationSport[];\n\temailDisabledForSports: DisabledNotificationSport[];\n\tisAppBetNotificationsEnabled: boolean;\n\tisEmailBetNotificationsEnabled: boolean;\n}\n\nexport function notificationsConfigFactory(service: ClientConfigService): NotificationsConfig {\n\treturn service.get(NotificationsConfig);\n}\n\n@ClientConfig({ key:'msOdds' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: oddsConfigFactory,\n})\nexport class OddsConfig {\n\tallowedOddsFormats: OddsDisplayFormat[];\n\tdisplay: OddsDisplayConfiguration;\n\tdisplayOddsChangePreferencePopup: boolean;\n\thideDontAcceptOptionSetting: boolean;\n\toddsAcceptanceTeaserThreshold: number;\n\toddsChangePopupEligibilityDate?: string;\n\tpreferencesReminder: BetslipOddsPreferencesReminderConfiguration;\n\tshowOddsAcceptanceSettings: boolean;\n}\n\nexport function oddsConfigFactory(service: ClientConfigService): OddsConfig {\n\treturn service.get(OddsConfig);\n}\n\n@ClientConfig({ key:'msOddsFormatSettings' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: oddsFormatSettingsFactory,\n})\nexport class OddsFormatSettings {\n\tgeneralOddsFormat: OddsDisplayFormat;\n}\n\nexport function oddsFormatSettingsFactory(service: ClientConfigService): OddsFormatSettings {\n\treturn service.get(OddsFormatSettings);\n}\n\n@ClientConfig({ key:'msOutrightsGrid' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: outrightsGridConfigFactory,\n})\nexport class OutrightsGridConfig {\n\tenableParticipantImages: number[];\n\tisEnabled: boolean;\n\tisMarketPillsEnabled: boolean;\n\tmaxCompetitions: number;\n\tmaxRowsThreshold: number;\n\toverrideParticipantImageNameFormat: ParticipantImageFormat[];\n\tshowParticipantLogo: boolean;\n}\n\nexport function outrightsGridConfigFactory(service: ClientConfigService): OutrightsGridConfig {\n\treturn service.get(OutrightsGridConfig);\n}\n\n@ClientConfig({ key:'msOverAsk' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: overAskConfigFactory,\n})\nexport class OverAskConfig {\n\tpauseThreshold: number;\n\tpendingShouldShowPercentage: boolean;\n\treviewProgressbarTotalSteps: number;\n\treviewWaitingTime: number;\n\tshowStakeChanges: boolean;\n}\n\nexport function overAskConfigFactory(service: ClientConfigService): OverAskConfig {\n\treturn service.get(OverAskConfig);\n}\n\n@ClientConfig({ key:'msOverrideStatistics' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: overrideStatisticsConfigFactory,\n})\nexport class OverrideStatisticsConfig {\n\tteamRankings: {[key: number]: {[key: number]: {[key: number]: number;};};};\n}\n\nexport function overrideStatisticsConfigFactory(service: ClientConfigService): OverrideStatisticsConfig {\n\treturn service.get(OverrideStatisticsConfig);\n}\n\n@ClientConfig({ key:'msParticipants' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: participantsConfigFactory,\n})\nexport class ParticipantsConfig {\n\tenabledShortNames: {[key: number]: {[key: number]: string[];};};\n}\n\nexport function participantsConfigFactory(service: ClientConfigService): ParticipantsConfig {\n\treturn service.get(ParticipantsConfig);\n}\n\n@ClientConfig({ key:'msPerformanceProfiling' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: performanceProfilingConfigFactory,\n})\nexport class PerformanceProfilingConfig {\n\tisPerformanceProfilingEnabled: boolean;\n}\n\nexport function performanceProfilingConfigFactory(service: ClientConfigService): PerformanceProfilingConfig {\n\treturn service.get(PerformanceProfilingConfig);\n}\n\n@ClientConfig({ key:'msPersonalizedMarquee' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: personalizedMarqueeConfigFactory,\n})\nexport class PersonalizedMarqueeConfig {\n\tcheckABUserCookie: boolean;\n\tenablePersonalizedMarquee: boolean;\n\tminEventsToShow: number;\n\tshowOnlyPersonalizedMarquees: boolean;\n}\n\nexport function personalizedMarqueeConfigFactory(service: ClientConfigService): PersonalizedMarqueeConfig {\n\treturn service.get(PersonalizedMarqueeConfig);\n}\n\n@LazyClientConfig({ key:'msPopularBets' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: popularBetsConfigFactory,\n})\nexport class PopularBetsConfig extends LazyClientConfigBase {\n\tbufferTimeToIgnoreLiveEvents: number;\n\tdefaultButtonOverride: boolean;\n\tisMarketNameEnabled: {[key in PopularBetsPodTypes]?: boolean;};\n\tisMultiBetsModuleEnabled: boolean;\n\tisOpponentNameEnabled: {[key in PopularBetsPodTypes]?: boolean;};\n\tisSGPPlusEnabled: boolean;\n\tlogoConfigurationForPodType: {[key: string]: string[];};\n\tminCountForShowingCounter: number;\n\ttimeFrame: number;\n}\n\nexport function popularBetsConfigFactory(service: LazyClientConfigService): PopularBetsConfig {\n\treturn service.get(PopularBetsConfig);\n}\n\n@ClientConfig({ key:'msPopularSearchData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: popularSearchDataFactory,\n})\nexport class PopularSearchData {\n\tpopularList: PopularSearchModel[];\n}\n\nexport function popularSearchDataFactory(service: ClientConfigService): PopularSearchData {\n\treturn service.get(PopularSearchData);\n}\n\n@ClientConfig({ key:'msPopups' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: popupsConfigFactory,\n})\nexport class PopupsConfig {\n\tcloseButtonType: string;\n\tslidesFromBottom: {[key: string]: boolean;};\n\tslidesFromRight: {[key: string]: boolean;};\n}\n\nexport function popupsConfigFactory(service: ClientConfigService): PopupsConfig {\n\treturn service.get(PopupsConfig);\n}\n\n@ClientConfig({ key:'msPrematchNavigation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: prematchNavigationConfigFactory,\n})\nexport class PrematchNavigationConfig {\n\tisPrematchEventsNavigationEnabled: boolean;\n\tpollingInterval: number;\n\ttreshold: number;\n}\n\nexport function prematchNavigationConfigFactory(service: ClientConfigService): PrematchNavigationConfig {\n\treturn service.get(PrematchNavigationConfig);\n}\n\n@ClientConfig({ key:'msPrettyUrls' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: prettyUrlsConfigFactory,\n})\nexport class PrettyUrlsConfig {\n\tmaxTokenLength: number;\n\ttokenSanitizer: string;\n\ttranslations: {[key: string]: string;};\n}\n\nexport function prettyUrlsConfigFactory(service: ClientConfigService): PrettyUrlsConfig {\n\treturn service.get(PrettyUrlsConfig);\n}\n\n@LazyClientConfig({ key:'msPreviousPageLocation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: previousPageLocationConfigurationFactory,\n})\nexport class PreviousPageLocationConfiguration extends LazyClientConfigBase {\n\tcaheTimeOut: number;\n\tenabled: boolean;\n}\n\nexport function previousPageLocationConfigurationFactory(service: LazyClientConfigService): PreviousPageLocationConfiguration {\n\treturn service.get(PreviousPageLocationConfiguration);\n}\n\n@ClientConfig({ key:'msPriceBoost' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: priceBoostConfigFactory,\n})\nexport class PriceBoostConfig {\n\tfixturesPageSize: number;\n\tisEnabled: boolean;\n\tisEnabledAPB: boolean;\n\tmaxGroupOptions: number;\n\tshowAsTab: boolean;\n\tshowCount: boolean;\n\tshowCountForLive: boolean;\n}\n\nexport function priceBoostConfigFactory(service: ClientConfigService): PriceBoostConfig {\n\treturn service.get(PriceBoostConfig);\n}\n\n@ClientConfig({ key:'msQuickBet' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: quickBetConfigFactory,\n})\nexport class QuickBetConfig {\n\thideActionButtonsOnEmptyStake: boolean;\n\tisAddToBetslipCtaTextEnabled: boolean;\n\tisClearCtaTextEnabled: boolean;\n\tisContextualInfoEnabled: boolean;\n\tisEnabled: boolean;\n\tisEnhancedStakeEnabled: boolean;\n\tisHeaderEnabled: boolean;\n\tisPossibleWinningsUnderStakeInputEnabled: boolean;\n\tisQuickBetParlayEnabled: boolean;\n\tisTotalReturnsEnabled: boolean;\n\tisUserBalanceEnabled: boolean;\n\tshowOnAllPages: boolean;\n\tshowOnEventDetails: boolean;\n\tshowOnLivePage: boolean;\n}\n\nexport function quickBetConfigFactory(service: ClientConfigService): QuickBetConfig {\n\treturn service.get(QuickBetConfig);\n}\n\n@ClientConfig({ key:'msQuickDeposit' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: quickDepositConfigFactory,\n})\nexport class QuickDepositConfig {\n\tisPaymentsLibraryEnabled: boolean;\n\tisQuickDepositEnabled: boolean;\n\tloadQuickDepositConfigOnLogin: boolean;\n\tpath: string;\n\turl?: string;\n}\n\nexport function quickDepositConfigFactory(service: ClientConfigService): QuickDepositConfig {\n\treturn service.get(QuickDepositConfig);\n}\n\n@LazyClientConfig({ key:'msQuickLinks' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: quickLinksFactory,\n})\nexport class QuickLinks extends LazyClientConfigBase {\n\tlayout: LinkListLayout;\n\tlinks: QuickLinkViewModel[];\n}\n\nexport function quickLinksFactory(service: LazyClientConfigService): QuickLinks {\n\treturn service.get(QuickLinks);\n}\n\n@ClientConfig({ key:'msRacing' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: racingConfigFactory,\n})\nexport class RacingConfig {\n\tbogTodayThresholdTime: string;\n\tbogVersion: BogVersion;\n\tcanBogTokenBeUsedWithFreebetToken: boolean;\n\tcountdownTimer: number;\n\teasyBetViewOptions: HorseRacingEasyBetViewOption[];\n\tenabledTabs: {[key: number]: string[];};\n\tfilterRegionIds: string;\n\tgreyhoundsEasyBetViewOptions: GreyhoundsRacingEasyBetViewOption[];\n\tisBOGEnabled: boolean;\n\tisGreyhoundsEnabled: boolean;\n\tmaxPromos: number;\n\tmaxPromosForMobile: number;\n\tminPromos: number;\n\tminPromosForMobile: number;\n\tnextFixturesCount: number;\n\trefreshInterval: number;\n\tshowAllRaces: boolean;\n}\n\nexport function racingConfigFactory(service: ClientConfigService): RacingConfig {\n\treturn service.get(RacingConfig);\n}\n\n@LazyClientConfig({ key:'msRacingPromos' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: racingPromosFactory,\n})\nexport class RacingPromos extends LazyClientConfigBase {\n\tpromos: MarketingViewModel[];\n}\n\nexport function racingPromosFactory(service: LazyClientConfigService): RacingPromos {\n\treturn service.get(RacingPromos);\n}\n\n@LazyClientConfig({ key:'msRandomMultiGenerator' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: randomMultiGeneratorConfigFactory,\n})\nexport class RandomMultiGeneratorConfig extends LazyClientConfigBase {\n\tautoSpinningInterval: number;\n\tdefaultMaxOdds: number;\n\tdefaultMinOdds: number;\n\tdefaultMinWinnings: number;\n\tdefaultSelections: number;\n\tdefaultStake: number;\n\thistoryLength: number;\n\tisEnabled: boolean;\n\tmarketMapping: {[key: number]: MarketMappingConfiguration[];};\n\tmaxSelections: number;\n\tminOddsFallback: number;\n\tminSelections: number;\n\toddsRange: number[];\n\tpossibleWinningsRange: number[];\n\tsports: RandomMultiGeneratorSportsSelection;\n\tsportsConfig: RandomMultiGeneratorSportsConfig[];\n}\n\nexport function randomMultiGeneratorConfigFactory(service: LazyClientConfigService): RandomMultiGeneratorConfig {\n\treturn service.get(RandomMultiGeneratorConfig);\n}\n\n@ClientConfig({ key:'msRealityCheck' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: realityCheckConfigFactory,\n})\nexport class RealityCheckConfig {\n\tcookieName: string;\n\tjurisdictions: string[];\n\trealityCheckEvent: string;\n\tupdateInterval: number;\n}\n\nexport function realityCheckConfigFactory(service: ClientConfigService): RealityCheckConfig {\n\treturn service.get(RealityCheckConfig);\n}\n\n@ClientConfig({ key:'msReBet' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: reBetConfigFactory,\n})\nexport class ReBetConfig {\n\tctaDescriptionEnabledTabs: string[];\n\tctaSubtitleEnabledTabs: string[];\n\tenabledTabs: string[];\n\thelpBoxEnabledTabs: string[];\n}\n\nexport function reBetConfigFactory(service: ClientConfigService): ReBetConfig {\n\treturn service.get(ReBetConfig);\n}\n\n@ClientConfig({ key:'msRegionalQuickLinks' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: regionalQuickLinksConfigFactory,\n})\nexport class RegionalQuickLinksConfig {\n\tbetConfirmationLinks: QuickLinkViewModel[];\n\temptyBetslipLinks: QuickLinkViewModel[];\n}\n\nexport function regionalQuickLinksConfigFactory(service: ClientConfigService): RegionalQuickLinksConfig {\n\treturn service.get(RegionalQuickLinksConfig);\n}\n\n@ClientConfig({ key:'msRegions' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: regionsConfigFactory,\n})\nexport class RegionsConfig {\n\tlistOfLeaguesToHideRegionName: number[];\n\tlistOfRegionsToHideRegionName: number[];\n\tregionNames: string[];\n}\n\nexport function regionsConfigFactory(service: ClientConfigService): RegionsConfig {\n\treturn service.get(RegionsConfig);\n}\n\n@ClientConfig({ key:'msReturnsMessage' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: returnsMessageConfigFactory,\n})\nexport class ReturnsMessageConfig {\n\tdefaultStakes: {[key: string]: number;};\n\tpersistenceTime: number;\n}\n\nexport function returnsMessageConfigFactory(service: ClientConfigService): ReturnsMessageConfig {\n\treturn service.get(ReturnsMessageConfig);\n}\n\n@ClientConfig({ key:'msScoreboardBackground' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: scoreboardBackgroundConfigFactory,\n})\nexport class ScoreboardBackgroundConfig {\n\tbackgrounds: ScoreboardBackground[];\n}\n\nexport function scoreboardBackgroundConfigFactory(service: ClientConfigService): ScoreboardBackgroundConfig {\n\treturn service.get(ScoreboardBackgroundConfig);\n}\n\n@ClientConfig({ key:'msScrollingSize' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: scrollingSizeConfigFactory,\n})\nexport class ScrollingSizeConfig {\n\thideHeaderOnScroll: string[];\n\tmarqueeScrollSize: number;\n\tregionScrollSize: number;\n\tscrollThreshold: number;\n\tscrollingSpeed: {[key: string]: number;};\n\tsportScrollSize: number;\n\ttopNavScrollSize: number;\n}\n\nexport function scrollingSizeConfigFactory(service: ClientConfigService): ScrollingSizeConfig {\n\treturn service.get(ScrollingSizeConfig);\n}\n\n@ClientConfig({ key:'msSeo' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: seoConfigFactory,\n})\nexport class SeoConfig {\n\tclientLoggingDebounce: number;\n\tisClientCatchallLoggingEnabled: boolean;\n\tisPartialCollapsibleContentEnabled: boolean;\n\tremoveHrefToEventForRobot: boolean;\n}\n\nexport function seoConfigFactory(service: ClientConfigService): SeoConfig {\n\treturn service.get(SeoConfig);\n}\n\n@ClientConfig({ key:'msShareMyBet' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: shareMyBetConfigFactory,\n})\nexport class ShareMyBetConfig {\n\tcomplianceCookieExpiryDays: number;\n\tglobalErrorVisibilityTime: number;\n\tisEnabled: boolean;\n\tisHelpBoxEnabled: boolean;\n\tisNewBadgeEnabled: boolean;\n\tisOnboardingEnabled: boolean;\n\tshowBetSharingConfirmationOnlyOnFirstBetShare: boolean;\n}\n\nexport function shareMyBetConfigFactory(service: ClientConfigService): ShareMyBetConfig {\n\treturn service.get(ShareMyBetConfig);\n}\n\n@ClientConfig({ key:'msShowcase' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: showcaseConfigFactory,\n})\nexport class ShowcaseConfig {\n\talternateMarkets: {[key: string]: string;};\n\tbackgrounds: BackgroundImage[];\n\tenabledSportIds: number[];\n\tisShowcaseModuleEnabled: boolean;\n\titems: ShowcaseViewModel[];\n\tmarketGridGroupIds: ShowcaseGroupsOfMarkets[];\n\tnextGoalMarketGroupId: string;\n\tsixPackSportTypeIds: number[];\n}\n\nexport function showcaseConfigFactory(service: ClientConfigService): ShowcaseConfig {\n\treturn service.get(ShowcaseConfig);\n}\n\n@LazyClientConfig({ key:'msSitecore' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreFactory,\n})\nexport class Sitecore extends LazyClientConfigBase {\n\taccaBoost: SitecoreAccaBoost;\n\tbetBuilder: BetBuilder;\n\tbetBuilderEntainUI: BetBuilderEntainUI;\n\tbetBuilderHelpPage: BetBuilderHelpPage;\n\tbetBuilderSignposting: BetBuilderSignposting;\n\tbetFinder: BetFinder;\n\tbetStation?: BetStation;\n\tbetslip: Betslip;\n\tbetslipSettings: BetslipSettings;\n\tbetslipUpsell: BetslipUpsell;\n\tbettingPreferences: BettingPreferences;\n\tcashoutSettings: CashoutSettings;\n\tcontentMessages: ContentMessages;\n\tcouponTags: CouponTags;\n\tcoupons: Coupons;\n\tcrmPostBetSignposting: CrmPostBetSignposting;\n\tcrmPromotions: CrmPromotions;\n\tcrmPromotionsBanners: CrmPromotionsBanners;\n\tcrmTokens: CrmTokens;\n\teSports: ESportsConfig;\n\tearlyPayout: EarlyPayout;\n\tearlyPayoutErrors: EarlyPayoutErrors;\n\tearlyPayoutPushErrors: EarlyPayoutPushErrorItem[];\n\tearlyPayoutSettings: EarlyPayoutSettings;\n\tearlyPayoutV2: EarlyPayoutV2;\n\tevent: Event;\n\teventGameNotes: EventGameNotes;\n\teventGrid: EventGrid;\n\teventGridMarketHeaders: EventGridMarketHeaders;\n\teventScoreboard: EventScoreboard;\n\tfavouritesDashboard: FavouritesDashboard;\n\tfavouritesMessages: FavouritesMessages;\n\tfixture: Fixture;\n\tformCoupon: FormCoupon;\n\tfreeBetOverview: FreeBetOverview;\n\tgeoLocation: GeoLocation;\n\tglobalMessages: GlobalMessages;\n\tgreyhoundRacing: GreyHoundRacing;\n\thorseRacing: HorseRacing;\n\tlinkExternalAccounts: LinkExternalAccounts;\n\tlinks: {[key: string]: LinkTemplateForClient;};\n\tliveAnimation: LiveAnimation;\n\tliveNavigation: LiveNavigation;\n\tliveSportsVisualizationTranslation: LiveSportsVisualizationTranslation;\n\tlobby: Lobby;\n\tmarketHelp: MarketHelp;\n\tmarketSubtypeLogo: MarketSubtypeLogo;\n\tmarquee: Marquee;\n\tmedia: Media;\n\tmedia_NotLoggedin: Media_NotLoggedin;\n\tmenus: Menus;\n\tmodalDialogs: ModalDialogs;\n\tmultiBuilder: MultiBuilder;\n\tmultiRandomGenerator: MultiRandomGenerator;\n\tmyBets: MyBets;\n\tmyBets_FilterView: MyBetsFilterView;\n\tmyBets_Print: MyBetsPrint;\n\tnativeAlerts?: NativeAlert;\n\tngrxReports: NgrxReports;\n\toddsDisplay: OddsDisplay;\n\tquickBet: QuickBet;\n\tquickBetButtonStates: QuickBetButtonStates;\n\tquickBetHelp: QuickBetHelp;\n\tquickBetMessages: QuickBetMessages;\n\tquickBetModalDialog: QuickBetModalDialog;\n\tquickBetNumpad: QuickBetNumpad;\n\treBet: ReBet;\n\treturnsMessage: ReturnsMessage;\n\tscoreboardPlayerStats: {[key: string]: {[key: string]: string;};};\n\tscoreboardPointsOmit: number[];\n\tseo: Seo;\n\tshareMyBet: ShareMyBet;\n\tshowcaseMessages: ShowcaseMessages;\n\tstakeChanges: StakeChanges;\n\tstatistics: SitecoreStatistics;\n\tsystemBets: SystemBets;\n\tteamGrouping: TeamGrouping;\n\ttoastLiveNotifications: ToastLiveNotifications;\n\ttoastNotifications: ToastNotifications;\n\twidgets: Widgets;\n\tpanicButtonMessages: PanicButtonMessages;\n}\n\nexport function sitecoreFactory(service: LazyClientConfigService): Sitecore {\n\treturn service.get(Sitecore);\n}\n\n@LazyClientConfig({ key:'msSitecoreEventDetails' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreEventDetailsConfigFactory,\n})\nexport class SitecoreEventDetailsConfig extends LazyClientConfigBase {\n\teventDetails: EventDetailsModel;\n\tonboarding: {[key: string]: string;};\n\tsitemapOrder?: EventDetailsSitemapDictionary[];\n}\n\nexport function sitecoreEventDetailsConfigFactory(service: LazyClientConfigService): SitecoreEventDetailsConfig {\n\treturn service.get(SitecoreEventDetailsConfig);\n}\n\n@LazyClientConfig({ key:'msSitecoreGameMessages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreGameMessagesConfigFactory,\n})\nexport class SitecoreGameMessagesConfig extends LazyClientConfigBase {\n\tsecondaryBroadcastInfo?: SecondaryBroadcastInfo;\n}\n\nexport function sitecoreGameMessagesConfigFactory(service: LazyClientConfigService): SitecoreGameMessagesConfig {\n\treturn service.get(SitecoreGameMessagesConfig);\n}\n\n@LazyClientConfig({ key:'msSitecoreMobileConfirmation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreMobileConfirmationConfigFactory,\n})\nexport class SitecoreMobileConfirmationConfig extends LazyClientConfigBase {\n\tdialogCloseButtonText: string;\n\tdialogConfirmButtonText: string;\n\tdialogHeading: string;\n\tdialogUpdateButtonText: string;\n\tmultiFactorAuthMessage: string;\n\tpropertyName: string;\n\tupdateMobileMessage: string;\n\tupdatePhoneNumberURL: string;\n}\n\nexport function sitecoreMobileConfirmationConfigFactory(service: LazyClientConfigService): SitecoreMobileConfirmationConfig {\n\treturn service.get(SitecoreMobileConfirmationConfig);\n}\n\n@LazyClientConfig({ key:'msSitecoreMyBets' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreMyBetsConfigFactory,\n})\nexport class SitecoreMyBetsConfig extends LazyClientConfigBase {\n\tmyBets: {[key: string]: string;};\n\tmyBetsImages: MyBetsImage[];\n\tmyBetsTax: {[key: string]: string;};\n\tmyBets_NotLoggedIn?: ClientViewTemplate;\n}\n\nexport function sitecoreMyBetsConfigFactory(service: LazyClientConfigService): SitecoreMyBetsConfig {\n\treturn service.get(SitecoreMyBetsConfig);\n}\n\n@LazyClientConfig({ key:'msSitecoreOddsPreference' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreOddsPreferenceConfigFactory,\n})\nexport class SitecoreOddsPreferenceConfig extends LazyClientConfigBase {\n\tacceptAnyOddsLabel: string;\n\tacceptAnyOddsSubtext: string;\n\tacceptOnlyHigherOddsLabel: string;\n\tacceptOnlyHigherOddsSubtext: string;\n\tdescription: string;\n\tdontAcceptOddChangesLabel: string;\n\thelperText: string;\n\toddChangePreferenceError: string;\n\toddChangePreferenceSuccess: string;\n\toddsPreferencePopupTitle: string;\n\tsaveButton: string;\n\ttooltipText: string;\n}\n\nexport function sitecoreOddsPreferenceConfigFactory(service: LazyClientConfigService): SitecoreOddsPreferenceConfig {\n\treturn service.get(SitecoreOddsPreferenceConfig);\n}\n\n@LazyClientConfig({ key:'msSitecorePopularBets' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecorePopularBetsConfigFactory,\n})\nexport class SitecorePopularBetsConfig extends LazyClientConfigBase {\n\tlogos: PopularBetsFallbackLogoModel[];\n\tmessages: PopularBetsMessagesConfig;\n}\n\nexport function sitecorePopularBetsConfigFactory(service: LazyClientConfigService): SitecorePopularBetsConfig {\n\treturn service.get(SitecorePopularBetsConfig);\n}\n\n@LazyClientConfig({ key:'msSitecoreTokenCardDetails' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitecoreTokenCardDetailsConfigFactory,\n})\nexport class SitecoreTokenCardDetailsConfig extends LazyClientConfigBase {\n\tbetAndGetCardDetailsQualify?: TokenCardDetailsReplaceParameters;\n\tfreeBetCardDetailsQualify?: TokenCardDetailsReplaceParameters;\n\tmessages?: TokenCardDetailsMessages;\n\toddsBoostCardDetailsQualify?: TokenCardDetailsReplaceParameters;\n\triskFreeCardDetailsQualify?: TokenCardDetailsReplaceParameters;\n}\n\nexport function sitecoreTokenCardDetailsConfigFactory(service: LazyClientConfigService): SitecoreTokenCardDetailsConfig {\n\treturn service.get(SitecoreTokenCardDetailsConfig);\n}\n\n@LazyClientConfig({ key:'msSitemapSitecore' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sitemapSitecoreFactory,\n})\nexport class SitemapSitecore extends LazyClientConfigBase {\n\tAllLeagues: string;\n\tAllTournaments: string;\n\tCalendar: string;\n\tClose: string;\n\tConferenceDrawerTooltip: string;\n\tCouponDrawerSubtitle: string;\n\tCouponDrawerTooltip: string;\n\tCoupons: string;\n\tEsports: string;\n\tFavourites: string;\n\tFeatured: string;\n\tLeagueDrawerTooltip: string;\n\tLive: string;\n\tLiveVideo: string;\n\tMultiBuilder: string;\n\tMultiSportsHub: string;\n\tOutrights: string;\n\tSeeAll: string;\n\tSelectConference: string;\n\tSelectLeague: string;\n\tSelectTournament: string;\n\tSpecials: string;\n\tStandings: string;\n\tTournamentDrawerTooltip: string;\n}\n\nexport function sitemapSitecoreFactory(service: LazyClientConfigService): SitemapSitecore {\n\treturn service.get(SitemapSitecore);\n}\n\n@ClientConfig({ key:'msSkeleton' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: skeletonConfigFactory,\n})\nexport class SkeletonConfig {\n\tisEnabled: boolean;\n\tmaxtimeToSkeletonDuration: number;\n\tskeletonAniminationStartAt: number;\n}\n\nexport function skeletonConfigFactory(service: ClientConfigService): SkeletonConfig {\n\treturn service.get(SkeletonConfig);\n}\n\n@LazyClientConfig({ key:'msSportMarkets' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sportMarketsConfigurationFactory,\n})\nexport class SportMarketsConfiguration extends LazyClientConfigBase {\n\tmarkets: {[key: number]: {[key: string]: string;};};\n\tmaxFixturesCount: number;\n}\n\nexport function sportMarketsConfigurationFactory(service: LazyClientConfigService): SportMarketsConfiguration {\n\treturn service.get(SportMarketsConfiguration);\n}\n\n@ClientConfig({ key:'msSportsApiVersion' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: sportsApiVersionConfigFactory,\n})\nexport class SportsApiVersionConfig {\n\tsportsApiVersion: string;\n\tsportsApiVersionHeaderName: string;\n}\n\nexport function sportsApiVersionConfigFactory(service: ClientConfigService): SportsApiVersionConfig {\n\treturn service.get(SportsApiVersionConfig);\n}\n\n@ClientConfig({ key:'msSports' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: sportsConfigFactory,\n})\nexport class SportsConfig {\n\tcompetitionLandingPage: number[];\n\tcompetitionOfferPriority: SportOfferOrder;\n\ttopCompetitions: number[];\n\tvirtuals: VirtualSportsConfiguration;\n}\n\nexport function sportsConfigFactory(service: ClientConfigService): SportsConfig {\n\treturn service.get(SportsConfig);\n}\n\n@ClientConfig({ key:'msSportsProductMenu' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: sportsProductMenuConfigFactory,\n})\nexport class SportsProductMenuConfig {\n\trecentlyVisitedExpirationDays: number;\n\tversion: string;\n}\n\nexport function sportsProductMenuConfigFactory(service: ClientConfigService): SportsProductMenuConfig {\n\treturn service.get(SportsProductMenuConfig);\n}\n\n@LazyClientConfig({ key:'msSportsProductMenuConfigV2' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sportsProductMenuConfigV2Factory,\n})\nexport class SportsProductMenuConfigV2 extends LazyClientConfigBase {\n\tallSportsSection?: AllSportsSection;\n\tpopularSection?: PopularSection;\n\trecentlyVisitedSection?: RecentlyVisitedSection;\n}\n\nexport function sportsProductMenuConfigV2Factory(service: LazyClientConfigService): SportsProductMenuConfigV2 {\n\treturn service.get(SportsProductMenuConfigV2);\n}\n\n@LazyClientConfig({ key:'msSportsProductMenuSitecore' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sportsProductMenuSitecoreFactory,\n})\nexport class SportsProductMenuSitecore extends LazyClientConfigBase {\n\tAllLeaguesClose: string;\n\tAllLeaguesHeader: string;\n}\n\nexport function sportsProductMenuSitecoreFactory(service: LazyClientConfigService): SportsProductMenuSitecore {\n\treturn service.get(SportsProductMenuSitecore);\n}\n\n@ClientConfig({ key:'msSportsUser' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: sportsUserConfigFactory,\n})\nexport class SportsUserConfig {\n\tassociatedAccount?: string;\n\tcdnaProfileDetails: CdnaUserProfile;\n\tclientIP: string;\n\tcolumnSize?: number;\n\tisEarlyPayoutAllowed: boolean;\n\tisEligibleForNewCustomerOffer: boolean;\n\tisQuickDepositEnabled: boolean;\n\tjurisdiction: string;\n}\n\nexport function sportsUserConfigFactory(service: ClientConfigService): SportsUserConfig {\n\treturn service.get(SportsUserConfig);\n}\n\n@LazyClientConfig({ key:'msSportsUserSettings' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: sportsUserSettingsFactory,\n})\nexport class SportsUserSettings extends LazyClientConfigBase {\n\tbettingSettings: UserSettingsData;\n\tconfigSettings: ConfigSettings;\n}\n\nexport function sportsUserSettingsFactory(service: LazyClientConfigService): SportsUserSettings {\n\treturn service.get(SportsUserSettings);\n}\n\n@ClientConfig({ key:'msStake' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: stakeConfigFactory,\n})\nexport class StakeConfig {\n\taddToStakeValues: {[key: string]: number[];};\n\tcheckUserStakeLimit: boolean;\n\tisMaxStakePerBetslipStrategy: boolean;\n\tmaxLeadingDigits: {[key: string]: number;};\n\tmaxStakeByCurrency?: {[key: string]: number;};\n\tminStakeThresholdValue: number;\n\tshowStakeLimitInfo: boolean;\n\tstakeValuesByCurrency: {[key: string]: number[];};\n}\n\nexport function stakeConfigFactory(service: ClientConfigService): StakeConfig {\n\treturn service.get(StakeConfig);\n}\n\n@ClientConfig({ key:'msStatistics' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: statisticsConfigFactory,\n})\nexport class StatisticsConfig {\n\tdirectMatchesBarColors: DirectMatchesBarColors;\n\texpandedLeagueTablesCount: number;\n\tisPerformStatsEnabled: boolean;\n\tpitcherEnabledSports: number[];\n\tpromotionHighlightColors: {[key: number]: {[key: number]: string;};};\n\tpromotionHighlightColorsWithPositions: PromotionHighlightColorsWithPositions;\n\tstatisticsUrlTemplate: string;\n\tsupportedSports: number[];\n\tteamRankEnabledSports: number[];\n\tteamRecordsFormat: {[key: number]: CompetitionRecordsFormat;};\n}\n\nexport function statisticsConfigFactory(service: ClientConfigService): StatisticsConfig {\n\treturn service.get(StatisticsConfig);\n}\n\n@ClientConfig({ key:'msStory' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: storyConfigFactory,\n})\nexport class StoryConfig {\n\tminSwipeDistance: number;\n}\n\nexport function storyConfigFactory(service: ClientConfigService): StoryConfig {\n\treturn service.get(StoryConfig);\n}\n\n@ClientConfig({ key:'msStylingGrid' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: stylingGridConfigurationFactory,\n})\nexport class StylingGridConfiguration {\n\tparticipantImageSportBlacklist: number[];\n\tshowParticipantBoldName: boolean;\n}\n\nexport function stylingGridConfigurationFactory(service: ClientConfigService): StylingGridConfiguration {\n\treturn service.get(StylingGridConfiguration);\n}\n\n@ClientConfig({ key:'msTaxation' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: taxationConfigFactory,\n})\nexport class TaxationConfig {\n\tisTaxationEnabled: boolean;\n\ttaxableSports: number[];\n}\n\nexport function taxationConfigFactory(service: ClientConfigService): TaxationConfig {\n\treturn service.get(TaxationConfig);\n}\n\n@ClientConfig({ key:'msTeamPages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: teamPagesConfigFactory,\n})\nexport class TeamPagesConfig {\n\tblacklistedCompetitions: string[];\n\timageProfileEnabledSportIds: number[];\n\tisEnabled: boolean;\n\tisEnabledOnHomeLobby: boolean;\n\tisNewBadgeEnabled: boolean;\n\tmaxCompetitions: number;\n\tminTeamsOnHomeLobby: number;\n\tsportsToDisplayLogos: number[];\n\twhitelistedSports: number[];\n}\n\nexport function teamPagesConfigFactory(service: ClientConfigService): TeamPagesConfig {\n\treturn service.get(TeamPagesConfig);\n}\n\n@LazyClientConfig({ key:'msTeamPagesModule' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: teamPagesModuleConfigFactory,\n})\nexport class TeamPagesModuleConfig extends LazyClientConfigBase {\n\tbackgroundImages: ScoreboardBackgroundModel;\n\tteamPageItems: TeamPagesViewModel;\n}\n\nexport function teamPagesModuleConfigFactory(service: LazyClientConfigService): TeamPagesModuleConfig {\n\treturn service.get(TeamPagesModuleConfig);\n}\n\n@ClientConfig({ key:'msTeaserBet' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: teaserBetConfigFactory,\n})\nexport class TeaserBetConfig {\n\tallowedTemplateIds: TeaserBetTemplateIds[];\n\tisEnabled: boolean;\n\tisTeaserPickPriceTrackingEnabled: boolean;\n\tpointsSliderConfig: TeaserBetPointsSlider[];\n\tpriceTableCache: TeaserPriceTableCacheDuration;\n}\n\nexport function teaserBetConfigFactory(service: ClientConfigService): TeaserBetConfig {\n\treturn service.get(TeaserBetConfig);\n}\n\n@ClientConfig({ key:'msTimeFilter' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: timeFilterConfigFactory,\n})\nexport class TimeFilterConfig {\n\tisTimeFilterEnabled: boolean;\n\ttimeFilterOptions: string[];\n\ttimeFilterOptionsForCoupons: string[];\n}\n\nexport function timeFilterConfigFactory(service: ClientConfigService): TimeFilterConfig {\n\treturn service.get(TimeFilterConfig);\n}\n\n@ClientConfig({ key:'msTopEvents' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: topEventsConfigFactory,\n})\nexport class TopEventsConfig {\n\tmaxEventsPerPod: number;\n\tmaxOptionsPerOutrightPod: number;\n}\n\nexport function topEventsConfigFactory(service: ClientConfigService): TopEventsConfig {\n\treturn service.get(TopEventsConfig);\n}\n\n@LazyClientConfig({ key:'msTopNavigation' , product: ClientConfigProductName.SPORTS, reload: true })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: topNavigationConfigFactory,\n})\nexport class TopNavigationConfig extends LazyClientConfigBase {\n\tafterSports: NavigationBarItem[];\n\tbeforeSports: NavigationBarItem[];\n\tfixedItems: NavigationBarItem[];\n\tisDesktopNavigationCompact: boolean;\n\tmaxSports: number;\n\tsportsConfig: NavigationSportsConfig;\n\ttopNavigationItems: NavigationBarItem[];\n}\n\nexport function topNavigationConfigFactory(service: LazyClientConfigService): TopNavigationConfig {\n\treturn service.get(TopNavigationConfig);\n}\n\n@ClientConfig({ key:'msTournamentsData' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: tournamentsDataConfigFactory,\n})\nexport class TournamentsDataConfig {\n\ttournaments: Tournament[];\n}\n\nexport function tournamentsDataConfigFactory(service: ClientConfigService): TournamentsDataConfig {\n\treturn service.get(TournamentsDataConfig);\n}\n\n@LazyClientConfig({ key:'msTrapImages' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [LazyClientConfigService],\n\tuseFactory: trapImagesFactory,\n})\nexport class TrapImages extends LazyClientConfigBase {\n\tdogTrap: TrapImage[];\n}\n\nexport function trapImagesFactory(service: LazyClientConfigService): TrapImages {\n\treturn service.get(TrapImages);\n}\n\n@ClientConfig({ key:'msUKGC' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: uKGCConfigFactory,\n})\nexport class UKGCConfig {\n\tisPotentialReturnsEnabledForSingle: boolean;\n}\n\nexport function uKGCConfigFactory(service: ClientConfigService): UKGCConfig {\n\treturn service.get(UKGCConfig);\n}\n\n@ClientConfig({ key:'msWidget' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: widgetConfigFactory,\n})\nexport class WidgetConfig {\n\tdefaultRightColumn: Widget[];\n\torderedRenderingTimeout: number;\n\tpageRefreshInterval: PageRefreshConfig[];\n}\n\nexport function widgetConfigFactory(service: ClientConfigService): WidgetConfig {\n\treturn service.get(WidgetConfig);\n}\n\n@ClientConfig({ key:'msWorldCupHub' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: worldCupHubConfigFactory,\n})\nexport class WorldCupHubConfig {\n\tisNewBadgeEnabled: boolean;\n\twcEventHubURLs: CultureUrl[];\n}\n\nexport function worldCupHubConfigFactory(service: ClientConfigService): WorldCupHubConfig {\n\treturn service.get(WorldCupHubConfig);\n}\n\n@ClientConfig({ key:'msYahooOpenId' , product: ClientConfigProductName.SPORTS })\n@Injectable({\n\tprovidedIn: 'root',\n\tdeps: [ClientConfigService],\n\tuseFactory: yahooOpenIdConfigFactory,\n})\nexport class YahooOpenIdConfig {\n\tenableOnBetPlacement: boolean;\n\tnativeAppCookie: string;\n}\n\nexport function yahooOpenIdConfigFactory(service: ClientConfigService): YahooOpenIdConfig {\n\treturn service.get(YahooOpenIdConfig);\n}\n\n","import { Injectable } from '@angular/core';\n\nimport { StatePersistServiceRegistry } from './state-storage-persist-service.registry';\nimport { ISavedState } from './state-storage.model';\n\n@Injectable({ providedIn: 'root' })\nexport default class StateConverterService {\n constructor(private statePersistServices: StatePersistServiceRegistry) {}\n\n convert(state: any): ISavedState {\n return Object.entries(state)\n .map(([key, value]) => ({ feature: key, state: value }))\n .reduce((aggregate, current) => {\n const service = this.statePersistServices.get(current.feature);\n if (service) {\n //@ts-ignore no way around refactoring this one since ISavedState is an empty interface :)\n aggregate[current.feature] = service.save(current.state);\n }\n\n return aggregate;\n }, {} as ISavedState);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NgrxReportsConfiguration } from '@frontend/sports/common/client-config-data-access';\nimport { LocalStoreService, SessionStoreService } from '@frontend/vanilla/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NgrxReportsService {\n private readonly STORE_KEY = 'ngrx-reports-v1';\n actions: T[] = [];\n private threshold = 0;\n\n constructor(\n private ngrxReportsConfig: NgrxReportsConfiguration,\n private local: LocalStoreService,\n private session: SessionStoreService,\n ) {}\n\n addAction(action: T) {\n if (this.actions.length >= this.ngrxReportsConfig.maxActions) {\n this.actions.shift();\n }\n\n this.actions.push(action);\n this.threshold++;\n if (this.threshold === this.ngrxReportsConfig.actionsUpdateThreshold) {\n this.local.set(this.STORE_KEY, this.actions);\n this.session.set(this.STORE_KEY, this.actions);\n this.threshold = 0;\n }\n }\n\n getActions(): T[] {\n return this.local.get(this.STORE_KEY)!;\n }\n}\n","import { EventModel, EventOptionGroup } from '@frontend/sports/betting-offer/feature/model';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\nimport { WinGameFixture } from '@frontend/sports/racing/feature/models';\nimport { MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\nimport { LinkViewModel } from '@frontend/sports/types/models/link';\n\nimport { BetBuilderMarket } from '../betbuilder/model/bet-builder.model';\nimport { Promotion } from '../crm-offer-data/crm-offer.model';\n\nexport enum BadgeAndRibbonVisibilityOptions {\n ShowBadgeWithoutTitleOverride = 'ShowBadgeWithoutTitleOverride',\n ShowBadgeWithTitleOverride = 'ShowBadgeWithTitleOverride',\n DoNotShowAnyBadgeOrRibbon = 'DoNotShowAnyBadgeOrRibbon',\n ShowPromoRibbon = 'ShowPromoRibbon',\n}\n\nexport enum NameVisibility {\n WithoutOverride = 'WithoutOverride',\n WithOverride = 'WithOverride',\n DoNotShow = 'DoNotShow',\n}\n\nexport enum LobbyType {\n Home,\n Sport,\n}\n\nexport enum CompetitionPageType {\n Competition,\n Region,\n}\n\nexport type MarqueeComponentTile = Tile | Promotion;\n\nexport interface IMarqueeTile {\n marqueeType: MarqueeType;\n fixtureId: string;\n sportId: number;\n competitionId: number;\n regionId: number;\n showOnHomeLobby: boolean;\n showOnSportsLobby: boolean;\n marketAndOptionNameOverride?: string;\n eventNameOverride?: string;\n badgeTitleOverride?: string;\n previousOdds?: number;\n previousOddsNumerator?: number;\n previousOddsDenominator?: number;\n previousOddsUs?: number;\n gridGroupId: string;\n gameTemplateIds: number[];\n showOnEventPage: boolean;\n eventIds?: string[];\n resultId?: number;\n optionMarketId?: number;\n gameId?: number;\n optionId?: number;\n betbuilderSelectionOverride?: string;\n eventNameVisibility: string;\n marketAndOptionNameVisibility: string;\n link?: LinkViewModel;\n imageUrl: string;\n imageAlt?: string;\n trafficId?: string;\n badgeAndRibbonVisibilityOption: string;\n noEventSportIds?: number[];\n showOnCompetitionPage: boolean;\n competitionIds?: number[];\n regionIds: number[];\n regionSportId: number;\n crmPromotionId?: string;\n crmPromotionVisibility?: string;\n showOnTeamsPage: boolean;\n OGPOverLay?: boolean;\n}\nexport interface Tile {\n index: number;\n source: MarqueeTile | null;\n sportId: number;\n fallbackMarketType?: string;\n fixtureId: string;\n event: EventModel;\n marqueeType: MarqueeType;\n showOnHomeLobby: boolean;\n showOnSportsLobby: boolean;\n crmPromotionId?: string;\n crmPromotionVisibility: VisibilityOnMarquee;\n marketType?: string;\n trackingDetail?: MarqueeTracking;\n isFromPortal?: boolean;\n ogpOverlay?: boolean;\n}\n\nexport class MarqueeTracking {\n modulePosition: string;\n pageLayout: string;\n moduleCustomName: string;\n marqueeRecommendationType?: string;\n marqueeName?: string;\n sitecoreTemplateId?: string;\n}\n\nexport interface FixtureTile extends Tile {\n optionId: number;\n optionGroupId: number;\n marketAndOptionNameOverride?: string;\n eventNameOverride?: string;\n badgeTitle?: string;\n //TODO try to replace native price with Odds\n previousNativePrice?: NativePrice;\n optionGroup?: EventOptionGroup;\n gridGroupId?: string;\n gridGroupIds: string[];\n gameTemplateIds: string[];\n eventNameVisibility: string;\n marketAndOptionNameVisibility: string;\n link?: LinkViewModel;\n imageUrl?: string;\n imageAlt?: string;\n trafficId?: string;\n badgeAndRibbonVisibilityOption: string;\n noEventSportIds?: number[];\n isPriceBoosted: boolean;\n racingEvent?: WinGameFixture;\n}\n\nexport type TileWithFallbackMarketTypes = Tile;\n\nexport interface BetBuilderTile extends Tile {\n //TODO try to replace native price with Odds\n previousNativePrice?: NativePrice;\n name: string;\n betBuilderFixtureId: string;\n market: BetBuilderMarket;\n imageUrl?: string;\n hideBuildABetBadge: boolean;\n leftAlignOddsButton: boolean;\n AwayIndicatorOverride?: string;\n BadgeOverrideText?: string;\n OverriddenTeamnames?: string;\n eventOptionGroups?: EventOptionGroup[];\n doNotShowAnyBadgeRibbon?: boolean;\n}\n\nexport interface MarqueeTitleIcon {\n sportId?: number;\n id: string;\n title: string;\n icon?: string;\n}\n\nexport interface OutrightTileData {\n id: number;\n index: number;\n odds: number;\n name: string;\n}\n\nexport enum VisibilityOnMarquee {\n MarqueeOnly = 'MarqueeOnly',\n PromotionOnly = 'PromotionOnly',\n All = 'All',\n}\n\nexport enum TrackingTileNames {\n RegularMarquee = 'eventMarquee',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BuildABetMarquee = 'BuildABetMarquee',\n SpecialMarquee = 'SpecialMarquee',\n}\n\nexport type TileOrPromotion = Tile | Promotion;\n\nexport function isTile(item: TileOrPromotion): item is Tile {\n return 'marqueeType' in item && item.marqueeType !== undefined;\n}\n\nexport function isRegularTile(item: Tile): item is FixtureTile {\n return item.marqueeType === MarqueeType.Regular;\n}\n\nexport function isSpecialTile(item: Tile): item is FixtureTile {\n return item.marqueeType === MarqueeType.Special;\n}\n\nexport function isBetBuilderTile(item: Tile): item is BetBuilderTile {\n return item.marqueeType === MarqueeType.BuildABet;\n}\n\nexport function isRacingTile(item: Tile): item is FixtureTile {\n return isSpecialTile(item) && !!item.racingEvent;\n}\n\nexport interface ScoreDetails {\n position: number;\n score: number;\n}\n\nexport interface CompetitonTileRequestModel {\n competitionIds: number[];\n sportId: number;\n type: CompetitionPageType;\n interval?: { from?: string; to?: string };\n}\n\nexport interface MarqueeTrackingModel {\n url: string;\n sportId?: string;\n leagueId?: string;\n eventDetails: string;\n}\n","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\n\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\n\n// The maximum exponent magnitude.\n// The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\nvar EXP_LIMIT = 9e15,\n // 0 to 9e15\n\n // The limit on the value of `precision`, and on the value of the first argument to\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\n MAX_DIGITS = 1e9,\n // 0 to 1e9\n\n // Base conversion alphabet.\n NUMERALS = '0123456789abcdef',\n // The natural logarithm of 10 (1025 digits).\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\n // Pi (1025 digits).\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\n // The initial configuration properties of the Decimal constructor.\n DEFAULTS = {\n // These values must be integers within the stated ranges (inclusive).\n // Most of these values can be changed at run-time using the `Decimal.config` method.\n\n // The maximum number of significant digits of the result of a calculation or base conversion.\n // E.g. `Decimal.config({ precision: 20 });`\n precision: 20,\n // 1 to MAX_DIGITS\n\n // The rounding mode used when rounding to `precision`.\n //\n // ROUND_UP 0 Away from zero.\n // ROUND_DOWN 1 Towards zero.\n // ROUND_CEIL 2 Towards +Infinity.\n // ROUND_FLOOR 3 Towards -Infinity.\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\n //\n // E.g.\n // `Decimal.rounding = 4;`\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\n rounding: 4,\n // 0 to 8\n\n // The modulo mode used when calculating the modulus: a mod n.\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\n // The remainder (r) is calculated as: r = a - n * q.\n //\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\n // HALF_EVEN 6 The IEEE 754 remainder function.\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\n //\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\n // be used, but they may not give useful results.\n modulo: 1,\n // 0 to 9\n\n // The exponent value at and beneath which `toString` returns exponential notation.\n // JavaScript numbers: -7\n toExpNeg: -7,\n // 0 to -EXP_LIMIT\n\n // The exponent value at and above which `toString` returns exponential notation.\n // JavaScript numbers: 21\n toExpPos: 21,\n // 0 to EXP_LIMIT\n\n // The minimum exponent value, beneath which underflow to zero occurs.\n // JavaScript numbers: -324 (5e-324)\n minE: -EXP_LIMIT,\n // -1 to -EXP_LIMIT\n\n // The maximum exponent value, above which overflow to Infinity occurs.\n // JavaScript numbers: 308 (1.7976931348623157e+308)\n maxE: EXP_LIMIT,\n // 1 to EXP_LIMIT\n\n // Whether to use cryptographically-secure random number generation, if available.\n crypto: false // true/false\n },\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\n\n inexact,\n quadrant,\n external = true,\n decimalError = '[DecimalError] ',\n invalidArgument = decimalError + 'Invalid argument: ',\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\n cryptoUnavailable = decimalError + 'crypto unavailable',\n tag = '[object Decimal]',\n mathfloor = Math.floor,\n mathpow = Math.pow,\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\n BASE = 1e7,\n LOG_BASE = 7,\n MAX_SAFE_INTEGER = 9007199254740991,\n LN10_PRECISION = LN10.length - 1,\n PI_PRECISION = PI.length - 1,\n // Decimal.prototype object\n P = {\n toStringTag: tag\n };\n\n// Decimal prototype methods\n\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\n\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\nP.absoluteValue = P.abs = function () {\n var x = new this.constructor(this);\n if (x.s < 0) x.s = 1;\n return finalise(x);\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\nP.ceil = function () {\n return finalise(new this.constructor(this), this.e + 1, 2);\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\nP.clampedTo = P.clamp = function (min, max) {\n var k,\n x = this,\n Ctor = x.constructor;\n min = new Ctor(min);\n max = new Ctor(max);\n if (!min.s || !max.s) return new Ctor(NaN);\n if (min.gt(max)) throw Error(invalidArgument + max);\n k = x.cmp(min);\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\n};\n\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\nP.comparedTo = P.cmp = function (y) {\n var i,\n j,\n xdL,\n ydL,\n x = this,\n xd = x.d,\n yd = (y = new x.constructor(y)).d,\n xs = x.s,\n ys = y.s;\n\n // Either NaN or ±Infinity?\n if (!xd || !yd) {\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\n }\n\n // Either zero?\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\n\n // Signs differ?\n if (xs !== ys) return xs;\n\n // Compare exponents.\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\n xdL = xd.length;\n ydL = yd.length;\n\n // Compare digit by digit.\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\n }\n\n // Compare lengths.\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\n};\n\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\nP.cosine = P.cos = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (!x.d) return new Ctor(NaN);\n\n // cos(0) = cos(-0) = 1\n if (!x.d[0]) return new Ctor(1);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\n Ctor.rounding = 1;\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\n};\n\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\nP.cubeRoot = P.cbrt = function () {\n var e,\n m,\n n,\n r,\n rep,\n s,\n sd,\n t,\n t3,\n t3plusx,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\n external = false;\n\n // Initial estimate.\n s = x.s * mathpow(x.s * x, 1 / 3);\n\n // Math.cbrt underflow/overflow?\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\n if (!s || Math.abs(s) == 1 / 0) {\n n = digitsToString(x.d);\n e = x.e;\n\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\n if (s = (e - n.length + 1) % 3) n += s == 1 || s == -2 ? '0' : '00';\n s = mathpow(n, 1 / 3);\n\n // Rarely, e may be one less than the result exponent value.\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\n if (s == 1 / 0) {\n n = '5e' + e;\n } else {\n n = s.toExponential();\n n = n.slice(0, n.indexOf('e') + 1) + e;\n }\n r = new Ctor(n);\n r.s = x.s;\n } else {\n r = new Ctor(s.toString());\n }\n sd = (e = Ctor.precision) + 3;\n\n // Halley's method.\n // TODO? Compare Newton's method.\n for (;;) {\n t = r;\n t3 = t.times(t).times(t);\n t3plusx = t3.plus(x);\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\n\n // TODO? Replace with for-loop and checkRoundingDigits.\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\n n = n.slice(sd - 3, sd + 1);\n\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\n // , i.e. approaching a rounding boundary, continue the iteration.\n if (n == '9999' || !rep && n == '4999') {\n // On the first iteration only, check to see if rounding up gives the exact result as the\n // nines may infinitely repeat.\n if (!rep) {\n finalise(t, e + 1, 0);\n if (t.times(t).times(t).eq(x)) {\n r = t;\n break;\n }\n }\n sd += 4;\n rep = 1;\n } else {\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\n // If not, then there are further digits and m will be truthy.\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\n // Truncate to the first rounding digit.\n finalise(r, e + 1, 1);\n m = !r.times(r).times(r).eq(x);\n }\n break;\n }\n }\n }\n external = true;\n return finalise(r, e, Ctor.rounding, m);\n};\n\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\nP.decimalPlaces = P.dp = function () {\n var w,\n d = this.d,\n n = NaN;\n if (d) {\n w = d.length - 1;\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\n\n // Subtract the number of trailing zeros of the last word.\n w = d[w];\n if (w) for (; w % 10 == 0; w /= 10) n--;\n if (n < 0) n = 0;\n }\n return n;\n};\n\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.dividedBy = P.div = function (y) {\n return divide(this, new this.constructor(y));\n};\n\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.dividedToIntegerBy = P.divToInt = function (y) {\n var x = this,\n Ctor = x.constructor;\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\n};\n\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\nP.equals = P.eq = function (y) {\n return this.cmp(y) === 0;\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\nP.floor = function () {\n return finalise(new this.constructor(this), this.e + 1, 3);\n};\n\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\nP.greaterThan = P.gt = function (y) {\n return this.cmp(y) > 0;\n};\n\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\nP.greaterThanOrEqualTo = P.gte = function (y) {\n var k = this.cmp(y);\n return k == 1 || k === 0;\n};\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\nP.hyperbolicCosine = P.cosh = function () {\n var k,\n n,\n pr,\n rm,\n len,\n x = this,\n Ctor = x.constructor,\n one = new Ctor(1);\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\n if (x.isZero()) return one;\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\n Ctor.rounding = 1;\n len = x.d.length;\n\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\n\n // Estimate the optimum number of times to use the argument reduction.\n // TODO? Estimation reused from cosine() and may not be optimal here.\n if (len < 32) {\n k = Math.ceil(len / 3);\n n = (1 / tinyPow(4, k)).toString();\n } else {\n k = 16;\n n = '2.3283064365386962890625e-10';\n }\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\n\n // Reverse argument reduction\n var cosh2_x,\n i = k,\n d8 = new Ctor(8);\n for (; i--;) {\n cosh2_x = x.times(x);\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\n }\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\n};\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\nP.hyperbolicSine = P.sinh = function () {\n var k,\n pr,\n rm,\n len,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\n Ctor.rounding = 1;\n len = x.d.length;\n if (len < 3) {\n x = taylorSeries(Ctor, 2, x, x, true);\n } else {\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\n // 3 multiplications and 1 addition\n\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\n // 4 multiplications and 2 additions\n\n // Estimate the optimum number of times to use the argument reduction.\n k = 1.4 * Math.sqrt(len);\n k = k > 16 ? 16 : k | 0;\n x = x.times(1 / tinyPow(5, k));\n x = taylorSeries(Ctor, 2, x, x, true);\n\n // Reverse argument reduction\n var sinh2_x,\n d5 = new Ctor(5),\n d16 = new Ctor(16),\n d20 = new Ctor(20);\n for (; k--;) {\n sinh2_x = x.times(x);\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\n }\n }\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return finalise(x, pr, rm, true);\n};\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\nP.hyperbolicTangent = P.tanh = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite()) return new Ctor(x.s);\n if (x.isZero()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + 7;\n Ctor.rounding = 1;\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\n};\n\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\nP.inverseCosine = P.acos = function () {\n var halfPi,\n x = this,\n Ctor = x.constructor,\n k = x.abs().cmp(1),\n pr = Ctor.precision,\n rm = Ctor.rounding;\n if (k !== -1) {\n return k === 0\n // |x| is 1\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\n // |x| > 1 or x is NaN\n : new Ctor(NaN);\n }\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\n\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\n\n Ctor.precision = pr + 6;\n Ctor.rounding = 1;\n x = x.asin();\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return halfPi.minus(x);\n};\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\nP.inverseHyperbolicCosine = P.acosh = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\n if (!x.isFinite()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\n Ctor.rounding = 1;\n external = false;\n x = x.times(x).minus(1).sqrt().plus(x);\n external = true;\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return x.ln();\n};\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\nP.inverseHyperbolicSine = P.asinh = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\n Ctor.rounding = 1;\n external = false;\n x = x.times(x).plus(1).sqrt().plus(x);\n external = true;\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return x.ln();\n};\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\nP.inverseHyperbolicTangent = P.atanh = function () {\n var pr,\n rm,\n wpr,\n xsd,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite()) return new Ctor(NaN);\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n xsd = x.sd();\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\n Ctor.precision = wpr = xsd - x.e;\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\n Ctor.precision = pr + 4;\n Ctor.rounding = 1;\n x = x.ln();\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return x.times(0.5);\n};\n\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\nP.inverseSine = P.asin = function () {\n var halfPi,\n k,\n pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (x.isZero()) return new Ctor(x);\n k = x.abs().cmp(1);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n if (k !== -1) {\n // |x| is 1\n if (k === 0) {\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\n halfPi.s = x.s;\n return halfPi;\n }\n\n // |x| > 1 or x is NaN\n return new Ctor(NaN);\n }\n\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\n\n Ctor.precision = pr + 6;\n Ctor.rounding = 1;\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return x.times(2);\n};\n\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\nP.inverseTangent = P.atan = function () {\n var i,\n j,\n k,\n n,\n px,\n t,\n r,\n wpr,\n x2,\n x = this,\n Ctor = x.constructor,\n pr = Ctor.precision,\n rm = Ctor.rounding;\n if (!x.isFinite()) {\n if (!x.s) return new Ctor(NaN);\n if (pr + 4 <= PI_PRECISION) {\n r = getPi(Ctor, pr + 4, rm).times(0.5);\n r.s = x.s;\n return r;\n }\n } else if (x.isZero()) {\n return new Ctor(x);\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\n r = getPi(Ctor, pr + 4, rm).times(0.25);\n r.s = x.s;\n return r;\n }\n Ctor.precision = wpr = pr + 10;\n Ctor.rounding = 1;\n\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\n\n // Argument reduction\n // Ensure |x| < 0.42\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\n\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\n external = false;\n j = Math.ceil(wpr / LOG_BASE);\n n = 1;\n x2 = x.times(x);\n r = new Ctor(x);\n px = x;\n\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\n for (; i !== -1;) {\n px = px.times(x2);\n t = r.minus(px.div(n += 2));\n px = px.times(x2);\n r = t.plus(px.div(n += 2));\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\n }\n if (k) r = r.times(2 << k - 1);\n external = true;\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\n};\n\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\nP.isFinite = function () {\n return !!this.d;\n};\n\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\nP.isInteger = P.isInt = function () {\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\n};\n\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\nP.isNaN = function () {\n return !this.s;\n};\n\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\nP.isNegative = P.isNeg = function () {\n return this.s < 0;\n};\n\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\nP.isPositive = P.isPos = function () {\n return this.s > 0;\n};\n\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\nP.isZero = function () {\n return !!this.d && this.d[0] === 0;\n};\n\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\nP.lessThan = P.lt = function (y) {\n return this.cmp(y) < 0;\n};\n\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\nP.lessThanOrEqualTo = P.lte = function (y) {\n return this.cmp(y) < 1;\n};\n\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\nP.logarithm = P.log = function (base) {\n var isBase10,\n d,\n denominator,\n k,\n inf,\n num,\n sd,\n r,\n arg = this,\n Ctor = arg.constructor,\n pr = Ctor.precision,\n rm = Ctor.rounding,\n guard = 5;\n\n // Default base is 10.\n if (base == null) {\n base = new Ctor(10);\n isBase10 = true;\n } else {\n base = new Ctor(base);\n d = base.d;\n\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\n isBase10 = base.eq(10);\n }\n d = arg.d;\n\n // Is arg negative, non-finite, 0 or 1?\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\n }\n\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\n // integer power of 10.\n if (isBase10) {\n if (d.length > 1) {\n inf = true;\n } else {\n for (k = d[0]; k % 10 === 0;) k /= 10;\n inf = k !== 1;\n }\n }\n external = false;\n sd = pr + guard;\n num = naturalLogarithm(arg, sd);\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\n\n // The result will have 5 rounding digits.\n r = divide(num, denominator, sd, 1);\n\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\n // calculate 10 further digits.\n //\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\n // further digits, the last 14 are nines, round up and assume the result is exact.\n // Also assume the result is exact if the last 14 are zero.\n //\n // Example of a result that will be incorrectly rounded:\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\n // place is still 2.6.\n if (checkRoundingDigits(r.d, k = pr, rm)) {\n do {\n sd += 10;\n num = naturalLogarithm(arg, sd);\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\n r = divide(num, denominator, sd, 1);\n if (!inf) {\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\n r = finalise(r, pr + 1, 0);\n }\n break;\n }\n } while (checkRoundingDigits(r.d, k += 10, rm));\n }\n external = true;\n return finalise(r, pr, rm);\n};\n\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\n\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\n\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.minus = P.sub = function (y) {\n var d,\n e,\n i,\n j,\n k,\n len,\n pr,\n rm,\n xd,\n xe,\n xLTy,\n yd,\n x = this,\n Ctor = x.constructor;\n y = new Ctor(y);\n\n // If either is not finite...\n if (!x.d || !y.d) {\n // Return NaN if either is NaN.\n if (!x.s || !y.s) y = new Ctor(NaN);\n\n // Return y negated if x is finite and y is ±Infinity.\n else if (x.d) y.s = -y.s;\n\n // Return x if y is finite and x is ±Infinity.\n // Return x if both are ±Infinity with different signs.\n // Return NaN if both are ±Infinity with the same sign.\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\n return y;\n }\n\n // If signs differ...\n if (x.s != y.s) {\n y.s = -y.s;\n return x.plus(y);\n }\n xd = x.d;\n yd = y.d;\n pr = Ctor.precision;\n rm = Ctor.rounding;\n\n // If either is zero...\n if (!xd[0] || !yd[0]) {\n // Return y negated if x is zero and y is non-zero.\n if (yd[0]) y.s = -y.s;\n\n // Return x if y is zero and x is non-zero.\n else if (xd[0]) y = new Ctor(x);\n\n // Return zero if both are zero.\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\n else return new Ctor(rm === 3 ? -0 : 0);\n return external ? finalise(y, pr, rm) : y;\n }\n\n // x and y are finite, non-zero numbers with the same sign.\n\n // Calculate base 1e7 exponents.\n e = mathfloor(y.e / LOG_BASE);\n xe = mathfloor(x.e / LOG_BASE);\n xd = xd.slice();\n k = xe - e;\n\n // If base 1e7 exponents differ...\n if (k) {\n xLTy = k < 0;\n if (xLTy) {\n d = xd;\n k = -k;\n len = yd.length;\n } else {\n d = yd;\n e = xe;\n len = xd.length;\n }\n\n // Numbers with massively different exponents would result in a very high number of\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\n if (k > i) {\n k = i;\n d.length = 1;\n }\n\n // Prepend zeros to equalise exponents.\n d.reverse();\n for (i = k; i--;) d.push(0);\n d.reverse();\n\n // Base 1e7 exponents equal.\n } else {\n // Check digits to determine which is the bigger number.\n\n i = xd.length;\n len = yd.length;\n xLTy = i < len;\n if (xLTy) len = i;\n for (i = 0; i < len; i++) {\n if (xd[i] != yd[i]) {\n xLTy = xd[i] < yd[i];\n break;\n }\n }\n k = 0;\n }\n if (xLTy) {\n d = xd;\n xd = yd;\n yd = d;\n y.s = -y.s;\n }\n len = xd.length;\n\n // Append zeros to `xd` if shorter.\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\n\n // Subtract yd from xd.\n for (i = yd.length; i > k;) {\n if (xd[--i] < yd[i]) {\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\n --xd[j];\n xd[i] += BASE;\n }\n xd[i] -= yd[i];\n }\n\n // Remove trailing zeros.\n for (; xd[--len] === 0;) xd.pop();\n\n // Remove leading zeros and adjust exponent accordingly.\n for (; xd[0] === 0; xd.shift()) --e;\n\n // Zero?\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\n y.d = xd;\n y.e = getBase10Exponent(xd, e);\n return external ? finalise(y, pr, rm) : y;\n};\n\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\nP.modulo = P.mod = function (y) {\n var q,\n x = this,\n Ctor = x.constructor;\n y = new Ctor(y);\n\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\n\n // Return x if y is ±Infinity or x is ±0.\n if (!y.d || x.d && !x.d[0]) {\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\n }\n\n // Prevent rounding of intermediate calculations.\n external = false;\n if (Ctor.modulo == 9) {\n // Euclidian division: q = sign(y) * floor(x / abs(y))\n // result = x - q * y where 0 <= result < abs(y)\n q = divide(x, y.abs(), 0, 3, 1);\n q.s *= y.s;\n } else {\n q = divide(x, y, 0, Ctor.modulo, 1);\n }\n q = q.times(y);\n external = true;\n return x.minus(q);\n};\n\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.naturalExponential = P.exp = function () {\n return naturalExponential(this);\n};\n\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.naturalLogarithm = P.ln = function () {\n return naturalLogarithm(this);\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\nP.negated = P.neg = function () {\n var x = new this.constructor(this);\n x.s = -x.s;\n return finalise(x);\n};\n\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\nP.plus = P.add = function (y) {\n var carry,\n d,\n e,\n i,\n k,\n len,\n pr,\n rm,\n xd,\n yd,\n x = this,\n Ctor = x.constructor;\n y = new Ctor(y);\n\n // If either is not finite...\n if (!x.d || !y.d) {\n // Return NaN if either is NaN.\n if (!x.s || !y.s) y = new Ctor(NaN);\n\n // Return x if y is finite and x is ±Infinity.\n // Return x if both are ±Infinity with the same sign.\n // Return NaN if both are ±Infinity with different signs.\n // Return y if x is finite and y is ±Infinity.\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\n return y;\n }\n\n // If signs differ...\n if (x.s != y.s) {\n y.s = -y.s;\n return x.minus(y);\n }\n xd = x.d;\n yd = y.d;\n pr = Ctor.precision;\n rm = Ctor.rounding;\n\n // If either is zero...\n if (!xd[0] || !yd[0]) {\n // Return x if y is zero.\n // Return y if y is non-zero.\n if (!yd[0]) y = new Ctor(x);\n return external ? finalise(y, pr, rm) : y;\n }\n\n // x and y are finite, non-zero numbers with the same sign.\n\n // Calculate base 1e7 exponents.\n k = mathfloor(x.e / LOG_BASE);\n e = mathfloor(y.e / LOG_BASE);\n xd = xd.slice();\n i = k - e;\n\n // If base 1e7 exponents differ...\n if (i) {\n if (i < 0) {\n d = xd;\n i = -i;\n len = yd.length;\n } else {\n d = yd;\n e = k;\n len = xd.length;\n }\n\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\n k = Math.ceil(pr / LOG_BASE);\n len = k > len ? k + 1 : len + 1;\n if (i > len) {\n i = len;\n d.length = 1;\n }\n\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\n d.reverse();\n for (; i--;) d.push(0);\n d.reverse();\n }\n len = xd.length;\n i = yd.length;\n\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\n if (len - i < 0) {\n i = len;\n d = yd;\n yd = xd;\n xd = d;\n }\n\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\n for (carry = 0; i;) {\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\n xd[i] %= BASE;\n }\n if (carry) {\n xd.unshift(carry);\n ++e;\n }\n\n // Remove trailing zeros.\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n for (len = xd.length; xd[--len] == 0;) xd.pop();\n y.d = xd;\n y.e = getBase10Exponent(xd, e);\n return external ? finalise(y, pr, rm) : y;\n};\n\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\nP.precision = P.sd = function (z) {\n var k,\n x = this;\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\n if (x.d) {\n k = getPrecision(x.d);\n if (z && x.e + 1 > k) k = x.e + 1;\n } else {\n k = NaN;\n }\n return k;\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\nP.round = function () {\n var x = this,\n Ctor = x.constructor;\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\n};\n\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\nP.sine = P.sin = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite()) return new Ctor(NaN);\n if (x.isZero()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\n Ctor.rounding = 1;\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\n};\n\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\nP.squareRoot = P.sqrt = function () {\n var m,\n n,\n sd,\n r,\n rep,\n t,\n x = this,\n d = x.d,\n e = x.e,\n s = x.s,\n Ctor = x.constructor;\n\n // Negative/NaN/Infinity/zero?\n if (s !== 1 || !d || !d[0]) {\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\n }\n external = false;\n\n // Initial estimate.\n s = Math.sqrt(+x);\n\n // Math.sqrt underflow/overflow?\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\n if (s == 0 || s == 1 / 0) {\n n = digitsToString(d);\n if ((n.length + e) % 2 == 0) n += '0';\n s = Math.sqrt(n);\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\n if (s == 1 / 0) {\n n = '5e' + e;\n } else {\n n = s.toExponential();\n n = n.slice(0, n.indexOf('e') + 1) + e;\n }\n r = new Ctor(n);\n } else {\n r = new Ctor(s.toString());\n }\n sd = (e = Ctor.precision) + 3;\n\n // Newton-Raphson iteration.\n for (;;) {\n t = r;\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\n\n // TODO? Replace with for-loop and checkRoundingDigits.\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\n n = n.slice(sd - 3, sd + 1);\n\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\n if (n == '9999' || !rep && n == '4999') {\n // On the first iteration only, check to see if rounding up gives the exact result as the\n // nines may infinitely repeat.\n if (!rep) {\n finalise(t, e + 1, 0);\n if (t.times(t).eq(x)) {\n r = t;\n break;\n }\n }\n sd += 4;\n rep = 1;\n } else {\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\n // If not, then there are further digits and m will be truthy.\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\n // Truncate to the first rounding digit.\n finalise(r, e + 1, 1);\n m = !r.times(r).eq(x);\n }\n break;\n }\n }\n }\n external = true;\n return finalise(r, e, Ctor.rounding, m);\n};\n\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\nP.tangent = P.tan = function () {\n var pr,\n rm,\n x = this,\n Ctor = x.constructor;\n if (!x.isFinite()) return new Ctor(NaN);\n if (x.isZero()) return new Ctor(x);\n pr = Ctor.precision;\n rm = Ctor.rounding;\n Ctor.precision = pr + 10;\n Ctor.rounding = 1;\n x = x.sin();\n x.s = 1;\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\n Ctor.precision = pr;\n Ctor.rounding = rm;\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\n};\n\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\nP.times = P.mul = function (y) {\n var carry,\n e,\n i,\n k,\n r,\n rL,\n t,\n xdL,\n ydL,\n x = this,\n Ctor = x.constructor,\n xd = x.d,\n yd = (y = new Ctor(y)).d;\n y.s *= x.s;\n\n // If either is NaN, ±Infinity or ±0...\n if (!xd || !xd[0] || !yd || !yd[0]) {\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\n\n // Return NaN if either is NaN.\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\n ? NaN\n\n // Return ±Infinity if either is ±Infinity.\n // Return ±0 if either is ±0.\n : !xd || !yd ? y.s / 0 : y.s * 0);\n }\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\n xdL = xd.length;\n ydL = yd.length;\n\n // Ensure xd points to the longer array.\n if (xdL < ydL) {\n r = xd;\n xd = yd;\n yd = r;\n rL = xdL;\n xdL = ydL;\n ydL = rL;\n }\n\n // Initialise the result array with zeros.\n r = [];\n rL = xdL + ydL;\n for (i = rL; i--;) r.push(0);\n\n // Multiply!\n for (i = ydL; --i >= 0;) {\n carry = 0;\n for (k = xdL + i; k > i;) {\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\n r[k--] = t % BASE | 0;\n carry = t / BASE | 0;\n }\n r[k] = (r[k] + carry) % BASE | 0;\n }\n\n // Remove trailing zeros.\n for (; !r[--rL];) r.pop();\n if (carry) ++e;else r.shift();\n y.d = r;\n y.e = getBase10Exponent(r, e);\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\n};\n\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toBinary = function (sd, rm) {\n return toStringBinary(this, 2, sd, rm);\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\n var x = this,\n Ctor = x.constructor;\n x = new Ctor(x);\n if (dp === void 0) return x;\n checkInt32(dp, 0, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n return finalise(x, dp + x.e + 1, rm);\n};\n\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toExponential = function (dp, rm) {\n var str,\n x = this,\n Ctor = x.constructor;\n if (dp === void 0) {\n str = finiteToString(x, true);\n } else {\n checkInt32(dp, 0, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n x = finalise(new Ctor(x), dp + 1, rm);\n str = finiteToString(x, true, dp + 1);\n }\n return x.isNeg() && !x.isZero() ? '-' + str : str;\n};\n\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\nP.toFixed = function (dp, rm) {\n var str,\n y,\n x = this,\n Ctor = x.constructor;\n if (dp === void 0) {\n str = finiteToString(x);\n } else {\n checkInt32(dp, 0, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\n str = finiteToString(y, false, dp + y.e + 1);\n }\n\n // To determine whether to add the minus sign look at the value before it was rounded,\n // i.e. look at `x` rather than `y`.\n return x.isNeg() && !x.isZero() ? '-' + str : str;\n};\n\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\nP.toFraction = function (maxD) {\n var d,\n d0,\n d1,\n d2,\n e,\n k,\n n,\n n0,\n n1,\n pr,\n q,\n r,\n x = this,\n xd = x.d,\n Ctor = x.constructor;\n if (!xd) return new Ctor(x);\n n1 = d0 = new Ctor(1);\n d1 = n0 = new Ctor(0);\n d = new Ctor(d1);\n e = d.e = getPrecision(xd) - x.e - 1;\n k = e % LOG_BASE;\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\n if (maxD == null) {\n // d is 10**e, the minimum max-denominator needed.\n maxD = e > 0 ? d : n1;\n } else {\n n = new Ctor(maxD);\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\n maxD = n.gt(d) ? e > 0 ? d : n1 : n;\n }\n external = false;\n n = new Ctor(digitsToString(xd));\n pr = Ctor.precision;\n Ctor.precision = e = xd.length * LOG_BASE * 2;\n for (;;) {\n q = divide(n, d, 0, 1, 1);\n d2 = d0.plus(q.times(d1));\n if (d2.cmp(maxD) == 1) break;\n d0 = d1;\n d1 = d2;\n d2 = n1;\n n1 = n0.plus(q.times(d2));\n n0 = d2;\n d2 = d;\n d = n.minus(q.times(d2));\n n = d2;\n }\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\n n0 = n0.plus(d2.times(n1));\n d0 = d0.plus(d2.times(d1));\n n0.s = n1.s = x.s;\n\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\n Ctor.precision = pr;\n external = true;\n return r;\n};\n\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toHexadecimal = P.toHex = function (sd, rm) {\n return toStringBinary(this, 16, sd, rm);\n};\n\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\nP.toNearest = function (y, rm) {\n var x = this,\n Ctor = x.constructor;\n x = new Ctor(x);\n if (y == null) {\n // If x is not finite, return x.\n if (!x.d) return x;\n y = new Ctor(1);\n rm = Ctor.rounding;\n } else {\n y = new Ctor(y);\n if (rm === void 0) {\n rm = Ctor.rounding;\n } else {\n checkInt32(rm, 0, 8);\n }\n\n // If x is not finite, return x if y is not NaN, else NaN.\n if (!x.d) return y.s ? x : y;\n\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\n if (!y.d) {\n if (y.s) y.s = x.s;\n return y;\n }\n }\n\n // If y is not zero, calculate the nearest multiple of y to x.\n if (y.d[0]) {\n external = false;\n x = divide(x, y, 0, rm, 1).times(y);\n external = true;\n finalise(x);\n\n // If y is zero, return zero with the sign of x.\n } else {\n y.s = x.s;\n x = y;\n }\n return x;\n};\n\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\nP.toNumber = function () {\n return +this;\n};\n\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toOctal = function (sd, rm) {\n return toStringBinary(this, 8, sd, rm);\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\nP.toPower = P.pow = function (y) {\n var e,\n k,\n pr,\n r,\n rm,\n s,\n x = this,\n Ctor = x.constructor,\n yn = +(y = new Ctor(y));\n\n // Either ±Infinity, NaN or ±0?\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\n x = new Ctor(x);\n if (x.eq(1)) return x;\n pr = Ctor.precision;\n rm = Ctor.rounding;\n if (y.eq(1)) return finalise(x, pr, rm);\n\n // y exponent\n e = mathfloor(y.e / LOG_BASE);\n\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\n r = intPow(Ctor, x, k, pr);\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\n }\n s = x.s;\n\n // if x is negative\n if (s < 0) {\n // if y is not an integer\n if (e < y.d.length - 1) return new Ctor(NaN);\n\n // Result is positive if x is negative and the last digit of integer y is even.\n if ((y.d[e] & 1) == 0) s = 1;\n\n // if x.eq(-1)\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\n x.s = s;\n return x;\n }\n }\n\n // Estimate result exponent.\n // x^y = 10^e, where e = y * log10(x)\n // log10(x) = log10(x_significand) + x_exponent\n // log10(x_significand) = ln(x_significand) / ln(10)\n k = mathpow(+x, yn);\n e = k == 0 || !isFinite(k) ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k + '').e;\n\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\n\n // Overflow/underflow?\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\n external = false;\n Ctor.rounding = x.s = 1;\n\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\n // new Decimal(2.32456).pow('2087987436534566.46411')\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\n k = Math.min(12, (e + '').length);\n\n // r = x^y = exp(y*ln(x))\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\n\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\n if (r.d) {\n // Truncate to the required precision plus five rounding digits.\n r = finalise(r, pr + 5, 1);\n\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\n // the result.\n if (checkRoundingDigits(r.d, pr, rm)) {\n e = pr + 10;\n\n // Truncate to the increased precision plus five rounding digits.\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\n\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\n r = finalise(r, pr + 1, 0);\n }\n }\n }\n r.s = s;\n external = true;\n Ctor.rounding = rm;\n return finalise(r, pr, rm);\n};\n\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\nP.toPrecision = function (sd, rm) {\n var str,\n x = this,\n Ctor = x.constructor;\n if (sd === void 0) {\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\n } else {\n checkInt32(sd, 1, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n x = finalise(new Ctor(x), sd, rm);\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\n }\n return x.isNeg() && !x.isZero() ? '-' + str : str;\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\nP.toSignificantDigits = P.toSD = function (sd, rm) {\n var x = this,\n Ctor = x.constructor;\n if (sd === void 0) {\n sd = Ctor.precision;\n rm = Ctor.rounding;\n } else {\n checkInt32(sd, 1, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n }\n return finalise(new Ctor(x), sd, rm);\n};\n\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\nP.toString = function () {\n var x = this,\n Ctor = x.constructor,\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\n return x.isNeg() && !x.isZero() ? '-' + str : str;\n};\n\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\nP.truncated = P.trunc = function () {\n return finalise(new this.constructor(this), this.e + 1, 1);\n};\n\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\nP.valueOf = P.toJSON = function () {\n var x = this,\n Ctor = x.constructor,\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\n return x.isNeg() ? '-' + str : str;\n};\n\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\n\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\n\nfunction digitsToString(d) {\n var i,\n k,\n ws,\n indexOfLastWord = d.length - 1,\n str = '',\n w = d[0];\n if (indexOfLastWord > 0) {\n str += w;\n for (i = 1; i < indexOfLastWord; i++) {\n ws = d[i] + '';\n k = LOG_BASE - ws.length;\n if (k) str += getZeroString(k);\n str += ws;\n }\n w = d[i];\n ws = w + '';\n k = LOG_BASE - ws.length;\n if (k) str += getZeroString(k);\n } else if (w === 0) {\n return '0';\n }\n\n // Remove trailing zeros of last w.\n for (; w % 10 === 0;) w /= 10;\n return str + w;\n}\nfunction checkInt32(i, min, max) {\n if (i !== ~~i || i < min || i > max) {\n throw Error(invalidArgument + i);\n }\n}\n\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\nfunction checkRoundingDigits(d, i, rm, repeating) {\n var di, k, r, rd;\n\n // Get the length of the first word of the array d.\n for (k = d[0]; k >= 10; k /= 10) --i;\n\n // Is the rounding digit in the first word of d?\n if (--i < 0) {\n i += LOG_BASE;\n di = 0;\n } else {\n di = Math.ceil((i + 1) / LOG_BASE);\n i %= LOG_BASE;\n }\n\n // i is the index (0 - 6) of the rounding digit.\n // E.g. if within the word 3487563 the first rounding digit is 5,\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\n k = mathpow(10, LOG_BASE - i);\n rd = d[di] % k | 0;\n if (repeating == null) {\n if (i < 3) {\n if (i == 0) rd = rd / 100 | 0;else if (i == 1) rd = rd / 10 | 0;\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\n } else {\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\n }\n } else {\n if (i < 4) {\n if (i == 0) rd = rd / 1000 | 0;else if (i == 1) rd = rd / 100 | 0;else if (i == 2) rd = rd / 10 | 0;\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\n } else {\n r = ((repeating || rm < 4) && rd + 1 == k || !repeating && rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\n }\n }\n return r;\n}\n\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\n// Eg. convertBase('255', 10, 16) returns [15, 15].\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\nfunction convertBase(str, baseIn, baseOut) {\n var j,\n arr = [0],\n arrL,\n i = 0,\n strL = str.length;\n for (; i < strL;) {\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\n for (j = 0; j < arr.length; j++) {\n if (arr[j] > baseOut - 1) {\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\n arr[j + 1] += arr[j] / baseOut | 0;\n arr[j] %= baseOut;\n }\n }\n }\n return arr.reverse();\n}\n\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\nfunction cosine(Ctor, x) {\n var k, len, y;\n if (x.isZero()) return x;\n\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\n\n // Estimate the optimum number of times to use the argument reduction.\n len = x.d.length;\n if (len < 32) {\n k = Math.ceil(len / 3);\n y = (1 / tinyPow(4, k)).toString();\n } else {\n k = 16;\n y = '2.3283064365386962890625e-10';\n }\n Ctor.precision += k;\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\n\n // Reverse argument reduction\n for (var i = k; i--;) {\n var cos2x = x.times(x);\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\n }\n Ctor.precision -= k;\n return x;\n}\n\n/*\r\n * Perform division in the specified base.\r\n */\nvar divide = function () {\n // Assumes non-zero x and k, and hence non-zero result.\n function multiplyInteger(x, k, base) {\n var temp,\n carry = 0,\n i = x.length;\n for (x = x.slice(); i--;) {\n temp = x[i] * k + carry;\n x[i] = temp % base | 0;\n carry = temp / base | 0;\n }\n if (carry) x.unshift(carry);\n return x;\n }\n function compare(a, b, aL, bL) {\n var i, r;\n if (aL != bL) {\n r = aL > bL ? 1 : -1;\n } else {\n for (i = r = 0; i < aL; i++) {\n if (a[i] != b[i]) {\n r = a[i] > b[i] ? 1 : -1;\n break;\n }\n }\n }\n return r;\n }\n function subtract(a, b, aL, base) {\n var i = 0;\n\n // Subtract b from a.\n for (; aL--;) {\n a[aL] -= i;\n i = a[aL] < b[aL] ? 1 : 0;\n a[aL] = i * base + a[aL] - b[aL];\n }\n\n // Remove leading zeros.\n for (; !a[0] && a.length > 1;) a.shift();\n }\n return function (x, y, pr, rm, dp, base) {\n var cmp,\n e,\n i,\n k,\n logBase,\n more,\n prod,\n prodL,\n q,\n qd,\n rem,\n remL,\n rem0,\n sd,\n t,\n xi,\n xL,\n yd0,\n yL,\n yz,\n Ctor = x.constructor,\n sign = x.s == y.s ? 1 : -1,\n xd = x.d,\n yd = y.d;\n\n // Either NaN, Infinity or 0?\n if (!xd || !xd[0] || !yd || !yd[0]) {\n return new Ctor(\n // Return NaN if either NaN, or both Infinity or 0.\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\n }\n if (base) {\n logBase = 1;\n e = x.e - y.e;\n } else {\n base = BASE;\n logBase = LOG_BASE;\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\n }\n yL = yd.length;\n xL = xd.length;\n q = new Ctor(sign);\n qd = q.d = [];\n\n // Result exponent may be one less than e.\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\n for (i = 0; yd[i] == (xd[i] || 0); i++);\n if (yd[i] > (xd[i] || 0)) e--;\n if (pr == null) {\n sd = pr = Ctor.precision;\n rm = Ctor.rounding;\n } else if (dp) {\n sd = pr + (x.e - y.e) + 1;\n } else {\n sd = pr;\n }\n if (sd < 0) {\n qd.push(1);\n more = true;\n } else {\n // Convert precision in number of base 10 digits to base 1e7 digits.\n sd = sd / logBase + 2 | 0;\n i = 0;\n\n // divisor < 1e7\n if (yL == 1) {\n k = 0;\n yd = yd[0];\n sd++;\n\n // k is the carry.\n for (; (i < xL || k) && sd--; i++) {\n t = k * base + (xd[i] || 0);\n qd[i] = t / yd | 0;\n k = t % yd | 0;\n }\n more = k || i < xL;\n\n // divisor >= 1e7\n } else {\n // Normalise xd and yd so highest order digit of yd is >= base/2\n k = base / (yd[0] + 1) | 0;\n if (k > 1) {\n yd = multiplyInteger(yd, k, base);\n xd = multiplyInteger(xd, k, base);\n yL = yd.length;\n xL = xd.length;\n }\n xi = yL;\n rem = xd.slice(0, yL);\n remL = rem.length;\n\n // Add zeros to make remainder as long as divisor.\n for (; remL < yL;) rem[remL++] = 0;\n yz = yd.slice();\n yz.unshift(0);\n yd0 = yd[0];\n if (yd[1] >= base / 2) ++yd0;\n do {\n k = 0;\n\n // Compare divisor and remainder.\n cmp = compare(yd, rem, yL, remL);\n\n // If divisor < remainder.\n if (cmp < 0) {\n // Calculate trial digit, k.\n rem0 = rem[0];\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\n\n // k will be how many times the divisor goes into the current remainder.\n k = rem0 / yd0 | 0;\n\n // Algorithm:\n // 1. product = divisor * trial digit (k)\n // 2. if product > remainder: product -= divisor, k--\n // 3. remainder -= product\n // 4. if product was < remainder at 2:\n // 5. compare new remainder and divisor\n // 6. If remainder > divisor: remainder -= divisor, k++\n\n if (k > 1) {\n if (k >= base) k = base - 1;\n\n // product = divisor * trial digit.\n prod = multiplyInteger(yd, k, base);\n prodL = prod.length;\n remL = rem.length;\n\n // Compare product and remainder.\n cmp = compare(prod, rem, prodL, remL);\n\n // product > remainder.\n if (cmp == 1) {\n k--;\n\n // Subtract divisor from product.\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\n }\n } else {\n // cmp is -1.\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\n if (k == 0) cmp = k = 1;\n prod = yd.slice();\n }\n prodL = prod.length;\n if (prodL < remL) prod.unshift(0);\n\n // Subtract product from remainder.\n subtract(rem, prod, remL, base);\n\n // If product was < previous remainder.\n if (cmp == -1) {\n remL = rem.length;\n\n // Compare divisor and new remainder.\n cmp = compare(yd, rem, yL, remL);\n\n // If divisor < new remainder, subtract divisor from remainder.\n if (cmp < 1) {\n k++;\n\n // Subtract divisor from remainder.\n subtract(rem, yL < remL ? yz : yd, remL, base);\n }\n }\n remL = rem.length;\n } else if (cmp === 0) {\n k++;\n rem = [0];\n } // if cmp === 1, k will be 0\n\n // Add the next digit, k, to the result array.\n qd[i++] = k;\n\n // Update the remainder.\n if (cmp && rem[0]) {\n rem[remL++] = xd[xi] || 0;\n } else {\n rem = [xd[xi]];\n remL = 1;\n }\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\n more = rem[0] !== void 0;\n }\n\n // Leading zero?\n if (!qd[0]) qd.shift();\n }\n\n // logBase is 1 when divide is being used for base conversion.\n if (logBase == 1) {\n q.e = e;\n inexact = more;\n } else {\n // To calculate q.e, first get the number of digits of qd[0].\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\n q.e = i + e * logBase - 1;\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\n }\n return q;\n };\n}();\n\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\nfunction finalise(x, sd, rm, isTruncated) {\n var digits,\n i,\n j,\n k,\n rd,\n roundUp,\n w,\n xd,\n xdi,\n Ctor = x.constructor;\n\n // Don't round if sd is null or undefined.\n out: if (sd != null) {\n xd = x.d;\n\n // Infinity/NaN.\n if (!xd) return x;\n\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\n // w: the word of xd containing rd, a base 1e7 number.\n // xdi: the index of w within xd.\n // digits: the number of digits of w.\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\n // they had leading zeros)\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\n\n // Get the length of the first word of the digits array xd.\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\n i = sd - digits;\n\n // Is the rounding digit in the first word of xd?\n if (i < 0) {\n i += LOG_BASE;\n j = sd;\n w = xd[xdi = 0];\n\n // Get the rounding digit at index j of w.\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\n } else {\n xdi = Math.ceil((i + 1) / LOG_BASE);\n k = xd.length;\n if (xdi >= k) {\n if (isTruncated) {\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\n for (; k++ <= xdi;) xd.push(0);\n w = rd = 0;\n digits = 1;\n i %= LOG_BASE;\n j = i - LOG_BASE + 1;\n } else {\n break out;\n }\n } else {\n w = k = xd[xdi];\n\n // Get the number of digits of w.\n for (digits = 1; k >= 10; k /= 10) digits++;\n\n // Get the index of rd within w.\n i %= LOG_BASE;\n\n // Get the index of rd within w, adjusted for leading zeros.\n // The number of leading zeros of w is given by LOG_BASE - digits.\n j = i - LOG_BASE + digits;\n\n // Get the rounding digit at index j of w.\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\n }\n }\n\n // Are there any non-zero digits after the rounding digit?\n isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\n\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\n // will give 714.\n\n roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\n // Check whether the digit to the left of the rounding digit is odd.\n (i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));\n if (sd < 1 || !xd[0]) {\n xd.length = 0;\n if (roundUp) {\n // Convert sd to decimal places.\n sd -= x.e + 1;\n\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\n x.e = -sd || 0;\n } else {\n // Zero.\n xd[0] = x.e = 0;\n }\n return x;\n }\n\n // Remove excess digits.\n if (i == 0) {\n xd.length = xdi;\n k = 1;\n xdi--;\n } else {\n xd.length = xdi + 1;\n k = mathpow(10, LOG_BASE - i);\n\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\n // j > 0 means i > number of leading zeros of w.\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\n }\n if (roundUp) {\n for (;;) {\n // Is the digit to be rounded up in the first word of xd?\n if (xdi == 0) {\n // i will be the length of xd[0] before k is added.\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\n j = xd[0] += k;\n for (k = 1; j >= 10; j /= 10) k++;\n\n // if i != k the length has increased.\n if (i != k) {\n x.e++;\n if (xd[0] == BASE) xd[0] = 1;\n }\n break;\n } else {\n xd[xdi] += k;\n if (xd[xdi] != BASE) break;\n xd[xdi--] = 0;\n k = 1;\n }\n }\n }\n\n // Remove trailing zeros.\n for (i = xd.length; xd[--i] === 0;) xd.pop();\n }\n if (external) {\n // Overflow?\n if (x.e > Ctor.maxE) {\n // Infinity.\n x.d = null;\n x.e = NaN;\n\n // Underflow?\n } else if (x.e < Ctor.minE) {\n // Zero.\n x.e = 0;\n x.d = [0];\n // Ctor.underflow = true;\n } // else Ctor.underflow = false;\n }\n return x;\n}\nfunction finiteToString(x, isExp, sd) {\n if (!x.isFinite()) return nonFiniteToString(x);\n var k,\n e = x.e,\n str = digitsToString(x.d),\n len = str.length;\n if (isExp) {\n if (sd && (k = sd - len) > 0) {\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\n } else if (len > 1) {\n str = str.charAt(0) + '.' + str.slice(1);\n }\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\n } else if (e < 0) {\n str = '0.' + getZeroString(-e - 1) + str;\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\n } else if (e >= len) {\n str += getZeroString(e + 1 - len);\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\n } else {\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\n if (sd && (k = sd - len) > 0) {\n if (e + 1 === len) str += '.';\n str += getZeroString(k);\n }\n }\n return str;\n}\n\n// Calculate the base 10 exponent from the base 1e7 exponent.\nfunction getBase10Exponent(digits, e) {\n var w = digits[0];\n\n // Add the number of digits of the first word of the digits array.\n for (e *= LOG_BASE; w >= 10; w /= 10) e++;\n return e;\n}\nfunction getLn10(Ctor, sd, pr) {\n if (sd > LN10_PRECISION) {\n // Reset global state in case the exception is caught.\n external = true;\n if (pr) Ctor.precision = pr;\n throw Error(precisionLimitExceeded);\n }\n return finalise(new Ctor(LN10), sd, 1, true);\n}\nfunction getPi(Ctor, sd, rm) {\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\n return finalise(new Ctor(PI), sd, rm, true);\n}\nfunction getPrecision(digits) {\n var w = digits.length - 1,\n len = w * LOG_BASE + 1;\n w = digits[w];\n\n // If non-zero...\n if (w) {\n // Subtract the number of trailing zeros of the last word.\n for (; w % 10 == 0; w /= 10) len--;\n\n // Add the number of digits of the first word.\n for (w = digits[0]; w >= 10; w /= 10) len++;\n }\n return len;\n}\nfunction getZeroString(k) {\n var zs = '';\n for (; k--;) zs += '0';\n return zs;\n}\n\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\nfunction intPow(Ctor, x, n, pr) {\n var isTruncated,\n r = new Ctor(1),\n // Max n of 9007199254740991 takes 53 loop iterations.\n // Maximum digits array length; leaves [28, 34] guard digits.\n k = Math.ceil(pr / LOG_BASE + 4);\n external = false;\n for (;;) {\n if (n % 2) {\n r = r.times(x);\n if (truncate(r.d, k)) isTruncated = true;\n }\n n = mathfloor(n / 2);\n if (n === 0) {\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\n n = r.d.length - 1;\n if (isTruncated && r.d[n] === 0) ++r.d[n];\n break;\n }\n x = x.times(x);\n truncate(x.d, k);\n }\n external = true;\n return r;\n}\nfunction isOdd(n) {\n return n.d[n.d.length - 1] & 1;\n}\n\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\nfunction maxOrMin(Ctor, args, ltgt) {\n var y,\n x = new Ctor(args[0]),\n i = 0;\n for (; ++i < args.length;) {\n y = new Ctor(args[i]);\n if (!y.s) {\n x = y;\n break;\n } else if (x[ltgt](y)) {\n x = y;\n }\n }\n return x;\n}\n\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\nfunction naturalExponential(x, sd) {\n var denominator,\n guard,\n j,\n pow,\n sum,\n t,\n wpr,\n rep = 0,\n i = 0,\n k = 0,\n Ctor = x.constructor,\n rm = Ctor.rounding,\n pr = Ctor.precision;\n\n // 0/NaN/Infinity?\n if (!x.d || !x.d[0] || x.e > 17) {\n return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0);\n }\n if (sd == null) {\n external = false;\n wpr = pr;\n } else {\n wpr = sd;\n }\n t = new Ctor(0.03125);\n\n // while abs(x) >= 0.1\n while (x.e > -2) {\n // x = x / 2^5\n x = x.times(t);\n k += 5;\n }\n\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\n // necessary to ensure the first 4 rounding digits are correct.\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\n wpr += guard;\n denominator = pow = sum = new Ctor(1);\n Ctor.precision = wpr;\n for (;;) {\n pow = finalise(pow.times(x), wpr, 1);\n denominator = denominator.times(++i);\n t = sum.plus(divide(pow, denominator, wpr, 1));\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\n j = k;\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\n\n // Check to see if the first 4 rounding digits are [49]999.\n // If so, repeat the summation with a higher precision, otherwise\n // e.g. with precision: 18, rounding: 1\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\n // `wpr - guard` is the index of first rounding digit.\n if (sd == null) {\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\n Ctor.precision = wpr += 10;\n denominator = pow = t = new Ctor(1);\n i = 0;\n rep++;\n } else {\n return finalise(sum, Ctor.precision = pr, rm, external = true);\n }\n } else {\n Ctor.precision = pr;\n return sum;\n }\n }\n sum = t;\n }\n}\n\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\nfunction naturalLogarithm(y, sd) {\n var c,\n c0,\n denominator,\n e,\n numerator,\n rep,\n sum,\n t,\n wpr,\n x1,\n x2,\n n = 1,\n guard = 10,\n x = y,\n xd = x.d,\n Ctor = x.constructor,\n rm = Ctor.rounding,\n pr = Ctor.precision;\n\n // Is x negative or Infinity, NaN, 0 or 1?\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\n }\n if (sd == null) {\n external = false;\n wpr = pr;\n } else {\n wpr = sd;\n }\n Ctor.precision = wpr += guard;\n c = digitsToString(xd);\n c0 = c.charAt(0);\n if (Math.abs(e = x.e) < 1.5e15) {\n // Argument reduction.\n // The series converges faster the closer the argument is to 1, so using\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\n // later be divided by this number, then separate out the power of 10 using\n // ln(a*10^b) = ln(a) + b*ln(10).\n\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\n // max n is 6 (gives 0.7 - 1.3)\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\n x = x.times(y);\n c = digitsToString(x.d);\n c0 = c.charAt(0);\n n++;\n }\n e = x.e;\n if (c0 > 1) {\n x = new Ctor('0.' + c);\n e++;\n } else {\n x = new Ctor(c0 + '.' + c.slice(1));\n }\n } else {\n // The argument reduction method above may result in overflow if the argument y is a massive\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\n // function using ln(x*10^e) = ln(x) + e*ln(10).\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\n Ctor.precision = pr;\n return sd == null ? finalise(x, pr, rm, external = true) : x;\n }\n\n // x1 is x reduced to a value near 1.\n x1 = x;\n\n // Taylor series.\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\n // where x = (y - 1)/(y + 1) (|x| < 1)\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\n x2 = finalise(x.times(x), wpr, 1);\n denominator = 3;\n for (;;) {\n numerator = finalise(numerator.times(x2), wpr, 1);\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\n sum = sum.times(2);\n\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\n sum = divide(sum, new Ctor(n), wpr, 1);\n\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\n // been repeated previously) and the first 4 rounding digits 9999?\n // If so, restart the summation with a higher precision, otherwise\n // e.g. with precision: 12, rounding: 1\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\n // `wpr - guard` is the index of first rounding digit.\n if (sd == null) {\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\n Ctor.precision = wpr += guard;\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\n x2 = finalise(x.times(x), wpr, 1);\n denominator = rep = 1;\n } else {\n return finalise(sum, Ctor.precision = pr, rm, external = true);\n }\n } else {\n Ctor.precision = pr;\n return sum;\n }\n }\n sum = t;\n denominator += 2;\n }\n}\n\n// ±Infinity, NaN.\nfunction nonFiniteToString(x) {\n // Unsigned.\n return String(x.s * x.s / 0);\n}\n\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\nfunction parseDecimal(x, str) {\n var e, i, len;\n\n // Decimal point?\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\n\n // Exponential form?\n if ((i = str.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0) e = i;\n e += +str.slice(i + 1);\n str = str.substring(0, i);\n } else if (e < 0) {\n // Integer.\n e = str.length;\n }\n\n // Determine leading zeros.\n for (i = 0; str.charCodeAt(i) === 48; i++);\n\n // Determine trailing zeros.\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\n str = str.slice(i, len);\n if (str) {\n len -= i;\n x.e = e = e - i - 1;\n x.d = [];\n\n // Transform base\n\n // e is the base 10 exponent.\n // i is where to slice str to get the first word of the digits array.\n i = (e + 1) % LOG_BASE;\n if (e < 0) i += LOG_BASE;\n if (i < len) {\n if (i) x.d.push(+str.slice(0, i));\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\n str = str.slice(i);\n i = LOG_BASE - str.length;\n } else {\n i -= len;\n }\n for (; i--;) str += '0';\n x.d.push(+str);\n if (external) {\n // Overflow?\n if (x.e > x.constructor.maxE) {\n // Infinity.\n x.d = null;\n x.e = NaN;\n\n // Underflow?\n } else if (x.e < x.constructor.minE) {\n // Zero.\n x.e = 0;\n x.d = [0];\n // x.constructor.underflow = true;\n } // else x.constructor.underflow = false;\n }\n } else {\n // Zero.\n x.e = 0;\n x.d = [0];\n }\n return x;\n}\n\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\nfunction parseOther(x, str) {\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\n if (str.indexOf('_') > -1) {\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\n if (isDecimal.test(str)) return parseDecimal(x, str);\n } else if (str === 'Infinity' || str === 'NaN') {\n if (!+str) x.s = NaN;\n x.e = NaN;\n x.d = null;\n return x;\n }\n if (isHex.test(str)) {\n base = 16;\n str = str.toLowerCase();\n } else if (isBinary.test(str)) {\n base = 2;\n } else if (isOctal.test(str)) {\n base = 8;\n } else {\n throw Error(invalidArgument + str);\n }\n\n // Is there a binary exponent part?\n i = str.search(/p/i);\n if (i > 0) {\n p = +str.slice(i + 1);\n str = str.substring(2, i);\n } else {\n str = str.slice(2);\n }\n\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\n // fraction part will be restored.\n i = str.indexOf('.');\n isFloat = i >= 0;\n Ctor = x.constructor;\n if (isFloat) {\n str = str.replace('.', '');\n len = str.length;\n i = len - i;\n\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\n }\n xd = convertBase(str, base, BASE);\n xe = xd.length - 1;\n\n // Remove trailing zeros.\n for (i = xe; xd[i] === 0; --i) xd.pop();\n if (i < 0) return new Ctor(x.s * 0);\n x.e = getBase10Exponent(xd, xe);\n x.d = xd;\n external = false;\n\n // At what precision to perform the division to ensure exact conversion?\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\n // Therefore using 4 * the number of digits of str will always be enough.\n if (isFloat) x = divide(x, divisor, len * 4);\n\n // Multiply by the binary exponent part if present.\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\n external = true;\n return x;\n}\n\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\nfunction sine(Ctor, x) {\n var k,\n len = x.d.length;\n if (len < 3) {\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\n }\n\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\n\n // Estimate the optimum number of times to use the argument reduction.\n k = 1.4 * Math.sqrt(len);\n k = k > 16 ? 16 : k | 0;\n x = x.times(1 / tinyPow(5, k));\n x = taylorSeries(Ctor, 2, x, x);\n\n // Reverse argument reduction\n var sin2_x,\n d5 = new Ctor(5),\n d16 = new Ctor(16),\n d20 = new Ctor(20);\n for (; k--;) {\n sin2_x = x.times(x);\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\n }\n return x;\n}\n\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\n var j,\n t,\n u,\n x2,\n i = 1,\n pr = Ctor.precision,\n k = Math.ceil(pr / LOG_BASE);\n external = false;\n x2 = x.times(x);\n u = new Ctor(y);\n for (;;) {\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\n u = isHyperbolic ? y.plus(t) : y.minus(t);\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\n t = u.plus(y);\n if (t.d[k] !== void 0) {\n for (j = k; t.d[j] === u.d[j] && j--;);\n if (j == -1) break;\n }\n j = u;\n u = y;\n y = t;\n t = j;\n i++;\n }\n external = true;\n t.d.length = k + 1;\n return t;\n}\n\n// Exponent e must be positive and non-zero.\nfunction tinyPow(b, e) {\n var n = b;\n while (--e) n *= b;\n return n;\n}\n\n// Return the absolute value of `x` reduced to less than or equal to half pi.\nfunction toLessThanHalfPi(Ctor, x) {\n var t,\n isNeg = x.s < 0,\n pi = getPi(Ctor, Ctor.precision, 1),\n halfPi = pi.times(0.5);\n x = x.abs();\n if (x.lte(halfPi)) {\n quadrant = isNeg ? 4 : 1;\n return x;\n }\n t = x.divToInt(pi);\n if (t.isZero()) {\n quadrant = isNeg ? 3 : 2;\n } else {\n x = x.minus(t.times(pi));\n\n // 0 <= x < pi\n if (x.lte(halfPi)) {\n quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1;\n return x;\n }\n quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2;\n }\n return x.minus(pi).abs();\n}\n\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\nfunction toStringBinary(x, baseOut, sd, rm) {\n var base,\n e,\n i,\n k,\n len,\n roundUp,\n str,\n xd,\n y,\n Ctor = x.constructor,\n isExp = sd !== void 0;\n if (isExp) {\n checkInt32(sd, 1, MAX_DIGITS);\n if (rm === void 0) rm = Ctor.rounding;else checkInt32(rm, 0, 8);\n } else {\n sd = Ctor.precision;\n rm = Ctor.rounding;\n }\n if (!x.isFinite()) {\n str = nonFiniteToString(x);\n } else {\n str = finiteToString(x);\n i = str.indexOf('.');\n\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\n // minBinaryExponent = floor(decimalExponent * log[2](10))\n // log[2](10) = 3.321928094887362347870319429489390175864\n\n if (isExp) {\n base = 2;\n if (baseOut == 16) {\n sd = sd * 4 - 3;\n } else if (baseOut == 8) {\n sd = sd * 3 - 2;\n }\n } else {\n base = baseOut;\n }\n\n // Convert the number as an integer then divide the result by its base raised to a power such\n // that the fraction part will be restored.\n\n // Non-integer.\n if (i >= 0) {\n str = str.replace('.', '');\n y = new Ctor(1);\n y.e = str.length - i;\n y.d = convertBase(finiteToString(y), 10, base);\n y.e = y.d.length;\n }\n xd = convertBase(str, 10, base);\n e = len = xd.length;\n\n // Remove trailing zeros.\n for (; xd[--len] == 0;) xd.pop();\n if (!xd[0]) {\n str = isExp ? '0p+0' : '0';\n } else {\n if (i < 0) {\n e--;\n } else {\n x = new Ctor(x);\n x.d = xd;\n x.e = e;\n x = divide(x, y, sd, rm, 0, base);\n xd = x.d;\n e = x.e;\n roundUp = inexact;\n }\n\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\n i = xd[sd];\n k = base / 2;\n roundUp = roundUp || xd[sd + 1] !== void 0;\n roundUp = rm < 4 ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7));\n xd.length = sd;\n if (roundUp) {\n // Rounding up may mean the previous digit has to be rounded up and so on.\n for (; ++xd[--sd] > base - 1;) {\n xd[sd] = 0;\n if (!sd) {\n ++e;\n xd.unshift(1);\n }\n }\n }\n\n // Determine trailing zeros.\n for (len = xd.length; !xd[len - 1]; --len);\n\n // E.g. [4, 11, 15] becomes 4bf.\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\n\n // Add binary exponent suffix?\n if (isExp) {\n if (len > 1) {\n if (baseOut == 16 || baseOut == 8) {\n i = baseOut == 16 ? 4 : 3;\n for (--len; len % i; len++) str += '0';\n xd = convertBase(str, base, baseOut);\n for (len = xd.length; !xd[len - 1]; --len);\n\n // xd[0] will always be be 1\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\n } else {\n str = str.charAt(0) + '.' + str.slice(1);\n }\n }\n str = str + (e < 0 ? 'p' : 'p+') + e;\n } else if (e < 0) {\n for (; ++e;) str = '0' + str;\n str = '0.' + str;\n } else {\n if (++e > len) for (e -= len; e--;) str += '0';else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\n }\n }\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\n }\n return x.s < 0 ? '-' + str : str;\n}\n\n// Does not strip trailing zeros.\nfunction truncate(arr, len) {\n if (arr.length > len) {\n arr.length = len;\n return true;\n }\n}\n\n// Decimal methods\n\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\n\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction abs(x) {\n return new this(x).abs();\n}\n\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction acos(x) {\n return new this(x).acos();\n}\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction acosh(x) {\n return new this(x).acosh();\n}\n\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\nfunction add(x, y) {\n return new this(x).plus(y);\n}\n\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction asin(x) {\n return new this(x).asin();\n}\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction asinh(x) {\n return new this(x).asinh();\n}\n\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction atan(x) {\n return new this(x).atan();\n}\n\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction atanh(x) {\n return new this(x).atanh();\n}\n\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\nfunction atan2(y, x) {\n y = new this(y);\n x = new this(x);\n var r,\n pr = this.precision,\n rm = this.rounding,\n wpr = pr + 4;\n\n // Either NaN\n if (!y.s || !x.s) {\n r = new this(NaN);\n\n // Both ±Infinity\n } else if (!y.d && !x.d) {\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\n r.s = y.s;\n\n // x is ±Infinity or y is ±0\n } else if (!x.d || y.isZero()) {\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\n r.s = y.s;\n\n // y is ±Infinity or x is ±0\n } else if (!y.d || x.isZero()) {\n r = getPi(this, wpr, 1).times(0.5);\n r.s = y.s;\n\n // Both non-zero and finite\n } else if (x.s < 0) {\n this.precision = wpr;\n this.rounding = 1;\n r = this.atan(divide(y, x, wpr, 1));\n x = getPi(this, wpr, 1);\n this.precision = pr;\n this.rounding = rm;\n r = y.s < 0 ? r.minus(x) : r.plus(x);\n } else {\n r = this.atan(divide(y, x, wpr, 1));\n }\n return r;\n}\n\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction cbrt(x) {\n return new this(x).cbrt();\n}\n\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction ceil(x) {\n return finalise(x = new this(x), x.e + 1, 2);\n}\n\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\nfunction clamp(x, min, max) {\n return new this(x).clamp(min, max);\n}\n\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\nfunction config(obj) {\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\n var i,\n p,\n v,\n useDefaults = obj.defaults === true,\n ps = ['precision', 1, MAX_DIGITS, 'rounding', 0, 8, 'toExpNeg', -EXP_LIMIT, 0, 'toExpPos', 0, EXP_LIMIT, 'maxE', 0, EXP_LIMIT, 'minE', -EXP_LIMIT, 0, 'modulo', 0, 9];\n for (i = 0; i < ps.length; i += 3) {\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\n if ((v = obj[p]) !== void 0) {\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;else throw Error(invalidArgument + p + ': ' + v);\n }\n }\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\n if ((v = obj[p]) !== void 0) {\n if (v === true || v === false || v === 0 || v === 1) {\n if (v) {\n if (typeof crypto != 'undefined' && crypto && (crypto.getRandomValues || crypto.randomBytes)) {\n this[p] = true;\n } else {\n throw Error(cryptoUnavailable);\n }\n } else {\n this[p] = false;\n }\n } else {\n throw Error(invalidArgument + p + ': ' + v);\n }\n }\n return this;\n}\n\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction cos(x) {\n return new this(x).cos();\n}\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction cosh(x) {\n return new this(x).cosh();\n}\n\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\nfunction clone(obj) {\n var i, p, ps;\n\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\n function Decimal(v) {\n var e,\n i,\n t,\n x = this;\n\n // Decimal called without new.\n if (!(x instanceof Decimal)) return new Decimal(v);\n\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\n // which points to Object.\n x.constructor = Decimal;\n\n // Duplicate.\n if (isDecimalInstance(v)) {\n x.s = v.s;\n if (external) {\n if (!v.d || v.e > Decimal.maxE) {\n // Infinity.\n x.e = NaN;\n x.d = null;\n } else if (v.e < Decimal.minE) {\n // Zero.\n x.e = 0;\n x.d = [0];\n } else {\n x.e = v.e;\n x.d = v.d.slice();\n }\n } else {\n x.e = v.e;\n x.d = v.d ? v.d.slice() : v.d;\n }\n return;\n }\n t = typeof v;\n if (t === 'number') {\n if (v === 0) {\n x.s = 1 / v < 0 ? -1 : 1;\n x.e = 0;\n x.d = [0];\n return;\n }\n if (v < 0) {\n v = -v;\n x.s = -1;\n } else {\n x.s = 1;\n }\n\n // Fast path for small integers.\n if (v === ~~v && v < 1e7) {\n for (e = 0, i = v; i >= 10; i /= 10) e++;\n if (external) {\n if (e > Decimal.maxE) {\n x.e = NaN;\n x.d = null;\n } else if (e < Decimal.minE) {\n x.e = 0;\n x.d = [0];\n } else {\n x.e = e;\n x.d = [v];\n }\n } else {\n x.e = e;\n x.d = [v];\n }\n return;\n\n // Infinity, NaN.\n } else if (v * 0 !== 0) {\n if (!v) x.s = NaN;\n x.e = NaN;\n x.d = null;\n return;\n }\n return parseDecimal(x, v.toString());\n } else if (t !== 'string') {\n throw Error(invalidArgument + v);\n }\n\n // Minus sign?\n if ((i = v.charCodeAt(0)) === 45) {\n v = v.slice(1);\n x.s = -1;\n } else {\n // Plus sign?\n if (i === 43) v = v.slice(1);\n x.s = 1;\n }\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\n }\n Decimal.prototype = P;\n Decimal.ROUND_UP = 0;\n Decimal.ROUND_DOWN = 1;\n Decimal.ROUND_CEIL = 2;\n Decimal.ROUND_FLOOR = 3;\n Decimal.ROUND_HALF_UP = 4;\n Decimal.ROUND_HALF_DOWN = 5;\n Decimal.ROUND_HALF_EVEN = 6;\n Decimal.ROUND_HALF_CEIL = 7;\n Decimal.ROUND_HALF_FLOOR = 8;\n Decimal.EUCLID = 9;\n Decimal.config = Decimal.set = config;\n Decimal.clone = clone;\n Decimal.isDecimal = isDecimalInstance;\n Decimal.abs = abs;\n Decimal.acos = acos;\n Decimal.acosh = acosh; // ES6\n Decimal.add = add;\n Decimal.asin = asin;\n Decimal.asinh = asinh; // ES6\n Decimal.atan = atan;\n Decimal.atanh = atanh; // ES6\n Decimal.atan2 = atan2;\n Decimal.cbrt = cbrt; // ES6\n Decimal.ceil = ceil;\n Decimal.clamp = clamp;\n Decimal.cos = cos;\n Decimal.cosh = cosh; // ES6\n Decimal.div = div;\n Decimal.exp = exp;\n Decimal.floor = floor;\n Decimal.hypot = hypot; // ES6\n Decimal.ln = ln;\n Decimal.log = log;\n Decimal.log10 = log10; // ES6\n Decimal.log2 = log2; // ES6\n Decimal.max = max;\n Decimal.min = min;\n Decimal.mod = mod;\n Decimal.mul = mul;\n Decimal.pow = pow;\n Decimal.random = random;\n Decimal.round = round;\n Decimal.sign = sign; // ES6\n Decimal.sin = sin;\n Decimal.sinh = sinh; // ES6\n Decimal.sqrt = sqrt;\n Decimal.sub = sub;\n Decimal.sum = sum;\n Decimal.tan = tan;\n Decimal.tanh = tanh; // ES6\n Decimal.trunc = trunc; // ES6\n\n if (obj === void 0) obj = {};\n if (obj) {\n if (obj.defaults !== true) {\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\n }\n }\n Decimal.config(obj);\n return Decimal;\n}\n\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\nfunction div(x, y) {\n return new this(x).div(y);\n}\n\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\nfunction exp(x) {\n return new this(x).exp();\n}\n\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction floor(x) {\n return finalise(x = new this(x), x.e + 1, 3);\n}\n\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\nfunction hypot() {\n var i,\n n,\n t = new this(0);\n external = false;\n for (i = 0; i < arguments.length;) {\n n = new this(arguments[i++]);\n if (!n.d) {\n if (n.s) {\n external = true;\n return new this(1 / 0);\n }\n t = n;\n } else if (t.d) {\n t = t.plus(n.times(n));\n }\n }\n external = true;\n return t.sqrt();\n}\n\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\nfunction isDecimalInstance(obj) {\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\n}\n\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction ln(x) {\n return new this(x).ln();\n}\n\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\nfunction log(x, y) {\n return new this(x).log(y);\n}\n\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction log2(x) {\n return new this(x).log(2);\n}\n\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction log10(x) {\n return new this(x).log(10);\n}\n\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\nfunction max() {\n return maxOrMin(this, arguments, 'lt');\n}\n\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\nfunction min() {\n return maxOrMin(this, arguments, 'gt');\n}\n\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\nfunction mod(x, y) {\n return new this(x).mod(y);\n}\n\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\nfunction mul(x, y) {\n return new this(x).mul(y);\n}\n\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\nfunction pow(x, y) {\n return new this(x).pow(y);\n}\n\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\nfunction random(sd) {\n var d,\n e,\n k,\n n,\n i = 0,\n r = new this(1),\n rd = [];\n if (sd === void 0) sd = this.precision;else checkInt32(sd, 1, MAX_DIGITS);\n k = Math.ceil(sd / LOG_BASE);\n if (!this.crypto) {\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\n\n // Browsers supporting crypto.getRandomValues.\n } else if (crypto.getRandomValues) {\n d = crypto.getRandomValues(new Uint32Array(k));\n for (; i < k;) {\n n = d[i];\n\n // 0 <= n < 4294967296\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\n if (n >= 4.29e9) {\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\n } else {\n // 0 <= n <= 4289999999\n // 0 <= (n % 1e7) <= 9999999\n rd[i++] = n % 1e7;\n }\n }\n\n // Node.js supporting crypto.randomBytes.\n } else if (crypto.randomBytes) {\n // buffer\n d = crypto.randomBytes(k *= 4);\n for (; i < k;) {\n // 0 <= n < 2147483648\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\n\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\n if (n >= 2.14e9) {\n crypto.randomBytes(4).copy(d, i);\n } else {\n // 0 <= n <= 2139999999\n // 0 <= (n % 1e7) <= 9999999\n rd.push(n % 1e7);\n i += 4;\n }\n }\n i = k / 4;\n } else {\n throw Error(cryptoUnavailable);\n }\n k = rd[--i];\n sd %= LOG_BASE;\n\n // Convert trailing digits to zeros according to sd.\n if (k && sd) {\n n = mathpow(10, LOG_BASE - sd);\n rd[i] = (k / n | 0) * n;\n }\n\n // Remove trailing words which are zero.\n for (; rd[i] === 0; i--) rd.pop();\n\n // Zero?\n if (i < 0) {\n e = 0;\n rd = [0];\n } else {\n e = -1;\n\n // Remove leading words which are zero and adjust exponent accordingly.\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\n\n // Count the digits of the first word of rd to determine leading zeros.\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\n\n // Adjust the exponent for leading zeros of the first word of rd.\n if (k < LOG_BASE) e -= LOG_BASE - k;\n }\n r.e = e;\n r.d = rd;\n return r;\n}\n\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction round(x) {\n return finalise(x = new this(x), x.e + 1, this.rounding);\n}\n\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction sign(x) {\n x = new this(x);\n return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN;\n}\n\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction sin(x) {\n return new this(x).sin();\n}\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction sinh(x) {\n return new this(x).sinh();\n}\n\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction sqrt(x) {\n return new this(x).sqrt();\n}\n\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\nfunction sub(x, y) {\n return new this(x).sub(y);\n}\n\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\nfunction sum() {\n var i = 0,\n args = arguments,\n x = new this(args[i]);\n external = false;\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\n external = true;\n return finalise(x, this.precision, this.rounding);\n}\n\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction tan(x) {\n return new this(x).tan();\n}\n\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\nfunction tanh(x) {\n return new this(x).tanh();\n}\n\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\nfunction trunc(x) {\n return finalise(x = new this(x), x.e + 1, 1);\n}\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\nP[Symbol.toStringTag] = 'Decimal';\n\n// Create and configure initial Decimal constructor.\nexport var Decimal = P.constructor = clone(DEFAULTS);\n\n// Create the internal constants from their string values.\nLN10 = new Decimal(LN10);\nPI = new Decimal(PI);\nexport default Decimal;","import { Decimal } from 'decimal.js';\nimport { round } from 'lodash-es';\n\n/**\n * @param value odds value in decimal (EU odds)\n * @returns Decimal value of american odds (moneyline).\n */\nexport function decimalOddsToAmerican(value: Decimal): Decimal {\n const PRECISION = 10;\n\n const roundedValue = round(value.toNumber(), PRECISION);\n const decimal = roundedValue >= 2 ? value.minus(1).times(100) : new Decimal(-100).dividedBy(value.minus(1));\n\n return new Decimal(round(decimal.toNumber(), PRECISION));\n}\n\n/**\n * @param american odds\n * @param isUsOddsRounding explicit rounding\n * @returns Rounded value of american odds\n */\n\nexport function roundAmericanOdds(american: Decimal, isUsOddsRounding: boolean = false) {\n return isUsOddsRounding ? american.toNearest(5).toNumber() : american.floor().toNumber();\n}\n\n/**\n * @param value EU odds to be converted to US odds\n * @param isUsOddsRounding explicit rounding\n * @returns number us odds value in number\n */\nexport function roundDecimalToAmerican(value: Decimal, isUsOddsRounding: boolean = false): number {\n const american = decimalOddsToAmerican(value);\n\n return roundAmericanOdds(american, isUsOddsRounding);\n}\n","import { Decimal } from 'decimal.js';\n\nexport class NativeFraction {\n numerator: Decimal;\n denominator: Decimal;\n\n constructor(n: number | Decimal, d: number | Decimal = 1) {\n this.numerator = new Decimal(n);\n this.denominator = new Decimal(d);\n }\n\n static empty(): NativeFraction {\n return new NativeFraction(0, 0);\n }\n\n static toFraction(value: Decimal): NativeFraction {\n if (value.lessThanOrEqualTo(0)) {\n return NativeFraction.empty();\n }\n\n const dp = value.decimalPlaces();\n if (dp <= 3) {\n const denominator = new Decimal(Math.pow(10, dp));\n\n return new NativeFraction(value.times(denominator).minus(denominator), denominator).simplify();\n }\n\n const values = value.toFraction(999);\n const num = values[0];\n const denom = values[1];\n\n return new NativeFraction(num.minus(denom), denom).simplify();\n }\n\n private static getCommonDivisor(a: Decimal, b: Decimal): Decimal {\n let temp: Decimal;\n while (!b.equals(0)) {\n temp = b;\n b = a.modulo(b);\n a = temp;\n }\n\n return a;\n }\n\n getValue(): Decimal {\n if (this.denominator.equals(0)) {\n return new Decimal(0);\n }\n\n return this.numerator.add(this.denominator).dividedBy(this.denominator);\n }\n\n private simplify(): NativeFraction {\n const greatestCommonDivisor = NativeFraction.getCommonDivisor(this.numerator, this.denominator);\n\n return new NativeFraction(this.numerator.dividedBy(greatestCommonDivisor), this.denominator.dividedBy(greatestCommonDivisor));\n }\n}\n","import { decimalOddsToAmerican, roundDecimalToAmerican } from '@frontend/sports/odds/feature/converters';\nimport { Decimal } from 'decimal.js';\n\nimport { NativeFraction } from './native-fraction';\n\n/**\n * @deprecated\n * This interface is deprecated and will be removed in future versions.\n * Use the Odds interface instead, which provides a more modular and comprehensive representation of odds.\n */\nexport class INativePrice {\n americanOdds?: number;\n denominator?: number;\n numerator?: number;\n odds?: number;\n}\n\n/**\n * @deprecated\n * This interface is deprecated and will be removed in future versions.\n * Use the Odds interface instead, which provides a more modular and comprehensive representation of odds.\n */\nexport class INativePriceCalculated extends INativePrice {\n americanOddsCalculated?: number;\n}\n\n/**\n * @deprecated\n * This class is deprecated and will be removed in future versions.\n * Use the CalculatedOdds class instead, which provides a more modular and comprehensive implementation of odds conversions and comparisons.\n */\nexport class NativePrice {\n get odds(): Decimal {\n return this.decimals;\n }\n\n get numerator(): Decimal {\n return this.getFraction().numerator;\n }\n\n get denominator(): Decimal {\n return this.getFraction().denominator;\n }\n\n get fraction(): Decimal {\n return this.getFraction().getValue();\n }\n\n get americanOdds(): Decimal {\n return new Decimal(this.getAmericanOdds());\n }\n\n get americanOddsCalculation(): number | undefined {\n return this.usOddsCalculated;\n }\n\n private decimals: Decimal;\n private nativeFraction?: NativeFraction;\n private usOdds?: number;\n private usOddsCalculated?: number;\n private isUsOddsRounding: boolean;\n\n // creators\n static empty(): NativePrice {\n return NativePrice.fromNativePrice({\n americanOdds: 0,\n denominator: 0,\n numerator: 0,\n odds: 0,\n });\n }\n\n static default(): NativePrice {\n return NativePrice.fromNativePrice({\n americanOdds: 0,\n denominator: 1,\n numerator: 0,\n odds: 1,\n });\n }\n\n static fromNativePrice(input: INativePriceCalculated): NativePrice {\n return this.fromNativePriceElement({\n odds: input.odds || 0,\n numerator: input.numerator || 0,\n denominator: input.denominator || 0,\n americanOdds: input.americanOdds || 0,\n americanOddsCalculated: input.americanOddsCalculated,\n });\n }\n\n static fromNativePriceElement(input: INativePriceCalculated, usOddsRounding: boolean = false): NativePrice {\n const price = new NativePrice();\n price.isUsOddsRounding = usOddsRounding;\n price.decimals = this.getInitialDecimals(input);\n\n if (input.numerator != null && input.denominator != null) {\n price.nativeFraction = new NativeFraction(input.numerator, input.denominator);\n }\n\n if (input.americanOdds != null) {\n price.usOdds = input.americanOdds;\n }\n\n if (input.americanOddsCalculated != null) {\n price.usOddsCalculated = input.americanOddsCalculated;\n }\n\n return price;\n }\n\n static fromDecimals(value: number): NativePrice {\n return NativePrice.fromNativePriceElement({\n odds: value,\n numerator: new Decimal(value).minus(1).toNumber(),\n denominator: 1,\n });\n }\n\n static fromDecimalsElement(value: number, usOddsRounding: boolean = false): NativePrice {\n return NativePrice.fromNativePriceElement({ odds: value }, usOddsRounding);\n }\n\n // static methods\n static americanOddsToDecimalOdds(usOdds: Decimal): Decimal {\n return usOdds.greaterThan(0) ? usOdds.dividedBy(100).add(1) : new Decimal(-100).dividedBy(usOdds).add(1);\n }\n\n static floorDecimalToAmerican(value: Decimal): number {\n return NativePrice.decimalToAmerican(value).floor().toNumber();\n }\n\n private static decimalToAmerican(value: Decimal): Decimal {\n return decimalOddsToAmerican(value);\n }\n\n private static getInitialDecimals(input: INativePrice): Decimal {\n if (input.odds != null) {\n return new Decimal(input.odds);\n }\n if (input.numerator != null && input.denominator != null) {\n return new Decimal(input.numerator / input.denominator + 1);\n }\n if (input.americanOdds != null) {\n return this.americanOddsToDecimalOdds(new Decimal(input.americanOdds));\n }\n\n return new Decimal(0);\n }\n\n // comparison\n lessThan(other: NativePrice | number): boolean {\n return this.odds.lessThan(this.toCompare(other));\n }\n\n lessThanOrEqualTo(other: NativePrice | number): boolean {\n return this.odds.lessThanOrEqualTo(this.toCompare(other));\n }\n\n greaterThan(other: NativePrice | number): boolean {\n return this.odds.greaterThan(this.toCompare(other));\n }\n\n greaterThanOrEqualTo(other: NativePrice | number): boolean {\n return this.odds.greaterThanOrEqualTo(this.toCompare(other));\n }\n\n equal(other: NativePrice | number): boolean {\n return this.odds.equals(this.toCompare(other));\n }\n\n isEmpty(): boolean {\n return this.decimals.equals(0);\n }\n\n private toCompare(other: NativePrice | number): number {\n return typeof other === 'number' ? other : other.odds.toNumber();\n }\n\n // helpers\n clone(): NativePrice {\n return NativePrice.fromNativePrice({\n americanOdds: this.americanOdds.toNumber(),\n denominator: this.denominator.toNumber(),\n numerator: this.numerator.toNumber(),\n odds: this.odds.toNumber(),\n });\n }\n\n cloneNativePriceElement(): NativePrice {\n return NativePrice.fromNativePriceElement({\n americanOdds: this.americanOdds.toNumber(),\n denominator: this.denominator.toNumber(),\n numerator: this.numerator.toNumber(),\n odds: this.odds.toNumber(),\n });\n }\n\n toJSON(): INativePrice {\n return {\n americanOdds: this.americanOdds.toNumber(),\n denominator: this.denominator.toNumber(),\n numerator: this.numerator.toNumber(),\n odds: this.odds.toNumber(),\n };\n }\n\n roundDecimalToAmerican(value: Decimal): number {\n return roundDecimalToAmerican(value, this.isUsOddsRounding);\n }\n\n toString(): string {\n return `eu: ${this.odds.toNumber()}, uk: { numerator: ${this.numerator.toNumber()}, denominator: ${this.denominator.toNumber()} }, us: ${this.americanOdds.toNumber()}`;\n }\n\n private getAmericanOdds(): number {\n if (this.usOdds != null) {\n return this.usOdds;\n }\n\n if (this.odds.equals(0)) {\n this.usOdds = 0;\n\n return this.usOdds;\n }\n\n this.usOdds = this.roundDecimalToAmerican(this.decimals);\n\n return this.usOdds;\n }\n\n private getFraction(): NativeFraction {\n return this.nativeFraction || NativeFraction.toFraction(this.decimals);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ArcUserConfig, SportsUserConfig } from '@frontend/sports/common/client-config-data-access';\nimport { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { IProfileConfiguration } from '@frontend/sports/types/components/a-r-c';\nimport {\n UserAutologout24HoursEvent,\n UserAutologoutEvent,\n UserEvent,\n UserLoginEvent,\n UserLogoutEvent,\n UserPreHooksLoginEvent,\n UserSessionExpiredEvent,\n UserService as VanillaUserService,\n} from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService {\n private readonly accountCategoryKey = 'http://api.bwin.com/v3/user/accountcategoryId';\n private readonly pgAccountIdKey = 'http://api.bwin.com/v3/user/pg/nameidentifier';\n\n get isQuickDepositEnabled(): boolean {\n return this.sportsUser.isQuickDepositEnabled;\n }\n\n get columnSize(): number {\n return this.sportsUser.columnSize ?? 0;\n }\n\n get jurisdiction(): string {\n return this.sportsUser.jurisdiction;\n }\n\n get clientIP(): string {\n return this.sportsUser.clientIP;\n }\n\n get isEarlyPayoutAllowed(): boolean {\n return this.sportsUser.isEarlyPayoutAllowed;\n }\n\n get events(): Observable {\n return this.vUser.events;\n }\n\n get isAuthenticated(): boolean {\n return this.vUser.isAuthenticated;\n }\n\n get currency(): string {\n return this.vUser.currency;\n }\n\n get ssoToken(): string | null {\n return this.vUser.ssoToken;\n }\n\n get geoCountry(): string {\n return this.vUser.geoCountry || '';\n }\n\n get country(): string {\n return this.vUser.country || '';\n }\n\n get username(): string | null {\n return this.vUser.username;\n }\n\n get workflowType(): number {\n return this.vUser.workflowType;\n }\n\n get id(): string | null {\n return this.vUser.id;\n }\n\n get accountId(): string | null {\n return this.vUser.accountId;\n }\n\n get displayName(): string {\n return this.vUser.displayName;\n }\n\n get isEligibleForNewCustomerOffer(): boolean {\n return this.sportsUser.isEligibleForNewCustomerOffer;\n }\n\n get arcPlayBreak(): boolean {\n return this.arcUser.arcPlayBreak;\n }\n\n get arcProfileDetails(): Readonly {\n return this.arcUser.arcProfileDetails;\n }\n\n get associatedAccount(): string | undefined {\n return this.sportsUser.associatedAccount;\n }\n\n constructor(\n private vUser: VanillaUserService,\n private sportsUser: SportsUserConfig,\n private arcUser: ArcUserConfig,\n ) {}\n\n get isAnonymous(): boolean {\n const accountType = this.vUser.claims.get('accbusinessphase');\n\n return !accountType || accountType === 'anonymous';\n }\n\n readonly onUserLogin$ = this.vUser.events.pipe(filter((e) => e instanceof UserPreHooksLoginEvent));\n readonly onUserLogInWithSettings$ = this.vUser.events.pipe(filter((e) => e instanceof UserLoginEvent));\n readonly onUserLogout$ = this.vUser.events.pipe(filter((e) => e instanceof UserLogoutEvent));\n readonly onAuthenticationChange$ = this.vUser.events.pipe(\n filter(\n (e) =>\n e instanceof UserLoginEvent ||\n e instanceof UserLogoutEvent ||\n e instanceof UserAutologoutEvent ||\n e instanceof UserSessionExpiredEvent ||\n e instanceof UserAutologout24HoursEvent,\n ),\n );\n\n accountCategoryId(): Nullable {\n return this.vUser.claims.get(this.accountCategoryKey);\n }\n\n getStateOrProvince(): Nullable {\n return this.vUser.claims.get('stateorprovince');\n }\n\n getIsStakeLimitSet(): boolean {\n return this.vUser.claims.get('isSportsLimitSet')?.toLowerCase() === 'true';\n }\n\n getUserMobileNumber(): Nullable {\n return this.vUser.claims.get('mobilephone');\n }\n\n getPGAccountId(): Nullable {\n return this.vUser.claims.get(this.pgAccountIdKey);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { UserService } from '@frontend/sports/user/feature';\n\n@Injectable({ providedIn: 'root' })\nexport class TennisPointsVisibilityService {\n constructor(\n private m2User: UserService,\n private sitecore: Sitecore,\n ) {}\n\n canDisplayPoints(leagueId: number): boolean {\n if (!this.sitecore.scoreboardPointsOmit?.length) {\n return true;\n }\n\n if (this.m2User.isAuthenticated) {\n return true;\n }\n\n return !this.sitecore.scoreboardPointsOmit.some((league) => league === leagueId);\n }\n}\n","export interface Time {\n hours: number;\n minutes: number;\n}\n\nexport interface TimeOfDay {\n from: Time;\n to: Time;\n}\n\nexport enum DayOfWeek {\n Sunday = 'Sunday',\n Monday = 'Monday',\n Tuesday = 'Tuesday',\n Wednesday = 'Wednesday',\n Thursday = 'Thursday',\n Friday = 'Friday',\n Saturday = 'Saturday',\n}\n","import { ceil } from 'lodash-es';\n\nimport { DayOfWeek } from './date-time.models';\n\nexport abstract class DateProviderService {\n static getNow(): Date {\n return new Date();\n }\n\n static getDate(value?: number | string | Date): Date {\n if (value === undefined) {\n return DateProviderService.getNow();\n }\n\n return new Date(value);\n }\n\n static buildDate(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date {\n const count = arguments.length;\n switch (count) {\n case 2:\n return new Date(year, month);\n case 3:\n return new Date(year, month, date);\n case 4:\n return new Date(year, month, date, hours);\n case 5:\n return new Date(year, month, date, hours, minutes);\n case 6:\n return new Date(year, month, date, hours, minutes, seconds);\n }\n if (count >= 7) {\n return new Date(year, month, date, hours, minutes, seconds, ms);\n }\n throw new Error('Wrong number of arguments passed');\n }\n\n static getStartOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n }\n\n static getStartOfMinute(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), 0, 0);\n }\n\n static getEndOfDay(date: Date, daysToBeAdded = 0): Date {\n const endDate = new Date(date);\n endDate.setDate(date.getDate() + daysToBeAdded);\n\n return new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), 23, 59, 59, 999);\n }\n\n static addHours(date: Date, noOfHours = 0): Date {\n return DateProviderService.getDate(date.setHours(date.getHours() + noOfHours));\n }\n\n static subtractHours(date: Date, noOfHours = 0): Date {\n return DateProviderService.getDate(date.setHours(date.getHours() - noOfHours));\n }\n\n /**\n * @return Returns the numeric value corresponding to the current time - the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC,\n * with leap seconds ignored.\n */\n static now(): number {\n return DateProviderService.getNow().valueOf();\n }\n\n static getEndOfMonth(date?: Date): Date {\n let currentDate: Date = date ?? DateProviderService.getNow();\n\n return new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);\n }\n\n static getDaysTo(targetDate: Date): number {\n const differenceInTime = targetDate.getTime() - DateProviderService.getNow().getTime();\n\n return ceil(differenceInTime / (1000 * 3600 * 24));\n }\n\n /**\n * calculates milliseconds left for the match from current time\n *\n * @returns time in seconds if second parameter is passed true else milliseconds\n */\n static getTimeDifference(date: Date, convertToSeconds?: boolean): number {\n const diff = date.valueOf() - DateProviderService.now();\n\n return convertToSeconds ? Math.floor(diff / 1000) : diff;\n }\n\n static checkTimer(date: Date, thresholdSeconds: number): boolean {\n return DateProviderService.getTimeDifference(date, true) <= thresholdSeconds;\n }\n\n static getDayOfWeek(): DayOfWeek {\n const now = DateProviderService.getDate();\n\n return DateProviderService.toDayOfWeek(now.getDay());\n }\n\n static toDayOfWeek(index: number): DayOfWeek {\n switch (index) {\n case 0:\n return DayOfWeek.Sunday;\n case 1:\n return DayOfWeek.Monday;\n case 2:\n return DayOfWeek.Tuesday;\n case 3:\n return DayOfWeek.Wednesday;\n case 4:\n return DayOfWeek.Thursday;\n case 5:\n return DayOfWeek.Friday;\n case 6:\n return DayOfWeek.Saturday;\n\n default:\n throw new Error(`Invalid day index: ${index}`);\n }\n }\n\n static daysFromNow(days: number): Date {\n const now = DateProviderService.getDate();\n\n return DateProviderService.buildDate(now.getFullYear(), now.getMonth(), now.getDate() + days);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { DateProviderService } from '@frontend/sports/common/core/utils/date';\nimport { padStart, template, templateSettings } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class DateTimeParser {\n constructor(public sitecore: Sitecore) {}\n\n /**\n * Determines the appropriate global message based on the difference between the provided date and the current date.\n *\n * @param date - The target date to compare against the current date.\n * @returns - A message indicating whether the event has not started, starts now, or will start in a specific number of minutes.\n */\n getStartsAtTime(date: Date): string {\n const now = DateProviderService.getDate();\n const delta = Math.floor((date.getTime() - now.getTime()) / 60000);\n\n if (delta < 0) {\n return this.sitecore.globalMessages.NotStarted;\n }\n\n if (delta === 0) {\n return this.sitecore.globalMessages.StartsNow;\n }\n\n if (delta < 11) {\n templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n const startingInMinutes = template(this.sitecore.globalMessages.StartingInMinutes);\n const startingInMinute = template(this.sitecore.globalMessages.StartingInMinute);\n\n const message = delta > 1 ? startingInMinutes({ delta }) : startingInMinute({ delta });\n\n return message;\n }\n\n return this.sitecore.globalMessages.NotStarted;\n }\n\n /**\n * Formats a given time in minutes into an \"hours:minutes\" string format.\n *\n * @param time - The total time in minutes.\n * @returns - The formatted time in \"hours:minutes\" format.\n */\n getTime(time: number): string {\n const minutes = time % 60;\n const hours = (time - minutes) / 60;\n const formattedMinutes = padStart(minutes.toString(), 2, '0');\n\n return `${hours}:${formattedMinutes}`;\n }\n}\n","import { exhaustiveCheckGuard } from '@frontend/sports/common/core/utils/extended-types';\n\ntype PlaceholderValueType = string | number | boolean;\ntype StringInput = string | null | undefined;\n\n/**\n * Format a string which is using double curly braces for param placement.\n *\n * @param str\n * @param obj\n * @param isCaseSensitive\n * @see interpolateSingleBracesString\n */\nexport function interpolateDoubleBracesString(str: StringInput, obj: Record, isCaseSensitive = true): string {\n return interpolateStringInternal(str, obj, { placeholderStyle: PlaceholderStyle.DoubleCurlyBraces, caseSensitive: isCaseSensitive });\n}\n\n/**\n * Format a string which is using single curly braces for param placement.\n *\n * @param str string to format\n * @param obj object to be used as params\n * @param isCaseSensitive\n * @example\n * formatObject('Hello {developer}', { developer: 'MS2 Developer' })\n */\nexport function interpolateSingleBracesString(str: StringInput, obj: Record, isCaseSensitive = true): string {\n return interpolateStringInternal(str, obj, { placeholderStyle: PlaceholderStyle.SingleCurlyBraces, caseSensitive: isCaseSensitive });\n}\n\n/**\n * Formats a string using array of values\n *\n * @param str string to format\n * @param args array of values to be used\n * @example\n * formatString('Hello {0}', ['MS2 Developer'])\n */\nexport function formatString(str: StringInput, ...args: PlaceholderValueType[]): string {\n return interpolateStringInternal(str, args, { placeholderStyle: PlaceholderStyle.SingleCurlyBraces });\n}\n\nenum PlaceholderStyle {\n SingleCurlyBraces = 1,\n DoubleCurlyBraces = 2,\n}\n\ninterface FormatObjectOptions {\n caseSensitive: boolean;\n placeholderStyle: PlaceholderStyle;\n}\nconst defaultFormatObjectOptions: FormatObjectOptions = {\n caseSensitive: true,\n placeholderStyle: PlaceholderStyle.SingleCurlyBraces,\n};\n\nfunction interpolateStringInternal(\n str: StringInput,\n obj: Record | PlaceholderValueType[],\n options: Partial = defaultFormatObjectOptions,\n): string {\n if (!str) {\n return '';\n }\n\n const mergedOptions = Object.assign>(defaultFormatObjectOptions, options);\n const flags = mergedOptions.caseSensitive ? 'gm' : 'gmi';\n\n let keyToPlaceholderAction: (placeholderName: string) => string = (placeholderName) => placeholderName;\n switch (mergedOptions.placeholderStyle) {\n case PlaceholderStyle.SingleCurlyBraces:\n keyToPlaceholderAction = (placeholderName) => `\\\\{${placeholderName}\\\\}`;\n break;\n case PlaceholderStyle.DoubleCurlyBraces:\n keyToPlaceholderAction = (placeholderName) => `\\\\{\\\\{${placeholderName}\\\\}\\\\}`;\n break;\n default:\n exhaustiveCheckGuard(mergedOptions.placeholderStyle);\n }\n\n let result = str;\n const keys = Object.keys(obj);\n for (const key of keys) {\n result = result.replace(new RegExp(keyToPlaceholderAction(key), flags), obj[key as keyof typeof obj] as string);\n }\n\n return result;\n}\n\nexport const generateGuid = (): string => {\n let d = Date.now();\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now();\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (char === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\n/**\n * Returns hash value of a string\n *\n * @param str string to calculate\n \n */\nexport function hashCode(str: string): number {\n let hash = 0;\n let i;\n let chr;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + chr;\n // eslint-disable-next-line no-bitwise\n hash |= 0;\n }\n\n return hash;\n}\n","export enum SportConstant {\n AmericanFootball = 11,\n Archery = 58,\n Athletics = 17,\n AustralianRulesFootball = 36,\n Badminton = 44,\n Bandy = 27,\n Baseball = 23,\n Basketball = 7,\n BeachHandball = 97,\n BeachSoccer = 93,\n Beachvolleyball = 63,\n Biathlon = 64,\n Bobsleigh = 65,\n Bowls = 35,\n Boxing = 24,\n Canoeing = 66,\n Chess = 67,\n CombatSports = 45,\n Cricket = 22,\n CrossCountrySkiing = 94,\n Curling = 68,\n Cycling = 10,\n Darts = 34,\n Diving = 92,\n Entertainment = 60,\n Equestrian = 46,\n Esports = 100,\n Fencing = 78,\n FigureSkating = 69,\n Financials = 62,\n Fistball = 47,\n Formula1 = 6,\n FreestyleSkiing = 86,\n Futsal = 70,\n GaelicSports = 48,\n Golf = 13,\n Greyhounds = 37,\n Gymnastics = 59,\n Handball = 16,\n Hockey = 49,\n Horses = 29,\n Icehockey = 12,\n IndoorSoccer = 71,\n Innebandy = 28,\n Lacrosse = 88,\n Luge = 72,\n ModernPentathlon = 98,\n Motocross = 91,\n Motorbikes = 40,\n MotorRacing = 41,\n Motorsport = 15,\n Nascar = 39,\n Netball = 73,\n NordicCombined = 96,\n OlympicsSpecials = 26,\n Padel = 87,\n Pelota = 74,\n PetanqueLyonnaiseBowls = 75,\n Poker = 76,\n Politics = 61,\n Pool = 38,\n Rally = 43,\n RinkHockey = 77,\n Rowing = 55,\n Rugby = 21,\n RugbyLeague = 31,\n RugbyUnion = 32,\n Sailing = 54,\n Schwingen = 89,\n Shooting = 79,\n ShowJumping = 80,\n Skeleton = 81,\n SkiJumping = 95,\n Skialpine = 9,\n Skinordic = 14,\n Snooker = 33,\n Snowboarding = 82,\n Soccer = 4,\n SoftBall = 53,\n Specials = 25,\n SpeedSkating = 83,\n Speedway = 42,\n Squash = 50,\n Swimming = 51,\n TableSoccer = 90,\n TableTennis = 56,\n Tennis = 5,\n TenPinBowling = 85,\n Triathlon = 84,\n Trotting = 30,\n Volleyball = 18,\n WaterPolo = 52,\n WeightLifting = 57,\n Wrestling = 99,\n VirtualFootball = 101,\n VirtualTennis = 102,\n VirtualBasketball = 103,\n VirtualAmericanFootball = 104,\n CounterStrike2 = 105,\n LeagueOfLegends = 106,\n Dota2 = 107,\n Esoccer = 108,\n Surfing = 109,\n EsportsGroup = -1,\n}\n\nexport enum RegionConstant {\n World = 6,\n}\n\nexport enum BasketballPeriodInfo {\n IntermissionQ1 = 2,\n IntermissionQ2 = 4,\n IntermissionQ3 = 6,\n IntermissionQ4 = 8,\n RegularTimeOver = 9,\n OverTimeIntermission = 11,\n Finished = 255,\n}\n\nexport enum AmericanFootballPeriodInfo {\n IntermissionQ1 = 2,\n IntermissionQ2 = 4,\n IntermissionQ3 = 6,\n RegularTimeOver = 8,\n Finished = 255,\n}\n\nexport enum IceHockeyPeriodInfo {\n IntermissionPeriod1 = 2,\n IntermissionPeriod2 = 4,\n RegularTimeOver = 6,\n OvertimeOver = 8,\n PenaltyShootout = 9,\n Finished = 255,\n}\n\nexport enum TennisPeriodInfo {\n Suspended = 6,\n Finished = 255,\n}\n\nexport enum TableTennisPeriodInfo {\n ThirdSetIntermission = 6,\n}\n\nexport enum FootballPeriodInfo {\n NotStarted = 0,\n FirstHalf = 1,\n SecondHalf = 3,\n RegularTimeOver = 5,\n PenaltyShootout = 9,\n Finish = 255,\n Suspended = 256,\n}\n\nexport enum BasketballQuarters {\n Quarter1 = 1,\n Quarter2 = 3,\n Quarter3 = 5,\n Quarter4 = 7,\n Overtime = 10,\n}\n\nexport enum BasketballHalves {\n Firsthalf = 1,\n Secondhalf = 3,\n Overtime = 10,\n}\n\nexport enum AmericanFootballQuarters {\n Quarter1 = 1,\n Quarter2 = 3,\n Quarter3 = 5,\n Quarter4 = 7,\n Overtime = 9,\n FirstIntermission = 2,\n Halftime = 4,\n ThirdIntermission = 6,\n RegularTimeOver = 8,\n}\n\nexport enum IceHockeyPeriods {\n Period1 = 1,\n Period2 = 3,\n Period3 = 5,\n Overtime = 7,\n}\n\nexport enum DartsLegsPeriodInfo {\n NotStarted = 0,\n TieBreak = 51,\n Finished = 255,\n}\n\nexport enum DartsSetsAndLegsPeriodInfo {\n NotStarted = 0,\n TieBreak = 14,\n Finished = 255,\n}\n\nexport const SPORTS_WITHOUT_AVAILABLE_REGION: number[] = [\n 9, 17, 44, 64, 24, 67, 45, 94, 10, 34, 60, 6, 48, 13, 29, 96, 61, 95, 33, 25, 51, 56, 5, 52,\n];\n\nexport const SPORTS_WITH_MAPPED_STATS: number[] = [4, 5, 7];\n","/* eslint-disable sonarjs/no-redundant-jump */\n\n/* eslint-disable sonarjs/no-identical-functions */\n\n/* eslint-disable guard-for-in */\n\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { FixtureType } from '@cds/betting-offer';\nimport { TennisSurface } from '@cds/betting-offer/add-ons';\nimport { Timer } from '@cds/scoreboards/v1/shared';\nimport { Formula1Weather } from '@cds/scoreboards/v1/sports';\nimport {\n AmericanFootballQuarters,\n BasketballQuarters,\n FootballPeriodInfo,\n IceHockeyPeriods,\n SportConstant,\n} from '@frontend/sports/common/core/data-access/constants';\nimport { ceil, times, values } from 'lodash-es';\n\nimport { EventModel } from './event.model';\n\nexport type EventScore =\n | PairGameScore\n | SetGameScore\n | DartsGameScore\n | FootballScore\n | TennisScore\n | TournamentScore\n | LeaderboardGameScore\n | SnookerScore\n | IcehockeyPeriodGameScore\n | PeriodGameScore\n | CricketScore;\n\nexport type EventStatistics =\n | FootballStats\n | TennisStats\n | BasketballStatistics\n | IcehockeyStatisticsEntry\n | AmericanFootballStatistics\n | BaseballStatistics\n | SnookerStats;\n\nexport type GeneralTournamentType = 'km' | 'Stage' | 'Lap';\n\nexport enum Turn {\n None = 0,\n Player01 = 1,\n Player02 = 2,\n}\n\nexport enum Weather {\n Sunny,\n Cloudy,\n LightRain,\n HeavyRain,\n}\n\nexport enum DartsMatchType {\n LegOnly = 0,\n SetsAndLegs = 1,\n}\n\nexport enum TeamType {\n Both = 2,\n Team01 = 0,\n Team02 = 1,\n}\n\nexport enum MatchType {\n BestOfFive = 1,\n BestOfFiveChampionsTieBreak = 3,\n BestOfThree = 0,\n BestOfThreeChampionsTieBreak = 2,\n}\n\nexport interface IconInfo {\n name?: string;\n color: string;\n highlight?: boolean;\n}\n\nexport interface Message {\n time: string;\n text: string;\n type: number;\n icon: IconInfo | null;\n order: number;\n teamType?: TeamType;\n}\n\nexport enum ComboPreventionMinimum {\n Combo2 = 2,\n Combo3 = 3,\n Combo4 = 4,\n Combo5 = 5,\n Combo6 = 6,\n Single = 1,\n}\n\nexport enum ComboPreventionType {\n AllCombo = 1,\n AllLiveEvents = 8,\n NoCombo = 2,\n NoCompetitionCombo = 10,\n NoEventCombo = 6,\n NoEventSameLeagueCombo = 7,\n NoFixtureCombo = 11,\n NoGroupCombo = 12,\n NoLeagueCombo = 4,\n NoSportCombo = 3,\n OtherLiveEvents = 9,\n}\n\nexport function toWeather(weather: Formula1Weather | null | undefined): Weather | null {\n if (weather == null) {\n return null;\n }\n\n switch (weather) {\n case Formula1Weather.Sunny:\n return Weather.Sunny;\n case Formula1Weather.Cloudy:\n return Weather.Cloudy;\n case Formula1Weather.LightRain:\n return Weather.LightRain;\n case Formula1Weather.HeavyRain:\n return Weather.HeavyRain;\n }\n}\n\nexport function isBespokeScoreboard(event: EventModel): boolean {\n const scoreboardType = getScoreboardType(event);\n\n return (\n [\n ScoreboardType.BaseballGame,\n ScoreboardType.PairGame,\n ScoreboardType.PeriodGame,\n ScoreboardType.Cricket,\n ScoreboardType.PreMatchPairGame,\n ].indexOf(scoreboardType) > -1\n );\n}\n\nexport function isBespokeSport(sportId: SportConstant, isEsport?: boolean): boolean {\n return (\n [\n SportConstant.Soccer,\n SportConstant.Baseball,\n SportConstant.AmericanFootball,\n ScoreboardType.Cricket,\n SportConstant.Basketball,\n SportConstant.Icehockey,\n ].indexOf(sportId) > -1 || !!isEsport\n );\n}\n\nexport function getScoreboardType(event: EventModel): ScoreboardType {\n if (event.scoreboard.started) {\n if (event.fixtureType === FixtureType.Tournament) {\n return ScoreboardType.TournamentGame;\n }\n if (event.participants.length !== 2 && event.scoreboard.type !== ScoreboardType.LeaderboardGame) {\n return ScoreboardType.TournamentGame;\n }\n\n return event.scoreboard.type;\n } else {\n if (\n event.fixtureType === FixtureType.Tournament ||\n event.participants.length !== 2 ||\n event.scoreboard.type === ScoreboardType.LeaderboardGame\n ) {\n return ScoreboardType.PreMatchTournament;\n }\n\n return ScoreboardType.PreMatchPairGame;\n }\n}\n\nexport enum ScoreboardType {\n PairGame = 'PairGame',\n SetGame = 'SetGame',\n BaseballGame = 'BaseballGame',\n TournamentGame = 'TournamentGame',\n LeaderboardGame = 'LeaderboardGame',\n PeriodGame = 'PeriodGame',\n Darts = 'Darts',\n Snooker = 'Snooker',\n SpecialGame = 'SpecialGame',\n Cricket = 'Cricket',\n PreMatchPairGame = 'PreMatchPairGame',\n PreMatchTournament = 'PreMatchTournament',\n}\n\nexport enum SportType {\n PairGame = 'PairGame',\n Football = 'Football',\n Tennis = 'Tennis',\n Badminton = 'Badminton',\n LeaderboardGame = 'LeaderboardGame',\n Snooker = 'Snooker',\n Baseball = 'Baseball',\n SetGame = 'SetGame',\n Tournament = 'Tournament',\n PeriodGame = 'PeriodGame',\n Darts = 'Darts',\n SpecialGame = 'SpecialGame',\n Cricket = 'Cricket',\n}\n\nexport class EventScoreboard {\n id: string;\n score?: EventScore;\n started: boolean;\n type: ScoreboardType;\n sportType: SportType;\n setScore?: string;\n bestOfSets?: number;\n bestOfLegs?: number;\n matchType?: number;\n period?: { id?: number; name: string };\n messages?: Message[] | undefined;\n time?: string;\n timeIndicator?: string;\n visible?: boolean;\n bookieTicker?: string;\n gameTimeInSeconds?: number;\n isGeneralTournament?: boolean;\n isFinished?: boolean;\n isSuspended?: boolean;\n statistics?: EventStatistics;\n colors?: string[];\n bestOf: number;\n timer?: Timer;\n powerPlayTeam?: TeamType;\n\n get timerVisible(): boolean {\n if (this.timer && this.timer.visible) {\n return true;\n }\n\n return this.timeIndicator !== undefined;\n }\n\n get timerRunning(): boolean {\n return !!this.timer && this.timer.running;\n }\n\n getScore(): T | undefined {\n return this.score as T;\n }\n\n getStats(): T {\n return this.statistics as T;\n }\n}\n\nexport interface PairScore {\n participant1: T;\n participant2: T;\n}\n\nexport interface ParticipantSetScore {\n sets: SetScore[];\n points?: string;\n r?: number;\n}\n\nexport interface ParticipantDartsScore {\n sets: DartsScore[];\n points?: string;\n}\n\nexport class PairGameScore implements PairScore {\n participant1: number;\n participant2: number;\n hasServing: boolean;\n period: string;\n currentlyServing: number; // TODO : should have type 'Turn'\n}\n\nexport class PeriodGameScore implements PairScore {\n participant1: ParticipantPeriodScore;\n participant2: ParticipantPeriodScore;\n playerInfo: any;\n turn?: Turn;\n matchType: number;\n}\n\nexport class IcehockeyPeriodGameScore extends PeriodGameScore {\n penalties: PairScore;\n penaltyShootOutScore?: PairScore;\n}\n\nexport interface ParticipantPeriodScore {\n periods: PeriodScore[];\n overTimeScore: number | undefined;\n total: number;\n}\n\nexport interface PeriodScore {\n points: number | string;\n current: boolean;\n}\n\nexport interface SetScore {\n points: number | string;\n current: boolean;\n tieBreakPoints?: string | null;\n setWon: boolean;\n isFutureSet?: boolean;\n}\n\nexport interface DartsScore {\n points: number;\n current: boolean;\n}\n\nexport class SetGameScore implements PairScore {\n participant1: ParticipantSetScore;\n participant2: ParticipantSetScore;\n participant1WonSets: number;\n participant2WonSets: number;\n currentlyServing: Turn;\n slimScoreboard?: boolean;\n setCount: number;\n period: string;\n gameMode: string;\n\n get setScore(): string {\n if (this.participant1WonSets >= 0 && this.participant2WonSets >= 0) {\n return `${this.participant1WonSets}:${this.participant2WonSets}`;\n }\n\n return '';\n }\n\n get setPoint(): string {\n const index = this.participant1WonSets + this.participant2WonSets;\n if (\n this.participant1.sets &&\n this.participant1.sets.length > 0 &&\n this.participant2.sets &&\n this.participant2.sets.length > 0 &&\n index < this.participant1.sets.length\n ) {\n return `${this.participant1.sets[index].points}:${this.participant2.sets[index].points}`;\n }\n\n return '';\n }\n}\n\nexport class DartsGameScore implements PairScore {\n participant1: number;\n participant2: number;\n hundredEighties: PairScore;\n legs: PairScore;\n currentlyServing: number;\n bestOfLegs: number;\n slimScoreboard?: boolean;\n setCount: number;\n period: string;\n score: string;\n matchType: DartsMatchType;\n}\n\nexport class FootballScore implements PairScore {\n participant1: number;\n participant2: number;\n finishedAfterRegularTime?: boolean;\n regularTimeOver?: boolean;\n regularTime?: PairScore;\n firstHalfScore?: PairScore;\n overTime?: PairScore;\n penaltyShootOutScore?: PairScore;\n}\n\nexport interface PenaltyRound {\n round: number;\n status: PenaltyStatus;\n}\n\nexport enum PenaltyStatus {\n Unset = 'Unset',\n Scored = 'Scored',\n Missed = 'Missed',\n}\n\nexport interface FootballStatsEntry extends BaseStatisticsEntry {\n firstHalf?: PairScore;\n secondHalf?: PairScore;\n extraTime?: PairScore;\n totalPoints?: PairScore;\n}\n\nexport interface FootballStats {\n goals?: FootballStatsEntry;\n redcards?: FootballStatsEntry;\n yellowcards?: FootballStatsEntry;\n penalties?: FootballStatsEntry;\n corners?: FootballStatsEntry;\n substitutions?: FootballStatsEntry;\n}\nexport class TennisScore extends SetGameScore {\n surfaceType: TennisSurface;\n winPoints: PairScore;\n matchType: number;\n\n override get setScore(): string {\n if (this.participant1WonSets >= 0 && this.participant2WonSets >= 0) {\n return `${this.participant1WonSets}:${this.participant2WonSets}`;\n }\n\n return '';\n }\n}\n\nexport class TournamentScore {\n type: GeneralTournamentType;\n final?: number;\n current?: number;\n participants: string[];\n participantsDetails: KeyValuePairScoreboard[];\n}\nexport interface KeyValuePairScoreboard {\n [key: string]: string;\n}\nexport class LeaderboardGameScore extends TournamentScore {\n preRace: boolean;\n periodId: number;\n weather: Weather | null = null;\n safetyCar: boolean;\n period: string;\n override participants: string[];\n override participantsDetails: KeyValuePairScoreboard[] = [];\n}\n\nexport class SnookerScore implements PairScore {\n participant1: number;\n participant2: number;\n frames: PairScore;\n currentlyServing: number;\n score: number;\n}\n\nexport class CricketScore implements PairScore {\n participant1: number;\n participant2: number;\n currentlyServing: number;\n balls: number;\n overs: number;\n runs: number;\n wickets: number;\n firstInnings?: CricketInningsData;\n secondInnings?: CricketInningsData;\n superOver?: CricketInningsData;\n}\n\nexport interface TeamShootout {\n penalties: PenaltyStatus[];\n points: number;\n}\n\nexport interface CricketInningScore {\n runs: number;\n wickets: number;\n overs?: number;\n balls?: number;\n isScoringTeam?: boolean;\n}\n\nexport interface CricketInningsData {\n team1: CricketInningScore;\n team2: CricketInningScore;\n}\n\nexport enum CricketInnings {\n FirstInning = 1,\n SecondInning = 2,\n ThirdInning = 3,\n FourthInning = 4,\n FirstSuperOver = 5,\n SecondSuperOver = 6,\n}\n\nexport interface BasePosition {\n hasFirstBase: boolean;\n hasSecondBase: boolean;\n hasThirdBase: boolean;\n order: string;\n}\n\nexport const enum OrderType {\n Team01 = 'Team01',\n Team02 = 'Team02',\n}\n\nexport interface BasketballStatisticsEntry extends BaseStatisticsEntry {\n firstQuarter?: PairScore;\n secondQuarter?: PairScore;\n thirdQuarter?: PairScore;\n fourthQuarter?: PairScore;\n points?: PairScore;\n}\nexport interface BasketballStatistics {\n points?: BasketballStatisticsEntry;\n threePointers?: BasketballStatisticsEntry;\n twoPointers?: BasketballStatisticsEntry;\n freeThrows?: BasketballStatisticsEntry;\n freeThrowsTotal?: BasketballStatisticsEntry;\n fouls?: BasketballStatisticsEntry;\n rebounds?: BasketballStatisticsEntry;\n assists?: BasketballStatisticsEntry;\n raceTo20?: BasketballStatisticsEntry;\n raceTo10?: BasketballStatisticsEntry;\n}\n\nexport interface IcehockeyStatisticsEntry {\n penaltyTotalTime?: BaseStatisticsEntry;\n penaltyPoints?: BaseStatisticsEntry;\n penaltyShots?: BaseStatisticsEntry;\n}\n\nexport interface SnookerStats {\n redBalls?: BaseStatisticsEntry;\n blackBalls?: BaseStatisticsEntry;\n pinkBalls?: BaseStatisticsEntry;\n greenBalls?: BaseStatisticsEntry;\n blueBalls?: BaseStatisticsEntry;\n brownBalls?: BaseStatisticsEntry;\n yellowBalls?: BaseStatisticsEntry;\n fouls?: BaseStatisticsEntry;\n frames?: BaseStatisticsEntry;\n century100Breaks?: BaseStatisticsEntry;\n breaks50?: BaseStatisticsEntry;\n bestOf?: BaseStatisticsEntry;\n}\nexport interface BaseStatisticsEntry {\n regularTime?: PairScore;\n}\n\nexport interface AmericanFootballStatistics {\n turnovers?: BaseStatisticsEntry;\n penalties?: BaseStatisticsEntry;\n touchdowns?: BaseStatisticsEntry;\n fieldGoals?: BaseStatisticsEntry;\n safeties?: BaseStatisticsEntry;\n onePointConversions?: BaseStatisticsEntry;\n twoPointsConversions?: BaseStatisticsEntry;\n activeDown?: string;\n yardsDistance: number;\n yardsToNextDown: number;\n timeoutsLeft: TeamTimeoutsLeft[];\n timeValue: string;\n}\n\nexport interface TennisStatsEntry {\n firstSet?: PairScore;\n secondSet?: PairScore;\n thirdSet?: PairScore;\n fourthSet?: PairScore;\n fifthSet?: PairScore;\n regularTime: PairScore;\n}\n\nexport interface TennisStats {\n aces?: TennisStatsEntry;\n doubleFaults?: TennisStatsEntry;\n breaks?: TennisStatsEntry;\n tieBreaks?: TennisStatsEntry;\n winPointsPercentage?: TennisStatsEntry;\n raceTo15?: TennisStatsEntry;\n raceTo20?: TennisStatsEntry;\n}\n\nexport interface BaseballStatistics {\n grandSlams?: BaseStatisticsEntry;\n homeRun?: BaseStatisticsEntry;\n outs?: BaseStatisticsEntry;\n scoreDetailed?: BaseStatisticsEntry;\n bases?: BasePosition[];\n balls?: number;\n strikes?: number;\n}\nexport interface TeamTimeoutsLeft {\n firstHalf: number;\n overtime: number;\n secondHalf: number;\n teamOrder: string;\n}\n\nexport enum SpecialChar {\n Comma = ',',\n Greater = '>',\n Less = '<',\n Hyphen = '-',\n Slash = '/',\n}\n\nexport interface PeriodGameLiveScoreboardViewModel {\n score: PeriodGameScore;\n periodScore: ParticipantPeriodScore[];\n showPenalties: boolean;\n penalties: TeamShootout[];\n isSuspended?: boolean;\n showOvertime?: boolean;\n isOvertimeActive?: boolean;\n icon?: string;\n}\n\nexport interface PairGameScoreboardViewModel {\n score: PairGameScore;\n showPenalties: boolean;\n penalties: TeamShootout[];\n regularTime?: PairScore | undefined;\n overTime?: PairScore | undefined;\n redCards?: number[] | undefined;\n yellowCards?: number[] | undefined;\n firstHalfScore?: PairScore | undefined;\n isSuspended?: boolean;\n isSecondHalf?: boolean;\n}\n\nexport function getSoccerPenalties(event: EventModel, isSoccer: boolean): TeamShootout[] {\n const visible = 5;\n const score = event.scoreboard.score as FootballScore;\n if (isSoccer && score.penaltyShootOutScore !== undefined) {\n const teams = values(score.penaltyShootOutScore);\n const offset = ceil(teams[0].length / visible - 1) * visible;\n\n return teams.map((team) => ({\n points: team.filter((penalty) => penalty.status === PenaltyStatus.Scored).length,\n penalties: times(visible).map((_penalty, index) => (team[index + offset] ? team[index + offset].status : PenaltyStatus.Unset)),\n }));\n }\n\n return [];\n}\n\nexport function getIcehockeyPenalties(event: EventModel, visibleCount: number): TeamShootout[] {\n const score = event.scoreboard.getScore();\n if (score && score.penaltyShootOutScore) {\n const teams = values(score.penaltyShootOutScore);\n const offset = ceil(teams[0].length / visibleCount - 1) * visibleCount;\n\n return teams.map((team) => ({\n points: team.filter((penalty) => penalty.status === PenaltyStatus.Scored).length,\n penalties: times(visibleCount).map((_penalty, index) => (team[index + offset] ? team[index + offset].status : PenaltyStatus.Unset)),\n }));\n }\n\n return [];\n}\n\nexport function getOvertime(event: EventModel): boolean {\n const score = event.scoreboard.getScore()!;\n if (!score) {\n return false;\n }\n let overTimePeriod = 0;\n switch (event.sport.id) {\n case SportConstant.Icehockey:\n overTimePeriod = IceHockeyPeriods.Overtime;\n break;\n case SportConstant.AmericanFootball:\n overTimePeriod = AmericanFootballQuarters.Overtime;\n break;\n case SportConstant.Basketball:\n overTimePeriod = BasketballQuarters.Overtime;\n break;\n }\n\n return !!(event.scoreboard.period?.id === overTimePeriod || score.participant1.overTimeScore || score.participant2.overTimeScore);\n}\n\nexport function regularTime(event: EventModel, isSoccer: boolean): PairScore | undefined {\n if (event.scoreboard.period && event.scoreboard.period.id) {\n const score = event.scoreboard.getScore()!;\n\n if (isSoccer && (!!score.finishedAfterRegularTime || !!score.regularTimeOver)) {\n return score.regularTime;\n }\n }\n\n return;\n}\n\nexport function firstHalfScore(event: EventModel, isSoccer: boolean): PairScore | undefined {\n if (isSoccer && event.scoreboard.period && event.scoreboard.period.id === FootballPeriodInfo.SecondHalf) {\n const score = event.scoreboard.getScore()!;\n\n return score.firstHalfScore;\n }\n\n return;\n}\n\nexport function getOverTime(event: EventModel, isSoccer: boolean): PairScore | undefined {\n if (event.scoreboard.period && event.scoreboard.period.id) {\n const score = event.scoreboard.getScore()!;\n\n if (isSoccer && (!!score.finishedAfterRegularTime || !!score.regularTimeOver)) {\n return score.overTime;\n }\n }\n\n return;\n}\n\nexport function getRedCards(event: EventModel, isSoccer: boolean, isNewEDPScoreboard: boolean): number[] | undefined {\n if (isSoccer && event.scoreboard.statistics) {\n const redCards = (event.scoreboard.statistics as FootballStats).redcards;\n if (isNewEDPScoreboard) {\n return redCards && redCards.totalPoints\n ? redCards.regularTime\n ? [redCards.regularTime.participant1, redCards.regularTime.participant2]\n : [redCards.totalPoints.participant1, redCards.totalPoints.participant2]\n : undefined;\n }\n\n return redCards && redCards.totalPoints ? [redCards.totalPoints.participant1, redCards.totalPoints.participant2] : undefined;\n }\n\n return;\n}\n\nexport function getYellowCards(event: EventModel, isSoccer: boolean): number[] | undefined {\n if (isSoccer && event.scoreboard.statistics) {\n const yellowCards = (event.scoreboard.statistics as FootballStats).yellowcards;\n\n return yellowCards && yellowCards.totalPoints ? [yellowCards.totalPoints.participant1, yellowCards.totalPoints.participant2] : undefined;\n }\n\n return;\n}\n\nexport function getBackgroundColor(event: EventModel, useSolid: boolean): string {\n const color = getBackgroundColorInternal(event);\n\n return color && useSolid ? `${color}-solid` : color;\n}\n\nexport function showPenalties(score: IcehockeyPeriodGameScore | FootballScore): boolean {\n return score && score.penaltyShootOutScore !== undefined;\n}\n\nexport function getPairGameScore(event: EventModel, isNewScoreboard: boolean = false): PairGameScoreboardViewModel {\n const isSoccer = event.sport.id === SportConstant.Soccer;\n const score = event.scoreboard.getScore()!;\n\n return {\n score,\n showPenalties: showPenalties(score),\n penalties: getSoccerPenalties(event, isSoccer),\n regularTime: regularTime(event, isSoccer),\n overTime: getOverTime(event, isSoccer),\n redCards: getRedCards(event, isSoccer, isNewScoreboard),\n yellowCards: getYellowCards(event, isSoccer),\n firstHalfScore: firstHalfScore(event, isSoccer),\n isSuspended: event.scoreboard.period && event.scoreboard.period.id === 256,\n isSecondHalf: isSoccer && event.scoreboard.period && event.scoreboard.period.id === FootballPeriodInfo.SecondHalf,\n };\n}\n\nfunction getBackgroundColorInternal(event: EventModel): string {\n let color;\n const score = event.scoreboard.score;\n\n if (score && score instanceof TennisScore) {\n const colorMap = {\n [TennisSurface.Clay]: 'brown',\n [TennisSurface.Grass]: 'grass',\n [TennisSurface.HardCourt]: 'waterblue',\n [TennisSurface.IndoorCourt]: 'waterblue',\n };\n\n color = colorMap[score.surfaceType];\n } else {\n color = getSportBackgroundColor(event.sport.id);\n }\n\n return color;\n}\n\nfunction getSportBackgroundColor(sportId: number): string {\n let color = 'black';\n const bgColors = {\n grass: [4, 11, 13, 22, 23, 31, 32, 33, 35, 36, 47, 48, 53, 58, 80, 88],\n gray: [9, 12, 27, 64, 65, 68, 69, 72, 81, 82, 83, 86, 94, 95, 96],\n umber: [7, 17, 18, 42, 43, 44, 50, 63, 73, 75, 77, 85, 89, 91, 93, 97],\n waterblue: [16, 24, 28, 38, 49, 51, 52, 54, 55, 56, 59, 66, 70, 92],\n road: [6, 10, 39, 40, 41],\n generic: [5, 25, 26, 29, 30, 34, 37, 45, 46, 57, 60, 61, 62, 67, 71, 74, 76, 78, 79, 84, 87, 90, 100],\n purple: [105, 106, 107, 108],\n };\n for (const key in bgColors) {\n const typedKey = key as keyof typeof bgColors;\n if (bgColors[typedKey].indexOf(sportId) > -1) {\n color = key;\n break;\n }\n }\n\n return color;\n}\n\nexport function getScorePoints(setPoint?: string): string | undefined {\n return setPoint?.includes('ADV') ? 'AD' : setPoint;\n}\n","import { Injectable } from '@angular/core';\n\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { IntlService } from '@frontend/vanilla/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DateFormatterService {\n private readonly MINUTE = 60 * 1000;\n private readonly HOUR = 60 * this.MINUTE;\n private readonly DAY = 24 * this.HOUR;\n\n private _formatMap?: { [key: string]: { title: string; format: string[] } };\n\n /**\n * Initializes the DateFormatterService.\n *\n * @param sitecore - Provides global messages and localization settings.\n * @param intlService - Provides internationalization utilities for date and time formatting.\n */\n constructor(\n private sitecore: Sitecore,\n private intlService: IntlService,\n ) {}\n\n get formatMap() {\n if (!this._formatMap) {\n this._formatMap = {\n today: { title: this.sitecore.globalMessages.Today, format: ['shortTime'] },\n tomorrow: { title: this.sitecore.globalMessages.Tomorrow, format: ['shortTime'] },\n other: { title: this.sitecore.globalMessages.TimerOther, format: ['shortDate'] },\n };\n }\n\n return this._formatMap;\n }\n\n /**\n * Formats a given date into a string based on its category (\"Today\", \"Tomorrow\", or other).\n *\n * @param startDate - The date to format.\n * @returns - A formatted string combining the category title and formatted date.\n */\n formatDate(startDate: Date): string {\n const formatterKey = this.getFormatKey(startDate);\n const formatter = this.formatMap[formatterKey];\n\n return formatter.title.replace('{date}', formatter.format.map((f) => this.intlService.formatDate(startDate, f)).join(' ') || '');\n }\n\n /**\n * Formats a given date into a string that includes both the date and time.\n *\n * @param startDate - The date to format.\n * @returns - A formatted string combining the category title, formatted date, and time.\n */\n formatDateWithTime(startDate: Date): string {\n return `${this.formatDate(startDate)} ${this.intlService.formatDate(startDate, 'shortTime')}`;\n }\n\n /**\n * Determines the formatting key for a given date based on its relation to the current date.\n *\n * @private\n * @param eventDate - The date to evaluate.\n * @returns - The key (\"today\", \"tomorrow\", or \"other\") corresponding to the date's category.\n */\n private getFormatKey(eventDate: Date): string {\n const now = new Date();\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);\n const tomorrow = new Date(today.getTime() + this.DAY);\n\n if (eventDate < today) {\n return 'today';\n }\n if (eventDate < tomorrow) {\n return 'tomorrow';\n }\n\n return 'other';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AmericanFootballStatistics, EventScoreboard } from '@frontend/sports/betting-offer/feature/model';\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { AmericanFootballQuarters } from '@frontend/sports/common/core/data-access/constants';\n\n@Injectable({ providedIn: 'root' })\nexport class AmericanFootballScoreboardFactory {\n constructor(private sitecore: Sitecore) {}\n\n getYardDistance(americanFootballStats?: AmericanFootballStatistics, id?: number): string {\n let yardDistance = '';\n if (\n americanFootballStats?.activeDown &&\n americanFootballStats.yardsDistance !== 0 &&\n americanFootballStats.yardsToNextDown !== 0 &&\n !(id === AmericanFootballQuarters.Halftime || id === AmericanFootballQuarters.RegularTimeOver)\n ) {\n yardDistance = `${americanFootballStats.activeDown} & ${americanFootballStats.yardsToNextDown}${this.getTriCode(americanFootballStats.yardsDistance)}`;\n }\n\n return yardDistance;\n }\n\n private getTriCode(yardsDistance: number): string {\n const separator = ',';\n if (yardsDistance === 50) {\n return `${separator} ${this.sitecore.eventScoreboard.On} ${yardsDistance}`;\n }\n if (yardsDistance > 50 && yardsDistance <= 100) {\n const distance = 100 - yardsDistance;\n\n return `${separator} ${this.sitecore.eventScoreboard.Own} ${distance}`;\n }\n if (yardsDistance < 50) {\n return `${separator} ${this.sitecore.eventScoreboard.Opp} ${yardsDistance}`;\n }\n\n return '';\n }\n\n getLiveEventInfo(scoreboard?: EventScoreboard): string {\n const americanFootballStats = scoreboard?.statistics as AmericanFootballStatistics;\n\n return this.getYardDistance(americanFootballStats, scoreboard?.period?.id);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BaseballStatistics, EventScoreboard, SetGameScore } from '@frontend/sports/betting-offer/feature/model';\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { formatString } from '@frontend/sports/common/core/utils/string';\n\n@Injectable({ providedIn: 'root' })\nexport class BaseballScoreboardFactory {\n constructor(private sitecore: Sitecore) {}\n\n getBallsStrikesOuts(baseballStats?: BaseballStatistics, score?: SetGameScore): string {\n return formatString(\n this.sitecore.eventScoreboard.BallsStrikesOuts,\n baseballStats?.balls || 0,\n baseballStats?.strikes || 0,\n (score?.currentlyServing === 1 ? baseballStats?.outs?.regularTime?.participant1 : baseballStats?.outs?.regularTime?.participant2) || 0,\n );\n }\n\n getLiveEventInfo(scoreboard?: EventScoreboard): string {\n const baseballStats = scoreboard?.statistics as BaseballStatistics;\n const score = scoreboard?.getScore();\n\n return this.getBallsStrikesOuts(baseballStats, score);\n }\n\n // TODO consider refactoring this function when modifying it, and remove below lint disalbe\n // eslint-disable-next-line sonarjs/cognitive-complexity\n getBaseIcon(baseballStats: BaseballStatistics, team: string): string | undefined {\n let baseRunnerPositionClass = '';\n const baseClass = 'base';\n\n const baseTeam = baseballStats.bases?.find((bt) => bt.order === team);\n if (!baseTeam) {\n return;\n }\n if (baseTeam.hasFirstBase && baseTeam.hasSecondBase) {\n baseRunnerPositionClass = baseTeam.hasThirdBase ? BaseballBaseIcon.FirstSecondThirdBase : BaseballBaseIcon.FirstSecondBase;\n }\n if (baseTeam.hasFirstBase && !baseTeam.hasSecondBase) {\n baseRunnerPositionClass = baseTeam.hasThirdBase ? BaseballBaseIcon.FirstThirdBase : BaseballBaseIcon.FirstBase;\n }\n if (!baseTeam.hasFirstBase && baseTeam.hasSecondBase) {\n baseRunnerPositionClass = baseTeam.hasThirdBase ? BaseballBaseIcon.SecondThirdBase : BaseballBaseIcon.SecondBase;\n }\n if (!baseTeam.hasFirstBase && !baseTeam.hasSecondBase && baseTeam.hasThirdBase) {\n baseRunnerPositionClass = BaseballBaseIcon.ThirdBase;\n }\n\n return baseRunnerPositionClass ? `${baseClass} ${baseRunnerPositionClass}` : baseClass;\n }\n}\n\nenum BaseballBaseIcon {\n FirstBase = 'base-b1',\n SecondBase = 'base-b2',\n ThirdBase = 'base-b3',\n FirstSecondBase = 'base-b1b2',\n FirstThirdBase = 'base-b1b3',\n SecondThirdBase = 'base-b2b3',\n FirstSecondThirdBase = 'base-b1b2b3',\n}\n","import { Injectable } from '@angular/core';\n\nimport { IconInfo, Message } from '@frontend/sports/betting-offer/feature/model';\nimport { EventDetailsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { DateTimeParser } from '@frontend/sports/common/core/feature/date-time-parser';\n\n@Injectable({ providedIn: 'root' })\nexport class MessageParser {\n constructor(\n private dateParser: DateTimeParser,\n private eventDetailsConfig: EventDetailsConfig,\n ) {}\n\n parseMessages(messages: Message[], sportId: number, skipTime?: boolean): Message[] {\n const result: Message[] = [];\n\n if (!messages || messages.length === 0) {\n return result;\n }\n\n let time: string;\n let icon: IconInfo | null;\n\n for (const message of messages) {\n time = message.time;\n icon = message.icon;\n\n if (time && !skipTime) {\n time = this.dateParser.getTime(Number(message.time));\n }\n\n if (!icon) {\n icon = this.processIcon(message.type, sportId);\n }\n\n result.push({\n icon,\n text: message.text,\n time,\n type: message.type,\n order: message.order,\n teamType: message.teamType,\n });\n }\n\n return result;\n }\n\n private processIcon(messageType: number, sportId: number): IconInfo | null {\n const icon = this.getIcon(messageType, sportId);\n\n if (icon && messageType > 1) {\n icon.name = `sports-sb-${icon.name}`;\n }\n\n return icon;\n }\n\n private getIcon(messageType: number, sportId: number): IconInfo | null {\n const icons = this.eventDetailsConfig.messageIcons;\n\n if (messageType === 0) {\n return null;\n }\n\n if (messageType === 1) {\n return icons['0']['1'];\n }\n\n const id = sportId.toString();\n const type = messageType.toString();\n const icon: IconInfo = { name: '', color: '' };\n\n if (icons && icons[id] && icons[id][type]) {\n icon.color = icons[id][type].color;\n icon.name = icons[id][type].name;\n icon.highlight = icons[id][type].highlight;\n } else {\n return null;\n }\n\n return icon;\n }\n}\n","/* eslint-disable max-lines */\nimport { Injectable } from '@angular/core';\n\nimport { FixtureType } from '@cds/betting-offer';\nimport { TennisSurface } from '@cds/betting-offer/add-ons';\nimport { IScoreboard } from '@cds/scoreboards';\nimport { ScoreboardSlim } from '@cds/scoreboards/v1';\nimport { Message as CdsMessage, Counter, CricketInning, DoubleCounter, Participant, PenaltyDoubleCounter } from '@cds/scoreboards/v1/shared';\nimport {\n AmericanFootball,\n AmericanFootballSlim,\n Baseball,\n Basketball,\n Cricket,\n Darts,\n DartsScoreboardSlim,\n FormulaOne,\n GeneralTournamentGameStateType,\n GeneralTournamentSlim,\n IceHockey,\n IceHockeySlim,\n Snooker,\n SnookerScoreboardSlim,\n Soccer,\n SoccerSlim,\n Tennis,\n TennisScoreboardSlim,\n} from '@cds/scoreboards/v1/sports';\nimport {\n AmericanFootballStatistics,\n BaseEventModel,\n BaseStatisticsEntry,\n BaseballStatistics,\n BasketballStatistics,\n BasketballStatisticsEntry,\n CricketInningScore,\n CricketInnings,\n CricketInningsData,\n CricketScore,\n DartsGameScore,\n DartsMatchType,\n EventModel,\n EventScore,\n EventScoreboard,\n EventStatistics,\n FootballScore,\n FootballStats,\n FootballStatsEntry,\n GeneralTournamentType,\n IcehockeyPeriodGameScore,\n IcehockeyStatisticsEntry,\n KeyValuePairScoreboard,\n LeaderboardGameScore,\n MatchType,\n Message,\n PairGameScore,\n PairScore,\n ParticipantPeriodScore,\n PenaltyRound,\n PenaltyStatus,\n PeriodGameScore,\n PeriodScore,\n ScoreboardType,\n SetGameScore,\n SetScore,\n SnookerScore,\n SnookerStats,\n SportType,\n TeamType,\n TennisScore,\n TennisStats,\n TennisStatsEntry,\n TournamentScore,\n Turn,\n toWeather,\n} from '@frontend/sports/betting-offer/feature/model';\nimport {\n AmericanFootballPeriodInfo,\n AmericanFootballQuarters,\n BasketballHalves,\n BasketballPeriodInfo,\n BasketballQuarters,\n FootballPeriodInfo,\n IceHockeyPeriods,\n SportConstant,\n} from '@frontend/sports/common/core/data-access/constants';\nimport { DateFormatterService } from '@frontend/sports/common/core/feature/date-formatter-service';\nimport { values } from 'lodash-es';\n\nimport { TennisPointsVisibilityService } from '../helpers/tennis-points-visibility.service';\nimport { AmericanFootballScoreboardFactory } from './american-football-scoreboard.factory';\nimport { BaseballScoreboardFactory } from './baseball-scoreboard.factory';\nimport { MessageParser } from './message-parser.service';\n\ntype PeriodGamesScoreboardFull = AmericanFootballSlim | Basketball | IceHockey;\n\n@Injectable({ providedIn: 'root' })\nexport class ScoreboardFactory {\n // prettier-ignore\n private readonly SPORT_TYPE_LOOKUP: Record = {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Football: [4, 70], // soccer, futsal\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Tennis: [5, 87], // tennis, padel\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Badminton: [44],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n LeaderboardGame: [6, 9, 64, 40],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Snooker: [33],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Darts: [34],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Baseball: [23],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n SpecialGame: [24],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n SetGame: [18, 50, 56, 63],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Tournament: [\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n\t\t\t10, 13, 14, 15, 17, 26, 29, 30, 37, 39, 41, 42, 43, 46, 48, 51, 54, 55, 57, 59, 60, 61, 62,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n\t\t\t65, 66, 69, 72, 76, 79, 80, 81, 82, 83, 84, 86, 89, 91, 92, 94, 95, 96, 98, 100\n\t\t],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n PeriodGame: [7, 11, 12],\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-magic-numbers\n Cricket: [22],\n PairGame: []\n\t};\n\n private readonly SCOREBOARD_TYPE_LOOKUP = {\n SetGame: ScoreboardType.SetGame,\n Darts: ScoreboardType.Darts,\n Tennis: ScoreboardType.SetGame,\n Badminton: ScoreboardType.SetGame,\n Tournament: ScoreboardType.TournamentGame,\n LeaderboardGame: ScoreboardType.LeaderboardGame,\n SpecialGame: ScoreboardType.SpecialGame,\n Baseball: ScoreboardType.BaseballGame,\n PeriodGame: ScoreboardType.PeriodGame,\n Snooker: ScoreboardType.Snooker,\n Cricket: ScoreboardType.Cricket,\n };\n\n private readonly sportsScoreboardServices = {\n [SportConstant.AmericanFootball]: this.americanFootballScoreboardFactory,\n [SportConstant.Baseball]: this.baseballScoreboardFactory,\n };\n\n constructor(\n private messageParser: MessageParser,\n private tennisPointsVisibilityService: TennisPointsVisibilityService,\n private dateFormatterService: DateFormatterService,\n private baseballScoreboardFactory: BaseballScoreboardFactory,\n private americanFootballScoreboardFactory: AmericanFootballScoreboardFactory,\n ) {}\n\n //this is a legacy method please use the service if you need to format the date\n showDate(event: EventModel): string {\n return this.dateFormatterService.formatDate(event.startDate);\n }\n\n createScoreboard(scoreboardResponse: ScoreboardSlim | undefined, model: T): EventScoreboard {\n const scoreboard = new EventScoreboard();\n\n if (!scoreboardResponse) {\n scoreboard.type =\n model.fixtureType === FixtureType.Tournament ? ScoreboardType.TournamentGame : this.getDefaultScoreboardType(model.sport.id);\n\n return scoreboard;\n }\n\n scoreboard.id = scoreboardResponse.id;\n scoreboard.visible = true;\n scoreboard.period = {\n name: scoreboardResponse.period,\n id: scoreboardResponse.periodId,\n };\n\n scoreboard.timeIndicator = scoreboardResponse.indicator;\n scoreboard.timer = scoreboardResponse.timer;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n scoreboard.bookieTicker = (scoreboardResponse as any).bookieTicker || '';\n scoreboard.isGeneralTournament = this.isGeneralTournament(scoreboardResponse);\n scoreboard.started = scoreboardResponse.started;\n scoreboard.type = this.getScoreboardType(model.sport.id, scoreboardResponse);\n scoreboard.sportType = this.getSportType(model.sport.id, scoreboardResponse);\n scoreboard.isFinished = Boolean(scoreboardResponse.period && scoreboard.period.id === 255);\n scoreboard.isSuspended = this.getSuspended(model.sport.id, scoreboardResponse.periodId);\n\n if (scoreboard.started && scoreboardResponse.timer) {\n scoreboard.time = scoreboardResponse.timer.base;\n scoreboard.gameTimeInSeconds = scoreboardResponse.timer.seconds;\n\n // TODO: check custom timer sport-id array\n const standardTimerSports = [4, 22, 24, 38, 71];\n if (standardTimerSports.indexOf(model.sport.id) >= 0) {\n scoreboard.time = this.formatGameTimer(scoreboard.gameTimeInSeconds);\n }\n }\n\n scoreboard.messages = this.createMessages(scoreboardResponse, model.sport.id);\n scoreboard.statistics = this.getSportStats(scoreboardResponse, model.sport.id);\n scoreboard.score = this.getSportScore(scoreboardResponse, model.sport.id, model.league.id);\n scoreboard.colors = this.getColors(scoreboardResponse as Soccer);\n if (scoreboard.type === ScoreboardType.Snooker) {\n scoreboard.bestOf = this.getBestOfSnooker(scoreboardResponse as SnookerScoreboardSlim);\n } else if (scoreboard.type === ScoreboardType.Darts) {\n scoreboard.bestOfLegs = (scoreboardResponse as DartsScoreboardSlim).bestOfLegs;\n scoreboard.bestOfSets = (scoreboardResponse as DartsScoreboardSlim).bestOfSets;\n }\n\n if (scoreboardResponse.sportId === SportConstant.Icehockey) {\n const team = (scoreboardResponse as IceHockeySlim).powerPlayTeam;\n scoreboard.powerPlayTeam = team ? TeamType[team] : undefined;\n }\n\n return scoreboard;\n }\n\n private getDefaultScoreboardType(sportId: number): ScoreboardType {\n const sportType = this.getDefaultSportType(sportId);\n\n return this.SCOREBOARD_TYPE_LOOKUP[sportType as keyof typeof this.SCOREBOARD_TYPE_LOOKUP] || ScoreboardType.PairGame;\n }\n\n private getDefaultSportType(sportId: number): SportType {\n const defaultSportType = SportType.PairGame;\n\n const sportType = Object.keys(this.SPORT_TYPE_LOOKUP)\n .map((t) => t as SportType)\n .reduce((acc, curr) => {\n const sports = this.SPORT_TYPE_LOOKUP[curr];\n const sportFound = sports.indexOf(sportId) >= 0;\n\n return sportFound ? curr : acc;\n }, defaultSportType);\n\n return sportType;\n }\n\n private isGeneralTournament(scoreboardResponse: ScoreboardSlim): boolean {\n return !!(\n (scoreboardResponse as GeneralTournamentSlim).isGeneralTournament &&\n scoreboardResponse.sportId !== SportConstant.Skialpine &&\n scoreboardResponse.sportId !== SportConstant.Motorbikes &&\n scoreboardResponse.sportId !== SportConstant.Biathlon\n );\n }\n\n private getScoreboardType(sportId: number, scoreboardResponse: ScoreboardSlim): ScoreboardType {\n const isGeneralTournament = this.isGeneralTournament(scoreboardResponse);\n if (isGeneralTournament) {\n return ScoreboardType.TournamentGame;\n }\n const sportScoreboardType = this.getDefaultScoreboardType(sportId);\n if (sportScoreboardType === ScoreboardType.TournamentGame) {\n // If isGeneralTournament is Falsy, but sports is defined and Tournament game then it isn't a tournament\n // We fallback to the other most common scoreboard which is PairGame.\n return ScoreboardType.PairGame;\n }\n\n return sportScoreboardType;\n }\n\n private getSportType(sportId: number, scoreboardResponse: ScoreboardSlim): SportType {\n const isGeneralTournament = this.isGeneralTournament(scoreboardResponse);\n if (isGeneralTournament) {\n return SportType.Tournament;\n }\n const sportType = this.getDefaultSportType(sportId);\n\n return sportType === SportType.Tournament ? SportType.PairGame : sportType;\n }\n\n private getBestOfSnooker(scoreboard: SnookerScoreboardSlim): number {\n return parseInt(scoreboard.bestOf);\n }\n\n private getColors(scoreboard: Soccer): string[] | undefined {\n if (!(scoreboard.playerInfo && scoreboard.playerInfo.colorsAvailable && scoreboard.playerInfo.players)) {\n return;\n }\n\n return Object.keys(scoreboard.playerInfo.players).map((key) => scoreboard.playerInfo.players[key].shirtColor);\n }\n\n private createMessages(scoreboard: IScoreboard, sportId: number): Message[] | undefined {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const messages = (scoreboard as any).messages as { [key: string]: CdsMessage };\n if (!messages) {\n return undefined;\n }\n\n const messageList: Message[] = Object.keys(messages).map((key) => ({\n time: messages[key].timer,\n text: messages[key].content,\n order: messages[key].order,\n type: messages[key].messageType,\n teamType: messages[key].teamType !== undefined ? TeamType[messages[key].teamType] : undefined,\n icon: null,\n }));\n\n return this.messageParser.parseMessages(messageList, sportId, true).sort((a, b) => b.order - a.order);\n }\n\n private formatGameTimer(totalSeconds: number): string {\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n\n return `${minutes < 10 ? '0' + minutes.toString() : minutes}:${seconds < 10 ? '0' + seconds.toString() : seconds}`;\n }\n\n private getSportScore(scores: ScoreboardSlim, sportId: number, leagueId: number): EventScore {\n const sportType = this.getSportType(sportId, scores);\n\n switch (sportType) {\n case SportType.Football:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getFootballScore(scores, scores.periodId!);\n case SportType.Tennis:\n return this.getTennisScore(scores, leagueId);\n case SportType.Baseball:\n return this.getBaseballScore(scores);\n case SportType.Badminton:\n case SportType.SetGame:\n return this.getSetGameScore(scores);\n case SportType.Darts:\n return this.getDartsScore(scores as Darts);\n case SportType.Snooker:\n return this.getSnookerScore(scores);\n case SportType.Tournament:\n return this.getGeneralTournamentScore(scores as GeneralTournamentSlim, sportId);\n case SportType.LeaderboardGame:\n return sportId === SportConstant.Motorbikes\n ? this.getGeneralTournamentScore(scores as GeneralTournamentSlim, sportId)\n : this.getLeaderboardGameScore(scores as FormulaOne);\n case SportType.PeriodGame:\n return sportId === SportConstant.Icehockey\n ? this.getPeriodGameScore(sportId, scores as PeriodGamesScoreboardFull, new IcehockeyPeriodGameScore())\n : this.getPeriodGameScore(sportId, scores as PeriodGamesScoreboardFull, new PeriodGameScore());\n case SportType.SpecialGame:\n return this.getPairGameScore(scores, sportId);\n case SportType.Cricket:\n return this.getCricketScore(scores as Cricket);\n }\n\n return this.getPairGameScore(scores, sportId);\n }\n\n private getSportStats(scoreboard: ScoreboardSlim, sportId: number): EventStatistics | undefined {\n const sportType = this.getSportType(sportId, scoreboard);\n\n if (sportType === SportType.Tennis) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getTennisStats(scoreboard as Tennis, scoreboard.periodId!);\n } else if (sportType === SportType.Football) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getFootballStats(scoreboard as Soccer, scoreboard.periodId!);\n } else if (sportId === SportConstant.Basketball) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getBasketBallStats(scoreboard as Basketball, scoreboard.periodId!);\n } else if (sportId === SportConstant.Icehockey) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getIcehockeyStats(scoreboard as IceHockey, scoreboard.periodId!);\n } else if (sportId === SportConstant.AmericanFootball) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getAmericanFootballStatistics(scoreboard as AmericanFootball, scoreboard.periodId!);\n } else if (sportId === SportConstant.Baseball) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getBaseballStatistics(scoreboard as Baseball, scoreboard.periodId!);\n } else if (sportId === SportConstant.Snooker) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.getSnookerStats(scoreboard as Snooker, scoreboard.periodId!);\n }\n\n return undefined;\n }\n\n //TODO please refactor below function, it's complexity is high and shouldn't be modified until refactored\n // eslint-disable-next-line sonarjs/cognitive-complexity\n private getDartsScore(scoreboard: Darts): DartsGameScore {\n const score = new DartsGameScore();\n const periodId = scoreboard.periodId || 255;\n const dartsMaxSet = 255;\n\n if (scoreboard.score) {\n const participantsScore = scoreboard.score.split(':');\n score.matchType = DartsMatchType[scoreboard.matchType];\n score.participant1 = parseInt(participantsScore[0], 10);\n score.participant2 = parseInt(participantsScore[1], 10);\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n\n if (score.matchType === DartsMatchType.LegOnly) {\n if (scoreboard.hundredEighties && !!scoreboard.hundredEighties.player1 && !!scoreboard.hundredEighties.player2) {\n score.hundredEighties = {\n participant1: scoreboard.hundredEighties.player1[dartsMaxSet],\n participant2: scoreboard.hundredEighties.player2[dartsMaxSet],\n };\n }\n if (scoreboard.legs && !!scoreboard.legs.player1 && !!scoreboard.legs.player2) {\n score.legs = {\n participant1: scoreboard.legs.player1[dartsMaxSet],\n participant2: scoreboard.legs.player2[dartsMaxSet],\n };\n }\n } else {\n if (scoreboard.hundredEighties && !!scoreboard.hundredEighties.player1 && !!scoreboard.hundredEighties.player2) {\n score.hundredEighties = {\n participant1: scoreboard.hundredEighties.player1[dartsMaxSet],\n participant2: scoreboard.hundredEighties.player2[dartsMaxSet],\n };\n }\n if (scoreboard.legs && !!scoreboard.legs.player1 && !!scoreboard.legs.player2) {\n score.legs = {\n participant1: scoreboard.legs.player1[periodId],\n participant2: scoreboard.legs.player2[periodId],\n };\n }\n }\n }\n\n return score;\n }\n\n //TODO please refactor below function, it's complexity is high and shouldn't be modified until refactored\n // eslint-disable-next-line sonarjs/cognitive-complexity\n private getFootballScore(scoreboard: ScoreboardSlim, periodId: number): FootballScore {\n const score = new FootballScore();\n const finished = periodId === FootballPeriodInfo.Finish;\n score.regularTimeOver = periodId <= FootballPeriodInfo.RegularTimeOver;\n\n if (scoreboard.score && scoreboard.score.indexOf(':') !== -1) {\n const participantsScore = scoreboard.score.split(':');\n score.participant1 = parseInt(participantsScore[0], 10);\n score.participant2 = parseInt(participantsScore[1], 10);\n }\n\n const detailed = (scoreboard as SoccerSlim).scoreDetailed;\n\n if (!detailed) {\n return score;\n }\n\n if (periodId === FootballPeriodInfo.SecondHalf) {\n score.firstHalfScore = {\n participant1: detailed.player1[FootballPeriodInfo.FirstHalf] || 0,\n participant2: detailed.player2[FootballPeriodInfo.FirstHalf] || 0,\n };\n }\n\n if (periodId === FootballPeriodInfo.PenaltyShootout) {\n score.participant1 = detailed.player1[254];\n score.participant2 = detailed.player2[254];\n\n const penalties = (scoreboard as SoccerSlim).penaltiesControl;\n score.penaltyShootOutScore = this.getPenaltyScore(penalties);\n }\n\n if (periodId >= FootballPeriodInfo.RegularTimeOver) {\n const extraTimeScore = !!detailed.player1[FootballPeriodInfo.RegularTimeOver] && !!detailed.player2[FootballPeriodInfo.RegularTimeOver];\n\n score.finishedAfterRegularTime = finished && extraTimeScore;\n if (!finished || score.finishedAfterRegularTime) {\n score.regularTime = {\n participant1: detailed.player1[255] || 0,\n participant2: detailed.player2[255] || 0,\n };\n score.overTime = {\n participant1: detailed.player1[253] || 0,\n participant2: detailed.player2[253] || 0,\n };\n }\n }\n\n return score;\n }\n\n private getPenaltyScore(counter: PenaltyDoubleCounter): PairScore | undefined {\n if (!counter) {\n return;\n }\n\n const valueMapper = (value: number): PenaltyStatus =>\n value === 0 ? PenaltyStatus.Scored : value === 1 ? PenaltyStatus.Missed : PenaltyStatus.Unset;\n\n const penaltyMapper = (team: { [key: string]: Counter }): PenaltyRound[] =>\n values(team)\n .sort((first, second) => first.periodId - second.periodId)\n .map((penalty) => ({\n round: penalty.periodId,\n status: valueMapper(penalty.value),\n }));\n\n return {\n participant1: penaltyMapper(counter.team1),\n participant2: penaltyMapper(counter.team2),\n };\n }\n\n //TODO please refactor below function, it's complexity is high and shouldn't be modified until refactored\n // eslint-disable-next-line sonarjs/cognitive-complexity\n private getTennisScore(scoreboard: ScoreboardSlim, leagueId: number): TennisScore {\n const result = new TennisScore();\n result.participant1 = { sets: [] as SetScore[] };\n result.participant2 = { sets: [] as SetScore[] };\n\n const tennisScoreboard = scoreboard as Tennis;\n\n const setCount = this.getTennisSetCount(MatchType[tennisScoreboard.matchType], scoreboard.sets);\n result.setCount = setCount;\n if (scoreboard.sets) {\n for (let i = 0; i < setCount; i++) {\n const isCurrentSet = i + 1 === scoreboard.periodId;\n const partcipant1Score = scoreboard.sets[0][i] === '-' ? '-' : parseInt(scoreboard.sets[0][i], 10);\n const partcipant2Score = scoreboard.sets[1][i] === '-' ? '-' : parseInt(scoreboard.sets[1][i], 10);\n const partcipant1TiebBreakScore = tennisScoreboard.tieBreaksValues ? tennisScoreboard.tieBreaksValues.player1[i] : undefined;\n const partcipant2TiebBreakScore = tennisScoreboard.tieBreaksValues ? tennisScoreboard.tieBreaksValues.player2[i] : undefined;\n result.participant1.sets.push({\n points: partcipant1Score,\n tieBreakPoints: partcipant1TiebBreakScore,\n current: isCurrentSet,\n isFutureSet: result.setCount === 7 && partcipant1Score === '-',\n setWon: !isCurrentSet && partcipant1Score > partcipant2Score,\n });\n result.participant2.sets.push({\n points: partcipant2Score,\n tieBreakPoints: partcipant2TiebBreakScore,\n isFutureSet: result.setCount === 7 && partcipant2Score === '-',\n current: isCurrentSet,\n setWon: !isCurrentSet && partcipant2Score > partcipant1Score,\n });\n }\n }\n\n if (scoreboard.points && this.tennisPointsVisibilityService.canDisplayPoints(leagueId)) {\n result.participant1.points = scoreboard.points[0];\n result.participant2.points = scoreboard.points[1];\n }\n\n result.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : Turn.None;\n result.surfaceType = tennisScoreboard.surface || TennisSurface.Grass;\n\n if (tennisScoreboard.winPoints) {\n result.winPoints = {\n participant1: tennisScoreboard.winPoints.player1,\n participant2: tennisScoreboard.winPoints.player2,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const setScore = this.getSetScore(result, scoreboard.periodId!, true);\n result.participant1WonSets = setScore.participant1;\n result.participant2WonSets = setScore.participant2;\n result.matchType = MatchType[tennisScoreboard.matchType];\n result.period = scoreboard.period;\n result.gameMode = (scoreboard as TennisScoreboardSlim).gameMode;\n\n return result;\n }\n\n private getBaseballScore(scoreboard: ScoreboardSlim): SetGameScore {\n const score = new SetGameScore();\n score.participant1 = { sets: [] as SetScore[] };\n score.participant2 = { sets: [] as SetScore[] };\n\n const fullScoreboard = (scoreboard as Baseball).scoreDetailed;\n\n if (fullScoreboard) {\n // Parse full scoreboard for detailed events\n const keys = Object.keys(fullScoreboard.player1);\n keys.slice(0, keys.length - 1).forEach((key, index) => {\n if (index % 2 === 0) {\n score.participant1.sets.push({ points: fullScoreboard.player1[key], current: false, setWon: false });\n score.participant2.sets.push({ points: fullScoreboard.player2[key], current: false, setWon: false });\n } else {\n score.participant1.sets[score.participant1.sets.length - 1].points =\n parseInt(score.participant1.sets[score.participant1.sets.length - 1].points.toString(), 10) + fullScoreboard.player1[key];\n score.participant2.sets[score.participant2.sets.length - 1].points =\n parseInt(score.participant2.sets[score.participant2.sets.length - 1].points.toString(), 10) + fullScoreboard.player2[key];\n }\n });\n\n if (scoreboard.score) {\n const participantsScore = scoreboard.score.split(':');\n score.participant1.points = participantsScore[0];\n score.participant2.points = participantsScore[1];\n }\n } else {\n if (scoreboard.currentPeriodScore) {\n score.participant1.sets.push({ points: scoreboard.currentPeriodScore.team01, current: false, setWon: false });\n score.participant2.sets.push({ points: scoreboard.currentPeriodScore.team02, current: false, setWon: false });\n }\n\n // Parse scoreboard slim for grid events\n if (scoreboard.score) {\n const participantsScore = scoreboard.score.split(':');\n score.participant1.r = parseInt(participantsScore[0], 10);\n score.participant2.r = parseInt(participantsScore[1], 10);\n\n score.participant1.sets.push({ points: score.participant1.r, current: false, setWon: false });\n score.participant2.sets.push({ points: score.participant2.r, current: false, setWon: false });\n }\n }\n\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n score.slimScoreboard = true;\n\n return score;\n }\n\n private getSetGameScore(scoreboard: ScoreboardSlim): SetGameScore {\n const score = new SetGameScore();\n score.participant1 = { sets: [] as SetScore[] };\n score.participant2 = { sets: [] as SetScore[] };\n\n if (scoreboard.sets) {\n for (let i = 0; i < scoreboard.sets[0].length; i++) {\n const partcipant1Score = scoreboard.sets[0][i] === '-' ? '-' : parseInt(scoreboard.sets[0][i], 10);\n const partcipant2Score = scoreboard.sets[1][i] === '-' ? '-' : parseInt(scoreboard.sets[1][i], 10);\n const isCurrentSet = this.isCurrentSet(scoreboard.sportId, i, scoreboard.periodId);\n score.participant1.sets.push({\n points: partcipant1Score,\n current: isCurrentSet,\n setWon: !isCurrentSet && partcipant1Score > partcipant2Score,\n });\n score.participant2.sets.push({\n points: partcipant2Score,\n current: isCurrentSet,\n setWon: !isCurrentSet && partcipant2Score > partcipant1Score,\n });\n }\n }\n\n if (scoreboard.points) {\n score.participant1.points = scoreboard.points[0];\n score.participant2.points = scoreboard.points[1];\n }\n\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n score.setCount = score.participant1.sets.length;\n score.period = scoreboard.period;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const setScore = this.getSetScore(score, scoreboard.periodId!, false);\n score.participant1WonSets = setScore.participant1;\n score.participant2WonSets = setScore.participant2;\n score.gameMode = (scoreboard as TennisScoreboardSlim).gameMode;\n\n return score;\n }\n\n //TODO please refactor below function, it's complexity is high and shouldn't be modified until refactored\n // eslint-disable-next-line max-lines-per-function\n private getPeriodGameScore(\n sportId: number,\n scoreboard: PeriodGamesScoreboardFull,\n score: PeriodGameScore | IcehockeyPeriodGameScore,\n ): PeriodGameScore {\n if (!scoreboard.score) {\n return score;\n }\n\n let overtimePeriod = 0;\n let scorePeriods: number[] = [];\n switch (sportId) {\n case SportConstant.AmericanFootball:\n scorePeriods = [\n AmericanFootballQuarters.Quarter1,\n AmericanFootballQuarters.Quarter2,\n AmericanFootballQuarters.Quarter3,\n AmericanFootballQuarters.Quarter4,\n ];\n overtimePeriod = AmericanFootballQuarters.Overtime;\n break;\n case SportConstant.Basketball:\n scorePeriods =\n (scoreboard as Basketball).matchType === 1\n ? [BasketballHalves.Firsthalf, BasketballHalves.Secondhalf]\n : [BasketballQuarters.Quarter1, BasketballQuarters.Quarter2, BasketballQuarters.Quarter3, BasketballQuarters.Quarter4];\n overtimePeriod = BasketballQuarters.Overtime;\n break;\n case SportConstant.Icehockey:\n scorePeriods = [IceHockeyPeriods.Period1, IceHockeyPeriods.Period2, IceHockeyPeriods.Period3];\n overtimePeriod = IceHockeyPeriods.Overtime;\n const penalties = (scoreboard as IceHockey).penaltiesControl;\n // eslint-disable-next-line no-param-reassign\n (score as IcehockeyPeriodGameScore).penaltyShootOutScore =\n (scoreboard as IceHockey).periodId === 9 ? this.getPenaltyScore(penalties) : undefined;\n break;\n }\n\n const totalScore = scoreboard.score.split(':').map((value) => parseInt(value, 10));\n\n const participantScoreParser = (playerId: 1 | 2, periodId: number, currentPeriodId?: number): PeriodScore => ({\n points: scoreboard.totalPoints[`player${playerId}`][periodId] != null ? scoreboard.totalPoints[`player${playerId}`][periodId] : '-',\n current: currentPeriodId === periodId,\n });\n\n const participantParser = (playerId: 1 | 2, currentPeriodId?: number): ParticipantPeriodScore => ({\n periods: scoreboard.totalPoints ? scorePeriods.map((periodId) => participantScoreParser(playerId, periodId, currentPeriodId)) : [],\n overTimeScore: scoreboard.totalPoints ? scoreboard.totalPoints[`player${playerId}`][overtimePeriod] : undefined,\n total: totalScore[playerId - 1],\n });\n\n // eslint-disable-next-line no-param-reassign\n score.participant1 = participantParser(1, scoreboard.periodId);\n // eslint-disable-next-line no-param-reassign\n score.participant2 = participantParser(2, scoreboard.periodId);\n\n // eslint-disable-next-line no-param-reassign\n score.turn = scoreboard.turn ? +Turn[scoreboard.turn] : undefined;\n\n if (sportId === SportConstant.Basketball) {\n const _scoreboard = scoreboard as Basketball;\n // eslint-disable-next-line no-param-reassign\n score.matchType = _scoreboard.matchType;\n // eslint-disable-next-line no-param-reassign\n score.playerInfo = _scoreboard.playerInfo;\n } else if (sportId === SportConstant.Icehockey) {\n const icehockeyScore = score as IcehockeyPeriodGameScore;\n const _scoreboard = scoreboard as IceHockey;\n\n // eslint-disable-next-line no-param-reassign\n score.playerInfo = _scoreboard.playerInfo;\n icehockeyScore.penalties = {\n participant1: this.getPenalityAmount(_scoreboard, 0),\n participant2: this.getPenalityAmount(_scoreboard, 1),\n } satisfies PairScore;\n\n return icehockeyScore;\n }\n\n return score;\n }\n\n private getSnookerScore(scoreboard: ScoreboardSlim): SnookerScore {\n const score = new SnookerScore();\n\n if (scoreboard.score) {\n const participantsScore = scoreboard.score.split(':');\n\n score.participant1 = scoreboard.currentPeriodScore.team01;\n score.participant2 = scoreboard.currentPeriodScore.team02;\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n score.frames = {\n participant1: parseInt(participantsScore[0], 10),\n participant2: parseInt(participantsScore[1], 10),\n };\n }\n\n return score;\n }\n\n private getPairGameScore(scoreboard: ScoreboardSlim, sportId: number): PairGameScore {\n const score = new PairGameScore();\n\n if (scoreboard.score) {\n const participantsScore = scoreboard.score.split(':');\n\n score.participant1 = parseInt(participantsScore[0], 10);\n score.participant2 = parseInt(participantsScore[1], 10);\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n score.hasServing = sportId === SportConstant.Bowls || sportId === SportConstant.Darts;\n }\n score.period = scoreboard.period;\n\n return score;\n }\n\n private getCricketScore(scoreboard: Cricket): CricketScore {\n const score = new CricketScore();\n\n if (scoreboard) {\n score.currentlyServing = scoreboard.turn ? Turn[scoreboard.turn] : 0;\n score.balls = scoreboard.balls;\n score.overs = scoreboard.overs;\n score.runs = scoreboard.runs;\n score.wickets = scoreboard.wickets;\n score.firstInnings = this.getCricketInnings(scoreboard, score, CricketInnings.FirstInning);\n score.secondInnings = this.getCricketInnings(scoreboard, score, CricketInnings.SecondInning);\n score.superOver = this.getCricketInnings(scoreboard, score, CricketInnings.FirstSuperOver);\n }\n\n return score;\n }\n\n private hasSecondInningDataAvailable(eventScoreboard: Cricket): boolean {\n return eventScoreboard.periodId === CricketInnings.ThirdInning || !!eventScoreboard.statistics[CricketInnings.ThirdInning];\n }\n\n private hasSuperOverDataAvailable(eventScoreboard: Cricket): boolean {\n return eventScoreboard.periodId === CricketInnings.FirstSuperOver || !!eventScoreboard.statistics[CricketInnings.FirstSuperOver];\n }\n\n private getCricketInningsData(inningId: number, team: number, scoreboard: Cricket, score: CricketScore): CricketInningScore {\n if (team === score.currentlyServing && scoreboard.periodId && parseInt(((scoreboard.periodId + 1) / 2).toString()) === inningId) {\n return { runs: score.runs, wickets: score.wickets, overs: score.overs, balls: score.balls, isScoringTeam: true };\n }\n\n const stats: CricketInning[] = scoreboard.statistics ? Object.values(scoreboard.statistics) : [];\n\n const filteredStats = stats.length\n ? stats.filter((s) => s && Turn[s.team] === team).filter((s) => parseInt(((s?.inningId + 1) / 2).toString()) === inningId)\n : [];\n\n return { runs: filteredStats && filteredStats[0]?.runs, wickets: filteredStats && filteredStats[0]?.wickets };\n }\n\n private getCricketInnings(eventScoreboard: Cricket, cricketScore: CricketScore, inningId: CricketInnings): CricketInningsData | undefined {\n switch (inningId) {\n case CricketInnings.FirstInning:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (eventScoreboard.periodId! > 0) {\n return {\n team1: this.getCricketInningsData(1, 1, eventScoreboard, cricketScore),\n team2: this.getCricketInningsData(1, 2, eventScoreboard, cricketScore),\n };\n }\n break;\n case CricketInnings.SecondInning:\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n eventScoreboard.periodId! > 2 &&\n this.hasSecondInningDataAvailable(eventScoreboard) &&\n !this.hasSuperOverDataAvailable(eventScoreboard)\n ) {\n return {\n team1: this.getCricketInningsData(2, 1, eventScoreboard, cricketScore),\n team2: this.getCricketInningsData(2, 2, eventScoreboard, cricketScore),\n };\n }\n break;\n case CricketInnings.FirstSuperOver:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (eventScoreboard.periodId! > 4 && this.hasSuperOverDataAvailable(eventScoreboard)) {\n return {\n team1: this.getCricketInningsData(3, 1, eventScoreboard, cricketScore),\n team2: this.getCricketInningsData(3, 2, eventScoreboard, cricketScore),\n };\n }\n break;\n }\n\n return undefined;\n }\n\n private getLeaderboardGameScore(scoreboard: FormulaOne): LeaderboardGameScore {\n const result = new LeaderboardGameScore();\n\n if (scoreboard) {\n result.type = 'Lap';\n result.final = scoreboard.lapCounter && scoreboard.lapCounter.final ? scoreboard.lapCounter.final : 0;\n result.current = scoreboard.lapCounter && scoreboard.lapCounter.current ? scoreboard.lapCounter.current : 0;\n result.periodId = scoreboard.currentPeriod;\n result.period = scoreboard.period;\n result.safetyCar = scoreboard.safetyCar || false;\n result.preRace = scoreboard.currentPeriod !== 12;\n result.weather = toWeather(scoreboard.weather);\n if (scoreboard.participants && scoreboard.participants.items) {\n result.participants = this.getParticipantList(scoreboard.participants.items);\n result.participantsDetails = this.getParticipantListKeyValue(scoreboard.participants.items);\n }\n }\n\n return result;\n }\n\n private getGeneralTournamentScore(scoreboard: GeneralTournamentSlim, sportId: number): TournamentScore {\n const score = new TournamentScore();\n\n if (scoreboard.gameType !== undefined) {\n const gameTypes: { [key: string]: GeneralTournamentType } = {\n [GeneralTournamentGameStateType.Kilometers]: 'km',\n [GeneralTournamentGameStateType.Stages]: 'Stage',\n [GeneralTournamentGameStateType.Laps]: 'Lap',\n };\n\n score.type = gameTypes[scoreboard.gameType];\n score.final = scoreboard.finalState;\n score.current = scoreboard.currentState;\n }\n if (scoreboard.participants && scoreboard.participants.items && sportId === SportConstant.Motorbikes) {\n score.participants = this.getParticipantList(scoreboard.participants.items);\n score.participantsDetails = this.getParticipantListKeyValue(scoreboard.participants.items);\n }\n\n return score;\n }\n\n getSetScore(score: SetGameScore, periodId: number, tennisGame: boolean): PairScore {\n if (!score.participant1) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as PairScore;\n }\n\n let sets1 = score.participant1.sets;\n let sets2 = score.participant2.sets;\n const delta = sets1.findIndex((set) => set.points === '-');\n\n sets1 = sets1.slice(0, delta > -1 ? delta - 1 : sets1.length);\n sets2 = sets2.slice(0, delta > -1 ? delta - 1 : sets2.length);\n\n const setScore = {\n participant1: sets1.reduce((setsWon, setPoints, index) => {\n if (setPoints.points > sets2[index].points && !sets2[index].current) {\n if (tennisGame) {\n if (+setPoints.points > 6 || (+setPoints.points >= 6 && +sets2[index].points <= 4)) {\n // eslint-disable-next-line no-param-reassign\n setsWon++;\n }\n } else {\n // eslint-disable-next-line no-param-reassign\n setsWon++;\n }\n }\n\n return setsWon;\n }, 0),\n participant2: sets2.reduce((setsWon, setPoints, index) => {\n if (setPoints.points > sets1[index].points && !sets1[index].current) {\n if (tennisGame) {\n if (+setPoints.points > 6 || (+setPoints.points >= 6 && +sets1[index].points <= 4)) {\n // eslint-disable-next-line no-param-reassign\n setsWon++;\n }\n } else {\n // eslint-disable-next-line no-param-reassign\n setsWon++;\n }\n }\n\n return setsWon;\n }, 0),\n };\n\n return setScore;\n }\n\n private getFootballStats(scoreboard: Soccer, periodId: number): FootballStats | undefined {\n const stats: FootballStats = {\n goals: this.getFootballStatisticsEntry(scoreboard.scoreDetailed, periodId, 1),\n redcards: this.getFootballStatisticsEntry(scoreboard.redCards, periodId),\n yellowcards: this.getFootballStatisticsEntry(scoreboard.yellowCards, periodId),\n penalties: this.getFootballStatisticsEntry(scoreboard.penalties, periodId),\n corners: this.getFootballStatisticsEntry(scoreboard.corners, periodId),\n substitutions: this.getFootballStatisticsEntry(scoreboard.substitutions, periodId),\n };\n\n if (!stats.goals && !stats.redcards && !stats.yellowcards && !stats.penalties && !stats.corners && !stats.substitutions) {\n return undefined;\n }\n\n return stats;\n }\n\n /**\n * Returns single statistics entry e.g. corners, red cards, yellow cards etc\n *\n * @param responseStats Statistics counter from cds\n * @param periodId Current period id\n * @param offset Offset is used for different goal structure\n */\n private getFootballStatisticsEntry(responseStats: DoubleCounter, periodId: number, offset = 0): FootballStatsEntry | undefined {\n if (periodId < 1 || !responseStats || !responseStats.player1 || Object.keys(responseStats.player1).length < 3) {\n return undefined;\n }\n const result: FootballStatsEntry = {\n totalPoints: {\n participant1: responseStats.player1[255],\n participant2: responseStats.player2[255],\n },\n };\n\n const numberOfPeriods = Object.keys(responseStats.player1).length;\n\n result.firstHalf = {\n participant1: responseStats.player1[1],\n participant2: responseStats.player2[1],\n };\n\n if (periodId >= 3 && numberOfPeriods > 4) {\n result.secondHalf = {\n participant1: responseStats.player1[3],\n participant2: responseStats.player2[3],\n };\n result.regularTime = {\n // 254, result after regular time, 255 in case of goals\n participant1: responseStats.player1[254 + offset],\n participant2: responseStats.player2[254 + offset],\n };\n }\n\n if (periodId >= 5 && numberOfPeriods > 5) {\n // overtime\n result.extraTime = {\n // 253, overtime result only\n participant1: responseStats.player1[253],\n participant2: responseStats.player2[253],\n };\n }\n\n return result;\n }\n\n private getIcehockeyStats(scoreboard: IceHockey, periodId: number): IcehockeyStatisticsEntry | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (!scoreboard.penaltyPoints && !scoreboard.penaltyShots && !scoreboard.penaltyTotalTime) {\n return undefined;\n }\n\n return {\n penaltyPoints: this.getBaseStatisticsEntry(scoreboard.penaltyPoints, periodId),\n penaltyShots: this.getBaseStatisticsEntry(scoreboard.penaltyShots, periodId),\n penaltyTotalTime: this.getBaseStatisticsEntry(scoreboard.penaltyTotalTime, periodId),\n };\n }\n\n private getAmericanFootballStatistics(scoreboard: AmericanFootball, periodId: number): AmericanFootballStatistics | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (\n !scoreboard.turnovers &&\n !scoreboard.penalties &&\n !scoreboard.touchdowns &&\n !scoreboard.fieldGoals &&\n !scoreboard.safeties &&\n !scoreboard.onePointConversions &&\n !scoreboard.twoPointsConversions\n ) {\n return undefined;\n }\n\n return {\n turnovers: this.getBaseStatisticsEntry(scoreboard.turnovers, periodId),\n penalties: this.getBaseStatisticsEntry(scoreboard.penalties, periodId),\n touchdowns: this.getBaseStatisticsEntry(scoreboard.touchdowns, periodId),\n fieldGoals: this.getBaseStatisticsEntry(scoreboard.fieldGoals, periodId),\n safeties: this.getBaseStatisticsEntry(scoreboard.safeties, periodId),\n onePointConversions: this.getBaseStatisticsEntry(scoreboard.onePointConversions, periodId),\n twoPointsConversions: this.getBaseStatisticsEntry(scoreboard.twoPointsConversions, periodId),\n activeDown: scoreboard.activeDown,\n yardsDistance: scoreboard.yardsDistance,\n yardsToNextDown: scoreboard.yardsToNextDown,\n timeoutsLeft: scoreboard.timeoutsLeft,\n timeValue: scoreboard.timeValue,\n };\n }\n\n private getSnookerStats(scoreboard: Snooker, periodId: number): SnookerStats | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (\n !scoreboard.redBalls &&\n !scoreboard.blackBalls &&\n !scoreboard.pinkBalls &&\n !scoreboard.greenBalls &&\n !scoreboard.blueBalls &&\n !scoreboard.brownBalls &&\n !scoreboard.yellowBalls &&\n !scoreboard.fouls &&\n !scoreboard.frames &&\n !scoreboard.century100Breaks &&\n !scoreboard.breaks50\n ) {\n return undefined;\n }\n\n return {\n redBalls: this.getBaseStatisticsEntry(scoreboard.redBalls, periodId),\n blackBalls: this.getBaseStatisticsEntry(scoreboard.blackBalls, periodId),\n pinkBalls: this.getBaseStatisticsEntry(scoreboard.pinkBalls, periodId),\n greenBalls: this.getBaseStatisticsEntry(scoreboard.greenBalls, periodId),\n blueBalls: this.getBaseStatisticsEntry(scoreboard.blueBalls, periodId),\n brownBalls: this.getBaseStatisticsEntry(scoreboard.brownBalls, periodId),\n yellowBalls: this.getBaseStatisticsEntry(scoreboard.yellowBalls, periodId),\n fouls: this.getBaseStatisticsEntry(scoreboard.fouls, periodId),\n frames: this.getBaseStatisticsEntry(scoreboard.frames, periodId),\n century100Breaks: this.getBaseStatisticsEntry(scoreboard.century100Breaks, periodId),\n breaks50: this.getBaseStatisticsEntry(scoreboard.breaks50, periodId),\n };\n }\n\n private getBasketBallStats(scoreboard: Basketball, periodId: number): BasketballStatistics | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (\n !scoreboard.threePointers &&\n !scoreboard.twoPointers &&\n !scoreboard.freeThrowsScored &&\n !scoreboard.fouls &&\n !scoreboard.rebounds &&\n !scoreboard.assists &&\n !scoreboard.freeThrowsTotals\n ) {\n return undefined;\n }\n\n return {\n threePointers: this.getBasketBallStatisticsEntry(scoreboard.threePointers, periodId),\n twoPointers: this.getBasketBallStatisticsEntry(scoreboard.twoPointers, periodId),\n freeThrows: this.getBasketBallStatisticsEntry(scoreboard.freeThrowsScored, periodId),\n freeThrowsTotal: this.getBasketBallStatisticsEntry(scoreboard.freeThrowsTotals, periodId),\n fouls: this.getBasketBallStatisticsEntry(scoreboard.fouls, periodId),\n rebounds: this.getBasketBallStatisticsEntry(scoreboard.rebounds, periodId),\n assists: this.getBasketBallStatisticsEntry(scoreboard.assists, periodId),\n points: this.getBasketBallStatisticsEntry(scoreboard.totalPoints, periodId),\n raceTo10: this.getBasketBallStatisticsEntry(scoreboard.raceTo10, periodId),\n raceTo20: this.getBasketBallStatisticsEntry(scoreboard.raceTo20, periodId),\n };\n }\n\n /**\n * Returns single statistics entry e.g. corners, red cards, yellow cards etc\n *\n * @param responseStats Statistics counter from cds\n * @param periodId Current period id\n * @param offset Offset is used for different goal structure\n */\n private getBasketBallStatisticsEntry(responseStats: DoubleCounter, periodId: number): BasketballStatisticsEntry | undefined {\n const result: BasketballStatisticsEntry = {};\n\n if (periodId < 1 || !responseStats || !responseStats.player1) {\n return undefined;\n }\n\n result.firstQuarter = {\n participant1: responseStats.player1[1],\n participant2: responseStats.player2[1],\n };\n\n result.regularTime = {\n participant1: responseStats.player1[255],\n participant2: responseStats.player2[255],\n };\n if (periodId >= 3) {\n result.secondQuarter = {\n participant1: responseStats.player1[3],\n participant2: responseStats.player2[3],\n };\n }\n\n if (periodId >= 5) {\n result.thirdQuarter = {\n participant1: responseStats.player1[5],\n participant2: responseStats.player2[5],\n };\n }\n\n if (periodId >= 7) {\n result.fourthQuarter = {\n participant1: responseStats.player1[7],\n participant2: responseStats.player2[7],\n };\n }\n\n return result;\n }\n\n private getBaseStatisticsEntry(responseStats: DoubleCounter, periodId: number, isOuts = false): BaseStatisticsEntry | undefined {\n const result: BaseStatisticsEntry = {};\n\n if (periodId < 1 || !responseStats || !responseStats.player1) {\n return undefined;\n }\n\n result.regularTime = {\n participant1: isOuts ? responseStats.player1[periodId] : responseStats.player1[255],\n participant2: isOuts ? responseStats.player2[periodId] : responseStats.player2[255],\n };\n\n return result;\n }\n\n private getBaseballStatistics(scoreboard: Baseball, periodId: number): BaseballStatistics | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (!scoreboard.homeRun && !scoreboard.scoreDetailed) {\n return undefined;\n }\n\n return {\n grandSlams: this.getBaseStatisticsEntry(scoreboard.grandSlams, periodId),\n homeRun: this.getBaseStatisticsEntry(scoreboard.homeRun, periodId),\n outs: this.getBaseStatisticsEntry(scoreboard.outs, periodId, true),\n scoreDetailed: this.getBaseStatisticsEntry(scoreboard.scoreDetailed, periodId),\n balls: scoreboard.balls,\n strikes: scoreboard.strikes,\n bases: scoreboard.bases,\n };\n }\n\n private getTennisStats(scoreboard: Tennis, periodId: number): TennisStats | undefined {\n if (!scoreboard) {\n return undefined;\n }\n if (\n !scoreboard.aces &&\n !scoreboard.breaks &&\n !scoreboard.doubleFaults &&\n !scoreboard.winPointsPercentage &&\n !scoreboard.raceTo15 &&\n !scoreboard.raceTo20\n ) {\n return undefined;\n }\n\n return {\n aces: this.getTennisStatisticsEntry(scoreboard.aces, periodId),\n doubleFaults: this.getTennisStatisticsEntry(scoreboard.doubleFaults, periodId),\n breaks: this.getTennisStatisticsEntry(scoreboard.breaks, periodId),\n winPointsPercentage: this.getTennisStatisticsEntry(scoreboard.winPointsPercentage, periodId),\n raceTo15: this.getTennisStatisticsEntry(scoreboard.raceTo15, periodId),\n raceTo20: this.getTennisStatisticsEntry(scoreboard.raceTo20, periodId),\n };\n }\n\n /**\n * Returns single statistics entry e.g. corners, red cards, yellow cards etc\n *\n * @param responseStats Statistics counter from cds\n * @param periodId Current period id\n * @param offset Offset is used for different goal structure\n */\n private getTennisStatisticsEntry(responseStats: DoubleCounter, periodId: number): TennisStatsEntry | undefined {\n const result: TennisStatsEntry = { regularTime: { participant1: 0, participant2: 0 } };\n\n if (periodId < 1 || !responseStats || !responseStats.player1) {\n return undefined;\n }\n\n result.firstSet = {\n participant1: responseStats.player1[1],\n participant2: responseStats.player2[1],\n };\n result.regularTime = {\n participant1: responseStats.player1[255],\n participant2: responseStats.player2[255],\n };\n\n if (periodId >= 2) {\n result.secondSet = {\n participant1: responseStats.player1[2],\n participant2: responseStats.player2[2],\n };\n }\n\n if (periodId >= 3) {\n result.thirdSet = {\n participant1: responseStats.player1[3],\n participant2: responseStats.player2[3],\n };\n }\n\n if (periodId >= 4) {\n result.fourthSet = {\n participant1: responseStats.player1[4],\n participant2: responseStats.player2[4],\n };\n }\n\n if (periodId >= 5) {\n result.fifthSet = {\n participant1: responseStats.player1[5],\n participant2: responseStats.player2[5],\n };\n }\n\n return result;\n }\n\n private getSuspended(sport: number, period?: number): boolean | undefined {\n const map = {\n [SportConstant.AmericanFootball]: AmericanFootballPeriodInfo,\n [SportConstant.Basketball]: BasketballPeriodInfo,\n };\n\n const sports = [\n SportConstant.Cricket,\n SportConstant.Boxing,\n SportConstant.Rugby,\n SportConstant.RugbyLeague,\n SportConstant.RugbyUnion,\n SportConstant.Soccer,\n SportConstant.Baseball,\n ];\n const setSports = [SportConstant.Volleyball, SportConstant.TableTennis, SportConstant.Tennis];\n\n if ((sports.includes(sport) && period === 256) || (setSports.includes(sport) && period === 6)) {\n return true;\n }\n\n if (!period || !map[sport as keyof typeof map]) {\n return undefined;\n }\n\n return period in map[sport as keyof typeof map];\n }\n\n private getTennisSetCount(matchType?: number, sets?: any[]): number {\n if (!matchType) {\n if (sets && sets.length) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return sets[0].length;\n }\n\n return 3;\n }\n\n if (matchType === MatchType.BestOfThree || matchType === MatchType.BestOfThreeChampionsTieBreak) {\n return 3;\n }\n\n return 5;\n }\n\n private getPenalityAmount(scoreboard: IceHockey, index: number): number {\n let penaltyAmount = 0;\n if (\n scoreboard.penalties &&\n scoreboard.penalties.length > 0 &&\n scoreboard.penalties[index] &&\n scoreboard.penalties[index].values &&\n scoreboard.penalties[index].values.length > 0\n ) {\n penaltyAmount = scoreboard.penalties[index].values.length;\n } else {\n penaltyAmount = 0;\n }\n\n return penaltyAmount;\n }\n\n private isCurrentSet(sportId: number, index: number, periodId?: number): boolean {\n return (\n (sportId === SportConstant.Volleyball ||\n sportId === SportConstant.Squash ||\n sportId === SportConstant.TableTennis ||\n sportId === SportConstant.Beachvolleyball ||\n sportId === SportConstant.Badminton) &&\n 2 * index + 1 === periodId\n );\n }\n\n getParticipantListKeyValue(list: { [key: number]: Participant }): KeyValuePairScoreboard[] {\n const participantsInfo: KeyValuePairScoreboard[] = [];\n const items: Participant[] = [];\n let name: string;\n let country: string;\n let participants: string[];\n for (let index = 0; index < Object.keys(list).length; index++) {\n items.push(list[index]);\n }\n items.sort((x, y) => x.rank - y.rank);\n items.forEach((participant) => {\n if (participant) {\n participants = participant.name.split('(');\n if (Object.keys(participants).length > 0) {\n name = participants[0];\n if (participants[1]) {\n country = participants[1].slice(0, -1);\n }\n participantsInfo.push({ name, country });\n }\n }\n });\n\n return participantsInfo;\n }\n\n getParticipantList(list: { [key: number]: Participant }): string[] {\n const participantList: string[] = [];\n const items: Participant[] = [];\n let participants: string[];\n for (let index = 0; index < Object.keys(list).length; index++) {\n items.push(list[index]);\n }\n items.sort((x, y) => x.rank - y.rank);\n items.forEach((participant) => {\n if (participant) {\n participants = participant.name.split('(');\n participantList.push(participants[0]);\n }\n });\n\n return participantList;\n }\n\n getSportsLiveEventInfo(sportId: number, scoreboard?: EventScoreboard): string | undefined {\n return this.sportsScoreboardServices[sportId as keyof typeof this.sportsScoreboardServices]?.getLiveEventInfo(scoreboard) ?? '';\n }\n}\n","/* eslint-disable no-param-reassign */\n\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, Subject, interval, of } from 'rxjs';\nimport { finalize, map, takeWhile } from 'rxjs/operators';\n\nexport interface PreloaderService {\n loading: () => boolean;\n error: () => boolean;\n data: () => any;\n reset: () => void;\n}\n\ninterface WaitUntilConfig {\n timeout: number;\n condition: () => boolean;\n}\n\ntype PreloaderFunction = (target: object, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor;\n/**\n *\n * \tWhen the page loads, some data is loaded before the angular up is started.\n * This checks if the data is present and if so it does not call the backend again but resolves with the pre-loaded data.\n *\n * @export\n * @param\n */\n// eslint-disable-next-line max-lines-per-function\nexport function usePreloaderData(config: {\n preloader: PreloaderService;\n responseMapper?: (data: any) => any;\n condition?: (param1: any) => boolean;\n}): PreloaderFunction {\n return function (target: object, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, no-param-reassign\n descriptor.value = getDecoratedFunction(descriptor.value);\n\n return descriptor;\n };\n\n function getDecoratedFunction(originalFunction: () => void): any {\n return function (this: any, ...args: any[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, unicorn/no-this-assignment, @typescript-eslint/no-this-alias\n const self = this;\n\n if (config.condition && !config.condition(args[0])) {\n return originalFunction.apply(self, args as any);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n config.responseMapper = config.responseMapper || ((data) => data);\n\n if (config.preloader && config.preloader.error()) {\n config.preloader.reset();\n\n return originalFunction.apply(self, args as any);\n }\n\n if (config.preloader && config.preloader.loading()) {\n return waitUntil({\n condition: () => !config.preloader.loading(),\n timeout: 10000,\n }).pipe(\n map((status) => {\n if (status === 'success' && !config.preloader.error()) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n config = config || {};\n config.responseMapper =\n config.responseMapper ||\n function (input: any): any {\n return input;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return config.responseMapper(config.preloader.data());\n }\n\n return originalFunction.apply(self, args as any);\n }),\n finalize(() => config.preloader.reset()),\n );\n }\n\n if (config.preloader && config.preloader.data()) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = config.preloader.data();\n config.preloader.reset();\n\n return of(config.responseMapper(data));\n }\n\n return originalFunction.apply(self, args as any);\n };\n }\n\n function waitUntil(options: WaitUntilConfig): Observable<'timeout' | 'success'> {\n let totalWaited = 0;\n const waiting = new Subject<'timeout' | 'success'>();\n\n interval(100)\n .pipe(\n takeWhile(() => {\n totalWaited += 100;\n\n if (options.condition()) {\n waiting.next('success');\n waiting.complete();\n\n return false;\n }\n\n if (totalWaited > options.timeout) {\n if (options.condition()) {\n waiting.next('success');\n waiting.complete();\n\n return false;\n }\n\n waiting.next('timeout');\n waiting.complete();\n\n return false;\n }\n\n return true;\n }),\n )\n .subscribe();\n\n return waiting.asObservable();\n }\n}\n","const regexPattern = /(?!1:)\\d+:(\\d+)$/;\n\nexport function getSourceEventId(id: string): string {\n return id.split(':')[1] || id;\n}\n\nexport function isV2CompoundId(id: string): boolean {\n return regexPattern.test(id);\n}\n\nexport function safeEventId(id: string): string {\n return id.replace(':', '-');\n}\n\nexport function getPartition(id: string): number | undefined {\n if (id.indexOf(':') > -1) {\n return +id.split(':')[0];\n } else {\n return undefined;\n }\n}\n","/* eslint-disable sonarjs/cognitive-complexity */\n\n/* eslint-disable sonarjs/no-redundant-jump */\nimport { OfferSource } from '@cds';\nimport {\n DetailedGrouping,\n DisplayType,\n Fixture,\n FixtureParticipantType,\n FixtureType,\n FixtureViewType,\n Game,\n HybridFixtureData,\n ImageProfile,\n OfferCategory,\n OptionStatus,\n OrderType,\n Parameter,\n Participant,\n ParticipantPriceType,\n Price,\n ResultOrder,\n TeamGrouping,\n TotalsPrefix,\n} from '@cds/betting-offer';\nimport { BetBuilderProvider, FixtureAddons, FixtureForm, TennisSurface } from '@cds/betting-offer/add-ons';\nimport { Rank, SeasonStandings, StartingPitcher } from '@cds/betting-offer/add-ons/statistics';\nimport { BettingInsightsModel } from '@cds/betting-offer/betting-insights';\nimport { BetBuilderOptionGroupInfo } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { FixtureViewGroupingConfiguration, OfferGroup, Tag } from '@cds/betting-offer/grouping/fixture-view';\nimport { ScoreboardSlim } from '@cds/scoreboards/v1';\nimport { PlayerStats } from '@cds/statistics/player';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\nimport { CompetitionRecordsFormat } from '@frontend/sports/types/components/statistics';\nimport { isEmpty } from 'lodash-es';\n\nimport { getSourceEventId } from './eventid-parser';\nimport { EventScoreboard, ScoreboardType } from './scoreboard.model';\n\nexport function getProvider(addons: FixtureAddons | undefined): EventProvider | undefined {\n if (addons) {\n if (addons.playtech) {\n return { id: addons.playtech, type: EventProviderType.Playtech };\n } else if (addons.inspired) {\n return { id: addons.inspired, type: EventProviderType.Inspired };\n }\n }\n\n return;\n}\n\nexport function getRankByParticipantType(event: EventModel, participantType?: EventParticipantType): number | undefined {\n if (participantType === EventParticipantType.Home) {\n return event.rank?.homeTeam;\n }\n\n if (participantType === EventParticipantType.Away) {\n return event.rank?.awayTeam;\n }\n\n return;\n}\n\nexport function getPitcherByParticipantType(event: EventModel, participantType?: EventParticipantType): string | undefined {\n let pitcher;\n let pitcherName;\n if (event.startingPitcher?.homeTeam && participantType === EventParticipantType.Home) {\n pitcher = {\n firstName: event.startingPitcher?.homeTeam?.firstName,\n lastName: event.startingPitcher?.homeTeam?.lastName,\n preferredName: event.startingPitcher?.homeTeam?.preferredName,\n };\n }\n\n if (event.startingPitcher?.awayTeam && participantType === EventParticipantType.Away) {\n pitcher = {\n firstName: event.startingPitcher?.awayTeam?.firstName,\n lastName: event.startingPitcher?.awayTeam?.lastName,\n preferredName: event.startingPitcher?.awayTeam?.preferredName,\n };\n }\n\n if (pitcher) {\n pitcherName = pitcher.firstName?.charAt(0) + '. ' + pitcher.lastName;\n }\n\n return pitcherName;\n}\n\nexport function getWinLossStatsByParticipantType(\n event: EventModel,\n participantType: EventParticipantType,\n competitionRecordsFormat: CompetitionRecordsFormat,\n): string | undefined {\n let wonLossStats;\n let winLossStatsFormat;\n if (participantType === EventParticipantType.Home && event.seasonStandings?.homeTeam) {\n wonLossStats = {\n wonMatches: event.seasonStandings?.homeTeam?.wonEvents,\n lossMatches: event.seasonStandings?.homeTeam?.lostEvents,\n drawMatches: event.seasonStandings?.homeTeam?.drawEvents,\n lostEventsOvertime: event.seasonStandings?.homeTeam?.lostEventsOvertime,\n };\n }\n\n if (participantType === EventParticipantType.Away && event.seasonStandings?.awayTeam) {\n wonLossStats = {\n wonMatches: event.seasonStandings?.awayTeam?.wonEvents,\n lossMatches: event.seasonStandings?.awayTeam?.lostEvents,\n drawMatches: event.seasonStandings?.awayTeam?.drawEvents,\n lostEventsOvertime: event.seasonStandings?.awayTeam?.lostEventsOvertime,\n };\n }\n\n if (wonLossStats) {\n let competitionRecordFormat = competitionRecordsFormat.competitionOverrides && competitionRecordsFormat.competitionOverrides[event.league.id];\n\n if (!competitionRecordFormat) {\n competitionRecordFormat = competitionRecordsFormat.default;\n }\n\n winLossStatsFormat = competitionRecordFormat\n .replace('{{WW}}', wonLossStats.wonMatches ? wonLossStats.wonMatches.toString() : '0')\n .replace('{{LL}}', wonLossStats.lossMatches ? wonLossStats.lossMatches.toString() : '0')\n .replace('-{{DD}}', wonLossStats.drawMatches ? '-' + wonLossStats.drawMatches.toString() : '')\n .replace('-{{LOT}}', wonLossStats.lostEventsOvertime ? '-' + wonLossStats.lostEventsOvertime.toString() : '');\n }\n\n return winLossStatsFormat;\n}\n\nexport enum SetTab {\n All = -1,\n BetBuilder = -2,\n MyBets = -3,\n MyMarkets = -4,\n Other = 10000,\n Sgp = -5,\n}\n\nexport type GameStateType = 'Kilometer' | 'Stage' | 'Lap';\n\nexport enum EventParticipantType {\n Away = 0,\n Home = 1,\n}\n\nexport interface EventProvider {\n id: string;\n type: EventProviderType;\n}\n\nexport enum EventProviderType {\n Inspired = 'inspired',\n Playtech = 'playtech',\n}\n\nexport enum SortOrder {\n Ascending = 'asc',\n Descending = 'desc',\n}\n\nexport interface EventAnimationLogos {\n homeLogo?: string;\n awayLogo?: string;\n}\n\nexport interface EventParticipant {\n id?: number;\n fixtureParticipantId?: number;\n name: string;\n shortName?: string;\n country?: string;\n countryId?: number;\n shirtColor?: string;\n image?: EventParticipantImage;\n type?: EventParticipantType;\n teamId?: number;\n source?: OfferSource;\n}\n\nexport interface ParticipantInfo {\n participant: EventParticipant;\n participantNames: string[];\n isSingleContestant: boolean;\n rank?: number;\n winLossStats?: string;\n pitcher: string;\n redCards?: number[];\n}\n\nexport interface EventParticipantImage {\n jersey?: string;\n logo?: string;\n rotateJersey?: boolean;\n logoColor?: string;\n darkColor?: string;\n lightColor?: string;\n isParticipantProfile?: boolean;\n headshot?: string | null;\n}\n\nexport enum PairGamePeriod {\n Penalties = 9,\n Suspended = 256,\n Finished = 255,\n}\nexport enum ExtendedDisplayType {\n BetBuilder = 'BetBuilder',\n BetBuilderStandard = 'BetBuilderStandard',\n BetBuilderSixPack = 'BetBuilderSixPack',\n BetBuilderOverUnder = 'BetBuilderOverUnder',\n BetBuilderCorrectScore = 'BetBuilderCorrectScore',\n BetBuilderSpread = 'BetBuilderSpread',\n BetBuilderRaceTo = 'BetBuilderRaceTo',\n BetBuilderYesNo = 'BetBuilderYesNo',\n BetBuilderGoalScorer = 'BetBuilderGoalScorer',\n BetBuilderPlayerProps = 'BetBuilderPlayerProps',\n BetBuilderAngstrom = 'BetbuilderAngstrom',\n AutomatedPriceBoost = 'AutomatedPriceBoost',\n}\n\nexport enum EventDetailsTags {\n PriceBoost = 'PriceBoost',\n PreCreatedBab = 'PreCreatedBAB',\n}\n\nexport interface EventOptionSet {\n id: number;\n name: string;\n count: number;\n storageId: string;\n tags?: Tag[];\n marketGroupTag?: Tag;\n isPrecreated?: boolean;\n}\n\nexport interface EventOptionSetHeaderTab extends EventOptionSet {\n optionGroups: EventOptionGroup[];\n}\n\nexport interface SlimScoreboard {\n started: boolean;\n type?: string;\n scores?: ScoreboardSlim;\n participant1?: any;\n participant2?: any;\n points?: string[];\n setScore?: string;\n participant1WonSets?: number;\n participant2WonSets?: number;\n period?: { id?: number; name: string };\n timerVisible?: boolean;\n messages?: any[];\n time?: any;\n timeIndicator?: string;\n visible?: boolean;\n bookieTicker?: any;\n hasMessage?: any;\n visibleFields?: any;\n gameTimeInSeconds?: number;\n matchType?: any;\n currentlyServing?: number;\n isGeneralTournament?: boolean;\n}\n\nexport interface CrmPromoIdsMap {\n templateIds: StringDictionary;\n markets: StringDictionary;\n options: StringDictionary;\n}\n\nexport class ComboPrevention {\n minimum: number;\n restriction: number;\n}\n\nexport class PlaceTerms {\n numerator: number;\n denominator: number;\n places: number;\n}\n\nexport class EventSignature {\n event: string;\n league: string;\n market: string;\n option: string;\n region: string;\n sport: string;\n}\n\nexport class EventOption {\n id: number;\n name: string;\n optionAttribute?: string;\n online: boolean;\n visible: boolean;\n signature: EventSignature;\n playerId?: number;\n teamId?: number;\n /**\n * optionGroupId in context of sportsadmin marketconfig reflects the marketId\n *\n * @type {number}\n * @memberof EventOption\n */\n optionGroupId: number;\n originalEventId?: string;\n order?: number;\n marketAttribute?: string;\n priceId?: number;\n //TODO try to replace native price with Odds\n\n nativePrice: NativePrice;\n templateId?: number;\n boostedPriceId?: number;\n\n // TODO: remove as it is placed for marquee, should be on a separate model\n overridenName?: string;\n /**\n * optionColumnId reflects the order of the columns configured in sportsadmin (e.g. totals, money line and spread)\n *\n * @type {number}\n * @memberof EventOption\n */\n optionColumnId?: number;\n optionColumnName?: string;\n optionColumnSortOrder?: number;\n totalsPrefix?: TotalsPrefix;\n optionSpread?: number;\n player1?: string;\n player2?: string;\n player1Id?: number;\n player2Id?: number;\n longId?: string;\n shortId?: string;\n description?: string;\n //TODO try to replace native price with Odds\n\n boostedPrice?: NativePrice;\n image?: EventParticipantImage;\n\n //\n /**\n * Id of a player within a team\n *\n * @type {number}\n * @memberof EventOption\n */\n optionPlayerId?: number;\n optionTypes?: string[];\n participantPriceType?: ParticipantPriceType;\n priceHistory?: Price[];\n status?: OptionStatus;\n showBoostedPrice?: boolean;\n optionMarketName?: string;\n /**\n * @description Flags the option as being bet builder enabled, ie can be grouped with other bet buildable markets.\n * NB!: on CDS it's a market level flag, but since in FE we're grouping multiple markets under one group on\n * event details page, we have to keep it on Option level\n */\n isBetBuilder: boolean;\n player1Score?: number;\n player2Score?: number;\n participantId?: number;\n source?: OfferSource;\n}\n\nexport class EventOptionGrouping {\n /**\n * used on event details for the option set to group markets\n * into sets (tabs), coming from market grouping configuration\n *\n * @type {string}\n * @memberof EventOptionGrouping\n */\n marketSet: number;\n /**\n * used on event details for the option set to order grouped\n * markets, coming from market grouping configuration\n *\n * @type {number}\n * @memberof EventOptionGrouping\n */\n marketOrder: number;\n /**\n * used on event details for the period tabs\n * comming from market grouping configuration\n *\n * @type {number}\n * @memberof EventOptionGrouping\n */\n periodGroup?: number;\n /**\n * used on event details for to group markets\n * into groups, coming from market grouping configuration\n *\n * @type {number}\n * @memberof EventOptionGrouping\n */\n marketGroup?: number;\n name?: string;\n\n /**\n * used on event details for fetching help from sitecore\n * comming from market grouping configuration\n *\n * @type {string}\n * @memberof EventOptionGrouping\n */\n\n marketHelpPath?: string;\n marketTabId?: number;\n\n optionColumnId?: number;\n\n displayType: DisplayType | ExtendedDisplayType;\n\n orderType: OrderType;\n\n /**\n * represents sportsadmin's internal marketGroup storage id\n * used to find regionalized marketGroup config\n *\n * @type {string}\n * @memberof EventOptionGrouping\n */\n marketGroupId: string;\n\n /**\n * represents sportsadmin's internal marketGroup item storage id\n * used to find regionalized marketGroup item config\n *\n * @type {string}\n * @memberof EventOptionGrouping\n */\n marketGroupItemId: string;\n\n tags?: Tag[];\n\n /**\n * used to decide which stat(s) value of a player should be shown when event is live\n * comming from tv1 market grouping configuration\n */\n playerStatsProps?: string[];\n\n /**\n * used to show/hide and set default option(all | popular) when enabled\n * comming from tv1 market grouping configuration\n */\n teamGrouping?: TeamGrouping;\n\n /**\n * represents sportsadmin's internal betbuider precreated option group id\n * used to display different betbuider precreated option groups on event details page\n *\n * @type {string}\n * @memberof EventOptionGrouping\n */\n precreatedGroupId?: string;\n\n /**\n * used to identify player specific markets\n * comming from tv2 market grouping configuration\n */\n fixtureParticipantType?: FixtureParticipantType;\n\n /**\n * use to differentiate between tv2 six pack and H2H\n * both are using the same DisplayType, but need to be treated separately\n */\n sixPackGridId?: string;\n}\n\nexport enum EventOptionGroupType {\n Regular = 'Regular',\n Period = 'Period',\n MarketTab = 'MarketTab',\n DynamicMarket = 'DynamicMarket',\n SixPack = 'SixPack',\n}\n\nexport class OptionsToShow {\n v1?: number[];\n v2?: number[];\n}\n\nexport class EventOptionGroup {\n balanced?: boolean;\n categoryAttribute?: string;\n comboPrevention: ComboPrevention;\n extended?: boolean;\n hidden: boolean;\n id: string;\n originalId: string;\n name: string;\n description?: string;\n position: number;\n fixtureParticipantId?: number;\n linkedSibling?: boolean;\n isEachWay: boolean;\n placeTerms?: PlaceTerms;\n isStartingPriceAvailable: boolean;\n isWinPriceAvailable: boolean;\n templateCategory?: OfferCategory;\n /** set only in case of a V1 Game */\n templateCategoryId?: number;\n\n /**\n * combined value of the event to be opened for betting and the provided flag by backend\n * if option group is open for betting or not, added redundant with the online flag on the\n * event, for performance reasons\n *\n * @type {boolean}\n * @memberof EventOptionGroup\n */\n online: boolean;\n /**\n * flag provided by backend if option group is open for betting or not\n *\n * @type {boolean}\n * @memberof EventOptionGroup\n */\n visible: boolean;\n optionSpread?: number;\n templateId: string;\n options: EventOption[];\n winning: boolean;\n twoThreeWay?: boolean;\n groupedMarkets?: string[];\n groupedTemplateIds?: string[];\n subGroups?: EventOptionGroup[];\n\n /**\n * Property will be available only for TV1. For TV2 the options come already sorted\n *\n * @type {ResultSorting}\n * @memberof EventOptionGroup\n */\n resultSorting?: ResultSorting;\n parameters?: Parameter[];\n parameterTranslations?: StringDictionary;\n type: EventOptionGroupType;\n detailedGrouping: EventOptionGrouping;\n optionsToShow?: OptionsToShow;\n\n /**\n * used on the grid, need to have separate one as mapper\n * should work for both event types, grid and detailed event\n *\n * @type {string[]}\n * @memberof EventOptionGroup\n */\n gridGroups?: string[];\n /**\n * used on event details for the period tabs\n * coming from market grouping configuration\n *\n * @type {string}\n * @memberof EventOptionGroup\n */\n periodName?: string;\n\n player1?: string;\n player2?: string;\n\n /**\n * Used in OGP betbuilder markets to define whether\n * an additional information panel for multi-pick selection\n * is shown\n *\n * @type {boolean}\n * @memberof EventOptionGroup\n */\n isMultipleSelection?: boolean;\n source?: OfferSource;\n\n /**\n * Concatenated option participant ids\n */\n participantIds?: string;\n\n /**\n * To map option SubPeriodNumber value to group angstrom drive markets.\n */\n subPeriodNumber?: string;\n\n /**\n * ToDo: To be removed after cds obsolete markettype enums are updated in FE.\n * Used in regular-option-group to identify the dynamic correctscore in angstrom drive markets.\n */\n originalParameters?: Parameter[];\n\n /**\n * @description Flags the market as being part of betbuilder precreated group.\n */\n isPartOfSgpGroup?: boolean;\n\n hasBetBuilderMarkets: boolean;\n\n /**\n * To map option RangeValue to group markets based on RangeValue.\n */\n rangeValue?: string;\n\n /**\n * grid configuration for tv2 six pack\n */\n sixPackGridGroupId?: string;\n\n hasSubGroups(type: EventOptionGroupType): boolean {\n return this.subGroups ? this.subGroups.some((s) => s.type === type) : false;\n }\n\n getSubGroups(type: EventOptionGroupType): EventOptionGroup[] {\n return this.subGroups ? this.subGroups.filter((s) => s.type === type) : [];\n }\n\n hasGroup(group: string | number): boolean {\n return this.gridGroups?.includes(group.toString()) ?? false;\n }\n\n hasAnyGroup(): boolean {\n return !isEmpty(this.gridGroups);\n }\n\n get isBetBuilder(): boolean {\n return this.options.some((o) => o.isBetBuilder);\n }\n}\n\nexport enum ResultSorting {\n Alphabet = 'Alphabet',\n Default = 'Default',\n Odds = 'Odds',\n Order = 'Order',\n}\n\nexport function toResultSorting(order: ResultOrder): ResultSorting {\n switch (order) {\n case ResultOrder.Alphabet:\n return ResultSorting.Alphabet;\n case ResultOrder.Default:\n return ResultSorting.Default;\n case ResultOrder.Odds:\n return ResultSorting.Odds;\n }\n}\n\nexport class LeagueModel {\n id: number;\n name: string;\n sign?: string;\n parentLeagueId?: number;\n combiLeague?: boolean;\n groupId?: number;\n stageId?: number;\n realCompetitionId?: number;\n imageProfile?: ImageProfile;\n\n constructor(id: number, name: string, pId?: number) {\n this.id = id;\n this.name = name;\n this.parentLeagueId = pId;\n }\n}\n\n/**\n * The Tournament or Region of the current event\n *\n * @export\n * @class RegionModel\n */\nexport class RegionModel {\n id: number;\n code?: string;\n name: string;\n sign?: string;\n\n // This maps to the original region coming from the API\n originalRegion?: RegionModel;\n}\n\nexport class SportModel {\n //TODO CHECK IF BELOW CHANGE IS CORRECT\n id: SportConstant;\n name: string;\n virtual: boolean;\n sign?: string;\n isEsport?: boolean;\n}\n\nexport class EventStream {\n id: string;\n provider: string;\n twitchChannel?: string;\n streamUrl?: string;\n feedType?: FeedType;\n}\n\nexport interface EventSitemapSet {\n id: string | number;\n groups?: number[];\n children?: EventSitemapSet[];\n name: string;\n}\n\nexport interface BaseEventModel {\n id: string;\n fixtureScoreboard: ScoreboardSlim;\n scoreboard: EventScoreboard;\n sport: SportModel;\n league: LeagueModel;\n splitFixtureIds?: string[];\n playerStats?: PlayerStats[];\n offerContext?: string[];\n fixtureType: FixtureType;\n}\n\nexport class EventModel implements BaseEventModel {\n fixtureScoreboard: ScoreboardSlim;\n splitFixtureIds?: string[];\n marketsDictionary: Record;\n\n id: string;\n league: LeagueModel;\n live: boolean;\n name: string;\n nameSign?: string;\n description?: string;\n optionGroups: EventOptionGroup[];\n optionSets: EventOptionSet[];\n sitemapSets?: EventSitemapSet[];\n online: boolean;\n\n /**\n * If a main and a live event (V1) are grouped, this id represents the group\n *\n * @type {number}\n * @memberof EventModel\n */\n groupId?: number;\n\n /**\n * V2 correspondent for VirtualCompetitionGroup that we have for V1\n *\n * @type {number}\n * @memberof EventModel\n */\n competitionGroupId?: number;\n participants: EventParticipant[];\n teams: EventParticipant[];\n players: EventParticipant[];\n published: boolean;\n region: RegionModel;\n scoreboard: EventScoreboard;\n sport: SportModel;\n startDate: Date;\n cutOffDate: Date;\n stream?: EventStream;\n liveAlert?: boolean;\n offerSource: OfferSource;\n offerContext?: string[];\n fixtureType: FixtureType;\n statsId?: number;\n surface?: TennisSurface;\n provider?: EventProvider;\n betRadarCoverageLevel?: number;\n betRadarVisualizationId?: number;\n hasFixtureStats: boolean;\n fixtureForm?: FixtureForm;\n rank?: Rank;\n seasonStandings?: SeasonStandings;\n startingPitcher?: StartingPitcher;\n hasLeagueStats: boolean;\n viewType: FixtureViewType;\n gamesCount?: number;\n runningBallDataId?: string;\n betBuilderFixtureId?: string;\n sportcastId?: number;\n betBuilderTradingV2FixtureId?: string;\n totalMarketsCount: number;\n winGameLinkedFixture?: Fixture;\n imgEventId?: number;\n showParticipant?: boolean;\n priceBoostCount?: number;\n isPriceBoosted?: boolean;\n bettingInsights?: BettingInsightsModel;\n hybridFixtureData?: HybridFixtureData;\n offerCategories: OfferCategory[];\n /**\n * @description Provider(agnostic) specific fixture identifier.\n */\n betBuilderInfo: BetBuilderInfo | null;\n playerStats?: PlayerStats[];\n\n precreatedOptionGroups?: BetBuilderOptionGroupInfo[];\n constructor() {\n this.optionGroups = [];\n this.optionSets = [];\n this.participants = [];\n this.players = [];\n this.scoreboard = new EventScoreboard();\n this.scoreboard.started = false;\n this.published = true;\n this.marketsDictionary = {};\n }\n\n isSetGame(): boolean {\n return this.isGameOfType(ScoreboardType.SetGame);\n }\n\n isTournamentGame(): boolean {\n return this.isGameOfType(ScoreboardType.TournamentGame) || this.fixtureType === FixtureType.Tournament;\n }\n\n isPairGame(): boolean {\n return this.isGameOfType(ScoreboardType.PairGame) && this.participants.length === 2;\n }\n\n isBaseballGame(): boolean {\n return this.isGameOfType(ScoreboardType.BaseballGame);\n }\n\n isPeriodGame(): boolean {\n return this.isGameOfType(ScoreboardType.PeriodGame);\n }\n\n isLeaderboardGame(): boolean {\n return this.isGameOfType(ScoreboardType.LeaderboardGame);\n }\n\n isStarted(): boolean {\n const diff = this.startDate.getTime() - Date.now();\n\n return diff <= 0 || this.scoreboard.started;\n }\n\n isFinished(): boolean {\n return !!this.scoreboard.period && this.scoreboard.period.id === PairGamePeriod.Finished;\n }\n\n getBestPerformingParticipant(): EventParticipantType | undefined {\n if (this.fixtureForm) {\n if (this.fixtureForm.homeTeamHomeForm) {\n return EventParticipantType.Home;\n }\n if (this.fixtureForm.awayTeamAwayForm) {\n return EventParticipantType.Away;\n }\n if (this.fixtureForm.overallHomeTeamForm || this.fixtureForm.overallAwayTeamForm) {\n if ((this.fixtureForm.overallHomeTeamForm?.winCount || 0) >= (this.fixtureForm.overallAwayTeamForm?.winCount || 0)) {\n return EventParticipantType.Home;\n }\n\n return EventParticipantType.Away;\n }\n }\n\n return undefined;\n }\n\n isBestPerformingOption(option: EventOption, optionGroup: EventOptionGroup): boolean {\n const optionName = option.overridenName;\n\n if (optionGroup.winning && optionName !== 'X') {\n const bestOption = (participant: EventParticipantType | undefined) => {\n if (participant === undefined) {\n return false;\n }\n if (this.viewType === FixtureViewType.American) {\n return participant === EventParticipantType.Home ? '2' : '1';\n }\n\n return participant === EventParticipantType.Home ? '1' : '2';\n };\n\n if (optionName === bestOption(this.getBestPerformingParticipant())) {\n return true;\n }\n }\n\n return false;\n }\n\n getBetBuilderConsumerFixtureId(): string | undefined {\n return this.betBuilderFixtureId || getSourceEventId(this.betBuilderTradingV2FixtureId ?? '');\n }\n\n getBetBuilderIdByStage(): string | null {\n // NOTE: BetBuilderProvider.Default corresponds to Sportscast and that flow is stil based on legacy Addons.SportcastId. See cleanup SPO-101062\n const betBuilderId =\n !this.live && this.betBuilderInfo?.betBuilderId && this.betBuilderInfo?.betBuilderProvider !== BetBuilderProvider.Default\n ? this.betBuilderInfo?.betBuilderId\n : null;\n return betBuilderId;\n }\n\n private isGameOfType(type: ScoreboardType): boolean {\n return this.scoreboard.type === type;\n }\n}\n\nexport interface MyMarketModel {\n live: SportOptionGroup | SportOptionGroupOrder;\n prematch: SportOptionGroup | SportOptionGroupOrder;\n}\n\nexport interface SportOptionGroup {\n [id: string]: OptionGroup[];\n}\n\nexport interface SportOptionGroupOrder {\n [id: number]: number[];\n}\n\nexport interface OptionGroup {\n market_group_id: number;\n tv1_market_group_item: number;\n position: number;\n}\n\nexport interface VerticalDesignOptions {\n isVerticalDesignEnabled: boolean;\n showOptionAttributeDecorator: boolean;\n showOptionName: boolean;\n}\n\nexport interface EnhancedFixtureViewGroupingConfiguration extends FixtureViewGroupingConfiguration {\n apbGroups: OfferGroup[];\n preCreatedGroups: OfferGroup[];\n}\n\n/**\n * Market Options which should not be aligned center, values are from Sportcast.\n */\nexport enum MarketOptionType {\n WhoWillScore = 6,\n WhoWillGetCarded = 7,\n DoubleChance = 16,\n HowWillaTeamWin = 26,\n WhatElseWillHappen = 28,\n}\nexport enum BetBuilderRowOfOptions {\n Single = 1,\n}\nexport enum BetBuilderNoOfColumns {\n Double = 2,\n Triple = 3,\n}\n\nexport const PRECREATED_BAB_EMPTY_THEME_ID = -1;\n\nexport enum TeamGroupingValues {\n Default,\n AscendingOdds,\n}\n\nexport enum OddsSorting {\n AscendingOrder,\n DescendingOrder,\n}\n\nexport interface BetBuilderInfo {\n betBuilderId: string;\n betBuilderProvider: BetBuilderProvider;\n}\n\nexport enum OptionTypes {\n NotExists = 'NotExists',\n Equals = 'Equals',\n ToHappen = 'ToHappen',\n NotToHappen = 'NotToHappen',\n Max = 'Max',\n}\n\nexport enum CorrectScoreHeaderButtonTabs {\n CorrectScoreCompactView = 'CorrectScoreCompactViewTitle',\n CorrectScoreRegularView = 'CorrectScoreRegularViewTitle',\n}\n\nexport interface MapOption {\n game: Game;\n fixtureId: string;\n fixtureOnline: boolean;\n resultSorting: ResultSorting;\n detailedGrouping: DetailedGrouping;\n grouping: EnhancedFixtureViewGroupingConfiguration;\n order?: number;\n longIds?: string[];\n participants?: Participant[];\n}\n\nexport enum FeedType {\n Twitch = 'Twitch',\n Beter = 'Beter',\n}\n","import { now } from 'lodash-es';\nimport { Observable, ReplaySubject, of, throwError, timer } from 'rxjs';\nimport { catchError, share } from 'rxjs/operators';\n\ninterface CacheItem {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n source: Observable;\n expiration: number;\n}\n\nexport class ExpiringCache {\n private cacheInternal = new Map();\n private time: number;\n\n /**\n * Creates an instance of ExpiringCache.\n *\n * @param cacheTime in seconds\n * @memberof ExpiringCache\n */\n constructor(cacheTime: number) {\n if (!cacheTime) {\n throw new Error('Cache time should be defined');\n }\n\n this.time = cacheTime * 1000;\n }\n\n getOrCreate(key: string, source: Observable): Observable {\n this.validateCache();\n\n if (this.cacheInternal.has(key)) {\n return this.getInternal(key);\n }\n\n return this.create(key, source);\n }\n\n get(key: string): Observable {\n this.validateCache();\n\n if (this.cacheInternal.has(key)) {\n return this.getInternal(key);\n }\n\n return of(undefined);\n }\n\n create(key: string, source: Observable): Observable {\n const transformed = source.pipe(\n catchError((error) => {\n this.cacheInternal.delete(key);\n\n return throwError(error);\n }),\n share({\n connector: () => new ReplaySubject(1),\n resetOnComplete: () => timer(this.time),\n resetOnRefCountZero: () => timer(this.time),\n }),\n );\n\n this.cacheInternal.set(key, { source: transformed, expiration: this.time + now() });\n\n return this.getInternal(key);\n }\n\n has(key: string): boolean {\n this.validateCache();\n\n return this.cacheInternal.has(key);\n }\n\n remove(key: string): boolean {\n return this.cacheInternal.delete(key);\n }\n\n clear(): void {\n this.cacheInternal.clear();\n }\n\n private validateCache(): void {\n this.cacheInternal.forEach((value, key) => {\n if (value.expiration < now()) {\n this.cacheInternal.delete(key);\n }\n });\n }\n\n private getInternal(key: string): Observable {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-non-null-assertion\n return this.cacheInternal.get(key)!.source;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ExpiringCache } from './expiring-cache';\n\n@Injectable({ providedIn: 'root' })\nexport class ExpiringCacheFactory {\n create(cacheTime: number): ExpiringCache {\n return new ExpiringCache(cacheTime);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateProviderService } from '@frontend/sports/common/core/utils/date';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { CookieService } from '@frontend/vanilla/core';\n\n@Injectable({ providedIn: 'root' })\nexport class CookieProvider {\n constructor(private cookies: CookieService) {}\n\n getCookie(name: string): string {\n return this.cookies.get(name);\n }\n\n setCookie(name: string, value: string, options?: { expires?: number }): void {\n const expire = this.cookieExpirationDate(options?.expires);\n\n this.cookies.put(name, value, { expires: expire });\n }\n\n deleteCookie(name: string): void {\n this.cookies.remove(name);\n }\n\n private cookieExpirationDate(days?: number): Date | undefined {\n if (days == null) {\n return;\n }\n\n const result = DateProviderService.getDate();\n result.setDate(result.getDate() + days);\n\n return result;\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\n\nimport { Deferred } from '@frontend/sports/common/core/utils/deferred';\nimport { ApiBase, ApiServiceFactory, ClientConfigProductName, ProductService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nexport class Api extends ApiBase {}\n\nexport const API = new InjectionToken('sports-api', {\n providedIn: 'root',\n factory: () => {\n const factory = inject(ApiServiceFactory);\n const productService = inject(ProductService);\n const forwardProductApi = productService.getMetadata(ClientConfigProductName.SPORTS).isEnabled;\n\n return apiServiceFactory(factory, forwardProductApi);\n },\n});\n\nexport const API_EXT = new InjectionToken('sports-api-ext', {\n providedIn: 'root',\n factory: () => {\n const factory = inject(ApiServiceFactory);\n\n return apiServiceFactory(factory, false);\n },\n});\n\nfunction apiServiceFactory(factory: ApiServiceFactory, forwardProductApi: boolean): Api {\n return factory.createForProduct(Api, {\n product: ClientConfigProductName.SPORTS,\n area: 'sports',\n forwardProductApiRequestHeader: forwardProductApi,\n });\n}\n\nabstract class ApiServiceBase {\n protected abstract readonly api: Api;\n\n get(\n url: string,\n params?: unknown,\n options?: {\n showSpinner?: boolean;\n withCredentials?: boolean;\n cancelationToken?: Deferred;\n retryCount?: number;\n retryDelay?: number;\n retryOnStatus?: number[];\n headers?: { [key: string]: string };\n responseType?: 'json' | 'text';\n resolveWithFullResponse?: boolean;\n },\n ): Observable {\n const resultOptions = options ?? {\n showSpinner: false,\n withCredentials: true,\n };\n resultOptions.withCredentials = resultOptions.withCredentials === false ? false : true;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.api.get(url, params || {}, {\n showSpinner: resultOptions.showSpinner,\n withCredentials: resultOptions.withCredentials,\n retryCount: resultOptions.retryCount,\n retryDelay: resultOptions.retryDelay,\n retryOnStatus: resultOptions.retryOnStatus,\n headers: resultOptions.headers,\n responseType: resultOptions.responseType,\n resolveWithFullResponse: resultOptions.resolveWithFullResponse,\n });\n }\n\n post(\n url: string,\n data?: unknown,\n options?: {\n showSpinner?: boolean;\n withCredentials?: boolean;\n cancelationToken?: Deferred;\n cache?: boolean;\n retryCount?: number;\n retryDelay?: number;\n headers?: { [key: string]: string };\n responseType?: 'json' | 'text';\n resolveWithFullResponse?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params?: { [key: string]: any };\n },\n ): Observable {\n let headers = {};\n\n const resultOptions = options ?? {\n showSpinner: false,\n resolveWithFullResponse: false,\n };\n\n if (!resultOptions.cache) {\n headers = { 'cache-control': 'no-cache' };\n }\n\n const withCredentialsOptions = resultOptions.withCredentials === undefined ? {} : { withCredentials: resultOptions.withCredentials };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.api.post(url, data, {\n headers,\n showSpinner: resultOptions.showSpinner,\n retryCount: resultOptions.retryCount,\n retryDelay: resultOptions.retryDelay,\n responseType: resultOptions.responseType,\n resolveWithFullResponse: resultOptions.resolveWithFullResponse,\n params: resultOptions.params,\n ...withCredentialsOptions,\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ApiServiceExternal extends ApiServiceBase {\n readonly api = inject(API_EXT);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ApiService extends ApiServiceBase {\n readonly api = inject(API);\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { CookieProvider } from '@frontend/sports/common/core/utils/cookie-provider';\nimport { ExpiringCache, ExpiringCacheFactory } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { Observable, of } from 'rxjs';\n\nimport { CdnaUserProfile } from './model';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomerDnaProfileProviderService {\n private cache: ExpiringCache;\n private readonly cookieName: string = 'customerDnaProfileId';\n\n constructor(\n private cookieProvider: CookieProvider,\n private apiService: ApiService,\n cacheFactory: ExpiringCacheFactory,\n ) {\n this.cache = cacheFactory.create(3600);\n }\n\n getProfileId(): string | null {\n return this.cookieProvider.getCookie(this.cookieName);\n }\n\n getProfile(): Observable {\n const profileId = this.getProfileId();\n\n return profileId ? this.loadProfile(profileId) : of(undefined);\n }\n\n private loadProfile(profileId: string): Observable {\n const source = this.apiService.get('customerDna', { profileId });\n\n return this.cache.getOrCreate(`customerDnaProfile-${profileId}`, source);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n ConnectionConfig,\n GeolocationConfig,\n MediaConfig,\n MocksConfig,\n NewCustomerBettingOfferConfig,\n} from '@frontend/sports/common/client-config-data-access';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { GeolocationService } from '@frontend/vanilla/core';\nimport { Observable, of } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n\nexport interface ApiBaseSettings {\n accessId: string;\n lang: string;\n country: string;\n userCountry: string;\n userLocation?: string;\n restrictedCompetitionId?: number;\n subdivision?: string;\n shopTier?: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ApiBaseSettingsProvider {\n constructor(\n private mocksConfig: MocksConfig,\n private m2User: UserService,\n private connectionConfig: ConnectionConfig,\n private geolocationService: GeolocationService,\n private newCustomerBettingOfferConfig: NewCustomerBettingOfferConfig,\n private mediaConfig: MediaConfig,\n private geolocationConfig: GeolocationConfig,\n ) {}\n\n getSettings(): ApiBaseSettings {\n const settings: ApiBaseSettings = {\n accessId: this.connectionConfig.publicAccessId || this.connectionConfig.pushAccessId,\n lang: this.connectionConfig.culture,\n country: this.getCountry(),\n userCountry: this.m2User.country,\n restrictedCompetitionId: this.getRestrictedCompetitionId(),\n shopTier: this.connectionConfig.shopTier,\n };\n\n if (this.mediaConfig.subdivisionRestrictedCountries.includes(this.m2User.country)) {\n const subdivisionCode = this.m2User.getStateOrProvince();\n if (subdivisionCode) {\n // Vanilla is not providing the subdivision in ISO format(eg. stateorprovince claim: 'NJ', ISO code for New Jersey is 'US-NJ')\n const isoSubdivisionCode = `${this.m2User.country}-${subdivisionCode}`;\n settings.subdivision = isoSubdivisionCode;\n }\n }\n\n return settings;\n }\n\n getSettingsWithGeolocation(): Observable {\n if (!this.geolocationConfig.isGeolocationEnabled) {\n return of(this.getSettings());\n }\n\n return this.geolocationService.whenReady.pipe(\n first(),\n map(() => {\n const location = this.geolocationService.currentPosition?.mappedLocation?.locationId || '';\n\n return {\n ...this.getSettings(),\n userLocation: location,\n };\n }),\n );\n }\n\n private getCountry(): string {\n if (this.mocksConfig.isMockLiveStreamGeoCountryEnabled && this.mocksConfig.liveStreamGeoCountry) {\n return this.mocksConfig.liveStreamGeoCountry;\n }\n\n return this.m2User.geoCountry?.toUpperCase() || this.m2User.country?.toString();\n }\n\n private getRestrictedCompetitionId(): number | undefined {\n return this.m2User.isEligibleForNewCustomerOffer ? this.newCustomerBettingOfferConfig.competitionId : undefined;\n }\n}\n","import { LogType, RemoteLogger } from '@frontend/vanilla/core';\n\nexport class SportsRemoteLogger {\n private loggerName: string | undefined;\n private readonly MS2_LOGGER_TOKEN = 'ms2logger';\n\n constructor(\n loggerName: string,\n private vanillaLogger: RemoteLogger,\n ) {\n const alphaNumeric = /^[a-zA-Z\\d]+$/g;\n\n if (!loggerName || !alphaNumeric.test(loggerName)) {\n throw new Error(`Logger name should be alphanumeric for easy elasticsearch lookup`);\n }\n\n this.loggerName = loggerName;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(error: any, additionalMessage?: string): void {\n if (!error) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let resultError = error;\n\n if (typeof error === 'string') {\n resultError = new Error(error);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n resultError.description = this.MS2_LOGGER_TOKEN;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n resultError.fileName = this.loggerName;\n\n this.vanillaLogger.logError(resultError, additionalMessage);\n }\n\n info(message: string): void {\n if (!message) {\n return;\n }\n\n const formattedMessage = [this.MS2_LOGGER_TOKEN, this.loggerName, message].filter(Boolean).join(' ');\n\n this.vanillaLogger.log(formattedMessage, LogType.Info);\n }\n\n warning(message: string): void {\n if (!message) {\n return;\n }\n\n const formattedMessage = [this.MS2_LOGGER_TOKEN, this.loggerName, message].filter(Boolean).join(' ');\n\n this.vanillaLogger.log(formattedMessage, LogType.Warning);\n }\n}\n","import { InternalFeaturesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RemoteLogger } from '@frontend/vanilla/core';\n\nimport { SportsRemoteLogger } from './sports-remote-logger.service';\n\nexport class DebugLogger {\n private readonly sportsLogger: SportsRemoteLogger;\n\n constructor(\n loggerName: string,\n remoteLogger: RemoteLogger,\n private internalFeaturesConfig: InternalFeaturesConfig,\n ) {\n this.sportsLogger = new SportsRemoteLogger(loggerName, remoteLogger);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(errorOrMessage: any, additionalMessage?: string): void {\n if (this.internalFeaturesConfig.isBetplacementLoggingEnabled) {\n this.sportsLogger.error(errorOrMessage, additionalMessage);\n }\n }\n\n warning(message: string, includeStack = false): void {\n if (this.internalFeaturesConfig.isBetplacementLoggingEnabled) {\n const stack = includeStack ? `\\n ${new Error().stack}` : '';\n this.sportsLogger.warning(`${message}${stack}`);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { InternalFeaturesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RemoteLogger } from '@frontend/vanilla/core';\n\nimport { DebugLogger } from './debug-logger.service';\nimport { SportsRemoteLogger } from './sports-remote-logger.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerFactory {\n constructor(\n private vanillaLogger: RemoteLogger,\n private internalFeatures: InternalFeaturesConfig,\n ) {}\n\n getLogger(loggerName: string): SportsRemoteLogger {\n return new SportsRemoteLogger(loggerName, this.vanillaLogger);\n }\n\n getDebugLogger(loggerName: string): DebugLogger {\n return new DebugLogger(`Debug${loggerName}`, this.vanillaLogger, this.internalFeatures);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable prefer-rest-params */\n\nexport function urljoin(...params: unknown[]): string {\n let input = arguments;\n\n if (typeof arguments[0] === 'object') {\n // new syntax with array and options\n input = arguments[0];\n }\n\n const joined = [].slice.call(input, 0).join('/');\n\n return normalize(joined);\n}\n\nexport function encodeParams(param: unknown): string | null {\n if (!param) {\n return null;\n }\n\n const encoded = encodeObject(param);\n\n if (!encoded) {\n return null;\n }\n\n return encoded.filter((part) => part).join('&');\n}\n\nfunction normalize(str: string): string {\n // make sure protocol is followed by two slashes\n str = str.replace(/:\\//g, '://');\n\n // remove consecutive slashes\n str = str.replace(/([^:\\s])\\/+/g, '$1/');\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n str = str.replace(/(\\?.+)\\?/g, '$1&');\n\n return str;\n}\n\nfunction encodeObject(param: unknown): Array | null {\n if (Array.isArray(param)) {\n if (param.length === 0) {\n return null;\n }\n\n return param\n .map((current, index) => {\n const result = encodeObject(current);\n\n return Array.isArray(result) ? result.map((x) => `[${index}].${x}`) : [`[${index}]=${current}`];\n })\n .reduce((current, next) => current.concat(next));\n }\n\n if (param instanceof Object) {\n const keys = Object.keys(param);\n\n const propertiesToEncode = (key: string): boolean => {\n const value = param[key as keyof typeof param] as unknown;\n // eslint-disable-next-line eqeqeq\n return value !== null && value !== undefined && (Array.isArray(value) ? value.length !== 0 : value !== '');\n };\n\n const encodeProperty = (key: string): string[] => {\n const value = param[key as keyof typeof param] as unknown;\n const encoded = encodeObject(value);\n const join = Array.isArray(value) ? '' : '.';\n\n if (!encoded) {\n return [`${key}=${encodeURIComponent(value as string | number | boolean)}`];\n }\n\n return encoded.map((pair) => `${key}${join}${pair}`);\n };\n\n const encodedValues = keys\n .filter(propertiesToEncode)\n .map(encodeProperty)\n .reduce((flatArray, next) => flatArray.concat(next), []);\n\n if (encodedValues.length) {\n return encodedValues;\n }\n }\n\n return null;\n}\n","import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ApiServiceExternal } from '@frontend/sports/common/api-utils';\nimport { ConnectionConfig, CustomerDnaBettingOfferConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { CustomerDnaProfileProviderService } from '@frontend/sports/customer-dna/data-access';\nimport { Observable, of } from 'rxjs';\nimport { catchError, concatMap, map } from 'rxjs/operators';\n\nimport { ApiBaseSettingsProvider } from './api-settings.service';\nimport { CdsRequestOptions } from './cds-request-options';\nimport { encodeParams, urljoin } from './url.utils';\n\nexport interface CdsApiOptions {\n endpoint: string;\n}\n\ninterface CdsApiContextQueryStringParameters {\n 'x-bwin-accessid': string;\n 'lang': string;\n 'country': string;\n 'userCountry': string;\n 'userLocation': string;\n 'cdnaProfileId'?: string;\n 'restrictedCompetitionId'?: number;\n 'subdivision'?: string;\n 'shopTier'?: number;\n}\n\n@Injectable()\nexport class BaseCdsApi {\n private baseUrl: string;\n private configured = false;\n private options: CdsApiOptions;\n private readonly logger: SportsRemoteLogger;\n\n constructor(\n private apiServiceExternal: ApiServiceExternal,\n loggerFactory: LoggerFactory,\n connectionConfig: ConnectionConfig,\n private apiBaseSettings: ApiBaseSettingsProvider,\n private customerDnaProfileService: CustomerDnaProfileProviderService,\n private customerDnaBettingOfferConfig: CustomerDnaBettingOfferConfig,\n ) {\n this.baseUrl = connectionConfig.cdsUrlBase;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.options = {};\n this.logger = loggerFactory.getLogger('BaseCdsApi');\n }\n\n configure(options: CdsApiOptions): BaseCdsApi {\n this.configured = true;\n this.options = { ...this.options, ...options };\n\n return this;\n }\n\n post(resource: string, data?: K, options?: CdsRequestOptions): Observable {\n if (!this.configured) {\n return of(undefined);\n }\n\n return this.prepareRequestUrl(resource, options).pipe(\n concatMap((url) => {\n return this.apiServiceExternal.post>(url, data, { cache: false, resolveWithFullResponse: true }).pipe(\n map((response) => response.body as T),\n catchError((err: HttpErrorResponse) => {\n if (err && err.status > 0) {\n this.logger.error(err, `Post call to CDS endpoint: ${this.getUrl(resource)} failed`);\n }\n\n return of(undefined);\n }),\n );\n }),\n );\n }\n\n get(resource: string, data?: K, options?: CdsRequestOptions): Observable {\n if (!this.configured) {\n return of(undefined);\n }\n\n return this.prepareRequestUrl(resource, options).pipe(\n concatMap((url) => {\n return this.apiServiceExternal.get>(url, data, { resolveWithFullResponse: true }).pipe(\n map((response) => response.body as T),\n catchError((err: HttpErrorResponse) => {\n if (err && err.status > 0) {\n this.logger.error(err, `Get call to CDS endpoint: ${this.getUrl(resource)} failed`);\n }\n\n return of(undefined); // Ventsi: I don't like the to return undefined on error it should be throwError but return to the prev behavior\n }),\n );\n }),\n );\n }\n\n private prepareRequestUrl(resource: string, options?: CdsRequestOptions): Observable {\n return this.getDefault(options).pipe(\n map((request) => {\n let url = this.getUrl(resource);\n if (url.indexOf('?') === -1) {\n url += '?';\n } else {\n url += '&';\n }\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return url + encodeParams(request);\n }),\n );\n }\n\n private getDefault(options?: CdsRequestOptions): Observable {\n return this.apiBaseSettings.getSettingsWithGeolocation().pipe(\n map((settings) => {\n const { accessId, userLocation, ...rest } = settings;\n const defaultQueryStringParams: CdsApiContextQueryStringParameters = {\n 'x-bwin-accessid': accessId,\n ...rest,\n 'userLocation': userLocation || '',\n };\n\n if (this.customerDnaBettingOfferConfig.isEnabled && options?.addCustomerDnaProfileId) {\n const customerDnaProfileId = this.customerDnaProfileService.getProfileId();\n\n if (customerDnaProfileId) {\n defaultQueryStringParams.cdnaProfileId = customerDnaProfileId;\n }\n }\n\n if (options?.restrictedCompetitionId) {\n defaultQueryStringParams.restrictedCompetitionId = options.restrictedCompetitionId;\n }\n\n return defaultQueryStringParams;\n }),\n );\n }\n\n private getUrl(resource: string): string {\n return urljoin(this.baseUrl, this.options.endpoint, resource);\n }\n}\n","import { InjectionToken, inject } from '@angular/core';\n\nimport { ApiServiceExternal } from '@frontend/sports/common/api-utils';\nimport { ConnectionConfig, CustomerDnaBettingOfferConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory } from '@frontend/sports/common/core/feature/logging';\nimport { CustomerDnaProfileProviderService } from '@frontend/sports/customer-dna/data-access';\n\nimport { ApiBaseSettingsProvider } from './api-settings.service';\nimport { BaseCdsApi, CdsApiOptions } from './cds-api.service';\n\nexport type BaseCdsApiFactory = (options: CdsApiOptions) => BaseCdsApi;\n\nconst cdsFactory =\n (\n apiServiceExternal: ApiServiceExternal,\n loggerFactory: LoggerFactory,\n connectionConfig: ConnectionConfig,\n apiSettings: ApiBaseSettingsProvider,\n customerDnaProfileService: CustomerDnaProfileProviderService,\n customerDnaBettingOfferConfig: CustomerDnaBettingOfferConfig,\n ): BaseCdsApiFactory =>\n (options: CdsApiOptions) =>\n new BaseCdsApi(\n apiServiceExternal,\n loggerFactory,\n connectionConfig,\n apiSettings,\n customerDnaProfileService,\n customerDnaBettingOfferConfig,\n ).configure(options);\n\n// This needs to be provided in root as multiple root services access it\n// Making it non-root causes issues in the Host-App setup for Sports\n// Todo - SportsRefactor: This should be moved to a root service, no reason to use an injection token for it.\n// It's not overriden anywhere, only this one instance exists.\nexport const CDS_API_FACTORY = new InjectionToken('CDS_API_FACTORY', {\n providedIn: 'root',\n factory: () => {\n const apiServiceExternal = inject(ApiServiceExternal);\n const loggerFactory = inject(LoggerFactory);\n const connectionConfig = inject(ConnectionConfig);\n const apiSettings = inject(ApiBaseSettingsProvider);\n const customerDnaProfileService = inject(CustomerDnaProfileProviderService);\n const customerDnaBettingOfferConfig = inject(CustomerDnaBettingOfferConfig);\n\n return cdsFactory(apiServiceExternal, loggerFactory, connectionConfig, apiSettings, customerDnaProfileService, customerDnaBettingOfferConfig);\n },\n});\n","import { InjectionToken, Injector } from '@angular/core';\n\nexport interface IDynamicInjectorProvider {\n getDynamicInjector(): Injector;\n}\n\nexport const DYNAMIC_INJECTOR_PROVIDER_TOKEN = new InjectionToken('DYNAMIC_INJECTOR_PROVIDER_TOKEN');\n","import { InjectionToken, inject } from '@angular/core';\n\nimport { DYNAMIC_INJECTOR_PROVIDER_TOKEN, IDynamicInjectorProvider } from './dynamic-injector.provider';\n\n// Using Function type here as this is accurate for this util.\nexport const NonRootToken = (t: Function | InjectionToken): InjectionToken => {\n const name = t instanceof InjectionToken ? t.toString() : t.name;\n\n return new InjectionToken(`DynamicRootFor_${name}`, {\n providedIn: 'root',\n factory: () => inject(DYNAMIC_INJECTOR_PROVIDER_TOKEN).getDynamicInjector().get(t),\n });\n};\n\n// Using Function type here as this is accurate for this util.\nexport const OptionalNonRootToken = (t: Function | InjectionToken): InjectionToken => {\n const name = t instanceof InjectionToken ? t.toString() : t.name;\n\n return new InjectionToken(`OptionalDynamicRootFor_${name}`, {\n providedIn: 'root',\n factory: () => inject(DYNAMIC_INJECTOR_PROVIDER_TOKEN).getDynamicInjector().get(t, null, { optional: true }),\n });\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Type } from '@angular/core';\n\nimport { Observable, OperatorFunction } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type Nullable = T | null;\nexport type Optional = T | undefined;\n\nexport interface StringDictionary {\n [key: string]: TValue;\n}\nexport interface NumberDictionary {\n [key: number]: TValue;\n}\n\nexport type Omit = Pick>;\n\nexport type PropType = T[K];\n\nexport type SimpleCallback = () => void;\n\nexport function isDefined(obj: T | undefined): obj is T {\n return obj !== undefined;\n}\n\nexport function hasValue(obj: T | undefined | null): obj is T {\n return !!obj;\n}\n\nexport function ofType(type: Type): OperatorFunction {\n return (source$: Observable) => source$.pipe(filter(typeCheck(type)));\n}\n\nexport function filterDefined(): OperatorFunction {\n return (source$: Observable) => source$.pipe(filter(hasValue));\n}\n\nfunction typeCheck(type: Type): (obj: any) => obj is T {\n return (obj: any): obj is T => obj instanceof type;\n}\n\nexport function xor(first?: boolean, second?: boolean): boolean {\n return Boolean((first && !second) || (!first && second));\n}\n\n/**\n * @deprecated This function is deprecated and should not be used.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\nexport function exhaustiveCheckGuard(arg: never): any {}\n\nexport type ReverseEnumType = {\n [K in keyof T as T[K] extends string | number ? T[K] : never]: K;\n};\nexport function getReverseEnum(object: T): ReverseEnumType {\n return object as ReverseEnumType;\n}\n\nexport type KeysMatching = keyof {\n [K in keyof T as [T[K]] extends [V] ? K : never]: T[K];\n};\n\nexport function isPromise(obj: unknown): obj is Promise {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj === 'object' && 'then' in obj && typeof obj.then === 'function';\n}\n","export enum AngstromTagIdValues {\n Sgp = 'SGP',\n Popular = 'Popular',\n}\n","export enum Tv2MarketParameters {\n MarketType = 'MarketType',\n Happening = 'Happening',\n Period = 'Period',\n FixtureParticipant = 'FixtureParticipant',\n Handicap = 'Handicap',\n DecimalHandicap = 'DecimalHandicap',\n Places = 'Places',\n Position = 'Position',\n IntegerValue = 'IntegerValue',\n DecimalValue = 'DecimalValue',\n RangeValue = 'RangeValue',\n TemplateId = 'TemplateId', // hybrid mode only\n CategoryId = 'CategoryId', // hybrid mode only\n SubPeriodNumber = 'SubPeriodNumber',\n FixtureParticipantList = 'FixtureParticipantList',\n Lengths = 'Lengths',\n MarketSubType = 'MarketSubType',\n SubPeriod = 'SubPeriod',\n}\n\nexport enum MarketTypes {\n HeadToHead = 'HeadToHead',\n TwoWayHandicap = '2wayHandicap',\n Scorer = 'Scorer',\n MultiFPOverUnder = 'MultiFPOver/Under',\n HappeningToOccurV2 = 'HappeningToOccurV2',\n HappeningToOccurAndTeamToWin = 'HappeningToOccurAndTeamToWin',\n DynamicCorrectScore = 'DynamicCorrectScore',\n Spread = 'SPREAD',\n CorrectScore = 'CORRECT_SCORE',\n BetBuilder = 'BetBuilder',\n OverUnder = 'OVER_UNDER',\n TotalsOverUnder = 'TOTALS_OVER_UNDER',\n AutomatedPriceBoost = 'AutomatedPriceBoost',\n}\n\nexport enum HappeningValue {\n PassingYards = 'PassingYards',\n TouchdownPass = 'TouchdownPass',\n Points = 'Points',\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { OfferCategory, TemplateCategory } from '@cds/betting-offer';\nimport { FixtureViewGroupingConfiguration } from '@cds/betting-offer/grouping/fixture-view';\nimport { GridViewGroupingConfiguration } from '@cds/betting-offer/grouping/grid-view';\nimport { GridConfig, MarketGroupingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { usePreloaderData } from '@frontend/sports/common/core/utils/preloaded-data';\nimport { BaseCdsApi, BaseCdsApiFactory, CDS_API_FACTORY } from '@frontend/sports/content-distribution/feature';\nimport { Observable } from 'rxjs';\n\nexport interface FixtureContextRequest {\n category?: string;\n sportId?: number;\n regionIds?: number[];\n competitionIds?: number[];\n virtualCompetitionIds?: number;\n virtualCompetitionGroupIds?: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class OfferGroupingApi {\n private cdsApi: BaseCdsApi;\n\n constructor(\n @Inject(CDS_API_FACTORY) apiFactory: BaseCdsApiFactory,\n private marketGroupingConfig: MarketGroupingConfig,\n private gridConfig: GridConfig,\n ) {\n this.cdsApi = apiFactory({ endpoint: '/offer-grouping' });\n }\n\n getFixtureGrouping(sportId: number): Observable {\n return this.cdsApi.get(\n this.marketGroupingConfig.regionalisedGroupingEnabled ? '/fixture-view/regional' : '/fixture-view',\n {\n sportId,\n },\n );\n }\n\n getFixtureGroupingBatch(sportIds: number[]): Observable {\n return this.cdsApi.get(\n this.marketGroupingConfig.regionalisedGroupingEnabled ? '/fixture-view/batch/regional' : '/fixture-view/batch',\n {\n sportIds: sportIds.join(','),\n },\n );\n }\n\n @usePreloaderData({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n preloader: (window as any).MS2JS?.GridGroupLoader,\n })\n getGridGrouping(): Observable {\n return this.cdsApi.get(\n this.gridConfig.isRegionalisedGridEnabled ? '/grid-view/all/regional' : '/grid-view/all',\n );\n }\n\n getFixturesContext(request: FixtureContextRequest): Observable {\n const regionIds: number[] = [];\n const tournamentIds: number[] = [];\n\n if (request.regionIds) {\n if (request.sportId === SportConstant.Tennis) {\n tournamentIds.push(...request.regionIds);\n } else {\n regionIds.push(...request.regionIds);\n }\n }\n\n return this.cdsApi.get(`/non-gridable-categories`, {\n category: request.category || OfferCategory.NonGridable,\n sportId: request.sportId,\n regionIds: regionIds.join(','),\n tournamentIds: tournamentIds.join(','),\n competitionIds: (request.competitionIds ?? []).join(','),\n virtualCompetitionIds: request.virtualCompetitionIds,\n virtualCompetitionGroupIds: request.virtualCompetitionGroupIds,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { FixtureViewGroupingConfiguration, OfferGroup } from '@cds/betting-offer/grouping/fixture-view';\nimport { GridViewGroupingConfiguration } from '@cds/betting-offer/grouping/grid-view';\nimport { EnhancedFixtureViewGroupingConfiguration, EventDetailsTags, EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { ExpiringCache, ExpiringCacheFactory } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { ApiBaseSettingsProvider } from '@frontend/sports/content-distribution/feature';\nimport { LocalStoreService } from '@frontend/vanilla/core';\nimport { difference, isEqual, now, startsWith } from 'lodash-es';\nimport { Observable, combineLatest, filter, forkJoin, iif, of } from 'rxjs';\nimport { defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';\n\nimport { OfferGroupingApi } from './offer-grouping-api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class OfferGroupingService {\n private readonly sportGrouping = 'grouping-sport';\n private readonly gridGrouping = 'grouping-grid';\n private readonly groupingLanguage = 'grouping-lang';\n\n private readonly cache: ExpiringCache;\n private cacheNull: any = { null: null };\n private readonly lang: string;\n private invalidGridTimestamp: number | null = null;\n private readonly invalidGridTtl: number = 30 * 1000;\n\n constructor(\n private api: OfferGroupingApi,\n private storage: LocalStoreService,\n private apiBaseSettings: ApiBaseSettingsProvider,\n private expiringCacheFactory: ExpiringCacheFactory,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n this.cache = this.expiringCacheFactory.create(600);\n this.lang = this.apiBaseSettings.getSettings().lang;\n const groupingStorageKeys = this.getGroupingStorageKeys();\n if (this.isValidGroupingLang) {\n this.initCacheFromStorage(groupingStorageKeys);\n } else {\n this.clearStorageGroupingData(groupingStorageKeys);\n }\n }\n\n getFixtureGrouping(sportId: number, groupingVersion?: string): Observable {\n const key = `${this.sportGrouping}-${sportId}`;\n\n return this.cache.get(key).pipe(\n switchMap((cacheConfiguration) => {\n if (this.isValidGroupingId(cacheConfiguration, groupingVersion)) {\n return of(cacheConfiguration);\n }\n\n return this.getFixtureGroupingFromApi(sportId, key, groupingVersion);\n }),\n );\n }\n\n getFixtureGroupingForEventModel(eventModel: EventModel): Observable {\n return this.getFixtureGrouping(eventModel.sport.id, 'any').pipe(\n map((grouping) => {\n if (!grouping) {\n throw new Error(`Unable to load fixture grouping for the fixture id: ${eventModel.id}`);\n }\n\n return grouping;\n }),\n );\n }\n\n getGridGrouping(sportId: number): Observable {\n const key = this.gridGrouping;\n const source = this.api.getGridGrouping().pipe(\n tap((current) => {\n this.set(key, current);\n }),\n );\n\n return this.cache.getOrCreate(key, source).pipe(\n switchMap((value) => {\n // Drop invalid cache entry after its TTL is reached.\n // eslint-disable-next-line eqeqeq\n if (this.invalidGridTimestamp !== null && this.invalidGridTimestamp + this.invalidGridTtl < now()) {\n this.cache.remove(key);\n this.invalidGridTimestamp = null;\n\n return this.getGridGrouping(sportId);\n }\n // eslint-disable-next-line eqeqeq\n if (!value && this.invalidGridTimestamp === null) {\n this.invalidGridTimestamp = now();\n }\n\n return value ? of(value.find((group) => group.sportId === sportId)) : of(undefined);\n }),\n );\n }\n\n private getFixtureGroupingFromApi(\n sportId: number,\n key: string,\n groupingVersion?: string,\n ): Observable {\n return this.api.getFixtureGrouping(sportId).pipe(\n switchMap((grouping) => {\n if (grouping && this.isValidGroupingId(grouping, groupingVersion)) {\n return this.cache.create(key, of(this.enhanceGrouping(grouping)));\n }\n\n return of(grouping ? this.enhanceGrouping(grouping) : grouping);\n }),\n tap((grouping) => {\n if (this.isValidGroupingId(grouping, groupingVersion)) {\n this.set(key, grouping);\n }\n }),\n );\n }\n\n private enhanceGrouping(grouping: FixtureViewGroupingConfiguration): EnhancedFixtureViewGroupingConfiguration {\n const apbGroups: OfferGroup[] = [];\n const preCreatedGroups: OfferGroup[] = [];\n\n for (const group of grouping.marketGroups) {\n const offerGroup: OfferGroup = this.createOfferGroup(group, EventDetailsTags.PriceBoost);\n const offerGroupBAB: OfferGroup = this.createOfferGroup(group, EventDetailsTags.PreCreatedBab);\n\n if (offerGroup.marketGroupItems.length > 0) {\n apbGroups.push(offerGroup);\n }\n\n if (offerGroupBAB.marketGroupItems.length > 0) {\n preCreatedGroups.push(offerGroupBAB);\n }\n }\n\n return {\n ...grouping,\n preCreatedGroups,\n apbGroups,\n };\n }\n\n private createOfferGroup(group: OfferGroup, tag: string): OfferGroup {\n const offerGroup: OfferGroup = {\n marketGroupItems: group.marketGroupItems.filter((item) => item.tags.some((x) => x.key === tag)),\n groupId: group.groupId,\n id: group.id,\n name: group.name,\n tag: group.tag,\n };\n\n return offerGroup;\n }\n\n getFixtureGroupingForSports(sportIds: number[], groupingVersion?: string): Observable {\n return forkJoin(\n sportIds.map((id) =>\n this.cache.get(`${this.sportGrouping}-${id}`).pipe(\n filter((c) => this.isValidGroupingId(c, groupingVersion)),\n map((c) => c),\n filter(Boolean),\n ),\n ),\n ).pipe(\n // in case none of them are cached yet, continue with empty\n defaultIfEmpty([]),\n switchMap((validConfigs) => {\n const missingConfigSportIds = difference(\n sportIds,\n validConfigs.map((c) => c.sportId),\n );\n\n return combineLatest([\n of(validConfigs),\n iif(() => missingConfigSportIds.length > 0, this.fetchAndCacheFixtureGroupings(missingConfigSportIds, groupingVersion), of([])),\n ]);\n }),\n map(([cachedConfigs, fetchedConfigs]) => [...cachedConfigs, ...fetchedConfigs]),\n );\n }\n\n private fetchAndCacheFixtureGroupings(sportIds: number[], groupingVersion?: string): Observable {\n return this.api.getFixtureGroupingBatch(sportIds).pipe(\n switchMap((groupings) =>\n forkJoin(\n groupings?.map((g) => {\n if (this.isValidGroupingId(g, groupingVersion)) {\n return this.cache.create(`${this.sportGrouping}-${g.sportId}`, of(this.enhanceGrouping(g)));\n }\n\n return of(g ? this.enhanceGrouping(g) : g);\n }) ?? [],\n ),\n ),\n tap((fetchGroupings) => {\n fetchGroupings.forEach((fg) => {\n if (this.isValidGroupingId(fg, groupingVersion)) {\n this.set(`${this.sportGrouping}-${fg.sportId}`, fg);\n }\n });\n }),\n );\n }\n\n private isValidGroupingId(groupingConfiguration: FixtureViewGroupingConfiguration | undefined, groupingVersion?: string): boolean {\n return !!(groupingConfiguration && (groupingVersion === 'any' || groupingVersion === groupingConfiguration.version));\n }\n\n private set(key: string, value: T | undefined | null): void {\n this.storage.set(key, value ?? this.cacheNull);\n }\n\n private get(key: string): T | undefined {\n const value = this.storage.get(key);\n\n if (isEqual(value, this.cacheNull)) {\n return undefined;\n }\n\n return value as T;\n }\n\n private remove(key: string): void {\n this.storage.remove(key);\n }\n\n private getGroupingStorageKeys(): string[] {\n const keyPrefixes = [this.gridGrouping, this.sportGrouping];\n\n return this.storage.keys().filter((key) => keyPrefixes.some((current) => startsWith(key, current)));\n }\n\n private get isValidGroupingLang(): boolean {\n return this.get(this.groupingLanguage) === this.lang;\n }\n\n private clearStorageGroupingData(groupingStorageKeys: string[]): void {\n groupingStorageKeys.forEach((key) => {\n this.remove(key);\n });\n this.set(this.groupingLanguage, this.lang);\n }\n\n private initCacheFromStorage(groupingStorageKeys: string[]): void {\n groupingStorageKeys.forEach((key) => {\n this.cache.getOrCreate(key, of(this.get(key)));\n });\n }\n}\n","//consider typing market type in cds parameter and providing this from @cds/types\nexport enum MarketType {\n ThreeWay = 'ThreeWay',\n ThreeWayWithNumber = '3way',\n OverUnder = 'OverUnder',\n DoubleChance = 'DoubleChance',\n DrawNoBet = 'DrawNoBet',\n Handicap = 'Handicap',\n CorrectScore = 'CorrectScore',\n DynamicCorrectScore = 'DynamicCorrectScore',\n GoalBand = 'GoalBand',\n GoalMethod = 'GoalMethod',\n OddEven = 'OddEven',\n HomeAwayNoBet = 'HomeAwayNoBet',\n WinningDifference = 'WinningDifference',\n XthHappening = 'XthHappening',\n Scorer = 'Scorer',\n ScorerWithAnyOther = 'ScorerWithAnyOther',\n ScorerWithoutNoScoreOption = 'ScorerWithoutNoScoreOption',\n OverAndUnder = 'Over/Under',\n}\n//consider typing market type in cds parameter and providing this from @cds/types\nexport enum PeriodType {\n RegularTime = 'RegularTime',\n FirstHalf = 'FirstHalf',\n SecondHalf = 'SecondHalf',\n ExtraTime = 'ExtraTime',\n}\n//consider typing market type in cds parameter and providing this from @cds/types\nexport enum HappeningType {\n Goal = 'Goal',\n Foul = 'Foul',\n FreeKick = 'FreeKick',\n Corner = 'Corner',\n ThrowIn = 'ThrowIn',\n GoalKick = 'GoalKick',\n Penalty = 'Penalty',\n Offside = 'Offside',\n Kickoff = 'Kickoff',\n YellowCard = 'YellowCard',\n RedCard = 'RedCard',\n Substitution = 'Substitution',\n PassingYards = 'PassingYards',\n RushingYards = 'RushingYards',\n ReceivingYards = 'ReceivingYards',\n RushingReceivingYards = 'RushingReceivingYards',\n}\n\nexport enum MarketSubType {\n TwoUp3wayPricing = '2Up3wayPricing',\n YesNo = 'YesNo',\n}\n","/* eslint-disable max-lines */\nimport { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { DisplayType, FixtureParticipantType } from '@cds/betting-offer';\nimport { BetBuilderOptionGroupInfo } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { OfferGroup, Tag } from '@cds/betting-offer/grouping/fixture-view';\nimport {\n EnhancedFixtureViewGroupingConfiguration,\n EventOptionGroup,\n EventOptionGroupType,\n EventOptionSet,\n ExtendedDisplayType,\n Tv2MarketParameters,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { AngstromTagIdValues } from '@frontend/sports/betting-offer/feature/types';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { clone, findIndex, isEqual, sortBy, toNumber, uniq, uniqWith } from 'lodash-es';\n\ninterface GroupingFactory {\n canProcess(source: OfferSource | undefined): boolean;\n getMarketGroupsConfig(grouping: EnhancedFixtureViewGroupingConfiguration): OfferGroup[];\n}\n\nexport enum PreCreatedBuildABet {\n PreCreated = 'BAB',\n}\n\nclass GameMarketGroupingFactory implements GroupingFactory {\n canProcess(source: OfferSource | undefined): boolean {\n return source === OfferSource.V1;\n }\n\n getMarketGroupsConfig(grouping: EnhancedFixtureViewGroupingConfiguration): OfferGroup[] {\n return grouping.marketGroups;\n }\n}\n\nclass OptionMarketGroupingFactory implements GroupingFactory {\n canProcess(source: OfferSource | undefined): boolean {\n return source === OfferSource.V2;\n }\n\n getMarketGroupsConfig(grouping: EnhancedFixtureViewGroupingConfiguration): OfferGroup[] {\n return grouping.marketGroups;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DetailedGroupingFactory {\n private factories = [new GameMarketGroupingFactory(), new OptionMarketGroupingFactory()];\n\n private readonly logger: SportsRemoteLogger;\n\n constructor(loggerFactory: LoggerFactory) {\n this.logger = loggerFactory.getLogger('DetailedGroupingFactory');\n }\n\n getOptionSets(\n optionGroups: EventOptionGroup[],\n grouping: EnhancedFixtureViewGroupingConfiguration,\n source: OfferSource | undefined,\n betBuilderId?: string | null,\n ): EventOptionSet[] {\n const optionSets: EventOptionSet[] = [];\n const marketGroups: OfferGroup[] = this.getMarketGroupsConfig(grouping, source);\n\n marketGroups.forEach((marketGroup) => {\n const selectedOptionGroups = optionGroups\n .filter((optionGroup) => optionGroup.detailedGrouping.marketSet === marketGroup.id)\n .filter((optionGroup) => (this.isSgpGroup(marketGroup) ? optionGroup.isBetBuilder : true));\n\n if (!selectedOptionGroups.length) {\n return;\n }\n\n optionSets.push({\n id: marketGroup.id,\n name: this.isSgpGroup(marketGroup) ? (marketGroup.tag?.value ?? marketGroup.name) : marketGroup.name,\n count: selectedOptionGroups.length,\n storageId: marketGroup.groupId,\n tags: this.getTags(selectedOptionGroups, marketGroup, grouping),\n marketGroupTag: marketGroup.tag,\n isPrecreated: selectedOptionGroups.every((og) => og.detailedGrouping?.displayType === ExtendedDisplayType.BetBuilder),\n });\n });\n\n if (!betBuilderId) {\n const sgpIndex = findIndex(optionSets, (e) => e.marketGroupTag?.key === AngstromTagIdValues.Sgp && e.name === e.marketGroupTag?.value);\n if (sgpIndex !== -1) {\n optionSets.splice(sgpIndex, 1);\n }\n }\n\n return this.fakeMarketGroupingIfNotFound(optionGroups, optionSets);\n }\n\n groupMarkets(optionGroups: EventOptionGroup[], restrictPeriodGrouping?: boolean, restrictSorting?: boolean): EventOptionGroup[] {\n const groupedMarkets: EventOptionGroup[] = [];\n\n const preSortedOptionGroups: EventOptionGroup[] = [];\n if (!restrictSorting) {\n preSortedOptionGroups.push(...this.sortMarkets(optionGroups));\n } else {\n preSortedOptionGroups.push(...optionGroups);\n }\n\n const marketSetIds = uniq(preSortedOptionGroups.map((optionGroup) => optionGroup.detailedGrouping.marketSet));\n marketSetIds.forEach((setId) => {\n const marketGroupMarkets = preSortedOptionGroups.filter((optionGroup) => optionGroup.detailedGrouping.marketSet === setId);\n const groupedMarketGroupMarkets: EventOptionGroup[] = [];\n\n groupedMarketGroupMarkets.push(\n ...marketGroupMarkets.filter(\n (market) => market.detailedGrouping.marketGroup === undefined && market.detailedGrouping.periodGroup === undefined,\n ),\n );\n if (restrictPeriodGrouping) {\n groupedMarketGroupMarkets.push(\n ...marketGroupMarkets.filter(\n (market) => market.detailedGrouping.marketGroup === undefined && market.detailedGrouping.periodGroup !== undefined,\n ),\n );\n } else {\n groupedMarketGroupMarkets.push(\n ...this.groupMarketsByPeriods(\n marketGroupMarkets.filter(\n (market) => market.detailedGrouping.marketGroup === undefined && market.detailedGrouping.periodGroup !== undefined,\n ),\n ),\n );\n }\n groupedMarketGroupMarkets.push(\n ...this.groupMarketsBySubGroups(marketGroupMarkets.filter((market) => market.detailedGrouping.marketGroup !== undefined)),\n );\n if (!restrictSorting) {\n groupedMarkets.push(...this.sortMarkets(groupedMarketGroupMarkets));\n } else {\n groupedMarkets.push(...groupedMarketGroupMarkets);\n }\n });\n\n return groupedMarkets;\n }\n\n transformEventGroupsPerPrecreatedGroup(\n optionGroups: EventOptionGroup[],\n precreatedOptionGroups: BetBuilderOptionGroupInfo[],\n ): EventOptionGroup[] {\n const transformedOptionGroups: EventOptionGroup[] = [];\n const marketSetIds = uniq(optionGroups.map((optionGroup) => optionGroup.detailedGrouping.marketSet));\n marketSetIds.forEach((setId) => {\n const optionGroupsBySetId = optionGroups.filter((optionGroup) => optionGroup.detailedGrouping.marketSet === setId);\n\n // we are transforming the event groups so that we end up with one event group per precreated group, with several options in it\n precreatedOptionGroups.forEach((precreatedGroup) => {\n const eventOptionGroups = optionGroupsBySetId.filter((market) =>\n precreatedGroup.options.some((o) => o.marketId.toString() === market.id),\n );\n\n if (eventOptionGroups.length === 0) {\n return;\n }\n\n const eventOptionsCount = uniq(\n eventOptionGroups\n .flatMap((og) => og.options)\n .filter((op) => precreatedGroup.options.some((pgo) => op.id === pgo.id))\n .map((option) => option.id),\n ).length;\n\n if (eventOptionsCount !== precreatedGroup.options.length) {\n this.logger.warning(\n `Precreated group '${precreatedGroup.groupId}' resolved with invalid amount of options: expected ${precreatedGroup.options.length}, resolved ${eventOptionsCount}, fixture: ${precreatedGroup.options[0].fixtureId}`,\n );\n\n return;\n }\n\n const newGroupWithAllOptions = this.groupOptions(eventOptionGroups);\n newGroupWithAllOptions.id = precreatedGroup.groupId;\n transformedOptionGroups.push(newGroupWithAllOptions);\n });\n });\n\n return transformedOptionGroups;\n }\n\n createSubGroup(markets: EventOptionGroup[]): EventOptionGroup {\n const subGroupMarkets = this.sortSubGroupMarkets(markets);\n\n return this.groupOptions(subGroupMarkets);\n }\n\n private fakeMarketGroupingIfNotFound(optionGroups: EventOptionGroup[], optionSets: EventOptionSet[]): EventOptionSet[] {\n if (!optionSets.length && optionGroups.length) {\n // eslint-disable-next-line no-param-reassign\n optionGroups.forEach((g) => (g.detailedGrouping.marketSet = 10000));\n\n optionSets.push({\n id: 10000,\n name: 'All',\n count: optionGroups.length,\n storageId: '',\n });\n }\n\n return optionSets;\n }\n\n private groupMarketsBySubGroups(markets: EventOptionGroup[]): EventOptionGroup[] {\n const groupedMarkets: EventOptionGroup[] = [];\n const subGroupIds = uniq(markets.map((market) => this.getSubGroupId(market)));\n\n subGroupIds.forEach((subGroupId) => {\n const subGroupMarkets = markets.filter((market) => this.getSubGroupId(market) === subGroupId);\n const periodOptionGroup = this.getPeriodOptionGroup(subGroupMarkets);\n if (periodOptionGroup) {\n groupedMarkets.push(periodOptionGroup);\n } else {\n groupedMarkets.push(this.createSubGroup(subGroupMarkets));\n }\n });\n\n return groupedMarkets;\n }\n\n private getSubGroupId(market: EventOptionGroup): string | number {\n if (market.subPeriodNumber) {\n return `${market.detailedGrouping.marketOrder}sub-period${market.subPeriodNumber}`;\n }\n\n if (market.rangeValue) {\n return `${market.detailedGrouping.marketOrder}${market.rangeValue}`;\n }\n\n if (market.participantIds) {\n if (\n (market.detailedGrouping.displayType === DisplayType.SixPack &&\n !market.sixPackGridGroupId) /* obsolete check (kept only for backwards compatibility) */ ||\n market.detailedGrouping.displayType === DisplayType.Head2HeadSixPack\n ) {\n return `${market.parameters?.find((p) => p.key === Tv2MarketParameters.Happening)?.value}${market.detailedGrouping.displayType}${market.participantIds}`;\n }\n\n return `${market.detailedGrouping.marketOrder}${market.participantIds}`;\n }\n\n const fixtureParticipant = market.parameters?.find((param) => param.key === Tv2MarketParameters.FixtureParticipant);\n\n if (market.detailedGrouping.fixtureParticipantType === FixtureParticipantType.Other && fixtureParticipant) {\n return `${market.detailedGrouping.marketOrder}${fixtureParticipant.value}`;\n }\n\n return market.detailedGrouping.marketOrder;\n }\n\n protected getPeriodOptionGroup(markets: EventOptionGroup[]): EventOptionGroup | undefined {\n if (!markets) {\n return;\n }\n const periodMarkets = this.createEventOptionGroupByPeriodIdDictionary(markets);\n const periodKeys = sortBy(\n Object.keys(periodMarkets).map((x) => {\n return toNumber(x);\n }),\n );\n\n const periodGroupedMarkets: EventOptionGroup[] = [];\n if (periodKeys.length > 1) {\n periodKeys.forEach((k) => {\n periodGroupedMarkets.push(this.createSubGroup(periodMarkets[k]));\n });\n\n return this.createPeriodOptionGroup(periodGroupedMarkets[0], periodGroupedMarkets);\n } else if (periodKeys.length === 1) {\n periodGroupedMarkets[0] = this.groupOptions(periodMarkets[periodKeys[0]]);\n\n return this.singlePeriodOptionGroup(periodGroupedMarkets[0]);\n }\n\n return undefined;\n }\n\n protected createEventOptionGroupByPeriodIdDictionary(optionGroups: EventOptionGroup[]): Record {\n const res: EventOptionGroup[][] = [];\n for (const optionGroup of optionGroups) {\n if (typeof optionGroup.detailedGrouping.periodGroup === 'undefined') {\n continue;\n }\n res[optionGroup.detailedGrouping.periodGroup] = res[optionGroup.detailedGrouping.periodGroup] || [];\n res[optionGroup.detailedGrouping.periodGroup].push(optionGroup);\n }\n\n return res;\n }\n\n private createEventOptionGroupByMarketOrderIdWithPeriodDictionary(optionGroups: EventOptionGroup[]): EventOptionGroup[][] {\n const res: EventOptionGroup[][] = [];\n for (const optionGroup of optionGroups) {\n if (typeof optionGroup.detailedGrouping.marketOrder === 'undefined' || typeof optionGroup.detailedGrouping.periodGroup === 'undefined') {\n continue;\n }\n res[optionGroup.detailedGrouping.marketOrder] = res[optionGroup.detailedGrouping.marketOrder] || [];\n res[optionGroup.detailedGrouping.marketOrder].push(optionGroup);\n }\n\n return res;\n }\n\n private groupMarketsByPeriods(markets: EventOptionGroup[]): EventOptionGroup[] {\n const groupedMarkets: EventOptionGroup[] = [];\n\n const marketOrderMarkets = this.createEventOptionGroupByMarketOrderIdWithPeriodDictionary(markets);\n\n marketOrderMarkets.forEach((k) => {\n const periodOptionGroup = this.getPeriodOptionGroup(k);\n if (periodOptionGroup) {\n groupedMarkets.push(periodOptionGroup);\n } else {\n if (k[0]) {\n groupedMarkets.push(k[0]);\n }\n }\n });\n\n return groupedMarkets;\n }\n\n protected singlePeriodOptionGroup(periodGroup: EventOptionGroup): EventOptionGroup {\n // eslint-disable-next-line no-param-reassign\n periodGroup.id = this.getGroupId(periodGroup.detailedGrouping.displayType, periodGroup.id);\n // eslint-disable-next-line no-param-reassign\n periodGroup.name = this.getOptionGroupName(periodGroup);\n\n return periodGroup;\n }\n\n protected createPeriodOptionGroup(root: EventOptionGroup, subGroups: EventOptionGroup[]): EventOptionGroup {\n const periodGroup = clone(root);\n periodGroup.id = this.getGroupId(periodGroup.detailedGrouping.displayType, periodGroup.id);\n periodGroup.options = [];\n // eslint-disable-next-line no-param-reassign\n subGroups.forEach((s) => (s.type = EventOptionGroupType.Period));\n periodGroup.subGroups = subGroups;\n periodGroup.name = this.getOptionGroupName(periodGroup);\n\n if (\n periodGroup.detailedGrouping.displayType === DisplayType.PlayerMilestone ||\n periodGroup.detailedGrouping.displayType === DisplayType.PlayerMilestoneOverUnder\n ) {\n periodGroup.online = subGroups.some((x) => x.online);\n periodGroup.visible = subGroups.some((x) => x.visible);\n }\n\n return periodGroup;\n }\n\n protected groupOptions(markets: EventOptionGroup[]): EventOptionGroup {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstMarket = markets.shift()!;\n const optionGroup = Object.assign(new EventOptionGroup(), { ...firstMarket, options: [...firstMarket.options] });\n optionGroup.id = this.getGroupId(optionGroup.detailedGrouping.displayType, optionGroup.id, 'group');\n optionGroup.originalId = firstMarket.id;\n\n if (!markets.length) {\n if (this.isPlayer_OptionGroup(optionGroup)) {\n optionGroup.name = this.getOptionGroupName(optionGroup);\n }\n\n return optionGroup;\n }\n\n optionGroup.groupedMarkets = markets.map((m) => m.id);\n\n optionGroup.groupedTemplateIds = markets.map((m) => m.templateId);\n markets.forEach((market) => {\n optionGroup.options.push(...market.options);\n });\n\n optionGroup.online = optionGroup.options.some((group) => group.online);\n optionGroup.name = this.getOptionGroupName(optionGroup);\n\n return optionGroup;\n }\n\n private sortSubGroupMarkets(markets: EventOptionGroup[]): EventOptionGroup[] {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return markets.sort((first, second) => first.detailedGrouping.marketGroup! - second.detailedGrouping.marketGroup!);\n }\n\n private sortMarkets(markets: EventOptionGroup[]): EventOptionGroup[] {\n return markets\n .sort((first, second) => +first.id.slice(2) - +second.id.slice(2))\n .sort((first, second) => first.detailedGrouping.marketOrder - second.detailedGrouping.marketOrder);\n }\n\n private getMarketGroupsConfig(grouping: EnhancedFixtureViewGroupingConfiguration, source: OfferSource | undefined): OfferGroup[] {\n for (const factory of this.factories) {\n if (factory.canProcess(source)) {\n return factory.getMarketGroupsConfig(grouping);\n }\n }\n\n throw new Error('No grouping factory found for grouping configuration');\n }\n\n // eslint-disable-next-line complexity\n private getOptionGroupName(optionGroup: EventOptionGroup): string {\n if (optionGroup.detailedGrouping.periodGroup !== undefined && !optionGroup.subGroups) {\n switch (optionGroup.detailedGrouping.displayType) {\n case DisplayType.RaceTo:\n case DisplayType.BTTS:\n case DisplayType.Outrights:\n case DisplayType.TotalScore:\n case DisplayType.YesNo:\n case DisplayType.Spread:\n return optionGroup.detailedGrouping.name || optionGroup.name;\n case DisplayType.Regular:\n case DisplayType.CorrectScore:\n case DisplayType.OverUnder:\n return optionGroup.name;\n case DisplayType.PlayerProps:\n case DisplayType.SixPack:\n return optionGroup.sixPackGridGroupId\n ? optionGroup.periodName || optionGroup.name\n : `${optionGroup.detailedGrouping.name || optionGroup.name} - ${optionGroup.periodName}`;\n default:\n return optionGroup.detailedGrouping.name || optionGroup.name;\n }\n }\n if (optionGroup.detailedGrouping.name === PreCreatedBuildABet.PreCreated) {\n return optionGroup.name || optionGroup.detailedGrouping.name;\n } else {\n return optionGroup.detailedGrouping.name || optionGroup.name;\n }\n }\n\n private getGroupId(displayType: DisplayType | ExtendedDisplayType, groupId: string, groupType = 'period'): string {\n return `${groupType}-${displayType}-${groupId}`;\n }\n\n private isPlayer_OptionGroup(optionGroup: EventOptionGroup): boolean {\n const displayType = optionGroup.detailedGrouping.displayType;\n\n return (\n displayType === DisplayType.PlayerMilestone ||\n displayType === DisplayType.PlayerCombined ||\n displayType === DisplayType.PlayerStats ||\n displayType === DisplayType.PlayerMilestoneOverUnder\n );\n }\n\n private isSgpGroup(group: OfferGroup): boolean {\n return group.tag?.key === AngstromTagIdValues.Sgp;\n }\n\n private getTags(selectedOptionGroups: EventOptionGroup[], marketGroup: OfferGroup, grouping: EnhancedFixtureViewGroupingConfiguration): Tag[] {\n const availableTags = selectedOptionGroups.flatMap((gr) => gr.detailedGrouping.tags || []);\n const tags = availableTags ? uniqWith(availableTags, isEqual) : [];\n\n if (this.isSgpGroup(marketGroup)) {\n const tagOrder = this.getTagOrder(grouping);\n if (tagOrder) {\n this.sortTags(tags, tagOrder);\n }\n }\n\n return tags;\n }\n\n private getTagOrder(grouping: EnhancedFixtureViewGroupingConfiguration): Tag[] | undefined {\n const sgpMarketGroup = grouping?.marketGroups.filter((x) => x.tag?.key === AngstromTagIdValues.Sgp);\n\n if (sgpMarketGroup) {\n const allTags = sgpMarketGroup[0].marketGroupItems.flatMap((x) => x.tags);\n const uniqueTags = allTags ? uniqWith(allTags, isEqual) : [];\n\n if (uniqueTags.length > 0 && uniqueTags[0].key === AngstromTagIdValues.Popular) {\n return uniqueTags;\n }\n\n return uniqueTags.sort((a, b) => (a.key === AngstromTagIdValues.Popular ? -1 : b.key === AngstromTagIdValues.Popular ? 1 : 0));\n }\n\n return undefined;\n }\n\n private sortTags(tags: Tag[], tagsInOrder: Tag[]): Tag[] | undefined {\n const tagOrder = new Map(tagsInOrder.map((tag, index) => [tag.key, index]));\n\n return tags.sort((a, b) => {\n const indexA = tagOrder.get(a.key) ?? Number.MAX_SAFE_INTEGER;\n const indexB = tagOrder.get(b.key) ?? Number.MAX_SAFE_INTEGER;\n return indexA - indexB;\n });\n }\n}\n","import { OfferSource } from '@cds';\nimport { Fixture, FixtureViewType, HybridFixtureData, HybridFixtureStatus, Participant, ParticipantType } from '@cds/betting-offer';\nimport { Competition } from '@cds/betting-offer/tags';\nimport { EventParticipant, EventParticipantType, LeagueModel, SportModel } from '@frontend/sports/betting-offer/feature/model';\nimport { clone, includes } from 'lodash-es';\n\nexport function mapLeague(competition: Competition, stageId?: number, groupId?: number): LeagueModel {\n return competition\n ? {\n id: competition.virtualCompetitionId || competition.id,\n name: competition.name.short || competition.name.value,\n sign: competition.name.short ? competition.name.shortSign : competition.name.sign,\n parentLeagueId: competition.parentLeagueId,\n groupId,\n stageId,\n realCompetitionId: competition.virtualCompetitionId ? competition.id : undefined,\n imageProfile: competition.imageProfile,\n }\n : {\n id: 0,\n name: '',\n };\n}\n\nexport function mapSport(fixture: Fixture): SportModel {\n return {\n id: fixture.sport.id,\n name: fixture.sport.name.value,\n virtual: fixture.isVirtual,\n sign: fixture.sport.name.sign,\n isEsport: fixture.sport.isEsport,\n };\n}\n\nexport function mapParticipants(participants: Participant[], fixtureViewType: FixtureViewType, hybridData: HybridFixtureData): EventParticipant[] {\n if (hybridData?.status === HybridFixtureStatus.Ok) {\n // eslint-disable-next-line no-param-reassign\n participants = participants.filter((p) => p.source === OfferSource.V1);\n }\n\n return mapToEventParticipants(participants, fixtureViewType);\n}\n\nexport function mapToEventParticipants(participants: Participant[], fixtureViewType: FixtureViewType): EventParticipant[] {\n if (fixtureViewType !== FixtureViewType.American && participants.length === 2 && participants[0].properties?.type === ParticipantType.AwayTeam) {\n participants.reverse();\n }\n\n const eventParticipants = participants.map((participant) => {\n let name = participant.name.value;\n let country: string | undefined;\n const countryCount = name.split('(').length - 1;\n if (countryCount >= 2) {\n const regExp = /\\(([^)]+)\\)/g;\n const matches = name.match(regExp);\n const countries: string[] = [];\n matches &&\n matches.forEach((countryInfo) => {\n countries.push(countryInfo.substring(1, countryInfo.length - 1));\n });\n country = countries.join('/');\n name = name\n .replace(/\\\\*\\([^)]*\\)\\\\*/g, '')\n .trim()\n .replace(/ \\//g, '/');\n } else {\n const openIndex = name.indexOf('(');\n const closeIndex = name.indexOf(')');\n if (openIndex + closeIndex > -2) {\n country = name.slice(openIndex + 1, closeIndex);\n name = name.slice(0, openIndex - 1);\n }\n }\n\n return {\n id: participant.participantId,\n fixtureParticipantId: participant.id,\n shortName: participant.name.short,\n name,\n country,\n image: clone(participant.image),\n source: participant.source,\n };\n });\n\n // trying to add Home/Away info to participants\n if (eventParticipants.length === 2 && (fixtureViewType === FixtureViewType.American || fixtureViewType === FixtureViewType.European)) {\n const homeTeam = fixtureViewType === FixtureViewType.European ? 0 : 1;\n const awayTeam = fixtureViewType === FixtureViewType.European ? 1 : 0;\n\n eventParticipants[homeTeam].type = EventParticipantType.Home;\n eventParticipants[awayTeam].type = EventParticipantType.Away;\n }\n\n return eventParticipants;\n}\n\nexport function isPlayer(participant: Participant): boolean {\n const participantTypesPlayer = [ParticipantType.Player, ParticipantType.AwayPlayer, ParticipantType.HomePlayer];\n\n return includes(participantTypesPlayer, participant.properties?.type);\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\nimport { Injectable } from '@angular/core';\n\nimport { DisplayType, Fixture, FixtureStage, FixtureViewType, OfferCategory, OptionMarket, Participant } from '@cds/betting-offer';\nimport { BetBuilderProvider, StreamProvider } from '@cds/betting-offer/add-ons';\nimport { Rank } from '@cds/betting-offer/add-ons/statistics';\nimport { BetBuilderOptionGroupInfo } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { ScoreboardSlim } from '@cds/scoreboards/v1';\nimport {\n BetBuilderInfo,\n EventModel,\n EventParticipant,\n EventParticipantType,\n EventStream,\n FeedType,\n RegionModel,\n Tv2MarketParameters,\n getProvider,\n} from '@frontend/sports/betting-offer/feature/model';\nimport {\n BetBuilderConfig,\n ImgConfigurationData,\n MarketGroupingConfig,\n MediaConfig,\n OverrideStatisticsConfig,\n} from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { MarketTypeWithDisplayName } from '@frontend/sports/types/configuration';\nimport { UrlService } from '@frontend/vanilla/core';\nimport { clone } from 'lodash-es';\n\nimport { isPlayer, mapLeague, mapParticipants, mapSport, mapToEventParticipants } from '../helpers/event-mapper';\nimport { ScoreboardFactory } from './scoreboard-factory.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CommonFixtureFactory {\n constructor(\n private mediaConfig: MediaConfig,\n private imgConfig: ImgConfigurationData,\n private scoreboardFactory: ScoreboardFactory,\n private marketGroupingConfig: MarketGroupingConfig,\n private overrideStatisticsConfig: OverrideStatisticsConfig,\n private betBuilderConfig: BetBuilderConfig,\n private urlService: UrlService,\n ) {}\n\n //TODO please refactor when you are modifying this function, and remove the above eslint rule bypass, this function is awful!\n // eslint-disable-next-line max-lines-per-function\n create(fixture: Fixture, sourceId?: string, precreatedOptionGroupInfo?: BetBuilderOptionGroupInfo[]): EventModel {\n const model = new EventModel();\n\n model.id = sourceId ?? fixture.id;\n\n model.name = fixture.name.short || fixture.name.value;\n model.nameSign = fixture.name.short ? fixture.name.shortSign : fixture.name.sign;\n model.description = fixture.description?.value;\n model.sport = mapSport(fixture);\n model.region = this.mapRegion(fixture);\n\n model.league = mapLeague(fixture.competition, fixture.tradingStage?.id || fixture.group?.parentId, fixture.group?.id);\n\n model.startDate = new Date(fixture.startDate);\n model.cutOffDate = new Date(fixture.cutOffDate);\n model.live = fixture.stage === FixtureStage.Live;\n model.groupId = fixture.groupId;\n model.liveAlert = fixture.liveAlert;\n model.betBuilderFixtureId = fixture.addons?.betBuilderFixture;\n model.sportcastId = fixture.addons?.sportcastId;\n model.betBuilderTradingV2FixtureId = fixture.addons?.betBuilderTradingV2FixtureId;\n model.online = fixture.isOpenForBetting;\n\n model.runningBallDataId = this.setMatchSimulation(fixture);\n model.participants = mapParticipants(\n fixture.participants.filter((p) => !isPlayer(p)),\n fixture.viewType === FixtureViewType.NotSet ? FixtureViewType.European : fixture.viewType,\n fixture.hybridFixtureData,\n );\n model.teams = this.mapTeams(\n fixture.participants.filter((p) => !isPlayer(p)),\n fixture.viewType === FixtureViewType.NotSet ? FixtureViewType.European : fixture.viewType,\n );\n model.players = this.mapPlayers(fixture.participants.filter((p) => isPlayer(p)));\n\n model.gamesCount = this.getMarketsCount(fixture);\n\n model.offerSource = fixture.source;\n model.offerContext = fixture.contexts;\n model.fixtureType = fixture.fixtureType;\n model.hasLeagueStats = fixture.competition && fixture.competition.statistics!;\n model.competitionGroupId = fixture.group?.id;\n model.rank = this.getRanks(fixture.sport.id, fixture.competition.id, model.participants);\n\n if (fixture.addons) {\n model.surface = fixture.addons.surface;\n model.statsId = fixture.addons.betRadar!;\n model.hasFixtureStats = fixture.addons.statistics!;\n model.provider = getProvider(fixture.addons);\n model.fixtureForm = fixture.addons.fixtureStatistics?.fixtureForm;\n model.seasonStandings = fixture.addons.fixtureStatistics?.seasonStandings;\n model.startingPitcher = fixture.addons.fixtureStatistics?.startingPitcher;\n model.stream = this.getStream(fixture);\n\n if (fixture.addons.imgEventId) {\n model.imgEventId = this.setImgAnimation(fixture);\n }\n if (fixture.addons.liveMatchTracker) {\n model.betRadarVisualizationId = fixture.addons.liveMatchTracker.sportradarId;\n model.betRadarCoverageLevel = fixture.addons.liveMatchTracker.coverageLevel;\n }\n }\n model.viewType = fixture.viewType;\n model.scoreboard = this.scoreboardFactory.createScoreboard(fixture.scoreboard as ScoreboardSlim, model);\n model.totalMarketsCount = fixture.totalMarketsCount;\n model.priceBoostCount = fixture.priceBoostCount;\n model.hybridFixtureData = fixture.hybridFixtureData;\n model.offerCategories = this.getOfferCategories(fixture);\n model.betBuilderInfo = this.mapBetBuilderInfo(fixture, model);\n\n if (precreatedOptionGroupInfo && precreatedOptionGroupInfo.length > 0) {\n model.precreatedOptionGroups = precreatedOptionGroupInfo;\n }\n\n return model;\n }\n\n update(model: EventModel, openForBetting: boolean, stage: FixtureStage): void {\n // eslint-disable-next-line no-param-reassign\n model.live = stage === FixtureStage.Live;\n\n if (model.online === openForBetting) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n model.online = openForBetting;\n model.optionGroups.forEach((optionGroup) => {\n // eslint-disable-next-line no-param-reassign\n optionGroup.options.forEach((option) => (option.online = openForBetting && option.visible));\n // eslint-disable-next-line no-param-reassign\n optionGroup.online = openForBetting && optionGroup.visible;\n });\n }\n\n updateScoreboard(serverScoreboard: ScoreboardSlim, model: EventModel): void {\n // eslint-disable-next-line no-param-reassign\n model.scoreboard = this.scoreboardFactory.createScoreboard(serverScoreboard, model);\n }\n\n private getMarketsCount(fixture: Fixture): number {\n // eslint-disable-next-line unicorn/explicit-length-check\n let count = (fixture.games && fixture.games.length) || 0;\n // eslint-disable-next-line unicorn/explicit-length-check\n count += (fixture.optionMarkets && fixture.optionMarkets.length) || 0;\n\n return count;\n }\n\n private getOfferCategories(fixture: Fixture): OfferCategory[] {\n return [\n ...new Set([\n ...fixture.games.map((game) => game.category),\n ...fixture.optionMarkets.reduce((result, o) => {\n if (o.templateCategory) {\n result.push(o.templateCategory.category);\n }\n\n return result;\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n }, [] as OfferCategory[]),\n ]),\n ];\n }\n\n private setImgAnimation(fixture: Fixture): number | undefined {\n return fixture.sport.id === SportConstant.Golf &&\n this.imgConfig.isEnabled &&\n !this.imgConfig.blacklistedCompetitions.includes(fixture.competition.id)\n ? fixture.addons.imgEventId\n : undefined;\n }\n\n private setMatchSimulation(fixture: Fixture): string | undefined {\n if (\n !this.mediaConfig.isMatchSimulationEnabled ||\n !this.mediaConfig.sportsWithMatchSimulation ||\n !this.mediaConfig.sportsWithMatchSimulation.length\n ) {\n return undefined;\n }\n\n return this.mediaConfig.sportsWithMatchSimulation.includes(fixture.sport.id) ? fixture.addons && fixture.addons.runningBall : undefined;\n }\n\n private mapRegion(fixture: Fixture): RegionModel {\n const source = fixture.tournament || fixture.region;\n const region = new RegionModel();\n\n if (source) {\n region.id = source.id;\n region.code = fixture.tournament ? undefined : fixture.region.code;\n region.name = source.name.short || source.name.value;\n region.sign = source.name.short ? source.name.shortSign : source.name.sign;\n\n if (fixture.region) {\n region.originalRegion = {\n id: fixture.region.id,\n code: fixture.region.code,\n name: fixture.region.name.short || fixture.region.name.value,\n sign: fixture.region.name.short ? fixture.region.name.shortSign : fixture.region.name.sign,\n };\n }\n }\n\n return region;\n }\n\n private mapTeams(participants: Participant[], fixtureViewType: FixtureViewType): EventParticipant[] {\n //teams not used currently - mapping can be changed as needed\n return mapToEventParticipants(participants, fixtureViewType);\n }\n\n private mapPlayers(playerParticipants: Participant[]): EventParticipant[] {\n return playerParticipants.map((participant) => {\n const name = participant.name.value;\n\n return {\n id: participant.participantId,\n fixtureParticipantId: participant.id,\n shortName: participant.name.short,\n name,\n image: clone(participant.image),\n teamId: participant.properties!.team,\n };\n });\n }\n\n shouldOverrideParticipantNames(optionMarket: OptionMarket, sportId: number): boolean {\n const marketType = optionMarket.parameters?.find((x) => x.key === Tv2MarketParameters.MarketType)?.value;\n const displayTypes = optionMarket.grouping?.detailed?.map((g) => g.displayType);\n\n return !!(\n marketType &&\n this.marketGroupingConfig.overrideParticipantNameOptionMarkets.some(\n (config) =>\n config.sportId === sportId &&\n config.types.some((type) => type.marketType === marketType && this.isOverrideParticipantNamebyDisplayType(type, displayTypes)),\n )\n );\n }\n\n private isOverrideParticipantNamebyDisplayType(marketConfig: MarketTypeWithDisplayName, displayTypes: DisplayType[]): boolean {\n if (marketConfig.displayType && displayTypes) {\n return displayTypes.some((displayType) => displayType === marketConfig.displayType);\n }\n\n return true;\n }\n\n private getRanks(sportId: number, leagueId: number, participants: EventParticipant[]): Rank | undefined {\n const rankings = this.overrideStatisticsConfig.teamRankings;\n const [homeTeamParticipantId, awayTeamParticipantId] = this.getParticipantId(participants);\n const rankingsOnLeague = rankings?.[sportId]?.[leagueId];\n const homeTeamRank = homeTeamParticipantId ? rankingsOnLeague?.[homeTeamParticipantId] : undefined;\n const awayTeamRank = awayTeamParticipantId ? rankingsOnLeague?.[awayTeamParticipantId] : undefined;\n\n return homeTeamRank || awayTeamRank ? { homeTeam: homeTeamRank, awayTeam: awayTeamRank } : undefined;\n }\n\n private getParticipantId(participants: EventParticipant[]): [number | undefined, number | undefined] {\n const homeParticipantId = participants.find((participant) => participant.type === EventParticipantType.Home)?.id;\n const awayParticipantId = participants.find((participant) => participant.type === EventParticipantType.Away)?.id;\n\n return [homeParticipantId, awayParticipantId];\n }\n\n private mapBetBuilderInfo(fixture: Fixture, eventModel: EventModel): BetBuilderInfo | null {\n if (fixture.stage === FixtureStage.Live) {\n // NOTE: Configuration can be extended to allow SGP for InPlay via Dynacon.\n return null;\n }\n\n if (\n !this.betBuilderConfig.isBetBuilderEnabled ||\n !this.betBuilderConfig.isBetBuilderEnabledForSport?.includes(eventModel.sport.id) ||\n fixture.addons.betBuilderProvider === BetBuilderProvider.None\n ) {\n return null;\n }\n\n return { betBuilderId: fixture.addons?.betBuilderId, betBuilderProvider: fixture.addons.betBuilderProvider };\n }\n\n private getStream(fixture: Fixture): EventStream | undefined {\n let stream: EventStream | undefined;\n const videoStream = fixture.addons.videoStream;\n\n if (this.mediaConfig.showVideoStreaming && !this.mediaConfig.restrictedSportIds.find((id) => id === fixture.sport.id) && videoStream) {\n const { providerStreamId, provider, embedPath, feedType } = videoStream;\n stream = { id: providerStreamId, provider: provider!, feedType: FeedType[feedType as keyof typeof FeedType] };\n\n if (provider === StreamProvider.Unikrn && embedPath) {\n if (feedType === FeedType.Twitch) {\n stream.twitchChannel = this.urlService.parse(embedPath).search.get('channel') ?? undefined;\n } else {\n stream.streamUrl = embedPath;\n }\n }\n }\n\n return stream;\n }\n}\n","import { EventOption, ResultSorting } from '@frontend/sports/betting-offer/feature/model';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { sortBy } from 'lodash-es';\n\nexport function sortOptions(options: EventOption[], ...resultSorting: (ResultSorting | undefined)[]): EventOption[] {\n const sorting = resultSorting\n .filter(isDefined)\n .map<((o: EventOption) => number) | keyof EventOption | undefined>((s) => {\n switch (s) {\n case ResultSorting.Odds:\n return priceSorting;\n case ResultSorting.Alphabet:\n return 'name';\n case ResultSorting.Default:\n return 'id';\n case ResultSorting.Order:\n return 'order';\n }\n })\n .filter(isDefined);\n\n return sortBy(options, ...sorting);\n}\n\nfunction priceSorting(option: EventOption): number {\n return option.nativePrice.odds.toNumber();\n}\n","import { OfferSource } from '@cds';\nimport { Participant, ParticipantType } from '@cds/betting-offer';\nimport { EventOption, EventParticipantImage } from '@frontend/sports/betting-offer/feature/model';\n\nexport const getOptionImage = (\n participants: Participant[],\n option: EventOption,\n participantImageMap: Map,\n): EventParticipantImage => {\n const participant: Participant | undefined = participants?.find((participant) => {\n if (participant.properties?.type !== ParticipantType.Player) return false;\n\n if (participant.source === OfferSource.V2) {\n return (\n [option.participantId, option.optionPlayerId].includes(participant.id) ||\n (participant.name?.value === option.name && [option.player1Id, option.player2Id].includes(participant.participantId))\n );\n }\n\n return (\n [option.playerId, option.player1Id].includes(participant.participantId) ||\n [participant.name?.value, participant.name?.short].includes(option.player1)\n );\n });\n\n if (participant) {\n const teamImage = participantImageMap.get(participant.properties?.team);\n return {\n ...participant.image,\n logoColor: teamImage?.logoColor,\n ...(participant.source === OfferSource.V2 && { headshot: teamImage?.headshot }),\n } satisfies EventParticipantImage;\n }\n\n return {};\n};\nexport const getParticipantImageMap = (participants: Participant[]): Map => {\n const participantImageMap = new Map();\n participants?.forEach((participant) => {\n if (\n participant.properties?.type !== ParticipantType.Player &&\n (participant.source === OfferSource.V1 || participant.source === OfferSource.V2)\n ) {\n participantImageMap.set(participant.participantId, participant.image);\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return participantImageMap;\n};\n","import { OfferSource } from '@cds';\nimport {\n DisplayType,\n Game,\n GroupingInfo,\n OptionMarket,\n OrderType,\n Parameter,\n ParameterType,\n Participant,\n ParticipantType,\n Translation,\n} from '@cds/betting-offer';\nimport {\n EnhancedFixtureViewGroupingConfiguration,\n EventOption,\n EventOptionGroup,\n ExtendedDisplayType,\n HappeningValue,\n MarketTypes,\n SortOrder,\n Tv2MarketParameters,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { HappeningType, MarketType } from '@frontend/sports/betting-offer/feature/types';\nimport { BetBuilderConfig } from '@frontend/sports/common/client-config-data-access';\nimport { interpolateSingleBracesString } from '@frontend/sports/common/core/utils/string';\nimport { groupBy, isEmpty, keys, orderBy, padStart } from 'lodash-es';\n\nimport { getOptionImage, getParticipantImageMap } from '../helpers/participant-image.helper';\n\nexport abstract class CommonMarketFactory {\n private readonly OVER_UNDER_MATCHER = /(.+ )(\\d+([.,]\\d+)?)$/;\n constructor(private betbuilderConfig: BetBuilderConfig) {}\n\n protected getGridGroups(grouping: GroupingInfo, categoryId?: number): string[] {\n let groups: string[] = [];\n if (grouping && !isEmpty(grouping.gridGroups)) {\n groups = grouping.gridGroups;\n }\n if (!groups.length && categoryId !== undefined) {\n groups = [categoryId.toString()];\n }\n\n return groups;\n }\n\n protected patch(\n market: EventOptionGroup,\n originalMarket: Game | OptionMarket,\n participants?: Participant[],\n excludePriceboostedMarketGrouping?: boolean,\n ) {\n if ('parameters' in originalMarket) {\n const marketType = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.MarketType);\n\n // market type returned for virtual fixtures and we mock the params\n if (marketType) {\n switch (marketType.value) {\n case MarketTypes.Spread:\n return this.patchSpread(market);\n case MarketTypes.CorrectScore:\n return this.patchCorrectScore(market);\n case MarketTypes.BetBuilder:\n return this.patchPreCreatedBetBuilder(market);\n case MarketTypes.OverUnder:\n case MarketTypes.TotalsOverUnder:\n return this.patchOverUnder(market);\n case MarketTypes.HeadToHead:\n case MarketTypes.TwoWayHandicap:\n return this.patchHeadToHead(market, participants);\n case MarketTypes.AutomatedPriceBoost:\n return this.patchAutomatedPriceBoost(market, excludePriceboostedMarketGrouping);\n }\n } else if (market.source === OfferSource.V2 && this.isOverUnder(market)) {\n return this.patchOverUnder(market);\n }\n }\n\n if (market.isPartOfSgpGroup) {\n this.patchPreCreatedBetBuilder(market);\n }\n }\n\n private getTranslated_Value(translation: Translation | undefined): string {\n return translation?.short || translation?.value || '';\n }\n\n private patchAutomatedPriceBoost(market: EventOptionGroup, excludePriceboostedMarketGrouping?: boolean): void {\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping = {\n displayType: ExtendedDisplayType.AutomatedPriceBoost,\n orderType: OrderType.None,\n marketSet: market.detailedGrouping?.marketSet ?? 0,\n marketOrder: market.detailedGrouping?.marketOrder ?? 0,\n marketGroupId: market.detailedGrouping?.marketGroupId ?? '',\n marketGroupItemId: market.detailedGrouping?.marketGroupItemId ?? '',\n marketGroup: !excludePriceboostedMarketGrouping ? Number.MAX_VALUE : market.detailedGrouping?.marketGroup,\n };\n market.options.forEach((option) => {\n // eslint-disable-next-line no-param-reassign\n option.showBoostedPrice = true;\n // eslint-disable-next-line no-param-reassign\n option.optionMarketName = market.name;\n });\n // eslint-disable-next-line no-param-reassign\n market.balanced = true;\n }\n\n // TODO please refactor below function if you are modifying it, currently it's unreadable, any further changes will make it just worse.\n // eslint-disable-next-line sonarjs/cognitive-complexity, complexity\n protected patchDetailedGrouping(\n market: EventOptionGroup,\n originalMarket: Game | OptionMarket,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n participants: Participant[] | undefined,\n correctScoreOptionsSortOrder: string | undefined,\n ) {\n if ('parameters' in originalMarket) {\n const marketType = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.MarketType);\n const happening = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.Happening);\n const subPeriodNumber = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.SubPeriodNumber);\n const rangeValue = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.RangeValue);\n\n if (\n marketType &&\n happening &&\n market.detailedGrouping &&\n (marketType.value === MarketTypes.HeadToHead || marketType.value === MarketTypes.TwoWayHandicap) &&\n (!market.sixPackGridGroupId /* obsolete check (kept only for backwards compatibility) */ ||\n market.detailedGrouping.displayType !== DisplayType.SixPack)\n ) {\n this.patchHeadToHeadMarketName(market, happening, grouping);\n if (participants) {\n // eslint-disable-next-line no-param-reassign\n market.options = this.patchParticipantIdToOption(market, participants);\n }\n } else if (marketType?.value === MarketTypes.Scorer && participants) {\n // eslint-disable-next-line no-param-reassign\n market.options = this.patchParticipantIdToOption(market, participants);\n } else if (marketType?.value === MarketTypes.MultiFPOverUnder && participants) {\n this.patchPlayerCombined(market, originalMarket, participants);\n } else if (\n market.detailedGrouping?.displayType === DisplayType.PlayerMilestone ||\n market.detailedGrouping?.displayType === DisplayType.PlayerMilestoneOverUnder\n ) {\n this.patchPlayerMilestone(market, originalMarket, marketType, happening, participants, grouping);\n } else if (market.detailedGrouping?.displayType === DisplayType.PlayerOutcome) {\n this.patchPlayerOutcome(market, originalMarket, marketType, happening, subPeriodNumber);\n } else if (marketType?.value === MarketTypes.DynamicCorrectScore && happening?.value === HappeningValue.Points && participants) {\n this.patchCorrectScoreOptions(market, participants, correctScoreOptionsSortOrder);\n } else if (marketType && !!subPeriodNumber?.value) {\n // eslint-disable-next-line no-param-reassign\n market.subPeriodNumber = subPeriodNumber?.value;\n } else if (marketType && rangeValue) {\n // eslint-disable-next-line no-param-reassign\n market.rangeValue = rangeValue.value;\n }\n }\n }\n\n private patchPlayerOutcome(\n market: EventOptionGroup,\n originalMarket: OptionMarket,\n marketType: Parameter | undefined,\n happening: Parameter | undefined,\n subPeriodNumber: Parameter | undefined,\n ): void {\n // eslint-disable-next-line no-param-reassign\n market.options = orderBy(market.options, (option) => option.id);\n const subPeriod = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.SubPeriod);\n if (subPeriod && subPeriodNumber && marketType?.value === 'Over/Under' && happening?.value === 'Pitch') {\n // eslint-disable-next-line no-param-reassign\n market.subPeriodNumber = subPeriod.value + subPeriodNumber.value;\n }\n }\n\n private patchCorrectScoreOptions(market: EventOptionGroup, participants: Participant[], correctScoreOptionsSortOrder: string | undefined): void {\n const homeTeam = this.getTranslated_Value(participants.find((p) => p.properties?.type === ParticipantType.HomeTeam)?.name);\n const awayTeam = this.getTranslated_Value(participants.find((p) => p.properties?.type === ParticipantType.AwayTeam)?.name);\n if (!homeTeam || !awayTeam) {\n return;\n }\n if (\n !!correctScoreOptionsSortOrder &&\n (correctScoreOptionsSortOrder === SortOrder.Ascending || correctScoreOptionsSortOrder === SortOrder.Descending)\n ) {\n let correctScoreOptions: { option: EventOption; rawScore: string }[] = [];\n correctScoreOptions = market.options.map((option) => {\n const optionNameValues = option?.name?.split(':');\n // eslint-disable-next-line no-param-reassign\n option.name = `${homeTeam} ${optionNameValues[0]} - ${awayTeam} ${optionNameValues[1]}`;\n const rawScore = `${padStart(optionNameValues[0], 3, '0')}:${padStart(optionNameValues[1], 3, '0')}`;\n\n return { option, rawScore };\n });\n correctScoreOptions = orderBy(correctScoreOptions, (option) => option.rawScore, correctScoreOptionsSortOrder);\n // eslint-disable-next-line no-param-reassign\n market.options = correctScoreOptions.map((correctScoreOption) => correctScoreOption.option);\n } else {\n // eslint-disable-next-line no-param-reassign\n market.options = market.options.map((option) => {\n const optionNameValues = option?.name?.split(':');\n // eslint-disable-next-line no-param-reassign\n option.name = `${homeTeam} ${optionNameValues[0]} - ${awayTeam} ${optionNameValues[1]}`;\n\n return option;\n });\n }\n }\n\n private patchPlayerMilestone(\n market: EventOptionGroup,\n originalMarket: OptionMarket,\n marketType: Parameter | undefined,\n happening: Parameter | undefined,\n participants: Participant[] | undefined,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n ): void {\n const participantId = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.FixtureParticipant)?.value;\n const happeningIndex = grouping?.masterSorting['happening']?.findIndex((s) => s === happening?.value);\n // eslint-disable-next-line no-param-reassign\n market.subPeriodNumber = happeningIndex?.toString();\n // eslint-disable-next-line no-param-reassign\n market.options = orderBy(market.options, (option) => option.id);\n if (participantId) {\n const participant = participants?.find((p) => p.id === +participantId);\n // eslint-disable-next-line no-param-reassign\n market.options = market.options.map((option) => {\n // eslint-disable-next-line no-param-reassign\n option.player1Id = participant?.participantId;\n\n return option;\n });\n }\n if (marketType && (marketType.value === MarketTypes.HappeningToOccurV2 || marketType.value === MarketTypes.HappeningToOccurAndTeamToWin)) {\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping.marketGroup = happeningIndex;\n }\n }\n\n private patchPlayerCombined(market: EventOptionGroup, originalMarket: OptionMarket, participants: Participant[]): void {\n const participantsList = originalMarket.parameters.find((param) => param.key === Tv2MarketParameters.FixtureParticipantList);\n const participantImageMap = getParticipantImageMap(participants);\n // eslint-disable-next-line no-param-reassign\n market.options = orderBy(market.options, (option) => option.id);\n if (!participantsList) return;\n const list = participantsList.value.split(',');\n let player1Id: number | undefined;\n let player2Id: number | undefined;\n if (list.length === 2) {\n player1Id = participants.find((p) => p.id === +list[0])?.participantId;\n player2Id = participants.find((p) => p.id === +list[1])?.participantId;\n }\n // eslint-disable-next-line no-param-reassign\n market.options = market.options.map((option, index) => {\n const name = participants.find((p) => p.id === +list[index])?.name;\n // eslint-disable-next-line no-param-reassign\n option.name = this.getTranslated_Value(name) || option.name;\n // eslint-disable-next-line no-param-reassign\n option.player1Id = player1Id;\n // eslint-disable-next-line no-param-reassign\n option.player2Id = player2Id;\n // eslint-disable-next-line no-param-reassign\n option.image = getOptionImage(participants, option, participantImageMap);\n return option;\n });\n }\n\n private patchHeadToHeadMarketName(market: EventOptionGroup, happening: Parameter, grouping: EnhancedFixtureViewGroupingConfiguration): void {\n const happeningIndex = grouping?.masterSorting['happening']?.findIndex((s) => s === happening?.value);\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping.marketGroup = happeningIndex;\n\n if (\n market.detailedGrouping.displayType === DisplayType.Regular &&\n (happening.value === HappeningValue.PassingYards || happening.value === HappeningValue.TouchdownPass)\n ) {\n // eslint-disable-next-line no-param-reassign\n market.participantIds = undefined;\n }\n\n if (market.detailedGrouping.name) {\n const interpolatedName = interpolateSingleBracesString(market.detailedGrouping.name, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Player1: market.player1!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Player2: market.player2!,\n });\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping.name = interpolatedName;\n // eslint-disable-next-line no-param-reassign\n market.name = interpolatedName;\n }\n }\n\n private patchParticipantIdToOption(market: EventOptionGroup, participants: Participant[]): EventOption[] {\n return market.options.map((option) => {\n // eslint-disable-next-line no-param-reassign\n option.player1Id = participants.find((p) => p.id === option.optionPlayerId)?.participantId;\n\n return option;\n });\n }\n\n private patchHeadToHead(market: EventOptionGroup, participants?: Participant[]): void {\n const participantIds: number[] = [];\n // eslint-disable-next-line no-param-reassign\n market.options = orderBy(market.options, (option) => option.id);\n market.options.forEach((option, index) => {\n const playerName = participants?.find((p) => p.id === option.optionPlayerId)?.name.value || option.name;\n if (index === 0) {\n // eslint-disable-next-line no-param-reassign\n market.player1 = playerName;\n } else {\n // eslint-disable-next-line no-param-reassign\n market.player2 = playerName;\n }\n // eslint-disable-next-line no-param-reassign\n option.marketAttribute = market.name;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n participantIds.push(option.optionPlayerId!);\n });\n\n // eslint-disable-next-line no-param-reassign\n market.participantIds = participantIds.reduce((current, next) => current + next.toString(), '_');\n }\n\n private patchSpread(market: EventOptionGroup): void {\n // eslint-disable-next-line no-param-reassign\n market.balanced = true;\n }\n\n private patchCorrectScore(market: EventOptionGroup): void {\n const happening = { key: Tv2MarketParameters.Happening, type: ParameterType.String, value: HappeningType.Goal };\n const marketType = { key: Tv2MarketParameters.MarketType, type: ParameterType.String, value: MarketType.CorrectScore };\n\n this.addParameterToMarket(market, happening);\n this.addParameterToMarket(market, marketType);\n\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping = {\n displayType: DisplayType.CorrectScore,\n orderType: OrderType.None,\n marketSet: 0,\n marketOrder: 0,\n marketGroupId: market.detailedGrouping?.marketGroupId || '',\n marketGroupItemId: market.detailedGrouping?.marketGroupItemId || '',\n };\n }\n\n private addParameterToMarket(market: EventOptionGroup, parameter: Parameter): void {\n const existingParameter = market.parameters?.find((param) => param.key === parameter.key);\n\n if (existingParameter) {\n existingParameter.value = parameter.value;\n } else {\n market.parameters?.push(parameter);\n }\n }\n\n private patchPreCreatedBetBuilder(market: EventOptionGroup): void {\n if (market.detailedGrouping?.marketTabId) {\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping = {\n periodGroup: market.detailedGrouping.periodGroup,\n marketOrder: market.detailedGrouping.marketOrder,\n marketGroup: market.detailedGrouping.marketGroup,\n displayType: ExtendedDisplayType.BetBuilder,\n orderType: OrderType.None,\n marketSet: this.betbuilderConfig.enablePrecreatedBetBuilderTab ? market.detailedGrouping.marketSet : 0,\n name: market.detailedGrouping.name,\n marketHelpPath: market.detailedGrouping.marketHelpPath,\n marketGroupId: market.detailedGrouping.marketGroupId,\n marketGroupItemId: market.detailedGrouping.marketGroupItemId,\n marketTabId: market.detailedGrouping.marketTabId,\n //TODO try splitting this file!\n // eslint-disable-next-line max-lines\n precreatedGroupId: market.detailedGrouping.precreatedGroupId,\n };\n // eslint-disable-next-line max-lines\n }\n }\n\n private patchOverUnder(market: EventOptionGroup): void {\n const marketType = { key: Tv2MarketParameters.MarketType, type: ParameterType.String, value: MarketType.OverUnder };\n\n this.addParameterToMarket(market, marketType);\n\n // eslint-disable-next-line no-param-reassign\n market.parameterTranslations = market.parameterTranslations || {};\n // eslint-disable-next-line no-param-reassign\n market.detailedGrouping = {\n displayType: DisplayType.OverUnder,\n orderType: market.detailedGrouping?.orderType ?? OrderType.None,\n marketSet: 0,\n marketOrder: 0,\n marketGroupId: market.detailedGrouping?.marketGroupId || '',\n marketGroupItemId: market.detailedGrouping?.marketGroupItemId || '',\n };\n\n market.options.forEach((option, index) => {\n const match = option.name.match(this.OVER_UNDER_MATCHER);\n\n if (match) {\n if (index === 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, no-param-reassign\n market.parameterTranslations!['columnOver'] = match[1].trim();\n }\n\n if (index === 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, no-param-reassign\n market.parameterTranslations!['columnUnder'] = match[1].trim();\n }\n // eslint-disable-next-line no-param-reassign\n option.marketAttribute = match[2];\n }\n });\n }\n\n private isOverUnder(market: EventOptionGroup): boolean {\n const attributes: string[] = [];\n\n for (const option of market.options) {\n const match = option.name.match(this.OVER_UNDER_MATCHER);\n\n if (!match) {\n return false;\n }\n\n attributes.push(match[2]);\n }\n\n if (attributes.length) {\n const pairs = groupBy(attributes, (group) => group);\n\n return keys(pairs).every((attribute) => pairs[attribute].length === 2);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { DetailedGrouping, DisplayType, Game, OptionMarket } from '@cds/betting-offer';\nimport { isEmpty } from 'lodash-es';\n\nexport abstract class MarketDisplayFallbackService {\n abstract shouldForceRegularDisplayTypeTV1(detailedGrouping: DetailedGrouping, game: Game): boolean;\n abstract shouldForceRegularDisplayTypeTV2(detailedGrouping: DetailedGrouping, optionMarket: OptionMarket): boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SportsMarketGroupingFallbackService extends MarketDisplayFallbackService {\n // For few displaytypes we need mandatory conditions to be met. If those conditions are not met we are converting these display types to regular.\n // To avoid the breakage of UI we are converting the new display types to regular type.\n shouldForceRegularDisplayTypeTV1(detailedGrouping: DetailedGrouping, game: Game): boolean {\n switch (detailedGrouping.displayType) {\n case DisplayType.YesNo:\n return isEmpty(game.player1);\n default:\n return false;\n }\n }\n\n shouldForceRegularDisplayTypeTV2(detailedGrouping: DetailedGrouping, optionMarket: OptionMarket): boolean {\n switch (detailedGrouping.displayType) {\n case DisplayType.YesNo:\n return optionMarket.source === OfferSource.V1 ? isEmpty(optionMarket.player1) : !optionMarket.fixtureParticipantId;\n default:\n return false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Tag } from '@cds/betting-offer/grouping/fixture-view';\nimport {\n EnhancedFixtureViewGroupingConfiguration,\n EventOptionGroup,\n EventOptionSet,\n EventSitemapSet,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { AngstromTagIdValues } from '@frontend/sports/betting-offer/feature/types';\nimport { groupBy, isEqual, uniqWith } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class EventSitemapGroupingFactory {\n getSitemapSet(\n optionSets: EventOptionSet[],\n grouping: EnhancedFixtureViewGroupingConfiguration,\n optionGroups: EventOptionGroup[],\n ): EventSitemapSet[] {\n const sets: EventSitemapSet[] = this.buildPrimaryLevelItems(optionSets);\n\n sets.forEach((s) => {\n const marketGroupsPerSet = grouping.marketGroups.filter((x) => (x.tag?.key ? x.tag.key === s.id : x.id === s.id));\n const marketGroupItems = marketGroupsPerSet?.map((m) => m.marketGroupItems).flat(1);\n\n if (marketGroupItems.length) {\n const children: EventSitemapSet[] = [];\n const hasTaggedGroupItems = marketGroupItems.some((m) => m.tags.length !== 0);\n\n if (hasTaggedGroupItems) {\n const optTags = optionGroups\n .filter((x) => (s.groups ? s.groups.includes(x.detailedGrouping.marketSet) : x.detailedGrouping.marketSet === s.id))\n .filter((x) => (s.id === AngstromTagIdValues.Sgp ? x.isBetBuilder : true))\n .filter((x) => !!x.detailedGrouping.tags)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map((x) => x.detailedGrouping.tags!);\n const availableTags = uniqWith(optTags, isEqual);\n\n marketGroupItems?.forEach((groupItem) => {\n const tags = [...groupItem.tags];\n if (tags.length > 0 && this.tagsExist(tags, availableTags)) {\n this.buildLowerLevelItems(children, tags, s.groups);\n }\n });\n }\n\n // eslint-disable-next-line no-param-reassign\n s.children = children;\n }\n });\n\n return sets.filter((x) => (x.id === AngstromTagIdValues.Sgp ? !!x.children?.length : true));\n }\n\n private buildPrimaryLevelItems(optionSets: EventOptionSet[]): EventSitemapSet[] {\n const sets: EventSitemapSet[] = [];\n const groupedSets = groupBy(\n optionSets.filter((x) => !!x.marketGroupTag?.key),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n (os) => os.marketGroupTag!.key,\n );\n\n // eslint-disable-next-line guard-for-in\n for (const tag in groupedSets) {\n const current = groupedSets[tag];\n const set: EventSitemapSet = {\n id: tag,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: current[0].marketGroupTag!.value || current[0].marketGroupTag!.key,\n groups: current.map((c) => c.id),\n children: [],\n };\n\n sets.push(set);\n }\n\n optionSets\n .filter((x) => !x.marketGroupTag || !x.marketGroupTag.key)\n .forEach((o) =>\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n sets.push({\n ...o,\n groups: [o.id],\n children: [],\n } as EventSitemapSet),\n );\n\n return sets;\n }\n\n private buildLowerLevelItems(children: EventSitemapSet[], tags: Tag[], groups?: number[]): void {\n const keyExists = (key: string) => children.find((el) => el.id === key);\n const append = (tag: { key: string; value: string }) => {\n children.push({\n id: tag.key,\n name: tag.value || tag.key.toString(),\n children: [],\n groups,\n });\n };\n\n const currentTag = tags[0];\n if (!keyExists(currentTag.key)) {\n append(currentTag);\n }\n\n tags.shift();\n if (tags.length !== 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextLevelItem = children.find((el) => el.id === currentTag.key)!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.buildLowerLevelItems(nextLevelItem.children!, tags, groups);\n }\n }\n\n private tagsExist(tags: Tag[], optionGrouping: Tag[][]): boolean {\n return optionGrouping.some((optTags) => {\n if (optTags.length !== tags.length) {\n return false;\n }\n\n return tags.every((tag, index) => tag.key === optTags[index].key);\n });\n }\n}\n","/* eslint-disable sonarjs/cognitive-complexity */\nimport { Inject, Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport {\n DetailedGrouping,\n DisplayType,\n Game,\n Option,\n OptionMarket,\n OptionMarketStatus,\n OptionStatus,\n Parameter,\n Participant,\n ParticipantPriceType,\n TeamGrouping,\n TotalsPrefix,\n Translation,\n Visibility,\n} from '@cds/betting-offer';\nimport { OfferGroup, Tag } from '@cds/betting-offer/grouping/fixture-view';\nimport { SixPackGroup } from '@cds/betting-offer/grouping/grid-view';\nimport {\n ComboPrevention,\n ComboPreventionMinimum,\n ComboPreventionType,\n EnhancedFixtureViewGroupingConfiguration,\n EventOption,\n EventOptionGroup,\n EventOptionGrouping,\n EventParticipantImage,\n MapOption,\n ResultSorting,\n SetTab,\n Tv2MarketParameters,\n toResultSorting,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { MarketSubType, MarketType } from '@frontend/sports/betting-offer/feature/types';\nimport { BetBuilderConfig, MarketGroupingConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { NonRootToken } from '@frontend/sports/host-app/sports-product/feature/non-root-token';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\nimport { replace } from 'lodash-es';\n\nimport { sortOptions } from '../helpers/option-sorting';\nimport { getOptionImage, getParticipantImageMap } from '../helpers/participant-image.helper';\nimport { CommonFixtureFactory } from './common-fixture.factory';\nimport { CommonMarketFactory } from './common-market.factory';\nimport { MarketDisplayFallbackService } from './sports-market-grouping-fallback.service';\n\nexport type DetailedFixtureMarket = Game | OptionMarket;\nconst optionAttributeRegex = /[-+]?\\d*[.,]?\\d+(?:[eE][-+]?\\d+)?/g;\n\ninterface MarketFactory {\n create(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n ): EventOptionGroup[];\n\n canCreate(market: DetailedFixtureMarket): boolean;\n}\n\ninterface RegionalisedGrouping {\n offerGroup: OfferGroup;\n marketOrder: number;\n tags: Tag[];\n playerStatsProps: string[];\n teamGrouping: TeamGrouping;\n}\n\nabstract class MarketFactoryBase extends CommonMarketFactory {\n constructor(\n protected marketGroupingConfig: MarketGroupingConfig,\n betbuilderConfig: BetBuilderConfig,\n ) {\n super(betbuilderConfig);\n }\n\n protected getPeriodValue(\n game: Game | OptionMarket,\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n sixPackGroup: SixPackGroup | null = null,\n ): string {\n if (detailedGrouping.displayType === DisplayType.PlayerMilestone || detailedGrouping.displayType === DisplayType.PlayerMilestoneOverUnder) {\n return this.replaceAttrValue(game as OptionMarket, detailedGrouping.displayType);\n }\n if (detailedGrouping.marketTabId !== undefined && grouping.marketTabs) {\n const marketTab = grouping.marketTabs.find((t) => t.id === detailedGrouping.marketTabId);\n if (marketTab) {\n return marketTab.name;\n }\n }\n if (sixPackGroup) {\n return sixPackGroup.name;\n }\n const period = 'parameters' in game ? (game.parameters.find((param) => param.key === Tv2MarketParameters.Period)?.value ?? '') : '';\n\n return grouping.parameterTranslations?.[`period${period}`] ?? '';\n }\n\n private replaceAttrValue(game: OptionMarket, displayType: DisplayType): string {\n return replace(game.attr, ',', '.') + (displayType === DisplayType.PlayerMilestone ? '+' : '');\n }\n\n protected getTranslatedValue(translation: Translation): string {\n return translation.short || translation.value;\n }\n\n protected mapDetailedGrouping(\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n index: number,\n source: OfferSource,\n attrValue?: string,\n forceRegularDisplayType = false,\n isPriceBoosted = false,\n excludePriceboostedMarketGrouping = false,\n parameters: Parameter[] = [],\n sixPackGroup: { groupId: string; sixPack: SixPackGroup } | null = null,\n ): EventOptionGrouping {\n const regionalisedOfferGroup = this.getRegionalisedOfferGroup(detailedGrouping, grouping);\n // isRegular flagged is enabled for few display types, where the mandatory conditions doesn't meet to display in particular display type.\n // If those conditions are not met we are converting these display types to regular.\n const optionGrouping = {\n marketSet: regionalisedOfferGroup ? regionalisedOfferGroup.offerGroup.id : SetTab.Other,\n name: sixPackGroup ? grouping.sixPackGroups[sixPackGroup.groupId]?.name : detailedGrouping.name,\n marketOrder: regionalisedOfferGroup ? regionalisedOfferGroup.marketOrder : this.getPrecreatedBABOrderPosition(grouping),\n periodGroup: this.getPeriodGroup(detailedGrouping, grouping, attrValue, parameters, sixPackGroup?.sixPack),\n marketGroup: detailedGrouping.subIndex,\n marketHelpPath: detailedGrouping.marketHelpPath,\n marketTabId: detailedGrouping.marketTabId,\n optionColumnId: detailedGrouping.optionColumnId,\n displayType: detailedGrouping.displayType,\n orderType: detailedGrouping.orderType,\n marketGroupId: detailedGrouping.marketGroupItemId,\n marketGroupItemId: detailedGrouping.marketGroupItemId,\n fixtureParticipantType: detailedGrouping.fixtureParticipantType,\n tags: regionalisedOfferGroup?.tags,\n playerStatsProps: regionalisedOfferGroup?.playerStatsProps,\n teamGrouping: regionalisedOfferGroup?.teamGrouping || undefined,\n sixPackGridId: sixPackGroup?.groupId,\n } satisfies EventOptionGrouping;\n if (forceRegularDisplayType) {\n optionGrouping.marketOrder = isPriceBoosted ? 0 : index;\n optionGrouping.periodGroup = undefined;\n optionGrouping.marketGroup = undefined;\n optionGrouping.displayType = DisplayType.Regular;\n if (isPriceBoosted && !excludePriceboostedMarketGrouping) {\n optionGrouping.marketGroup = Number.MAX_VALUE;\n }\n }\n\n return optionGrouping;\n }\n\n private getPrecreatedBABOrderPosition(grouping: EnhancedFixtureViewGroupingConfiguration): number {\n const tv1MarketGroupItemPosition = grouping.buildABetSettings.tv1MarketGroupItems?.marketGroupItemPosition;\n const tv2MarketGroupItemPosition = grouping.buildABetSettings.tv2MarketGroupItems?.marketGroupItemPosition;\n\n return tv1MarketGroupItemPosition || tv2MarketGroupItemPosition;\n }\n\n private getRegionalisedOfferGroup(\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n ): RegionalisedGrouping | null {\n const regionalisedOfferGroup = grouping.marketGroups.find((mg) => mg.groupId === detailedGrouping.marketGroupId);\n if (!regionalisedOfferGroup) {\n return null;\n }\n const order = regionalisedOfferGroup.marketGroupItems.findIndex((m) => m.id === detailedGrouping.marketGroupItemId);\n if (order === -1) {\n return null;\n }\n\n if (!this.marketGroupingConfig.regionalisedGroupingEnabled || !detailedGrouping.marketGroupId || !detailedGrouping.marketGroupItemId) {\n return {\n offerGroup: {\n id: regionalisedOfferGroup.id,\n groupId: '',\n marketGroupItems: [],\n name: detailedGrouping.name || '',\n tag: { key: '', value: '' },\n },\n marketOrder: Number.MAX_VALUE,\n tags: [],\n playerStatsProps: [],\n teamGrouping: TeamGrouping.None,\n };\n }\n\n return {\n offerGroup: regionalisedOfferGroup,\n marketOrder: order,\n tags: regionalisedOfferGroup.marketGroupItems[order].tags,\n playerStatsProps: regionalisedOfferGroup.marketGroupItems[order].playerStatsProps,\n teamGrouping: regionalisedOfferGroup.marketGroupItems[order].teamGrouping,\n };\n }\n\n private getPeriodGroup(\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n attrValue?: string,\n parameters?: Parameter[],\n sixPackGroup: SixPackGroup | null = null,\n ): number | undefined {\n if (\n !!attrValue &&\n (detailedGrouping.displayType === DisplayType.PlayerMilestone || detailedGrouping.displayType === DisplayType.PlayerMilestoneOverUnder) &&\n (!this.marketGroupingConfig.enablePlayerMilestoneByMarketSubType ||\n parameters?.find((p) => p.key === Tv2MarketParameters.MarketType)?.value !== MarketType.OverAndUnder ||\n parameters.find((p) => p.key === Tv2MarketParameters.MarketSubType)?.value === MarketSubType.YesNo)\n ) {\n if (isNaN(+attrValue)) {\n return +attrValue.replace(',', '.');\n }\n return +attrValue;\n }\n if (detailedGrouping.marketTabId !== undefined && grouping.marketTabs) {\n const marketTab = grouping.marketTabs.find((t) => t.id === detailedGrouping.marketTabId);\n if (marketTab) {\n return marketTab.sortOrder;\n }\n }\n if (sixPackGroup) {\n return grouping.sixPackGroups[sixPackGroup.id].order;\n }\n\n return undefined;\n }\n}\n\nclass GameMarketFactory extends MarketFactoryBase implements MarketFactory {\n constructor(\n private marketFallback: MarketDisplayFallbackService,\n marketGroupingConfig: MarketGroupingConfig,\n betbuilderConfig: BetBuilderConfig,\n ) {\n super(marketGroupingConfig, betbuilderConfig);\n }\n\n canCreate(market: DetailedFixtureMarket): market is Game & boolean {\n return 'visibility' in market;\n }\n\n create(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n longIds?: string[],\n isPartOfSgpGroup?: boolean,\n participants?: Participant[],\n ): EventOptionGroup[] {\n return market.grouping.detailed.map((gameGrouping) =>\n this.createOptionGroup(market, fixture, fixtureOnline, gameGrouping, grouping, longIds, isPartOfSgpGroup, participants),\n );\n }\n\n //TODO please refactor\n // eslint-disable-next-line max-lines-per-function\n private createOptionGroup(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n gameGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n longIds?: string[],\n isPartOfSgpGroup?: boolean,\n participants?: Participant[],\n ): EventOptionGroup {\n const game = market as Game;\n const combo = new ComboPrevention();\n combo.minimum = ComboPreventionMinimum[game.combo2];\n combo.restriction = ComboPreventionType[game.combo1];\n const optionGroup = new EventOptionGroup();\n optionGroup.id = game.id.toString();\n optionGroup.originalId = game.id.toString();\n optionGroup.comboPrevention = combo;\n optionGroup.templateId = game.templateId?.toString() ?? '';\n optionGroup.name = this.getTranslatedValue(game.name);\n optionGroup.visible = game.visibility === Visibility.Visible;\n optionGroup.online = fixtureOnline && optionGroup.visible;\n optionGroup.hidden = game.visibility === Visibility.Hidden;\n optionGroup.detailedGrouping = this.mapDetailedGrouping(\n gameGrouping,\n grouping,\n game.id,\n OfferSource.V1,\n undefined,\n this.marketFallback.shouldForceRegularDisplayTypeTV1(gameGrouping, game),\n );\n optionGroup.periodName = this.getPeriodValue(game, gameGrouping, grouping);\n const categoryId = game.templateCategory && game.templateCategory.id;\n optionGroup.gridGroups = this.getGridGroups(game.grouping, categoryId);\n optionGroup.resultSorting = toResultSorting(game.resultOrder);\n const optionConfig: MapOption = {\n game,\n fixtureId: fixture,\n fixtureOnline,\n resultSorting: optionGroup.resultSorting,\n detailedGrouping: gameGrouping,\n grouping,\n order: gameGrouping.subIndex,\n participants,\n };\n optionGroup.options = this.mapOptions(optionConfig);\n optionGroup.categoryAttribute = game.attr;\n optionGroup.parameterTranslations = grouping.parameterTranslations;\n optionGroup.templateCategoryId = game.categoryId;\n optionGroup.templateCategory = game.category;\n optionGroup.player1 = game.player1 && this.getTranslatedValue(game.player1);\n optionGroup.player2 = game.player2 && this.getTranslatedValue(game.player2);\n optionGroup.isPartOfSgpGroup = !!isPartOfSgpGroup;\n optionGroup.source = OfferSource.V1;\n optionGroup.hasBetBuilderMarkets = !!game.isBetBuilder;\n this.patch(optionGroup, market);\n\n return optionGroup;\n }\n\n //TODO please refactor\n // eslint-disable-next-line max-lines-per-function\n private mapOptions(optionConfig: MapOption): EventOption[] {\n const { game, fixtureId, fixtureOnline, resultSorting, detailedGrouping, grouping, order, longIds, participants } = optionConfig;\n let participantImageMap = new Map();\n if (participants) {\n participantImageMap = getParticipantImageMap(participants);\n }\n // eslint-disable-next-line max-lines\n const options = game.results.map((result) => {\n const option = new EventOption();\n option.id = result.id;\n option.name = result.name.short || result.name.value;\n\n option.nativePrice = NativePrice.fromNativePrice(result);\n option.visible = result.visibility === Visibility.Visible && result.odds > 1 && game.visibility === Visibility.Visible;\n option.online = fixtureOnline && option.visible;\n option.optionGroupId = game.id;\n option.templateId = game.templateId;\n option.originalEventId = fixtureId;\n option.order = order;\n option.playerId = result.playerId;\n option.player1 = game.player1 && this.getTranslatedValue(game.player1);\n option.player1Id = game.player1Id;\n option.player2 = game.player2 && this.getTranslatedValue(game.player2);\n option.player2Id = game.player2Id;\n option.optionColumnId = detailedGrouping.optionColumnId;\n if (detailedGrouping.optionColumnId !== undefined && grouping.optionColumns) {\n const optionColumn = grouping.optionColumns.find((t) => t.id === detailedGrouping.optionColumnId);\n if (optionColumn) {\n option.optionColumnName = optionColumn.name;\n option.optionColumnSortOrder = optionColumn.sortOrder;\n }\n }\n option.signature = {\n event: '',\n league: '',\n market: this.getSign(game.name),\n option: this.getSign(result.name),\n region: '',\n sport: '',\n };\n option.overridenName = result.sourceName && result.sourceName.value;\n option.marketAttribute = game.attr;\n option.optionAttribute = result.attr;\n option.totalsPrefix = result.totalsPrefix;\n option.optionSpread = game.spread;\n option.isBetBuilder = !!game.isBetBuilder;\n if (longIds?.length) {\n option.longId = longIds.join(';');\n }\n\n if (participants) {\n option.image = getOptionImage(participants, option, participantImageMap);\n }\n return option;\n });\n\n return sortOptions(options, resultSorting);\n }\n\n private getSign(name: Translation): string {\n return (name.short && name.shortSign) || (name.value && name.sign) || '';\n }\n}\n\nclass OptionMarketFactory extends MarketFactoryBase implements MarketFactory {\n constructor(\n private marketFallback: MarketDisplayFallbackService,\n marketGroupingConfig: MarketGroupingConfig,\n private commonFactory: CommonFixtureFactory,\n betbuilderConfig: BetBuilderConfig,\n private sitecore: Sitecore,\n ) {\n super(marketGroupingConfig, betbuilderConfig);\n }\n\n canCreate(market: DetailedFixtureMarket): market is OptionMarket & boolean {\n return 'status' in market;\n }\n\n create(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n longIds?: string[],\n isPartOfSgpGroup?: boolean,\n participants?: Participant[],\n isPriceBoosted?: boolean,\n excludePriceboostedMarketGrouping?: boolean,\n forceRegularDisplayType?: boolean,\n ): EventOptionGroup[] {\n return market.grouping.detailed.map((detailedGrouping) =>\n this.createOptionGroup(\n market,\n fixture,\n fixtureOnline,\n detailedGrouping,\n grouping,\n participants,\n isPriceBoosted,\n longIds,\n isPartOfSgpGroup,\n excludePriceboostedMarketGrouping,\n forceRegularDisplayType,\n ),\n );\n }\n\n //TODO PLEASE REFACTOR BELOW FUNCTION WHEN CHANGING IT\n // eslint-disable-next-line max-lines-per-function\n private createOptionGroup(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n participants: Participant[] | undefined,\n isPriceBoosted?: boolean,\n longIds?: string[],\n isPartOfSgpGroup?: boolean,\n excludePriceboostedMarketGrouping?: boolean,\n forceRegularDisplayType?: boolean,\n ): EventOptionGroup {\n const optionMarket = market as OptionMarket;\n const optionGroup = new EventOptionGroup();\n optionGroup.id = optionMarket.id.toString();\n const combo = new ComboPrevention();\n combo.minimum = optionMarket.minCombo ?? 1;\n combo.restriction = ComboPreventionType[optionMarket.comboPrevention];\n optionGroup.comboPrevention = combo;\n optionGroup.isEachWay = !!optionMarket.isEachWay;\n optionGroup.isStartingPriceAvailable = !!optionMarket.isStartingPriceEnabled;\n optionGroup.isWinPriceAvailable = !!optionMarket.isWinPriceEnabled;\n optionGroup.placeTerms = optionMarket.placeTerms;\n optionGroup.originalId = optionMarket.id.toString();\n optionGroup.templateCategory = optionMarket.templateCategory?.category;\n const categoryId = optionMarket.templateCategory?.id;\n optionGroup.gridGroups = this.getGridGroups(optionMarket.grouping, categoryId);\n const matchedSixPacks = this.getMatchedSixPacks(optionGroup, grouping, detailedGrouping);\n optionGroup.sixPackGridGroupId = matchedSixPacks?.sixPack.id;\n optionGroup.detailedGrouping = this.mapDetailedGrouping(\n detailedGrouping,\n grouping,\n optionMarket.id,\n OfferSource.V2,\n optionMarket.attr,\n (forceRegularDisplayType && this.marketFallback.shouldForceRegularDisplayTypeTV2(detailedGrouping, optionMarket)) || isPriceBoosted,\n isPriceBoosted,\n excludePriceboostedMarketGrouping,\n optionMarket.parameters,\n matchedSixPacks,\n );\n optionGroup.periodName = this.getPeriodValue(optionMarket, detailedGrouping, grouping, matchedSixPacks?.sixPack);\n optionGroup.name = this.getTranslatedValue(optionMarket.name);\n optionGroup.visible = optionMarket.status === OptionMarketStatus.Visible;\n optionGroup.online = fixtureOnline && optionGroup.visible;\n optionGroup.hidden = optionMarket.status === OptionMarketStatus.Hidden;\n optionGroup.resultSorting = optionMarket.resultOrder ? toResultSorting(optionMarket.resultOrder) : undefined;\n optionGroup.originalParameters = optionMarket.parameters; // ToDo: To be removed after cds obsolete markettype enums are updated in FE.\n optionGroup.player1 = optionMarket.player1 && this.getTranslatedValue(optionMarket.player1);\n optionGroup.player2 = optionMarket.player2 && this.getTranslatedValue(optionMarket.player2);\n optionGroup.source = optionMarket.source;\n optionGroup.options = this.mapOptions(\n optionMarket,\n fixture,\n fixtureOnline,\n detailedGrouping,\n grouping,\n optionGroup,\n detailedGrouping.subIndex,\n isPriceBoosted,\n longIds,\n participants,\n );\n\n if (optionGroup.resultSorting) {\n optionGroup.options = sortOptions(optionGroup.options, optionGroup.resultSorting);\n }\n\n if (optionMarket.fixtureParticipantId) {\n optionGroup.fixtureParticipantId = optionMarket.fixtureParticipantId;\n\n if (participants) {\n const overrideParticipantNameMarkets = this.commonFactory.shouldOverrideParticipantNames(optionMarket, grouping.sportId);\n const playerName = participants.find((x) => x.id === optionMarket.fixtureParticipantId)?.name;\n // when a new market is added, player is not available in push update.Hence removing the options\n if (!playerName && overrideParticipantNameMarkets) {\n optionGroup.options = [];\n } else {\n optionGroup.player1 = playerName && this.getTranslatedValue(playerName);\n optionGroup.options.forEach((opt: EventOption) => {\n // eslint-disable-next-line no-param-reassign\n opt.player1 = optionGroup.player1;\n if (\n overrideParticipantNameMarkets &&\n optionGroup.player1 &&\n detailedGrouping.displayType !== DisplayType.PlayerMilestone &&\n detailedGrouping.displayType !== DisplayType.PlayerMilestoneOverUnder\n ) {\n // eslint-disable-next-line no-param-reassign\n opt.name = optionGroup.player1;\n }\n });\n }\n }\n }\n optionGroup.parameters = optionMarket.parameters;\n optionGroup.categoryAttribute = optionMarket.attr;\n optionGroup.parameterTranslations = grouping.parameterTranslations;\n optionGroup.isPartOfSgpGroup = !!isPartOfSgpGroup;\n optionGroup.hasBetBuilderMarkets = !!optionMarket.isBetBuilder;\n\n const templateId = optionMarket.parameters.find((f) => f.key === Tv2MarketParameters.TemplateId);\n if (templateId) {\n optionGroup.templateId = templateId.value;\n }\n\n const templateCategoryId = optionMarket.parameters.find((f) => f.key === Tv2MarketParameters.CategoryId);\n if (templateCategoryId) {\n optionGroup.templateCategoryId = Number(templateCategoryId.value);\n }\n\n this.patch(optionGroup, market, participants, excludePriceboostedMarketGrouping);\n this.patchDetailedGrouping(optionGroup, market, grouping, participants, this.marketGroupingConfig.correctScoreOptionsSortOrder);\n\n return optionGroup;\n }\n\n // eslint-disable-next-line max-lines-per-function\n private mapOptions(\n optionMarket: OptionMarket,\n fixture: string,\n fixtureOnline: boolean,\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n optionGroup: EventOptionGroup,\n order?: number,\n isPriceBoosted?: boolean,\n longIds?: string[],\n participants?: Participant[],\n ): EventOption[] {\n // eslint-disable-next-line no-param-reassign\n optionMarket.options = this.filterOptionsByMarketType(optionMarket, grouping.sportId);\n\n if (isPriceBoosted) {\n // eslint-disable-next-line no-param-reassign\n optionMarket.options = this.filterOptionsByBoostedPrice(optionMarket);\n }\n const participantImageMap = participants ? getParticipantImageMap(participants) : new Map();\n const hasHandicapParameter = this.hasHandicapParameter(optionMarket, detailedGrouping);\n\n //TODO please refactor\n // eslint-disable-next-line max-lines-per-function\n return optionMarket.options.map((current, index) => {\n const option = new EventOption();\n option.id = current.id;\n option.name = current.name.short || current.name.value;\n\n option.nativePrice = NativePrice.fromNativePrice(current.price);\n option.priceId = current.price.id;\n option.boostedPriceId = current.boostedPrice?.id;\n option.boostedPrice = current.boostedPrice && NativePrice.fromNativePrice(current.boostedPrice);\n option.visible =\n current.status === OptionStatus.Visible &&\n (current.participantPriceType === ParticipantPriceType.StartingPrice || option.nativePrice.greaterThan(1)) &&\n optionMarket.status === OptionMarketStatus.Visible;\n option.online = fixtureOnline && option.visible;\n option.optionGroupId = optionMarket.id;\n option.originalEventId = fixture;\n option.order = order;\n option.marketAttribute = optionMarket.attr;\n option.optionAttribute =\n optionMarket.source === OfferSource.V1\n ? current.attr\n : this.configureOptionAttribute(current, optionMarket, hasHandicapParameter, detailedGrouping, index);\n option.optionColumnId = detailedGrouping.optionColumnId;\n option.optionSpread = optionMarket.spread;\n option.player1 = optionMarket.player1 && this.getTranslatedValue(optionMarket.player1);\n option.player2 = optionMarket.player2 && this.getTranslatedValue(optionMarket.player2);\n option.player1Id = optionMarket.player1Id;\n option.player2Id = optionMarket.player2Id;\n if (detailedGrouping.optionColumnId !== undefined && grouping.optionColumns) {\n const columnConfig = this.getOptionColumnNameAndSorting(detailedGrouping, grouping, optionGroup);\n option.optionColumnName = columnConfig?.columnName;\n option.optionColumnSortOrder = columnConfig?.sorting;\n }\n option.playerId = current.participantId;\n option.participantId = optionMarket.fixtureParticipantId;\n option.optionPlayerId = current.parameters?.fixtureParticipant;\n option.optionTypes = current.parameters?.optionTypes;\n option.totalsPrefix =\n detailedGrouping.displayType === DisplayType.PlayerCombined\n ? (current.parameters?.optionTypes[0] as TotalsPrefix)\n : optionMarket.source === OfferSource.V1\n ? current.totalsPrefix\n : undefined;\n option.signature = {\n event: '',\n league: '',\n market: this.getSign(optionMarket.name),\n option: this.getSign(current.name),\n region: '',\n sport: '',\n };\n if (longIds?.length) {\n option.longId = longIds.join(';');\n }\n option.participantPriceType = current.participantPriceType;\n option.priceHistory = current.price.priceHistory;\n option.status = current.status;\n option.isBetBuilder = !!optionMarket.isBetBuilder;\n\n const templateId = optionMarket.parameters.find((f) => f.key === Tv2MarketParameters.TemplateId);\n if (templateId) {\n option.templateId = Number(templateId.value);\n }\n\n if (isPriceBoosted) {\n option.optionMarketName = this.getTranslatedValue(optionMarket.name);\n }\n\n if (participants) {\n option.image = getOptionImage(participants, option, participantImageMap);\n }\n return option;\n });\n }\n\n private getOptionColumnNameAndSorting(\n detailedGrouping: DetailedGrouping,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n optionGroup: EventOptionGroup,\n ): { columnName: string; sorting: number } | null {\n if (optionGroup.sixPackGridGroupId) {\n const sixPack = grouping.sixPackGroups[optionGroup.sixPackGridGroupId];\n if (!sixPack) {\n return null;\n }\n const index = sixPack.marketGroupIds.findIndex((i) => optionGroup.gridGroups?.includes(i));\n if (index !== -1) {\n return { columnName: sixPack.optionNames[index], sorting: index };\n }\n }\n const optionColumn = grouping.optionColumns.find((t) => t.id === detailedGrouping.optionColumnId);\n if (optionColumn) {\n return { columnName: optionColumn.name, sorting: optionColumn.sortOrder };\n }\n\n return null;\n }\n\n private filterOptionsByBoostedPrice(optionMarket: OptionMarket) {\n return optionMarket.options.filter((option) => option.boostedPrice && NativePrice.fromNativePrice(option.boostedPrice).greaterThan(1));\n }\n\n private filterOptionsByMarketType(optionMarket: OptionMarket, sportId: number): Option[] {\n const marketType = optionMarket.parameters.find((x) => x.key === Tv2MarketParameters.MarketType)?.value;\n const optionTypesToFilter = this.marketGroupingConfig.optionTypesToFilterTV2MarketOptions.find(\n (o) => o.sportId === sportId && o.marketType === marketType,\n )?.optionTypes;\n if (!optionTypesToFilter) {\n return optionMarket.options;\n }\n\n return optionMarket.options.filter((option) =>\n optionTypesToFilter.some((optionTypeFilters) =>\n optionTypeFilters.every((currentFilter) => option.parameters.optionTypes.includes(currentFilter)),\n ),\n );\n }\n\n private configureOptionAttribute(\n option: Option,\n optionMarket: OptionMarket,\n hasHandicapParameter: boolean,\n detailedGrouping: DetailedGrouping,\n index: number,\n ): string | undefined {\n switch (detailedGrouping.displayType) {\n case DisplayType.Spread:\n case DisplayType.Head2HeadSixPack:\n case DisplayType.SixPack: {\n const optionName = option.name.value.split(' ')[0];\n if (optionName === TotalsPrefix.Over || optionName === TotalsPrefix.Under) {\n const prefix =\n optionName === TotalsPrefix.Over ? this.sitecore.eventGrid.SixPack_TotalsOver : this.sitecore.eventGrid.SixPack_TotalsUnder;\n return `${prefix} ${optionMarket.attr}`;\n }\n\n if (hasHandicapParameter) {\n const optionAttribute = this.extractOptionAttribute(option.name.value);\n if (optionAttribute) {\n return optionAttribute;\n }\n }\n\n return detailedGrouping.displayType === DisplayType.SixPack || detailedGrouping.displayType === DisplayType.Head2HeadSixPack\n ? ' '\n : '0';\n }\n case DisplayType.PlayerMilestone:\n case DisplayType.PlayerMilestoneOverUnder:\n return optionMarket.options[index]?.parameters?.optionTypes[0];\n default:\n return undefined;\n }\n }\n\n private getSign(name: Translation): string {\n return (name.short && name.shortSign) || (name.value && name.sign) || '';\n }\n\n private getMatchedSixPacks(\n optionGroup: EventOptionGroup,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n detailedGrouping: DetailedGrouping,\n ): { groupId: string; sixPack: SixPackGroup } | null {\n if (\n detailedGrouping.displayType !== DisplayType.SixPack ||\n !detailedGrouping.isSixPackGroup /* obsolete check (kept only for backwards compatibility) */\n ) {\n return null;\n }\n return (\n Object.values(grouping.sixPackGroups)\n .map((sixPack) => {\n const matchedGroup = optionGroup.gridGroups?.find((group) => sixPack.marketGroupIds.includes(group));\n return matchedGroup ? { groupId: matchedGroup, sixPack } : null;\n })\n .find((result) => result != null) || null\n );\n }\n\n private hasHandicapParameter(optionMarket: OptionMarket, detailedGrouping: DetailedGrouping): boolean {\n if (\n detailedGrouping.displayType === DisplayType.Spread ||\n detailedGrouping.displayType === DisplayType.SixPack ||\n detailedGrouping.displayType === DisplayType.Head2HeadSixPack\n ) {\n return optionMarket.parameters.some((x) => x.key === Tv2MarketParameters.DecimalHandicap || x.key === Tv2MarketParameters.Handicap);\n }\n\n return false;\n }\n\n private extractOptionAttribute(optionName: string): string | null {\n const match = optionName.match(optionAttributeRegex);\n\n if (!match) {\n return null;\n }\n\n // we care just about the first character - no point in using startsWith\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n return match[0][0] === '-' || match[0][0] === '+' ? match[0] : `+${match[0]}`;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DetailedFixtureMarketFactory {\n constructor(\n @Inject(NonRootToken(MarketDisplayFallbackService)) private marketFallback: MarketDisplayFallbackService,\n private marketGroupingConfig: MarketGroupingConfig,\n private commonFactory: CommonFixtureFactory,\n private betbuilderConfig: BetBuilderConfig,\n private sitecore: Sitecore,\n ) {}\n\n private factories = [\n new GameMarketFactory(this.marketFallback, this.marketGroupingConfig, this.betbuilderConfig),\n new OptionMarketFactory(this.marketFallback, this.marketGroupingConfig, this.commonFactory, this.betbuilderConfig, this.sitecore),\n ];\n\n create(\n market: DetailedFixtureMarket,\n fixture: string,\n fixtureOnline: boolean,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n participants?: Participant[],\n isPriceBoosted?: boolean,\n longIds?: string[],\n isPartOfSgpGroup?: boolean,\n excludePriceboostedMarketGrouping?: boolean,\n forceRegularDisplayType?: boolean,\n ): EventOptionGroup[] {\n for (const factory of this.factories) {\n if (factory.canCreate(market)) {\n return factory.create(\n market,\n fixture,\n fixtureOnline,\n grouping,\n longIds,\n isPartOfSgpGroup,\n participants,\n isPriceBoosted,\n excludePriceboostedMarketGrouping,\n forceRegularDisplayType,\n );\n }\n }\n throw new Error('No market factory found for market');\n }\n\n update(optionGroup: EventOptionGroup, update: EventOptionGroup, fixtureOnline: boolean, isPriceBoosted?: boolean): EventOptionGroup {\n const updatedGroup = Object.assign(new EventOptionGroup(), optionGroup);\n updatedGroup.comboPrevention = update.comboPrevention;\n updatedGroup.templateId = update.templateId;\n updatedGroup.hidden = update.hidden && !updatedGroup.groupedMarkets?.length;\n updatedGroup.gridGroups = update.gridGroups;\n updatedGroup.resultSorting = update.resultSorting;\n updatedGroup.detailedGrouping.periodGroup = update.detailedGrouping.periodGroup;\n // Update the market order only for betting offer not grouped explicitly for market grouping configuration.\n if (update.detailedGrouping.marketSet === SetTab.Other) {\n updatedGroup.detailedGrouping.marketOrder = update.detailedGrouping.marketOrder;\n }\n if (isPriceBoosted && update.options.length === 0) {\n updatedGroup.options = [];\n } else {\n this.updateOptions(updatedGroup.options, update.options, fixtureOnline);\n if (isPriceBoosted) {\n updatedGroup.options = this.filterAndUpdatePriceBoostedOptions(updatedGroup.options, updatedGroup.name);\n }\n }\n updatedGroup.options = sortOptions(updatedGroup.options, ResultSorting.Order, optionGroup.resultSorting);\n this.updateGroupMarketIds(updatedGroup, update);\n updatedGroup.online = fixtureOnline && (update.online || updatedGroup.options.some((option) => option.online));\n updatedGroup.player1 = update.player1;\n updatedGroup.player2 = update.player2;\n\n return updatedGroup;\n }\n\n private updateOptions(currentOptions: EventOption[], updateOptions: EventOption[], fixtureOnline: boolean): void {\n if (updateOptions.length === 0) {\n return;\n }\n const marketId = updateOptions[0].optionGroupId;\n const currentOptionsList = [...currentOptions];\n currentOptionsList.forEach((current) => {\n if (current.optionGroupId !== marketId) {\n return;\n }\n const currentOptionIndex = currentOptions.findIndex((option) => option.id === current.id);\n const update = updateOptions.find((updateOption) => updateOption.id === current.id);\n if (update) {\n // eslint-disable-next-line no-param-reassign\n currentOptions[currentOptionIndex] = this.createOption(update, fixtureOnline, current);\n } else {\n currentOptions.splice(currentOptionIndex, 1);\n }\n });\n updateOptions\n .filter((update) => !currentOptions.find((current) => current.optionGroupId === update.optionGroupId && current.id === update.id))\n .forEach((create) => {\n currentOptions.push(this.createOption(create, fixtureOnline, undefined));\n });\n }\n\n private updateGroupMarketIds(optionGroup: EventOptionGroup, update: EventOptionGroup): void {\n if (optionGroup.id !== update.id && optionGroup.groupedMarkets && !optionGroup.groupedMarkets.find((id) => id === update.id.toString())) {\n // eslint-disable-next-line no-param-reassign\n optionGroup.groupedMarkets = optionGroup.groupedMarkets || [];\n optionGroup.groupedMarkets.push(update.id);\n }\n }\n\n private createOption(update: EventOption | undefined, fixtureOnline: boolean, current: EventOption = new EventOption()): EventOption {\n if (!update) {\n return current;\n }\n // eslint-disable-next-line no-param-reassign\n current.id = update.id;\n // eslint-disable-next-line no-param-reassign\n current.name = update.name;\n // eslint-disable-next-line no-param-reassign\n current.nativePrice = update.nativePrice.clone();\n // eslint-disable-next-line no-param-reassign\n current.priceId = update.priceId;\n // eslint-disable-next-line no-param-reassign\n current.visible = !!update.visible;\n // eslint-disable-next-line no-param-reassign\n current.online = fixtureOnline && current.visible;\n // eslint-disable-next-line no-param-reassign\n current.optionGroupId = update.optionGroupId;\n // eslint-disable-next-line no-param-reassign\n current.originalEventId = update.originalEventId;\n // eslint-disable-next-line no-param-reassign\n current.order = update.order;\n // eslint-disable-next-line no-param-reassign\n current.optionColumnId = update.optionColumnId;\n // eslint-disable-next-line no-param-reassign\n current.signature = {\n event: '',\n league: '',\n market: update.signature.market,\n option: update.signature.option,\n region: '',\n sport: '',\n };\n // eslint-disable-next-line no-param-reassign\n current.marketAttribute = update.marketAttribute;\n // eslint-disable-next-line no-param-reassign\n current.optionAttribute = update.optionAttribute;\n // eslint-disable-next-line no-param-reassign\n current.optionSpread = update.optionSpread;\n // eslint-disable-next-line no-param-reassign\n current.player1 = update.player1;\n // eslint-disable-next-line no-param-reassign\n current.playerId = update.playerId;\n // eslint-disable-next-line no-param-reassign\n current.optionColumnName = update.optionColumnName;\n // eslint-disable-next-line no-param-reassign\n current.boostedPrice = update.boostedPrice;\n // eslint-disable-next-line no-param-reassign\n current.boostedPriceId = update.boostedPriceId;\n // eslint-disable-next-line no-param-reassign\n current.totalsPrefix = update.totalsPrefix;\n // eslint-disable-next-line no-param-reassign\n current.participantPriceType = update.participantPriceType;\n // eslint-disable-next-line no-param-reassign\n current.priceHistory = update.priceHistory;\n // eslint-disable-next-line no-param-reassign\n current.status = update.status;\n // eslint-disable-next-line no-param-reassign\n current.optionMarketName = update.optionMarketName;\n\n return current;\n }\n\n private filterAndUpdatePriceBoostedOptions(options: EventOption[], optionMarketName: string): EventOption[] {\n return options\n .filter((option) => option.boostedPrice?.greaterThan(1))\n .map((option) => {\n // eslint-disable-next-line no-param-reassign\n option.showBoostedPrice = true;\n // eslint-disable-next-line no-param-reassign\n option.optionMarketName = optionMarketName;\n\n return option;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { EventModel, EventOptionGroup } from '@frontend/sports/betting-offer/feature/model';\nimport { BettingOfferConfig } from '@frontend/sports/common/client-config-data-access';\n\n/**\n * Processing option groups for which there is a linkeFixture and configured mapping\n * Mapping between templateId and MarketType done in Dynacon\n *\n * @updateLinkedGroups flag OptionGroup if both conditions are true(linkedFixture & mapping),\n * used to show linked golf EW instead of the flagged golf optionGroup\n */\n@Injectable({ providedIn: 'root' })\nexport class LinkedFixtureService {\n constructor(private offerConfig: BettingOfferConfig) {}\n\n updateLinkedGroups(event: EventModel): EventOptionGroup[] {\n if (event.winGameLinkedFixture) {\n const fixtureMarketType = this.getMarketType(event.winGameLinkedFixture);\n\n event.optionGroups.forEach((og) => {\n const templateIdMapping = this.offerConfig.golfSiblingMapping[og.templateId];\n\n if (templateIdMapping === fixtureMarketType) {\n // eslint-disable-next-line no-param-reassign\n og.linkedSibling = true;\n }\n });\n }\n\n return event.optionGroups;\n }\n\n private getMarketType(fixture: Fixture): string {\n const participant = fixture.participants.find((p) => p.options.length);\n\n return participant?.options[0].marketType ?? '';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport {\n DetailedGrouping,\n DisplayType,\n Fixture,\n Game,\n GroupingInfo,\n Option,\n OptionMarket,\n OptionMarketStatus,\n OptionStatus,\n OrderType,\n Parameter,\n ParameterType,\n Participant,\n Translation,\n} from '@cds/betting-offer';\nimport { BettingInsightsModel } from '@cds/betting-offer/betting-insights';\nimport { SplitFixture } from '@cds/betting-offer/domain-specific';\nimport { BetBuilderFixture } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { ScoreboardSlim } from '@cds/scoreboards/v1';\nimport { PlayerStats } from '@cds/statistics/player';\nimport {\n EnhancedFixtureViewGroupingConfiguration,\n EventDetailsTags,\n EventModel,\n EventOptionGroup,\n ExtendedDisplayType,\n PRECREATED_BAB_EMPTY_THEME_ID,\n Tv2MarketParameters,\n getSourceEventId,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { BetBuilderConfig, EventDetailsConfig, PriceBoostConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\nimport { NativeAppService } from '@frontend/vanilla/core';\nimport { cloneDeep, flatten } from 'lodash-es';\n\nimport { DetailedGroupingFactory } from '../detailed-grouping.factory';\nimport { CommonFixtureFactory } from './common-fixture.factory';\nimport { DetailedFixtureMarket, DetailedFixtureMarketFactory } from './detailed-fixture-market.factory';\nimport { EventSitemapGroupingFactory } from './event-sitemap-grouping.factory';\nimport { LinkedFixtureService } from './linked-fixture.service';\n\nexport interface EventDetailsParameters {\n fixture: Fixture;\n splitFixtures: SplitFixture[];\n grouping: EnhancedFixtureViewGroupingConfiguration;\n precreated?: BetBuilderFixture;\n isPriceBoosted?: boolean;\n loadEventSitemap?: boolean;\n bettingInsights?: BettingInsightsModel;\n excludePriceboostedMarketGrouping?: boolean;\n}\n\nexport interface MarketGroupDetails {\n groupId: string;\n groupItemId: string | undefined;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DetailedCreateFactory {\n constructor(\n private fixtureFactory: CommonFixtureFactory,\n private marketFactory: DetailedFixtureMarketFactory,\n private groupingFactory: DetailedGroupingFactory,\n private eventSitemapGroupingFactory: EventSitemapGroupingFactory,\n private eventDetailsConfig: EventDetailsConfig,\n public sitecore: Sitecore,\n public betBuilderConfig: BetBuilderConfig,\n public linkedFixtureService: LinkedFixtureService,\n private nativeAppService: NativeAppService,\n private priceBoostConfig: PriceBoostConfig,\n ) {}\n\n create(eventParameters: EventDetailsParameters): EventModel {\n const event = this.fixtureFactory.create(eventParameters.fixture);\n const optionGroups = this.createOptionGroups(\n eventParameters.fixture,\n eventParameters.splitFixtures,\n eventParameters.grouping,\n eventParameters.precreated,\n eventParameters.isPriceBoosted,\n eventParameters.excludePriceboostedMarketGrouping,\n );\n const betBuilderId = event.getBetBuilderIdByStage();\n const optionSets = this.groupingFactory.getOptionSets(optionGroups, eventParameters.grouping, eventParameters.fixture.source, betBuilderId);\n\n this.setParticipantsShirtColor(event, eventParameters.fixture);\n\n event.marketsDictionary = this.createMarketsDictionary(optionGroups);\n event.splitFixtureIds = (eventParameters.splitFixtures && eventParameters.splitFixtures.map((splitFixture) => splitFixture.id)) || [];\n event.fixtureScoreboard = eventParameters.fixture.scoreboard as ScoreboardSlim;\n event.optionGroups = optionGroups;\n event.optionSets = optionSets;\n event.gamesCount = optionGroups.length;\n event.isPriceBoosted = eventParameters.isPriceBoosted;\n event.bettingInsights = eventParameters.bettingInsights;\n event.playerStats = this.getPlayerStats(eventParameters.fixture, eventParameters.splitFixtures);\n\n if (eventParameters.fixture.tv2LinkedFixture) {\n event.winGameLinkedFixture = eventParameters.fixture.tv2LinkedFixture;\n event.optionGroups = this.linkedFixtureService.updateLinkedGroups(event);\n }\n\n if (!!eventParameters.loadEventSitemap && this.eventDetailsConfig.enableSitemapNavigation) {\n event.sitemapSets = this.eventSitemapGroupingFactory.getSitemapSet(optionSets, eventParameters.grouping, optionGroups);\n }\n\n if (eventParameters.precreated?.precreatedGroupedInfo) {\n event.precreatedOptionGroups = eventParameters.precreated?.precreatedGroupedInfo;\n }\n\n return event;\n }\n\n //TODO please refactor this function if you are going to modify it, it's very complicated and must be refactored\n // eslint-disable-next-line max-lines-per-function, sonarjs/cognitive-complexity\n createOptionGroups(\n fixture: Fixture,\n splitFixtures: SplitFixture[],\n grouping: EnhancedFixtureViewGroupingConfiguration,\n precreated?: BetBuilderFixture,\n isPriceBoosted?: boolean,\n excludePriceboostedMarketGrouping?: boolean,\n forceRegularDisplayType = true,\n ): EventOptionGroup[] {\n const result: EventOptionGroup[] = [];\n const mapper = (id: string, source?: DetailedFixtureMarket[], participants?: Participant[], isPartOfSgpGroup?: boolean) => {\n if (!source) {\n return [];\n }\n\n return flatten(\n source.map((optionGroup) => {\n const longIds = precreated?.precreatedMarketsInfo.find((marketInfo) => marketInfo.id === optionGroup.id)?.selections;\n\n return this.marketFactory.create(\n optionGroup,\n id,\n fixture.isOpenForBetting,\n grouping,\n participants,\n isPriceBoosted,\n longIds,\n isPartOfSgpGroup,\n excludePriceboostedMarketGrouping,\n forceRegularDisplayType,\n );\n }),\n );\n };\n\n result.push(...mapper(fixture.id, fixture.games, fixture.participants));\n result.push(...mapper(fixture.id, fixture.optionMarkets, fixture.participants));\n\n if ((this.priceBoostConfig.isEnabled || this.priceBoostConfig.isEnabledAPB) && grouping.apbGroups && fixture.priceBoostCount > 0) {\n const priceBoostMarketGroup = this.priceBoostConfig.showAsTab\n ? grouping.apbGroups.filter((p) => p.tag?.key === EventDetailsTags.PriceBoost)\n : grouping.apbGroups.filter(\n (group) =>\n group.tag?.key !== EventDetailsTags.PriceBoost &&\n group.marketGroupItems.some((item) => item.tags.some((tag) => tag.key === EventDetailsTags.PriceBoost)),\n );\n\n if (priceBoostMarketGroup.length > 0) {\n const filteredData = priceBoostMarketGroup.map((data) => {\n const mappedData = {\n groupId: data.groupId,\n groupItemId: data.marketGroupItems.find((marketGroupItem) =>\n marketGroupItem.tags.some((tag) => tag.key === EventDetailsTags.PriceBoost),\n )?.id,\n };\n\n return mappedData;\n });\n\n if (filteredData.length > 0) {\n const automatedPriceBoostMarkets = this.getAutomatedPriceBoostedMarkets(filteredData, fixture.optionMarkets);\n result.push(...mapper(fixture.id, automatedPriceBoostMarkets));\n }\n }\n }\n\n if (\n this.betBuilderConfig.isBetBuilderEnabledForSport?.includes(fixture.sport.id) &&\n (this.nativeAppService.isTerminal || this.betBuilderConfig.themedTabs[fixture.sport.id])\n ) {\n const markets =\n precreated?.precreatedMarketsInfo.length && grouping.preCreatedGroups\n ? this.getBetBuilderMarketsToBeAppended(fixture, grouping, precreated)\n : fixture.optionMarkets;\n\n if (precreated?.sourceFixture?.id) {\n const precreatedFixtureId = getSourceEventId(precreated?.sourceFixture.id);\n result.push(...mapper(precreatedFixtureId, markets));\n }\n\n if (precreated?.precreatedGroupedInfo && grouping.preCreatedGroups) {\n const precreatedOptionGroups = this.getBetBuilderOptionGroupMarketsToBeAppended(fixture, grouping, precreated);\n\n result.push(...mapper(fixture.id, markets, undefined));\n result.push(...mapper(fixture.id, precreatedOptionGroups, undefined, true));\n }\n }\n\n splitFixtures.forEach((split) => {\n result.push(...mapper(split.id, split.games, fixture.participants));\n });\n\n return result;\n }\n\n private getAutomatedPriceBoostedMarkets(marketGroupItemsCollection: MarketGroupDetails[], optionMarkets: OptionMarket[]): OptionMarket[] {\n const boostedOptionMarkets: OptionMarket[] = [];\n\n marketGroupItemsCollection.map((data) => {\n if (data.groupItemId) {\n const parameters: Parameter[] = [\n {\n key: Tv2MarketParameters.MarketType,\n type: ParameterType.String,\n value: ExtendedDisplayType.AutomatedPriceBoost,\n },\n ];\n const detailsGroups: DetailedGrouping = {\n displayType: DisplayType.Regular,\n orderType: OrderType.None,\n marketHelpPath: '',\n marketGroupId: data.groupId,\n marketGroupItemId: data.groupItemId,\n contextInfo: '',\n };\n optionMarkets.reduce((res: OptionMarket[], optionMarket) => {\n const boostedOptions = optionMarket.options.filter(\n (option) => option.boostedPrice && NativePrice.fromNativePrice(option.boostedPrice).greaterThan(1),\n );\n\n if (boostedOptions.length) {\n const boostedOptionMarket = cloneDeep(optionMarket);\n boostedOptionMarket.options = cloneDeep(boostedOptions);\n boostedOptionMarket.grouping = {\n detailed: [detailsGroups],\n gridGroups: [],\n };\n boostedOptionMarket.parameters = parameters;\n res.push(boostedOptionMarket);\n }\n\n return res;\n }, boostedOptionMarkets);\n }\n });\n\n return boostedOptionMarkets;\n }\n\n private getPlayerStats(fixture: Fixture, splitFixtures: SplitFixture[]): PlayerStats[] {\n if (fixture.playerStats?.some((x) => x.source === OfferSource.V1)) {\n return fixture.playerStats;\n }\n\n const playerStats = fixture.playerStats ?? [];\n const splitWithStats = splitFixtures.find((split) => !!split.playerStats);\n\n if (splitWithStats) {\n playerStats.push(splitWithStats.playerStats);\n }\n\n return playerStats;\n }\n\n //TODO please refactor below function if you are going to modify anything within it.\n // eslint-disable-next-line max-lines-per-function\n private getBetBuilderMarketsToBeAppended(\n fixture: Fixture,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n precreated?: BetBuilderFixture,\n ): OptionMarket[] {\n const precreatedModel = cloneDeep(precreated);\n if (precreatedModel?.precreatedMarketsInfo.length) {\n let optionMarkets: OptionMarket[] | undefined = [];\n optionMarkets = precreatedModel?.sourceFixture\n ? precreatedModel?.sourceFixture.optionMarkets.filter((market) => {\n return precreatedModel.precreatedMarketsInfo.some((f) => {\n return f.id === market.id;\n });\n })\n : [];\n const emptyMarketTabs = grouping.marketTabs.filter((x) => x.name === '');\n optionMarkets?.forEach((precreatedBAB) => {\n const themedName = precreatedModel?.precreatedMarketsInfo.find((x) => x.id === precreatedBAB.id);\n let marketTabId;\n if (!this.nativeAppService.isTerminal) {\n marketTabId = grouping.marketTabs.find((x) => x.name?.toUpperCase() === themedName?.themedTab?.toUpperCase());\n }\n if (marketTabId === undefined || marketTabId.name === '') {\n marketTabId = emptyMarketTabs[0];\n marketTabId.id = PRECREATED_BAB_EMPTY_THEME_ID;\n }\n const parameters: Parameter[] = [];\n const parameter: Parameter = {\n key: Tv2MarketParameters.MarketType,\n type: ParameterType.String,\n value: ExtendedDisplayType.BetBuilder,\n };\n parameters.push(parameter);\n const detailedGrouping: DetailedGrouping[] = [];\n const preCreatedMarketGroups = !this.betBuilderConfig.enablePrecreatedBetBuilderTab\n ? grouping.preCreatedGroups.filter((g) => g.tag?.key !== EventDetailsTags.PreCreatedBab)\n : grouping.preCreatedGroups;\n\n for (const group of preCreatedMarketGroups) {\n for (const marketGroupItem of group.marketGroupItems) {\n detailedGrouping.push({\n displayType: DisplayType.Regular,\n orderType: OrderType.None,\n marketTabId: marketTabId?.id,\n name: this.sitecore.betBuilder.messages?.PrecreatedBuildABetTitle,\n marketHelpPath: this.sitecore.betBuilder.messages?.PrecreatedBuildABetTitleHelpText ?? '',\n marketGroupId: group.groupId,\n contextInfo: '',\n marketGroupItemId: marketGroupItem.id,\n });\n }\n }\n const groupingInfo: GroupingInfo = {\n detailed: detailedGrouping,\n gridGroups: [],\n // eslint-disable-next-line max-lines\n };\n // eslint-disable-next-line no-param-reassign\n precreatedBAB.grouping = groupingInfo;\n const market = precreatedModel.precreatedMarketsInfo.find((x) => x.id === precreatedBAB.id);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const marketName: Translation = { sign: market!.themedTab, value: market!.themedTab };\n // eslint-disable-next-line no-param-reassign\n precreatedBAB.name = marketName;\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n precreatedBAB.id = market!.id;\n // eslint-disable-next-line no-param-reassign\n precreatedBAB.parameters = parameters;\n // eslint-disable-next-line no-param-reassign\n precreatedBAB.status = OptionMarketStatus.Visible;\n // eslint-disable-next-line no-param-reassign\n precreatedBAB.options = this.mapOptions(precreatedBAB, precreated);\n fixture.optionMarkets.push(precreatedBAB);\n });\n }\n\n return fixture.optionMarkets;\n }\n\n //TODO please refactor below function\n // eslint-disable-next-line max-lines-per-function\n private getBetBuilderOptionGroupMarketsToBeAppended(\n fixture: Fixture,\n grouping: EnhancedFixtureViewGroupingConfiguration,\n precreated?: BetBuilderFixture,\n ): DetailedFixtureMarket[] {\n const precreatedModel = cloneDeep(precreated);\n const emptyMarketTab = grouping.marketTabs.find((x) => x.name === '');\n const markets: DetailedFixtureMarket[] = [];\n\n if (precreatedModel?.precreatedGroupedInfo.length) {\n const preCreatedMarketGroups = !this.betBuilderConfig.enablePrecreatedBetBuilderTab\n ? grouping.preCreatedGroups.filter((g) => g.tag?.key !== EventDetailsTags.PreCreatedBab)\n : grouping.preCreatedGroups;\n // eslint-disable-next-line max-lines-per-function\n precreatedModel?.precreatedGroupedInfo.forEach((group) =>\n // eslint-disable-next-line max-lines-per-function, @typescript-eslint/no-confusing-void-expression, sonarjs/cognitive-complexity\n group.options.forEach((option) => {\n const precreatedBAB = fixture.games.length\n ? fixture.games.find((market) => market.id === option.marketId)\n : fixture.optionMarkets.find((market) => market.id === option.marketId);\n if (!precreatedBAB) {\n return;\n }\n const precreatedBABModel = cloneDeep(precreatedBAB);\n const detailedGrouping: DetailedGrouping[] = [];\n for (const preCreatedGroup of preCreatedMarketGroups) {\n for (const marketGroupItem of preCreatedGroup.marketGroupItems) {\n detailedGrouping.push({\n displayType: DisplayType.Regular,\n orderType: OrderType.None,\n marketTabId: emptyMarketTab?.id,\n name: this.sitecore.betBuilder.messages?.PrecreatedBuildABetTitle,\n marketHelpPath: this.sitecore.betBuilder.messages?.PrecreatedBuildABetTitleHelpText ?? '',\n marketGroupId: preCreatedGroup.groupId,\n contextInfo: '',\n marketGroupItemId: marketGroupItem.id,\n });\n }\n }\n const groupingInfo: GroupingInfo = {\n detailed: detailedGrouping,\n\n gridGroups: [],\n };\n precreatedBABModel.grouping = groupingInfo;\n // precreatedBABModel is TV1 Game\n if ('visibility' in precreatedBABModel) {\n const foundOption = precreatedBABModel.results.find((o) => o.id === option.id);\n\n if (foundOption) {\n const foundMarket = markets.find((market) => market.id === precreatedBABModel.id) as Game | undefined;\n if (foundMarket) {\n foundMarket.results.push(foundOption);\n } else {\n precreatedBABModel.results = [foundOption];\n markets.push(precreatedBABModel);\n }\n }\n }\n // precreatedBABModel is TV2 OptionMarket\n if ('status' in precreatedBABModel) {\n const parameters: Parameter[] = [\n {\n key: Tv2MarketParameters.MarketType,\n type: ParameterType.String,\n value: ExtendedDisplayType.BetBuilder,\n },\n ];\n precreatedBABModel.parameters = parameters;\n const foundOption = precreatedBABModel.options.find((o) => o.id === option.id);\n\n if (foundOption) {\n const foundMarket = markets.find((market) => market.id === precreatedBABModel.id) as OptionMarket | undefined;\n if (foundMarket) {\n foundMarket.options.push(foundOption);\n } else {\n precreatedBABModel.options = [foundOption];\n markets.push(precreatedBABModel);\n }\n }\n }\n }),\n );\n }\n\n return markets;\n }\n\n private mapOptions(precreatedBAB: OptionMarket, precreated: BetBuilderFixture | undefined): Option[] {\n return precreatedBAB.options.map((option) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const currentMarketName = precreated?.sourceFixture.optionMarkets.find((x) => x.id === precreatedBAB.id)!.name;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const optionMarketName: Translation = { sign: currentMarketName!.sign, value: currentMarketName!.value };\n\n return {\n ...option,\n price: option.price,\n name: optionMarketName,\n status: OptionStatus.Visible,\n sourceName: option.sourceName,\n id: option.id,\n };\n });\n }\n\n private createMarketsDictionary(optionGroups: EventOptionGroup[]): Record {\n return optionGroups.reduce>((marketsDictionary, group) => {\n const ids = [group.id, ...(group.groupedMarkets || [])];\n\n ids.forEach((id) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!marketsDictionary[id]) {\n // eslint-disable-next-line no-param-reassign\n marketsDictionary[id] = [];\n }\n\n marketsDictionary[id].push(group);\n });\n\n return marketsDictionary;\n }, {});\n }\n\n private setParticipantsShirtColor(eventModel: EventModel, fixture: Fixture): void {\n const animationSports = [SportConstant.Basketball, SportConstant.Tennis, SportConstant.Icehockey];\n const fallbackColors: string[] = this.eventDetailsConfig.teamIndicatorFallbackColors.slice(0, 2);\n //TODO any index issue, probably a defect, please consider adding player info to cds scoreboard type\n const hasPlayerInfo = fixture.scoreboard && fixture.scoreboard['playerInfo' as keyof typeof fixture.scoreboard];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const playerInfo = hasPlayerInfo && (fixture.scoreboard['playerInfo' as keyof typeof fixture.scoreboard] as any);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const isColorsAvailable = hasPlayerInfo && playerInfo.colorsAvailable;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const areTeamColorsSame = isColorsAvailable && playerInfo.players[`01`].shirtColor === playerInfo.players[`02`].shirtColor;\n\n eventModel.participants.forEach((participant, index) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, no-param-reassign\n participant.shirtColor =\n isColorsAvailable && !areTeamColorsSame\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n playerInfo.players[`0${index + 1}`].shirtColor\n : animationSports.indexOf(eventModel.sport.id) > -1 || areTeamColorsSame\n ? fallbackColors[index]\n : null;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EventOptionGroup, Tv2MarketParameters } from '@frontend/sports/betting-offer/feature/model';\nimport { OfferGroupingService } from '@frontend/sports/betting-offer/feature/offer-grouping';\nimport { HappeningType, MarketType, PeriodType } from '@frontend/sports/betting-offer/feature/types';\nimport { GridConfig } from '@frontend/sports/common/client-config-data-access';\nimport { GridEvent, Group } from '@frontend/sports/grid/core/feature/model';\nimport Decimal from 'decimal.js';\n\n@Injectable({ providedIn: 'root' })\nexport class OptionGroupService {\n fallbackMarketsHeaderInfo: { [key: string]: string } = {};\n\n constructor(\n private gridConfig: GridConfig,\n private offerGroupingService: OfferGroupingService,\n ) {}\n\n get(optionGroups: EventOptionGroup[], groupId?: string | number): EventOptionGroup | undefined {\n if (!optionGroups) {\n return;\n }\n\n return optionGroups\n .filter((optionGroup) => (groupId !== undefined ? optionGroup.hasGroup(groupId) : optionGroup.hasAnyGroup()))\n .sort((first, second) => this.getOrder(first) - this.getOrder(second))\n .shift();\n }\n\n private getOrder(optionGroup: EventOptionGroup): number {\n return optionGroup.optionSpread == null ? Number.MAX_VALUE : optionGroup.optionSpread;\n }\n\n private hasNonBettableOdds(eventOptionGroup: EventOptionGroup | undefined): boolean {\n return !!eventOptionGroup?.options.some((element) => element.nativePrice.odds < new Decimal(this.gridConfig.fallbackMarketOddsThreshold));\n }\n\n private isBettableOptionGroup(optionGroup: EventOptionGroup | undefined): boolean {\n return !!(optionGroup && optionGroup.online && optionGroup.options?.length && optionGroup.options.some((opt) => opt.online));\n }\n\n private setFallbackGroupsNames(event: GridEvent, gridIds: string[]): void {\n this.offerGroupingService.getGridGrouping(event.sport.id).subscribe((gridGroupConfig) => {\n gridGroupConfig?.groups?.map((group) => {\n if (gridIds.includes(group.id)) {\n this.fallbackMarketsHeaderInfo[group.id] = group.name;\n }\n });\n });\n }\n\n getFallbackOptionGroup(\n group: Group,\n event: GridEvent,\n optionGroup: EventOptionGroup | undefined,\n ): { optionGroup: EventOptionGroup | undefined; isFallbackMarket: boolean; fallbackMarketName: string; isNextGoalMarket: boolean } | undefined {\n let fallbackMarketName = '';\n\n const fallbackGridGroupIds = group?.fallbackGridGroupIds ?? [];\n\n if (!this.showFallbackMarkets(fallbackGridGroupIds, optionGroup, event)) {\n return;\n }\n\n this.setFallbackGroupsNames(event, fallbackGridGroupIds);\n\n const availableOptionGroup = fallbackGridGroupIds.find((gridId) => {\n optionGroup = this.get(event.optionGroups, gridId);\n return this.isBettableOptionGroup(optionGroup) && !this.hasNonBettableOdds(optionGroup);\n });\n\n if (availableOptionGroup) {\n fallbackMarketName = this.fallbackMarketsHeaderInfo[availableOptionGroup];\n return { optionGroup, isFallbackMarket: true, fallbackMarketName, isNextGoalMarket: this.isNextGoalMarket(optionGroup) };\n }\n\n return undefined;\n }\n\n private isNextGoalMarket(optionGroup: EventOptionGroup | undefined): boolean {\n if (optionGroup) {\n return (\n optionGroup.parameters?.find((p) => p.key === Tv2MarketParameters.MarketType)?.value === MarketType.XthHappening &&\n optionGroup.parameters?.find((p) => p.key === Tv2MarketParameters.Happening)?.value === HappeningType.Goal &&\n optionGroup.parameters?.find((p) => p.key === Tv2MarketParameters.Period)?.value === PeriodType.RegularTime\n );\n }\n return false;\n }\n\n private showFallbackMarkets(fallbackGridIds: string[], optionGroup: EventOptionGroup | undefined, event: GridEvent): boolean {\n return !!fallbackGridIds?.length && (!optionGroup || !this.isBettableOptionGroup(optionGroup) || this.hasNonBettableOdds(optionGroup));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { Game, OptionMarket, OptionMarketStatus, OptionStatus, ParticipantPriceType, TotalsPrefix, Visibility } from '@cds/betting-offer';\nimport {\n ComboPrevention,\n ComboPreventionMinimum,\n ComboPreventionType,\n EventOption,\n EventOptionGroup,\n ResultSorting,\n Tv2MarketParameters,\n toResultSorting,\n} from '@frontend/sports/betting-offer/feature/model';\nimport { BetBuilderConfig } from '@frontend/sports/common/client-config-data-access';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\n\nimport { sortOptions } from '../helpers/option-sorting';\nimport { CommonMarketFactory } from './common-market.factory';\n\nexport type FixtureMarket = Game | OptionMarket;\n\ninterface MarketFactory {\n create(market: FixtureMarket): EventOptionGroup;\n\n canCreate(market: FixtureMarket, source: OfferSource | undefined): boolean;\n}\n\nclass GameMarketFactory extends CommonMarketFactory implements MarketFactory {\n canCreate(market: FixtureMarket): market is Game & boolean {\n return 'visibility' in market;\n }\n\n create(market: FixtureMarket): EventOptionGroup {\n const game = market as Game;\n\n const combo = new ComboPrevention();\n combo.minimum = ComboPreventionMinimum[game.combo2];\n combo.restriction = ComboPreventionType[game.combo1];\n\n const optionGroup = new EventOptionGroup();\n optionGroup.id = game.id.toString();\n optionGroup.comboPrevention = combo;\n const categoryId = game.templateCategory && game.templateCategory.id;\n optionGroup.gridGroups = this.getGridGroups(game.grouping, categoryId);\n optionGroup.templateId = game.templateId.toString();\n optionGroup.name = game.name.value;\n optionGroup.winning = !!game.isMain;\n optionGroup.online = game.visibility === Visibility.Visible;\n optionGroup.hidden = game.visibility === Visibility.Hidden;\n optionGroup.resultSorting = toResultSorting(game.resultOrder);\n optionGroup.options = this.mapOptions(game, optionGroup.resultSorting);\n\n optionGroup.balanced = game.balanced === 1;\n optionGroup.optionSpread = game.spread;\n optionGroup.twoThreeWay = game.isMain;\n optionGroup.categoryAttribute = market.attr;\n optionGroup.description = game.description;\n optionGroup.templateCategoryId = game.categoryId;\n optionGroup.templateCategory = game.category;\n optionGroup.source = OfferSource.V1;\n optionGroup.hasBetBuilderMarkets = !!game.isBetBuilder;\n\n this.patch(optionGroup, market);\n\n return optionGroup;\n }\n\n private mapOptions(game: Game, resultSorting: ResultSorting): EventOption[] {\n const options = game.results.map((result) => {\n const option = new EventOption();\n\n option.id = result.id;\n option.name = result.name.value;\n option.nativePrice = NativePrice.fromNativePrice(result);\n option.online = result.visibility === Visibility.Visible && result.odds > 1;\n option.optionAttribute = result.attr;\n option.optionGroupId = game.id;\n option.player1 = game.player1 && (game.player1.value || game.player1.short);\n option.signature = {\n event: '',\n league: '',\n market: '',\n option: '',\n region: '',\n sport: '',\n };\n\n option.overridenName = result.sourceName && result.sourceName.value;\n option.marketAttribute = game.attr;\n option.totalsPrefix = result.totalsPrefix;\n option.optionColumnId = game.grouping.detailed.length && game.grouping.detailed[0].optionColumnId;\n option.playerId = result.playerId;\n option.isBetBuilder = !!game.isBetBuilder;\n\n return option;\n });\n\n return sortOptions(options, resultSorting);\n }\n}\n\nclass OptionMarketFactory extends CommonMarketFactory implements MarketFactory {\n canCreate(market: FixtureMarket): market is OptionMarket & boolean {\n return 'status' in market;\n }\n\n create(market: FixtureMarket): EventOptionGroup {\n const optionMarket = market as OptionMarket;\n\n const combo = new ComboPrevention();\n combo.minimum = optionMarket.minCombo || ComboPreventionMinimum.Single;\n combo.restriction = ComboPreventionType[optionMarket.comboPrevention];\n\n const optionGroup = new EventOptionGroup();\n optionGroup.id = optionMarket.id.toString();\n optionGroup.name = optionMarket.name.short || optionMarket.name.value;\n optionGroup.online = optionMarket.status === OptionMarketStatus.Visible;\n optionGroup.hidden = optionMarket.status === OptionMarketStatus.Hidden;\n optionGroup.options = this.mapOptions(optionMarket);\n optionGroup.gridGroups = this.getGridGroups(optionMarket.grouping);\n optionGroup.balanced = optionMarket.balanced === 1;\n optionGroup.parameters = optionMarket.parameters;\n optionGroup.optionSpread = optionMarket.spread;\n optionGroup.categoryAttribute = market.attr;\n optionGroup.winning = !!optionMarket.isMain;\n optionGroup.isEachWay = !!optionMarket.isEachWay;\n optionGroup.placeTerms = optionMarket.placeTerms;\n optionGroup.resultSorting = optionMarket.resultOrder ? toResultSorting(optionMarket.resultOrder) : undefined;\n optionGroup.description = optionMarket.description;\n optionGroup.source = optionMarket.source;\n optionGroup.templateCategory = optionMarket.templateCategory?.category;\n optionGroup.hasBetBuilderMarkets = !!optionMarket.isBetBuilder;\n const templateId = optionMarket.parameters.find((f) => f.key === Tv2MarketParameters.TemplateId);\n if (templateId) {\n optionGroup.templateId = templateId.value;\n }\n const templateCategoryId = optionMarket.parameters.find((f) => f.key === Tv2MarketParameters.CategoryId);\n if (templateCategoryId) {\n optionGroup.templateCategoryId = Number(templateCategoryId.value);\n }\n\n this.patch(optionGroup, market);\n\n return optionGroup;\n }\n\n private mapOptions(optionMarket: OptionMarket): EventOption[] {\n return optionMarket.options.map((current) => {\n const option = new EventOption();\n\n option.id = current.id;\n option.name = current.name.short || current.name.value;\n option.nativePrice = NativePrice.fromNativePrice(current.price);\n option.priceId = current.price.id;\n option.status = current.status;\n option.online =\n current.status === OptionStatus.Visible &&\n (option.nativePrice.greaterThan(1) || current.participantPriceType === ParticipantPriceType.StartingPrice);\n option.optionGroupId = optionMarket.id;\n if (current.boostedPrice != null) {\n option.boostedPrice = NativePrice.fromNativePrice(current.boostedPrice);\n option.boostedPriceId = current.boostedPrice?.id;\n }\n option.player1 = optionMarket.player1 && (optionMarket.player1.value || optionMarket.player1.short);\n option.signature = {\n event: '',\n league: '',\n market: '',\n option: '',\n region: '',\n sport: '',\n };\n\n option.overridenName = current.sourceName && current.sourceName.value;\n option.marketAttribute = current.attr ?? optionMarket.attr;\n option.optionColumnId = optionMarket.grouping?.detailed[0]?.optionColumnId;\n option.playerId = current.participantId;\n option.optionAttribute = optionMarket.source === OfferSource.V1 ? current.attr : undefined;\n option.totalsPrefix =\n optionMarket.source === OfferSource.V1 ? current.totalsPrefix : this.getValidTotalsPrefixType(current.parameters?.optionTypes);\n option.optionPlayerId = current.parameters?.fixtureParticipant;\n option.isBetBuilder = !!optionMarket.isBetBuilder;\n option.optionTypes = current.parameters?.optionTypes;\n option.participantPriceType = current.participantPriceType;\n return option;\n });\n }\n\n private getValidTotalsPrefixType(optionTypes?: string[]): TotalsPrefix | undefined {\n const totalsPrefixType = optionTypes?.find((type) => type === TotalsPrefix.Over || type === TotalsPrefix.Under);\n\n return totalsPrefixType ? (totalsPrefixType as TotalsPrefix) : undefined;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FixtureMarketFactory {\n constructor(private betbuilderConfig: BetBuilderConfig) {}\n private factories = [new GameMarketFactory(this.betbuilderConfig), new OptionMarketFactory(this.betbuilderConfig)];\n\n create(market: FixtureMarket): EventOptionGroup {\n for (const factory of this.factories) {\n if (factory.canCreate(market)) {\n return factory.create(market);\n }\n }\n\n throw new Error('No market factory found for market');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Fixture, FixtureStage, Game, OptionMarket } from '@cds/betting-offer';\nimport { BetBuilderOptionGroupInfo } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { ScoreboardSlim } from '@cds/scoreboards/v1';\nimport { EventModel, Tv2MarketParameters } from '@frontend/sports/betting-offer/feature/model';\nimport { SportsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { remove, sortBy } from 'lodash-es';\n\nimport { sortOptions } from '../helpers/option-sorting';\nimport { CommonFixtureFactory } from './common-fixture.factory';\nimport { FixtureMarket, FixtureMarketFactory } from './fixture-market.factory';\nimport { ScoreboardFactory } from './scoreboard-factory.service';\n\ntype Market = Game | OptionMarket;\n\n@Injectable({ providedIn: 'root' })\nexport class FixtureFactory {\n constructor(\n private fixtureFactory: CommonFixtureFactory,\n private marketFactory: FixtureMarketFactory,\n private scoreboardFactory: ScoreboardFactory,\n private sportConfig: SportsConfig,\n ) {}\n\n create(fixture: Fixture, sourceId?: string, precreatedOptionGroupInfo?: BetBuilderOptionGroupInfo[]): EventModel {\n const event = this.fixtureFactory.create(fixture, sourceId, precreatedOptionGroupInfo);\n const optionGroups = this.getOrderedMarkets(fixture).map((optionGroup) => this.marketFactory.create(optionGroup));\n\n event.optionGroups = optionGroups;\n event.gamesCount = optionGroups.length;\n event.fixtureScoreboard = fixture.scoreboard as ScoreboardSlim;\n event.imgEventId = fixture.addons.imgEventId;\n\n return event;\n }\n\n update(model: EventModel, openForBetting: boolean, stage: FixtureStage): void {\n this.fixtureFactory.update(model, openForBetting, stage);\n }\n\n deleteOptionGroup(event: EventModel, optionGroupId: string): void {\n remove(event.optionGroups, (g) => g.id === optionGroupId);\n // eslint-disable-next-line no-param-reassign\n event.gamesCount = event.optionGroups.length;\n }\n\n updateOptionGroup(event: EventModel, fixtureMarket: FixtureMarket): void {\n const updated = this.marketFactory.create(fixtureMarket);\n const index = event.optionGroups.findIndex((optionGroup) => optionGroup.id === updated.id);\n\n if (index === -1) {\n event.optionGroups.push(updated);\n } else {\n // eslint-disable-next-line no-param-reassign\n event.optionGroups[index] = updated;\n // eslint-disable-next-line no-param-reassign\n event.gamesCount = event.optionGroups.length;\n }\n\n updated.options = sortOptions(updated.options, updated.resultSorting);\n }\n\n updateScoreboard(event: EventModel, serverScoreboard: ScoreboardSlim): void {\n // eslint-disable-next-line no-param-reassign\n event.scoreboard = this.scoreboardFactory.createScoreboard(serverScoreboard, event);\n }\n\n private getOrderedMarkets(fixture: Fixture): Market[] {\n const markets: Market[] = [];\n\n if (fixture.games) {\n markets.push(...fixture.games);\n }\n\n if (fixture.optionMarkets) {\n if (fixture.isVirtual) {\n const order = this.sportConfig.virtuals.marketTypeOrder[fixture.sport.id] || [];\n\n markets.push(...sortBy(fixture.optionMarkets, (market, index) => this.getOrder(order, market, index)));\n } else {\n markets.push(...fixture.optionMarkets);\n }\n }\n\n return markets.filter(isDefined);\n }\n\n private getOrder(order: string[], market: OptionMarket, index: number): number {\n const marketType = market.parameters.find((param) => param.key === Tv2MarketParameters.MarketType);\n\n if (marketType) {\n const orderIndex = order.indexOf(marketType.value);\n\n if (orderIndex !== -1) {\n return orderIndex;\n }\n }\n\n return order.length + index;\n }\n}\n","import { Fixture, OptionMarket, Participant } from '@cds/betting-offer';\nimport { RaceEntity } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { RacingPostFixtureData } from '@cds/betting-offer/domain-specific/horse-racing/racing-post';\nimport { TimeformFixtureData } from '@cds/betting-offer/domain-specific/horse-racing/timeform';\nimport { EventOptionGroup, EventOptionSet } from '@frontend/sports/betting-offer/feature/model';\nimport { Omit } from '@frontend/sports/common/core/utils/extended-types';\n\nimport { WinGameParticipant } from './racing.model';\n\nexport enum NextRaceFilters {\n All = 'all filter',\n Ukireland = 'UK & Ireland filter',\n}\n\ntype ExcludeKeys = 'tournament' | 'scoreboard' | 'games' | 'groupId' | 'liveType' | 'liveAlert' | 'source';\n\nexport type OptionMarketsFixture = Omit;\n\nexport type ParticipantsFixture = Omit;\n\nexport type GamesFixture = Omit;\n\nexport interface WinGameFixture extends Omit {\n fixtureId: string;\n participants: WinGameParticipant[];\n optionGroups: EventOptionGroup[];\n optionSets: EventOptionSet[];\n nextRaceFilter?: NextRaceFilters;\n isOptionBet: boolean;\n timeform?: TimeformFixtureData;\n racingpost?: RacingPostFixtureData;\n}\n\nexport interface ParticipantFixture extends WinGameFixture {\n participants: TParticipant[];\n}\n\nexport type WinGameFixturePreview = Omit;\n\nfunction getFixtureId(compoundFixtureId: string): string {\n return compoundFixtureId.split(':').pop() ?? compoundFixtureId;\n}\n\nfunction mapParticipant(input: Participant): WinGameParticipant {\n return {\n ...input,\n id: input.id ?? 0,\n };\n}\n\nfunction createWinGameParticipant(input: Participant): WinGameParticipant {\n return mapParticipant(input);\n}\n\nexport function createParticipantWithTimeFormData(input: Participant, timeform?: TimeformFixtureData): WinGameParticipant {\n const result = mapParticipant(input);\n result.timeformInfo = timeform && input.id ? { ...timeform.horses[input.id] } : undefined;\n\n return result;\n}\n\nexport function createParticipantWithRacingPostData(input: Participant, racingPost?: RacingPostFixtureData): WinGameParticipant {\n const result = mapParticipant(input);\n if (racingPost?.horses && input.id) {\n result.racingPostInfo = {\n horseData: { ...racingPost.horses[input.id], hasTopStarRating: false },\n greyhoundsData: { ...racingPost.greyhounds[input.id] },\n };\n }\n\n return result;\n}\n\nexport function toWinGameFixture(fixture: Fixture): WinGameFixture {\n return {\n ...fixture,\n fixtureId: getFixtureId(fixture.id),\n participants: (fixture.participants || []).map((p) => createWinGameParticipant(p)),\n optionGroups: [],\n optionSets: [],\n isOptionBet: hasOptionMarkets(fixture.optionMarkets),\n };\n}\n\nexport function toHorseRacingTimeFormFixture(horseRacingEntity: RaceEntity): WinGameFixture {\n const timeform: TimeformFixtureData = horseRacingEntity.timeform || { horses: {} };\n const fixture = horseRacingEntity.fixture;\n\n return {\n ...fixture,\n fixtureId: getFixtureId(fixture.id),\n participants: (fixture.participants || []).map((_) => createParticipantWithTimeFormData(_, timeform)),\n timeform,\n optionGroups: [],\n optionSets: [],\n isOptionBet: hasOptionMarkets(fixture.optionMarkets),\n };\n}\n\nexport function toRacingPostFixture(horseRacingEntity: RaceEntity): WinGameFixture {\n const racingPost: RacingPostFixtureData = horseRacingEntity.racingPost ?? { horses: {}, greyhounds: {} };\n const fixture = horseRacingEntity.fixture;\n\n return {\n ...fixture,\n fixtureId: getFixtureId(fixture.id),\n participants: (fixture.participants || []).map((_) => createParticipantWithRacingPostData(_, racingPost)),\n racingpost: racingPost,\n optionGroups: [],\n optionSets: [],\n isOptionBet: hasOptionMarkets(fixture.optionMarkets),\n };\n}\n\nexport function toRacingFixturePreview(fixture: Fixture): WinGameFixturePreview {\n return toWinGameFixture(fixture);\n}\n\nfunction hasOptionMarkets(optionMarkets: OptionMarket[]): boolean {\n return !!optionMarkets?.length;\n}\n","import { Injectable } from '@angular/core';\n\nimport { MarqueeTilesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\nimport { Observable, first, map } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class InternalCompetitionTileService {\n constructor(public marqueeTilesConfig: MarqueeTilesConfig) {}\n\n getCompetitionTiles(sportId: number): Observable {\n return this.marqueeTilesConfig.whenReady.pipe(\n first(),\n map(() =>\n this.marqueeTilesConfig.tiles.filter(\n (t) => t.showOnCompetitionPage && (t.sportId === sportId || this.checkRegionSportId(t, sportId)),\n ),\n ),\n );\n }\n\n private checkRegionSportId(tile: MarqueeTile, sportId: number): boolean {\n return (!tile.fixtureId || tile.marqueeType === MarqueeType.BuildABet) && tile.regionSportId === sportId;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { MarqueeConfig, MarqueeTilesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\nimport { NativeAppService } from '@frontend/vanilla/core';\nimport { Observable, map, of } from 'rxjs';\n\nimport { Promotion } from '../crm-offer-data/crm-offer.model';\nimport { InternalCompetitionTileService } from './marquee-competitiontiles.service';\nimport { CompetitionPageType, Tile, VisibilityOnMarquee } from './marquee-tile.model';\n\n@Injectable({ providedIn: 'root' })\nexport class MarqueeTileService {\n constructor(\n private marqueeConfig: MarqueeConfig,\n private marqueeTilesConfig: MarqueeTilesConfig,\n private nativeAppService: NativeAppService,\n private internalCompetitionTileService: InternalCompetitionTileService,\n ) {}\n\n /**\n * Return the sitecore configuration for a specific fixture it is mapped to\n *\n * @param [fixtureId]\n * @returns\n * @memberof MarqueeTileService\n */\n getForFixture(fixtureId: string): Observable {\n return this.filterForFixture(fixtureId).pipe(map((tiles) => tiles.slice(0, this.marqueeConfig.maxRequestedEvents)));\n }\n\n hasForFixture(fixtureId: string): Observable {\n return this.filterForFixture(fixtureId).pipe(map((tiles) => tiles.length > 0));\n }\n\n getForTeamPagesFixture(fixtureIds: string[]): MarqueeTile[] {\n return this.filterForTeamPagesFixture(fixtureIds).slice(0, this.marqueeConfig.maxRequestedEvents);\n }\n\n getForCompetition(ids: number[], sportId: number, type: CompetitionPageType): Observable {\n if (sportId === SportConstant.Tennis && type === CompetitionPageType.Region && !this.nativeAppService.isTerminal) {\n return of([]);\n }\n\n const competitionTiles = this.internalCompetitionTileService.getCompetitionTiles(sportId);\n\n return competitionTiles.pipe(\n map((tiles) => {\n const tileResult = tiles.filter((t) => {\n if ((t.competitionIds && t.competitionIds?.length > 0) || (t.regionIds && t.regionIds?.length > 0)) {\n return type === CompetitionPageType.Competition\n ? t.competitionIds?.some((cId) => ids.some((id) => id === cId))\n : t.regionIds?.some((rId) => ids.some((id) => id === rId));\n }\n if (t.fixtureId) {\n return ids.some((id) => (type === CompetitionPageType.Competition ? id === t.competitionId : id === t.regionId));\n }\n\n return false;\n });\n\n return this.filterTilesResult(tileResult);\n }),\n );\n }\n\n combineWithPromotions(marquees: Tile[] | undefined, promotions: Promotion[]): (Tile | Promotion)[] {\n const promoVisibility = [VisibilityOnMarquee.MarqueeOnly, VisibilityOnMarquee.All];\n\n if (!marquees || !promotions.length) {\n return marquees || [];\n }\n\n const combined: (Tile | Promotion)[] = [];\n\n marquees.forEach((m) => {\n const promos = this.getCombinablePromotions(m, promotions);\n promos.length && combined.push(promos[0]);\n\n if (promoVisibility.includes(m.crmPromotionVisibility)) {\n combined.push(m);\n }\n });\n\n return combined;\n }\n\n private getCombinablePromotions(marquee: Tile, promotions: Promotion[]): Promotion[] {\n if (marquee.crmPromotionVisibility !== VisibilityOnMarquee.MarqueeOnly && marquee.crmPromotionId) {\n return promotions.filter((p) => p.id === marquee.crmPromotionId) || [];\n }\n\n return [];\n }\n\n private filterTilesResult(tiles: MarqueeTile[]): MarqueeTile[] {\n return tiles.filter((t) => this.filterDisabledSportsMarquee(t.sportId, t.marqueeType)).slice(0, this.marqueeConfig.maxRequestedEvents);\n }\n\n private filterForFixture(fixtureId: string): Observable {\n return this.marqueeTilesConfig.whenReady.pipe(\n map(() =>\n this.marqueeTilesConfig.tiles.filter(\n (t) =>\n t.showOnEventPage &&\n t.eventIds?.some((fid) => fid === fixtureId) &&\n this.filterDisabledSportsMarquee(t.sportId, t.marqueeType),\n ),\n ),\n );\n }\n\n private filterForTeamPagesFixture(fixtureIds: string[]): MarqueeTile[] {\n return this.marqueeTilesConfig.tiles.filter(\n (t) => fixtureIds.some((fixtureId) => fixtureId === t.fixtureId) && this.filterDisabledSportsMarquee(t.sportId, t.marqueeType),\n );\n }\n\n private filterDisabledSportsMarquee(sportId: number, marqueeType: MarqueeType): boolean {\n return this.marqueeConfig.disabledSportIds.indexOf(sportId) < 0 || marqueeType === MarqueeType.Special;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BetBuilderProvider } from '@cds/betting-offer/add-ons';\nimport { BetBuilderMarketInfo, BetBuilderOptionGroupInfo, ResultState } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { EventModel, EventOption, EventOptionGroup } from '@frontend/sports/betting-offer/feature/model';\nimport { PriceBoostConfig } from '@frontend/sports/common/client-config-data-access';\nimport { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\nimport { WinGameFixture } from '@frontend/sports/racing/feature/models';\nimport { MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\n\nimport { BetBuilderMarket, BetBuilderOption } from '../betbuilder/model/bet-builder.model';\nimport { OptionGroupService } from '../event-model/helpers/option-group.service';\nimport { BetBuilderTile, FixtureTile, VisibilityOnMarquee } from './marquee-tile.model';\n\n@Injectable({ providedIn: 'root' })\nexport class MarqueeTileFactory {\n constructor(\n private optionGroupService: OptionGroupService,\n private priceBoostConfig: PriceBoostConfig,\n ) {}\n\n createBetBuilderTile(\n modelEvent: EventModel,\n sitecoreTile: MarqueeTile,\n fixtureId: string,\n precreatedMarketsInfo?: BetBuilderMarketInfo[],\n ): Nullable {\n const modelMarket = !sitecoreTile.isAutomatedMarquee\n ? modelEvent.optionGroups[0]\n : modelEvent.optionGroups.find((x) => x.id === (sitecoreTile.gameId || sitecoreTile.optionMarketId)?.toString()) || null;\n\n if (!modelMarket) {\n return null;\n }\n\n if (this.isPrecreatedOptionGroupInvalid(modelEvent)) {\n return null;\n }\n\n const longIds = precreatedMarketsInfo?.find((market) => market.id.toString() === modelMarket.id)?.selections;\n\n let previousNativePriceValue;\n\n if ((this.priceBoostConfig.isEnabled || this.priceBoostConfig.isEnabledAPB) && sitecoreTile.isPriceBoostMarquee && !!sitecoreTile.optionId) {\n const previousPrice = this.getTilePrice(modelEvent.optionGroups, sitecoreTile.optionId);\n if (previousPrice) {\n previousNativePriceValue = previousPrice;\n }\n } else if (\n sitecoreTile.previousOdds ||\n (sitecoreTile.previousOddsNumerator && sitecoreTile.previousOddsDenominator) ||\n sitecoreTile.previousOddsUs !== undefined\n ) {\n previousNativePriceValue = NativePrice.fromNativePriceElement({\n odds: sitecoreTile.previousOdds,\n numerator: sitecoreTile.previousOddsNumerator,\n denominator: sitecoreTile.previousOddsDenominator,\n americanOdds: sitecoreTile.previousOddsUs,\n });\n }\n\n return {\n index: +modelEvent.id,\n sportId: sitecoreTile.sportId || modelEvent.sport.id,\n source: sitecoreTile,\n fixtureId: modelEvent.id,\n betBuilderFixtureId: fixtureId,\n imageUrl: sitecoreTile.imageUrl,\n market: this.mapMarket(modelMarket, longIds),\n name: sitecoreTile.betbuilderSelectionOverride || this.getBetbuilderName(modelEvent, modelMarket, modelEvent.precreatedOptionGroups),\n event: modelEvent,\n marqueeType: MarqueeType.BuildABet,\n showOnHomeLobby: sitecoreTile.showOnHomeLobby,\n showOnSportsLobby: sitecoreTile.showOnSportsLobby,\n crmPromotionId: sitecoreTile.crmPromotionId,\n crmPromotionVisibility: this.getVisibilityOnMarquee(sitecoreTile.crmPromotionVisibility),\n hideBuildABetBadge: sitecoreTile.hideBuildABetBadge,\n leftAlignOddsButton: sitecoreTile.leftAlignOddsButton,\n AwayIndicatorOverride: sitecoreTile.awayIndicatorOverride,\n BadgeOverrideText: sitecoreTile.badgeOverrideText,\n OverriddenTeamnames: sitecoreTile.overriddenTeamNames,\n eventOptionGroups: modelEvent.optionGroups,\n previousNativePrice: previousNativePriceValue,\n doNotShowAnyBadgeRibbon: sitecoreTile.doNotShowAnyBadgeRibbon,\n };\n }\n\n createMarqueeTile(sitecoreTile: MarqueeTile, modelEvent?: EventModel): Nullable {\n const tile = this.getGenericTileData(sitecoreTile);\n\n if (modelEvent) {\n const modelMarket = !sitecoreTile.isAutomatedMarquee\n ? this.isModelMarketBalanced(modelEvent.optionGroups)\n ? this.optionGroupService.get(modelEvent.optionGroups)\n : modelEvent.optionGroups[0]\n : modelEvent.optionGroups.find((x) => x.id === (sitecoreTile.gameId || sitecoreTile.optionMarketId)?.toString());\n\n // Sanity check for specials\n const sitecoreOptionGroupId = sitecoreTile.gameId || sitecoreTile.optionMarketId;\n const marketIdString = sitecoreOptionGroupId + '';\n if (!!modelMarket && !!sitecoreOptionGroupId && modelMarket.id !== marketIdString) {\n return null;\n }\n\n this.setOverridenNames(modelMarket!);\n tile.sportId = sitecoreTile.sportId;\n tile.fixtureId = sitecoreTile.fixtureId;\n tile.optionId = sitecoreTile.resultId || sitecoreTile.optionId || 0;\n tile.optionGroupId = sitecoreTile.gameId || sitecoreTile.optionMarketId || 0;\n tile.event = modelEvent;\n tile.optionGroup = modelMarket;\n tile.gridGroupId = sitecoreTile.gridGroupId ?? '';\n tile.gridGroupIds = sitecoreTile.gridGroupIds || [];\n tile.gameTemplateIds = sitecoreTile.gameTemplateIds ? sitecoreTile.gameTemplateIds.map((gt) => gt + '') : [];\n if (\n (this.priceBoostConfig.isEnabled || this.priceBoostConfig.isEnabledAPB) &&\n sitecoreTile.isPriceBoostMarquee &&\n sitecoreTile.optionId != null\n ) {\n const previousPrice = this.getTilePrice(modelEvent.optionGroups, sitecoreTile.optionId);\n if (previousPrice) {\n tile.previousNativePrice = previousPrice;\n tile.isPriceBoosted = true;\n }\n } else if (\n sitecoreTile.previousOdds ||\n (sitecoreTile.previousOddsNumerator && sitecoreTile.previousOddsDenominator) ||\n sitecoreTile.previousOddsUs !== undefined\n ) {\n tile.previousNativePrice = NativePrice.fromNativePriceElement({\n odds: sitecoreTile.previousOdds,\n numerator: sitecoreTile.previousOddsNumerator,\n denominator: sitecoreTile.previousOddsDenominator,\n americanOdds: sitecoreTile.previousOddsUs,\n });\n }\n }\n\n tile.imageUrl = sitecoreTile.imageUrl;\n tile.imageAlt = sitecoreTile.imageAlt;\n tile.marketAndOptionNameOverride = sitecoreTile.marketAndOptionNameOverride;\n tile.eventNameOverride = sitecoreTile.eventNameOverride;\n tile.eventNameVisibility = sitecoreTile.eventNameVisibility ?? '';\n tile.marketAndOptionNameVisibility = sitecoreTile.marketAndOptionNameVisibility ?? '';\n tile.link = sitecoreTile.link;\n tile.noEventSportIds = sitecoreTile.noEventSportIds;\n tile.badgeTitle = sitecoreTile.badgeTitleOverride;\n tile.crmPromotionId = sitecoreTile.crmPromotionId;\n tile.crmPromotionVisibility = this.getVisibilityOnMarquee(sitecoreTile.crmPromotionVisibility);\n tile.fallbackMarketType = sitecoreTile.fallbackMarketType;\n tile.ogpOverlay = sitecoreTile.ogpOverlay;\n tile.trafficId = sitecoreTile.trafficId;\n tile.showOnHomeLobby = sitecoreTile.showOnHomeLobby;\n\n tile.showOnSportsLobby = sitecoreTile.showOnSportsLobby;\n\n return tile;\n }\n\n createRacingTile(sitecoreTile: MarqueeTile, fixture: WinGameFixture): Nullable {\n if (!sitecoreTile.optionId) {\n return null;\n }\n\n const tile = this.getGenericTileData(sitecoreTile);\n tile.sportId = sitecoreTile.sportId;\n tile.fixtureId = sitecoreTile.fixtureId;\n tile.optionId = sitecoreTile.resultId ?? sitecoreTile.optionId ?? 0;\n tile.optionGroupId = sitecoreTile.gameId ?? sitecoreTile.optionMarketId ?? 0;\n tile.racingEvent = fixture;\n tile.optionGroup = fixture.optionGroups[0];\n return tile;\n }\n\n private getGenericTileData(sitecoreTile: MarqueeTile): FixtureTile {\n const tile = {} as FixtureTile;\n tile.marqueeType = sitecoreTile.marqueeType;\n tile.badgeTitle = sitecoreTile.badgeTitleOverride;\n tile.badgeAndRibbonVisibilityOption = sitecoreTile.badgeAndRibbonVisibilityOption ?? '';\n tile.marketType = sitecoreTile.marketType;\n\n return tile;\n }\n\n private getVisibilityOnMarquee(visibility?: string): VisibilityOnMarquee {\n return visibility !== undefined ? VisibilityOnMarquee[visibility as VisibilityOnMarquee] : VisibilityOnMarquee.All;\n }\n\n private isModelMarketBalanced(optionGroups: EventOptionGroup[]): boolean {\n return optionGroups.some((opt) => !!opt.balanced);\n }\n\n private setOverridenNames(optionGroup: EventOptionGroup): boolean {\n if (!optionGroup || !optionGroup.options || !optionGroup.options.length) {\n return false;\n }\n\n for (const result of optionGroup.options) {\n if (!result.name || result.overridenName) {\n continue;\n }\n\n result.overridenName = result.name;\n }\n\n return true;\n }\n\n private mapMarket(optionMarket: EventOptionGroup, longIds?: string[]): BetBuilderMarket {\n return {\n id: Number(optionMarket.id),\n name: optionMarket.name,\n nameSign: '',\n option: this.mapOption(optionMarket.options[0]),\n longIds,\n };\n }\n\n private mapOption(option: EventOption): BetBuilderOption {\n return {\n id: option.id,\n optionPrice: {\n id: option.priceId!,\n nativePrice: option.nativePrice,\n },\n };\n }\n\n private getTilePrice(optionGroups: EventOptionGroup[], optionId: number): NativePrice | undefined {\n return optionGroups.flatMap((optionGroup) => optionGroup.options).find((option) => option.id === optionId)?.nativePrice;\n }\n\n private getBetbuilderName(\n modelEvent: EventModel,\n modelMarket: EventOptionGroup | null,\n precreatedOptionGroupInfo?: BetBuilderOptionGroupInfo[],\n ): string {\n if (!modelMarket && !precreatedOptionGroupInfo) {\n return '';\n }\n\n if (precreatedOptionGroupInfo?.length) {\n let name = '';\n\n precreatedOptionGroupInfo[0].options.forEach((option) => {\n const market = modelEvent.optionGroups.find((x) => x.id === option.marketId.toString());\n\n if (market) {\n const optionName = market.name + ' - ' + market.options.find((o) => o.id === option.id)?.name;\n name = name + ' | ' + optionName;\n }\n });\n\n return name.slice(3);\n }\n\n if (modelMarket) {\n return modelMarket.name.replace(/;/g, ' | ');\n }\n\n return '';\n }\n\n private isPrecreatedOptionGroupInvalid(modelEvent: EventModel): boolean {\n if (modelEvent.precreatedOptionGroups && modelEvent.precreatedOptionGroups.length) {\n const groupPricing = modelEvent.precreatedOptionGroups[0].builderOptionPricing;\n const pricingInvalid =\n !groupPricing.legInformation ||\n !groupPricing.legInformation.length ||\n groupPricing.legInformation.some((l) => l.resultState !== ResultState.Open) ||\n !groupPricing.odds;\n\n const visibleOptions: EventOption[] = [];\n modelEvent.optionGroups.forEach((og) => {\n if (og.online || (!og.online && og.hidden !== null && og.hidden === false)) {\n visibleOptions.push(...og.options);\n }\n });\n const visibilityInvalid = !modelEvent.precreatedOptionGroups[0].options.every((o) => visibleOptions.some((vo) => vo.id === o.id));\n\n return modelEvent.betBuilderInfo?.betBuilderProvider !== BetBuilderProvider.BybFootball\n ? pricingInvalid || visibilityInvalid\n : visibilityInvalid;\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { Fixture } from '@cds/betting-offer';\nimport { MarqueeIndexedFixtureView } from '@cds/betting-offer/domain-specific';\nimport { BetBuilderMarketInfo, BetBuilderOptionGroupInfo } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { FixtureFactory } from '@frontend/sports/betting-offer/feature/fixture-factories';\nimport { EventOptionGroup, EventOptionGroupType, Tv2MarketParameters } from '@frontend/sports/betting-offer/feature/model';\nimport { MarqueeConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { toWinGameFixture } from '@frontend/sports/racing/feature/models';\nimport { MarketType, MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\nimport { MapMarketToGameTemplateIds } from '@frontend/sports/types/components/highlights-marquee';\nimport { FixtureMarketFactory } from 'packages/sports/libs/betting-offer/feature/fixture-factories/src/mappers/fixture-market.factory';\n\nimport { MarqueeTileFactory } from './marquee-tile.factory';\nimport { FixtureTile, Tile, isTile } from './marquee-tile.model';\n\n@Injectable({ providedIn: 'root' })\nexport class MarqueeResponseMapperService {\n constructor(\n private fixtureFactory: FixtureFactory,\n private marqueeTileFactory: MarqueeTileFactory,\n private marqueeConfig: MarqueeConfig,\n private marketFactory: FixtureMarketFactory,\n ) {}\n\n mapFixtures(fixtures?: MarqueeIndexedFixtureView[], inputTiles?: MarqueeTile[]): Tile[] {\n const tileWithoutFixtures = inputTiles?.some((tile) => !tile.fixtureId);\n\n if (!fixtures?.length && !tileWithoutFixtures) {\n return [];\n }\n\n const tiles: Tile[] = [];\n\n for (const [currentIndex, sitecoreTile] of inputTiles?.entries() ?? []) {\n let tile: Tile | null = null;\n\n if (sitecoreTile.fixtureId) {\n const correspondingFixture = fixtures?.find((f) => f.requestIndex === currentIndex);\n\n if (!correspondingFixture) {\n continue;\n }\n if (sitecoreTile.sportId === SportConstant.Horses) {\n tile = this.createRacingTile(correspondingFixture.fixture, sitecoreTile);\n } else {\n tile = this.createTile(\n correspondingFixture.fixture,\n sitecoreTile,\n correspondingFixture.precreatedMarketsInfo,\n correspondingFixture.precreatedOptionGroupInfo,\n );\n }\n } else {\n tile = sitecoreTile.marqueeType === MarqueeType.Special ? this.marqueeTileFactory.createMarqueeTile(sitecoreTile) : null;\n }\n\n if (tile && isTile(tile)) {\n const isRegular = tile.marqueeType === MarqueeType.Regular;\n const isAvailable = tile.event?.gamesCount !== 0;\n\n if (isRegular && !isAvailable) {\n continue;\n }\n\n if (tile.event?.offerSource === OfferSource.V2 && tile.sportId !== SportConstant.Horses) {\n const nonGridableOptions = this.marqueeConfig.mapMarketToGameTemplateIds.find(\n (i) => i.sportId === tile!.sportId && i.market === tile!.marketType,\n );\n\n if (nonGridableOptions?.marketFilterParams) {\n const tv2OptionGroup = this.getTV2OptionGroups(tile, nonGridableOptions);\n if (tv2OptionGroup?.length === 0) continue;\n tile.event.optionGroups = tv2OptionGroup;\n }\n }\n\n tile.index = currentIndex;\n tile.source = sitecoreTile;\n tile.trackingDetail = sitecoreTile.trackingDetail;\n tiles.push(tile);\n\n if (tiles.length === this.marqueeConfig.maxTiles) {\n break;\n }\n }\n }\n\n return tiles;\n }\n\n private createRacingTile(fixture: Fixture, tileInfo: MarqueeTile): FixtureTile | null {\n const optionGroups = fixture.optionMarkets.map((optionMarket) => this.marketFactory.create(optionMarket));\n const winGameFixture = toWinGameFixture(fixture);\n\n winGameFixture.optionGroups = optionGroups;\n\n return this.marqueeTileFactory.createRacingTile(tileInfo, winGameFixture);\n }\n\n createTile(\n fixture: Fixture,\n tileInfo: MarqueeTile,\n precreatedMarketsInfo?: BetBuilderMarketInfo[],\n precreatedOptionGroupInfo?: BetBuilderOptionGroupInfo[],\n ): Tile | null {\n const modelEvent = this.fixtureFactory.create(\n fixture,\n tileInfo.marqueeType === MarqueeType.BuildABet ? tileInfo.fixtureId : undefined,\n precreatedOptionGroupInfo,\n );\n\n if (tileInfo.marketType === MarketType.DynamicMarket) {\n modelEvent.optionGroups.forEach((og) => (og.type = EventOptionGroupType.DynamicMarket));\n }\n if (tileInfo.marketType === MarketType.SixPack) {\n modelEvent.optionGroups.forEach((og) => (og.type = EventOptionGroupType.SixPack));\n }\n const tile =\n tileInfo.marqueeType === MarqueeType.BuildABet\n ? this.marqueeTileFactory.createBetBuilderTile(modelEvent, tileInfo, fixture.id, precreatedMarketsInfo)\n : this.marqueeTileFactory.createMarqueeTile(tileInfo, modelEvent);\n if (tile) {\n tile.source = tileInfo;\n }\n\n return tile;\n }\n\n private getTV2OptionGroups(tile: Tile, nonGridableOptions: MapMarketToGameTemplateIds): EventOptionGroup[] {\n return tile.event.optionGroups.filter(\n (optionGroup) =>\n nonGridableOptions.marketFilterParams?.every(\n (param) => optionGroup.parameters?.find((p) => p.key === param.key)?.value === param.value,\n ) ||\n tile.event.optionGroups.find(\n (param) => nonGridableOptions.marketType === param.parameters?.find((p) => p.key === Tv2MarketParameters.MarketType)?.value,\n ),\n );\n }\n}\n","import { CurrencyPipe, getCurrencySymbol } from '@angular/common';\nimport { Injectable, LOCALE_ID, inject } from '@angular/core';\n\nimport { BetslipConfig, CurrencyConfig } from '@frontend/sports/common/client-config-data-access';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { IntlService } from '@frontend/vanilla/core';\nimport { Decimal } from 'decimal.js';\nimport { trim } from 'lodash-es';\n\nimport { CurrencyPipeInput } from './model';\n\n@Injectable({ providedIn: 'root' })\nexport class MoneyService {\n private readonly userService = inject(UserService);\n private readonly currencyConfig = inject(CurrencyConfig);\n private readonly currencyPipe = new CurrencyPipe(inject(LOCALE_ID));\n\n private readonly intlService = inject(IntlService);\n private readonly betslipConfig = inject(BetslipConfig);\n\n roundMoney(value: number | Decimal, digits: number = 2): number {\n if (typeof value === 'number') {\n value = new Decimal(value);\n }\n if (value.decimalPlaces() <= digits) {\n // No need to round.\n return value.toNumber();\n }\n const roundDigits = Math.pow(10, digits);\n\n return (\n this.betslipConfig.roundValues ? value.times(roundDigits).round().div(roundDigits) : value.times(roundDigits).floor().div(roundDigits)\n ).toNumber();\n }\n\n /* this is named transform to comply to the `ICurrencyPipe` interface from betstation */\n transform(\n input: CurrencyPipeInput,\n symbol: boolean = false,\n fractionSize: number = 2,\n hideEmptyFraction: boolean = false,\n locale?: string,\n currencyCode?: string,\n formatCurrency: boolean = true,\n ): string {\n if (!currencyCode) {\n currencyCode = this.userService.currency;\n }\n\n const prependCurrencySymbol = this.currencyConfig.currencySymbolDisplayList.includes(currencyCode);\n if (input == null) {\n const currencySymbol = getCurrencySymbol(currencyCode, 'narrow');\n if (prependCurrencySymbol) return symbol ? `${currencySymbol}-.--` : '-.--';\n else return symbol ? `-.-- ${currencyCode}` : '-.--';\n }\n\n if (typeof input === 'string') {\n const inputAsNumber = Number(input.replace(',', '.'));\n if (isNaN(inputAsNumber)) {\n return input;\n } else {\n input = inputAsNumber;\n }\n }\n\n let currencyFormat: string | undefined;\n if (hideEmptyFraction && Number(input) === Math.floor(Number(input))) {\n fractionSize = 0;\n currencyFormat = '1.0-0';\n } else {\n currencyFormat = this.currencyConfig.clientCurrencyFormat || undefined;\n }\n\n input = this.roundMoney(input, fractionSize);\n const formattedValue = trim(this.currencyPipe.transform(input, currencyCode, '', currencyFormat, locale) || '');\n if (prependCurrencySymbol) {\n if (!formatCurrency) {\n return symbol ? this.intlService.formatCurrency(input, currencyCode, currencyFormat) : formattedValue;\n }\n\n return symbol ? this.intlService.formatCurrency(input, currencyCode) : formattedValue;\n } else return symbol ? `${formattedValue} ${currencyCode}` : formattedValue;\n }\n}\n","import { BetSlipType, Odds } from '@bpos';\nimport { GameType } from '@bpos/v1/sports-promo';\nimport { ReplaceableParameter } from '@bpos/v1/sports-promo/campaigns';\n\nimport { CampaignBanner, CampaignDetails } from './crm-offer.server.model';\n\n// offer status\nexport interface OfferStatusRequest {\n id: string;\n type: string;\n source: string;\n}\nexport interface OfferStatusResponse {\n status: string;\n}\nexport enum OfferStatus {\n OptIn = 'OptIn',\n NoOptIn = 'NoOptIn',\n OptedIn = 'OptedIn',\n Expired = 'Expired',\n Error = 'Error',\n}\n\nexport enum OfferStatusType {\n Promo = 'Promos',\n Eds = 'Eds',\n}\n\n// client entities\nexport interface Promotion {\n id: string;\n type: string;\n subType?: string;\n startDate?: Date;\n expiryDate?: Date;\n cmsItemId: string;\n priority?: number;\n callToAction?: CallToAction;\n status: OfferStatus;\n banner?: Banner;\n details?: Details;\n allFilters: Filter[];\n subPromotions: SubPromotion[];\n replaceableParameters: Record;\n\n /**\n * Indicates that there's no Promotion filter but might have SubPromotion filters\n *\n * @type {boolean}\n * @memberof Promotion\n */\n noFilters: boolean;\n gameType: GameType;\n}\nexport interface SubPromotion {\n id: string;\n order: number;\n startDate?: Date;\n endDate?: Date;\n}\nexport enum CallToAction {\n OptIn = 'OptIn',\n NoOptIn = 'NoOptIn',\n OptedIn = 'OptedIn',\n}\nexport enum TrackingSource {\n Teaser = 'Teaser',\n ShowCase = 'ShowCase',\n}\nexport interface Filter {\n betSlipType?: BetSlipType;\n sportIds: number[];\n competitionIds: number[];\n meetingIds: number[];\n fixtureIds: string[];\n marketTemplateIds: string[];\n marketIds: number[];\n optionIds: number[];\n isEmpty: boolean;\n minSelections?: number;\n maxSelections?: number;\n minStake?: number;\n maxStake?: number;\n currency?: string;\n overallMinOdds?: Odds;\n overallMaxOdds?: Odds;\n selectionMinOdds?: Odds;\n selectionMaxOdds?: Odds;\n gameType?: GameType;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Banner extends CampaignBanner {}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Details extends CampaignDetails {}\n","import { getCurrencySymbol } from '@angular/common';\nimport { Injectable } from '@angular/core';\n\nimport { ParameterType, ReplaceableParameter } from '@bpos/v1/sports-promo/campaigns';\nimport { MoneyService } from '@frontend/sports/common/core/feature/money';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { uniq } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class CrmPromotionReplaceParametersService {\n constructor(\n private moneyService: MoneyService,\n private m2User: UserService,\n ) {}\n\n replaceParameters(\n text: string,\n replaceableParameters: { [key: string]: ReplaceableParameter },\n useCurrencySymbol: boolean = false,\n showCurrencySymbol: boolean = true,\n hideEmptyFraction: boolean = false,\n ): string {\n if (!text) {\n return text;\n }\n\n const keys = uniq(text.match(/#([a-zA-Z0-9_]*?)#/g) || []);\n\n keys.forEach((key) => {\n if (!replaceableParameters[key]) {\n return;\n }\n const value = replaceableParameters[key].value;\n\n switch (replaceableParameters[key].type) {\n case ParameterType.Text: {\n text = this.replace(text, key, value);\n break;\n }\n case ParameterType.Date: {\n text = this.replace(text, key, new Date(value).toLocaleString());\n break;\n }\n case ParameterType.Money: {\n let formattedValue: string;\n if (useCurrencySymbol) {\n formattedValue = this.moneyService.transform(+value, false, 2, hideEmptyFraction);\n const symbol = getCurrencySymbol(this.m2User.currency, 'narrow');\n formattedValue = `${symbol}${formattedValue}`;\n } else {\n formattedValue = this.moneyService.transform(+value, showCurrencySymbol, 2, hideEmptyFraction);\n }\n\n text = this.replace(text, key, formattedValue);\n break;\n }\n case ParameterType.Number: {\n text = this.replace(text, key, value);\n break;\n }\n case ParameterType.Percentage: {\n text = this.replace(text, key, value + '%');\n break;\n }\n }\n });\n\n return text;\n }\n\n private replace(text: string, key: string, value: string): string {\n return text.replace(new RegExp(key, 'g'), value);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { GameType } from '@bpos/v1/sports-promo';\nimport { CampaignCallToAction, CampaignFilter, ReplaceableParameter } from '@bpos/v1/sports-promo/campaigns';\nimport { sortBy } from 'lodash-es';\n\nimport { Banner, CallToAction, Details, Filter, OfferStatus, Promotion, SubPromotion } from '../crm-offer-data/crm-offer.model';\nimport { Campaign, CampaignDetails } from '../crm-offer-data/crm-offer.server.model';\nimport { CrmPromotionReplaceParametersService } from './crm-promotion-replace-parameters.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CrmPromotionFactory {\n constructor(private replaceParametersService: CrmPromotionReplaceParametersService) {}\n\n toModelList(serverCampaigns: Campaign[]): Promotion[] {\n const promos = serverCampaigns.map((c) => {\n const promo = {};\n promo.id = c.id;\n promo.type = c.type;\n promo.subType = c.subType;\n promo.startDate = c.startDateUtc ? new Date(c.startDateUtc) : undefined;\n promo.expiryDate = c.expiryDateUtc ? new Date(c.expiryDateUtc) : undefined;\n promo.cmsItemId = c.cmsItemId;\n promo.priority = c.priority;\n promo.replaceableParameters = c.replaceableParameters;\n promo.callToAction = c.callToAction && CallToAction[c.callToAction];\n promo.status = this.mapCallToAction(c.callToAction);\n\n const subCampaigns = c.subCampaigns || [];\n promo.subPromotions = subCampaigns.map(\n (sc) =>\n {\n ...sc,\n startDate: sc.startDateUtc && new Date(sc.startDateUtc),\n endDate: sc.endDateUtc && new Date(sc.endDateUtc),\n },\n );\n\n const mainCampaignFilter = this.createFilter(c.filter);\n const allFilters = [mainCampaignFilter].concat(subCampaigns.map((sc) => this.createFilter(sc.filter))).filter((f) => !f.isEmpty);\n promo.allFilters = allFilters;\n\n promo.noFilters = allFilters.every((value) => this.noSportFilters(value));\n promo.gameType = (c.filter && c.filter.gameType) || GameType.Mixed;\n\n promo.banner = c.banner && this.replaceBannerParameters(c.banner, c.replaceableParameters);\n\n return promo;\n });\n\n return this.sortPromotions(promos);\n }\n\n sortPromotions(promotions: Promotion[]): Promotion[] {\n return sortBy(\n promotions,\n (optionGroup) => optionGroup.priority,\n (promos) => promos.expiryDate,\n );\n }\n\n setBannerDetails(promotion: Promotion, details: CampaignDetails): void {\n if (!promotion.banner) {\n return;\n }\n\n promotion.details = { ...details };\n promotion.details = this.replaceDetailsParameters(promotion.details, promotion.replaceableParameters);\n\n promotion.details.backgroundImageUrl = promotion.details.backgroundImageUrl || promotion.banner.backgroundImageUrl;\n promotion.details.heroImageUrl = promotion.details.heroImageUrl || promotion.banner.heroImageUrl;\n }\n\n private replaceBannerParameters(banner: Banner, replaceableParameters: { [key: string]: ReplaceableParameter }): Banner {\n banner.title = this.replaceParametersService.replaceParameters(banner.title, replaceableParameters);\n banner.description = this.replaceParametersService.replaceParameters(banner.description, replaceableParameters);\n banner.callToAction = this.replaceParametersService.replaceParameters(banner.callToAction, replaceableParameters);\n banner.keyTerms = this.replaceParametersService.replaceParameters(banner.keyTerms, replaceableParameters);\n\n return banner;\n }\n\n private replaceDetailsParameters(details: Details, replaceableParameters: { [key: string]: ReplaceableParameter }): Details {\n details.title = this.replaceParametersService.replaceParameters(details.title, replaceableParameters);\n details.description = this.replaceParametersService.replaceParameters(details.description, replaceableParameters);\n details.callToAction = this.replaceParametersService.replaceParameters(details.callToAction, replaceableParameters);\n details.termsAndConditions = this.replaceParametersService.replaceParameters(details.termsAndConditions, replaceableParameters);\n\n return details;\n }\n\n private mapCallToAction(cta?: CampaignCallToAction): OfferStatus {\n if (!cta) {\n return OfferStatus.NoOptIn;\n }\n\n switch (cta) {\n case CampaignCallToAction.OptIn:\n return OfferStatus.OptIn;\n case CampaignCallToAction.OptedIn:\n return OfferStatus.OptedIn;\n case CampaignCallToAction.NoOptIn:\n return OfferStatus.NoOptIn;\n default:\n return OfferStatus.NoOptIn;\n }\n }\n\n private noSportFilters(filter: Filter): boolean {\n return (\n !filter.sportIds.length &&\n !filter.competitionIds.length &&\n !filter.meetingIds.length &&\n !filter.fixtureIds.length &&\n !filter.marketTemplateIds.length &&\n !filter.marketIds.length &&\n !filter.optionIds.length\n );\n }\n\n private createFilter(filter?: CampaignFilter): Filter {\n if (!filter) {\n return this.emptyFilter();\n }\n\n const mappedFilter: Filter = {\n sportIds: [...(filter.sportIds || [])],\n competitionIds: [...(filter.competitionIds || [])],\n meetingIds: [...(filter.meetingIds || [])],\n fixtureIds: [...(filter.fixtureIds || [])],\n marketTemplateIds: [...(filter.marketTemplateIds || []).map((tId) => tId.toString())],\n marketIds: [...(filter.marketIds || [])],\n optionIds: [...(filter.optionIds || [])],\n minSelections: filter.minSelections,\n maxSelections: filter.maxSelections,\n currency: filter.currency,\n overallMinOdds: filter.overallMinOdds,\n overallMaxOdds: filter.overallMaxOdds,\n selectionMinOdds: filter.selectionMinOdds,\n selectionMaxOdds: filter.selectionMaxOdds,\n isEmpty: false,\n minStake: filter.minStake,\n maxStake: filter.maxStake,\n betSlipType: filter.betSlipType,\n gameType: filter.gameType,\n };\n\n mappedFilter.isEmpty =\n this.noSportFilters(mappedFilter) &&\n !mappedFilter.currency &&\n !mappedFilter.minStake &&\n !mappedFilter.maxStake &&\n !mappedFilter.minSelections &&\n !mappedFilter.maxSelections &&\n !mappedFilter.overallMinOdds &&\n !mappedFilter.overallMaxOdds &&\n !mappedFilter.selectionMinOdds &&\n !mappedFilter.selectionMaxOdds &&\n !mappedFilter.betSlipType &&\n !mappedFilter.gameType;\n\n return mappedFilter;\n }\n\n private emptyFilter(): Filter {\n return {\n sportIds: [],\n competitionIds: [],\n meetingIds: [],\n fixtureIds: [],\n marketTemplateIds: [],\n marketIds: [],\n optionIds: [],\n isEmpty: true,\n };\n }\n}\n","import { BetSlipType } from '@bpos';\nimport { GameType } from '@bpos/v1/sports-promo';\nimport { ReplaceableParameter } from '@bpos/v1/sports-promo/campaigns';\nimport { RewardTargetType } from '@bpos/v1/sports-promo/tokens';\nimport { DayOfWeek as DayOfWeekEnum, TimeOfDay as TimeOfDayFilter } from '@frontend/sports/common/core/utils/date';\nimport { StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\n\nexport enum CampaignSlipType {\n Single = 'Single',\n Combo = 'Combo',\n System = 'System',\n}\n\nexport enum PromoHubUrlTokenType {\n FreeBet = 'freebets',\n RiskFreeBet = 'riskfreebet',\n OddsBoost = 'oddboost',\n BetAndGet = 'betandget',\n}\n\nexport enum PayoutType {\n Bonus = 'Bonus',\n BonusNoWager = 'BonusNoWager',\n FreeBet = 'FreeBet',\n Cash = 'Cash',\n OddsBoostToken = 'OddsBoostToken',\n RiskFreeToken = 'RiskFreeToken',\n}\n\nexport enum SignPostPayoutType {\n Bonus = 'BONUS',\n BonusNoWager = 'BONUSNOWAGER',\n FreeBet = 'FREEBET',\n Cash = 'CASH',\n OddsBoostToken = 'ODDS_BOOST',\n RiskFreeToken = 'RISK_FREE_BET',\n}\n\nexport enum RewardTokenImages {\n RewardTokenBlackReceived = 'RewardTokenBlackReceived',\n RewardTokenTimer = 'RewardTokenTimer',\n RewardTokenTimerDark = 'RewardTokenTimerDark',\n FreeBet = 'FreeBet',\n RiskFreeBet = 'RiskFreeBet',\n OddsBoost = 'OddsBoost',\n BetAndGet = 'BetAndGet',\n FreeBetDark = 'FreeBetDark',\n RiskFreeBetDark = 'RiskFreeBetDark',\n OddsBoostDark = 'OddsBoostDark',\n BetAndGetDark = 'BetAndGetDark',\n RewardTokenTimerThemeDark = 'RewardTokenTimerThemeDark',\n RewardTokenTimerBlack = 'RewardTokenTimerBlack',\n}\n\nexport enum RewardTriggerType {\n BetPlacement = 'BetPlacement',\n BetSettlement = 'BetSettlement',\n}\n\nexport enum BuildABet {\n None = 'None',\n Any = 'Any',\n Yes = 'Yes',\n No = 'No',\n}\n\nexport enum BetStatus {\n Any = 'Any',\n Win = 'Win',\n Loss = 'Loss',\n}\n\nexport enum RewardTokenType {\n FreeBet = 'FreeBet',\n RiskFreeBet = 'RiskFreeBet',\n OddsBoost = 'OddsBoost',\n AccaBoost = 'AccaBoost',\n BetStationFreebet = 'BetStationFreebet',\n BestOddsGuaranteed = 'BestOddsGuaranteed',\n Eds = 'Eds',\n BetAndGet = 'BetAndGet',\n}\n\nexport enum BetAndGetTokenType {\n BetAndGet = 'BET_AND_GET',\n BetMainGetLive = 'BET_MAIN_GET_LIVE',\n MatchedStake = 'MATCHED_STAKE',\n CustomToken = 'CUSTOM_TOKEN',\n}\n\nexport interface ICardDetailsQualify {\n SelectionLevelMinimumOddsDetails?: string;\n MinimumOverallOdds?: string;\n MinimumLegs?: string;\n BetOn?: string;\n BetTypeDetails?: string;\n RewardIssuedOn?: string;\n IssuedOn?: string;\n TokenType?: string;\n}\n\nexport enum SignPostingOfferType {\n Eds = 'EDS',\n Promo = 'PROMO',\n BetAndGet = 'BET_AND_GET',\n RiskFree = 'RISK_FREE',\n}\n\nexport interface IRewardTokenData {\n id: string;\n startDateUtc: string;\n expiryDateUtc: string;\n cmsItemId: string;\n userTokenId: string;\n minimumLegs?: number;\n wageringMultiplier?: number;\n payoutType: PayoutType;\n tokenType: string;\n filter: TokenFilter;\n rewardTokenType: RewardTokenType;\n payoutExpiry?: number;\n minOdds?: number;\n customTitle?: string;\n selectionLevelMinimumOdds?: TokenOddsData;\n replaceableParameters: StringDictionary;\n minimumOdds?: TokenOddsData;\n isBetBuilder: boolean;\n isSingleAndComboSelected?: boolean;\n customDescription?: string;\n url?: string;\n maximumOdds?: TokenOddsData;\n selectionLevelMaximumOdds?: TokenOddsData;\n customMarketTypes?: string;\n isIncrementalPayout?: boolean;\n incrementalBetAmount?: number;\n incrementalPayoutNoOfTimes?: number;\n rewardTargetType?: RewardTargetType;\n isVipExclusive?: boolean;\n}\n\nexport interface OddsBoostTokenData extends IRewardTokenData {\n boostFactor: number;\n maximumStake?: number;\n minimumStake?: number;\n maxWinningsBoost?: number;\n}\n\nexport interface RiskFreeTokenData extends IRewardTokenData {\n maximumPayout: number;\n riskFreePercentage: number;\n minimumStake?: number;\n}\n\nexport interface FreeBetTokenData extends IRewardTokenData {\n amount: number;\n}\n\nexport interface BetAndGetTokenData extends IRewardTokenData {\n customTitle?: string;\n rewardTriggerType: RewardTriggerType;\n minimumStake: number;\n buildABet: BuildABet;\n payoutValue: number;\n betStatus: BetStatus;\n percentagePayout: number | undefined;\n maximumPayout?: number;\n minimumPayout?: number;\n subType: string;\n isEarlyCashOut?: boolean;\n}\n\nexport interface TokenOddsData {\n european: number;\n britishNumerator: number;\n britishDenominator: number;\n american: number;\n}\n\nexport interface TokenFilter {\n gameType?: GameType;\n betSlipType?: BetSlipType;\n sports: Sport[];\n competitions: Competition[];\n meetings: Meeting[];\n fixtures: Fixture[];\n schedule?: ScheduleFilter;\n markets: Market[];\n options: Option[];\n marketTemplates: MarketTemplate[];\n marketParameters: MarketParameter[];\n}\n\nexport interface ScheduleFilter {\n daysOfTheWeek: DayOfWeekEnum[];\n timesOfTheDay: TimeOfDayFilter[];\n}\n\nexport interface Sport {\n id: number;\n name: string;\n}\n\nexport interface Competition {\n id: number;\n name: string;\n}\n\nexport interface Meeting {\n id: number;\n name: string;\n}\n\nexport interface Fixture {\n id: string;\n name: string;\n}\n\nexport interface Market {\n id: number;\n name: string;\n}\n\nexport interface Option {\n id: number;\n name: string;\n}\n\nexport interface MarketTemplate {\n id: number;\n name: string;\n}\n\nexport interface MarketParameter {\n happening: string;\n marketType: string;\n period: string;\n}\n\nexport enum BetAndGetSubTypes {\n BetAndGetPercentageCash = 'BET_AND_GET_PERCENTAGE_CASH',\n BetAndGetPercentageFreebet = 'BET_AND_GET_PERCENTAGE_FREEBET',\n BetAndGetPercentageBonus = 'BET_AND_GET_PERCENTAGE_BONUS',\n BetMainGetLivePercentageCash = 'BET_MAIN_GET_LIVE_PERCENTAGE_CASH',\n BetMainGetLivePercentageFreebet = 'BET_MAIN_GET_LIVE_PERCENTAGE_FREEBET',\n BetMainGetLivePercentageBonus = 'BET_MAIN_GET_LIVE_PERCENTAGE_BONUS',\n MatchedStakePercentageCash = 'MATCHED_STAKE_PERCENTAGE_CASH',\n MatchedStakePercentageFreebet = 'MATCHED_STAKE_PERCENTAGE_FREEBET',\n MatchedStakePercentageBonus = 'MATCHED_STAKE_PERCENTAGE_BONUS',\n CustomTokenPercentageCash = 'CUSTOM_TOKEN_PERCENTAGE_CASH',\n CustomTokenPercentageFreebet = 'CUSTOM_TOKEN_PERCENTAGE_FREEBET',\n CustomTokenPercentageBonus = 'CUSTOM_TOKEN_PERCENTAGE_BONUS',\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConnectionStatus = void 0;\nvar ConnectionStatus;\n(function (ConnectionStatus) {\n ConnectionStatus[ConnectionStatus[\"Disconnected\"] = 0] = \"Disconnected\";\n ConnectionStatus[ConnectionStatus[\"Connecting\"] = 1] = \"Connecting\";\n ConnectionStatus[ConnectionStatus[\"Connected\"] = 2] = \"Connected\";\n})(ConnectionStatus = exports.ConnectionStatus || (exports.ConnectionStatus = {}));\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/** Error thrown when an HTTP request fails. */\nexport class HttpError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\n constructor(errorMessage, statusCode) {\n const trueProto = new.target.prototype;\n super(`${errorMessage}: Status code '${statusCode}'`);\n this.statusCode = statusCode;\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when a timeout elapses. */\nexport class TimeoutError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\n constructor(errorMessage = \"A timeout occurred.\") {\n const trueProto = new.target.prototype;\n super(errorMessage);\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when an action is aborted. */\nexport class AbortError extends Error {\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\n constructor(errorMessage = \"An abort occurred.\") {\n const trueProto = new.target.prototype;\n super(errorMessage);\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when the selected transport is unsupported by the browser. */\n/** @private */\nexport class UnsupportedTransportError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\n constructor(message, transport) {\n const trueProto = new.target.prototype;\n super(message);\n this.transport = transport;\n this.errorType = 'UnsupportedTransportError';\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when the selected transport is disabled by the browser. */\n/** @private */\nexport class DisabledTransportError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\n constructor(message, transport) {\n const trueProto = new.target.prototype;\n super(message);\n this.transport = transport;\n this.errorType = 'DisabledTransportError';\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when the selected transport cannot be started. */\n/** @private */\nexport class FailedToStartTransportError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\n constructor(message, transport) {\n const trueProto = new.target.prototype;\n super(message);\n this.transport = transport;\n this.errorType = 'FailedToStartTransportError';\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when the negotiation with the server failed to complete. */\n/** @private */\nexport class FailedToNegotiateWithServerError extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\n constructor(message) {\n const trueProto = new.target.prototype;\n super(message);\n this.errorType = 'FailedToNegotiateWithServerError';\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n/** Error thrown when multiple errors have occurred. */\n/** @private */\nexport class AggregateErrors extends Error {\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\n constructor(message, innerErrors) {\n const trueProto = new.target.prototype;\n super(message);\n this.innerErrors = innerErrors;\n // Workaround issue in Typescript compiler\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\n this.__proto__ = trueProto;\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/** Represents an HTTP response. */\nexport class HttpResponse {\n constructor(statusCode, statusText, content) {\n this.statusCode = statusCode;\n this.statusText = statusText;\n this.content = content;\n }\n}\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\nexport class HttpClient {\n get(url, options) {\n return this.send({\n ...options,\n method: \"GET\",\n url\n });\n }\n post(url, options) {\n return this.send({\n ...options,\n method: \"POST\",\n url\n });\n }\n delete(url, options) {\n return this.send({\n ...options,\n method: \"DELETE\",\n url\n });\n }\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\n // @ts-ignore\n getCookieString(url) {\n return \"\";\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\nexport var LogLevel = /*#__PURE__*/function (LogLevel) {\n /** Log level for very low severity diagnostic messages. */\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\n /** Log level for low severity diagnostic messages. */\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n /** Log level for informational diagnostic messages. */\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\n return LogLevel;\n}(LogLevel || {});\n\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/** A logger that does nothing when log messages are sent to it. */\nexport class NullLogger {\n constructor() {}\n /** @inheritDoc */\n // eslint-disable-next-line\n log(_logLevel, _message) {}\n}\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\nNullLogger.instance = new NullLogger();\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { LogLevel } from \"./ILogger\";\nimport { NullLogger } from \"./Loggers\";\n// Version token that will be replaced by the prepack command\n/** The version of the SignalR client. */\nexport const VERSION = \"7.0.14\";\n/** @private */\nexport class Arg {\n static isRequired(val, name) {\n if (val === null || val === undefined) {\n throw new Error(`The '${name}' argument is required.`);\n }\n }\n static isNotEmpty(val, name) {\n if (!val || val.match(/^\\s*$/)) {\n throw new Error(`The '${name}' argument should not be empty.`);\n }\n }\n static isIn(val, values, name) {\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\n if (!(val in values)) {\n throw new Error(`Unknown ${name} value: ${val}.`);\n }\n }\n}\n/** @private */\nexport class Platform {\n // react-native has a window but no document so we should check both\n static get isBrowser() {\n return typeof window === \"object\" && typeof window.document === \"object\";\n }\n // WebWorkers don't have a window object so the isBrowser check would fail\n static get isWebWorker() {\n return typeof self === \"object\" && \"importScripts\" in self;\n }\n // react-native has a window but no document\n static get isReactNative() {\n return typeof window === \"object\" && typeof window.document === \"undefined\";\n }\n // Node apps shouldn't have a window object, but WebWorkers don't either\n // so we need to check for both WebWorker and window\n static get isNode() {\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\n }\n}\n/** @private */\nexport function getDataDetail(data, includeContent) {\n let detail = \"\";\n if (isArrayBuffer(data)) {\n detail = `Binary data of length ${data.byteLength}`;\n if (includeContent) {\n detail += `. Content: '${formatArrayBuffer(data)}'`;\n }\n } else if (typeof data === \"string\") {\n detail = `String data of length ${data.length}`;\n if (includeContent) {\n detail += `. Content: '${data}'`;\n }\n }\n return detail;\n}\n/** @private */\nexport function formatArrayBuffer(data) {\n const view = new Uint8Array(data);\n // Uint8Array.map only supports returning another Uint8Array?\n let str = \"\";\n view.forEach(num => {\n const pad = num < 16 ? \"0\" : \"\";\n str += `0x${pad}${num.toString(16)} `;\n });\n // Trim of trailing space.\n return str.substr(0, str.length - 1);\n}\n// Also in signalr-protocol-msgpack/Utils.ts\n/** @private */\nexport function isArrayBuffer(val) {\n return val && typeof ArrayBuffer !== \"undefined\" && (val instanceof ArrayBuffer ||\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\n val.constructor && val.constructor.name === \"ArrayBuffer\");\n}\n/** @private */\nexport async function sendMessage(logger, transportName, httpClient, url, content, options) {\n const headers = {};\n const [name, value] = getUserAgentHeader();\n headers[name] = value;\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\n const response = await httpClient.post(url, {\n content,\n headers: {\n ...headers,\n ...options.headers\n },\n responseType,\n timeout: options.timeout,\n withCredentials: options.withCredentials\n });\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\n}\n/** @private */\nexport function createLogger(logger) {\n if (logger === undefined) {\n return new ConsoleLogger(LogLevel.Information);\n }\n if (logger === null) {\n return NullLogger.instance;\n }\n if (logger.log !== undefined) {\n return logger;\n }\n return new ConsoleLogger(logger);\n}\n/** @private */\nexport class SubjectSubscription {\n constructor(subject, observer) {\n this._subject = subject;\n this._observer = observer;\n }\n dispose() {\n const index = this._subject.observers.indexOf(this._observer);\n if (index > -1) {\n this._subject.observers.splice(index, 1);\n }\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\n this._subject.cancelCallback().catch(_ => {});\n }\n }\n}\n/** @private */\nexport class ConsoleLogger {\n constructor(minimumLogLevel) {\n this._minLevel = minimumLogLevel;\n this.out = console;\n }\n log(logLevel, message) {\n if (logLevel >= this._minLevel) {\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\n switch (logLevel) {\n case LogLevel.Critical:\n case LogLevel.Error:\n this.out.error(msg);\n break;\n case LogLevel.Warning:\n this.out.warn(msg);\n break;\n case LogLevel.Information:\n this.out.info(msg);\n break;\n default:\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\n this.out.log(msg);\n break;\n }\n }\n }\n}\n/** @private */\nexport function getUserAgentHeader() {\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\n if (Platform.isNode) {\n userAgentHeaderName = \"User-Agent\";\n }\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\n}\n/** @private */\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\n let userAgent = \"Microsoft SignalR/\";\n const majorAndMinor = version.split(\".\");\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\n userAgent += ` (${version}; `;\n if (os && os !== \"\") {\n userAgent += `${os}; `;\n } else {\n userAgent += \"Unknown OS; \";\n }\n userAgent += `${runtime}`;\n if (runtimeVersion) {\n userAgent += `; ${runtimeVersion}`;\n } else {\n userAgent += \"; Unknown Runtime Version\";\n }\n userAgent += \")\";\n return userAgent;\n}\n// eslint-disable-next-line spaced-comment\n/*#__PURE__*/\nfunction getOsName() {\n if (Platform.isNode) {\n switch (process.platform) {\n case \"win32\":\n return \"Windows NT\";\n case \"darwin\":\n return \"macOS\";\n case \"linux\":\n return \"Linux\";\n default:\n return process.platform;\n }\n } else {\n return \"\";\n }\n}\n// eslint-disable-next-line spaced-comment\n/*#__PURE__*/\nfunction getRuntimeVersion() {\n if (Platform.isNode) {\n return process.versions.node;\n }\n return undefined;\n}\nfunction getRuntime() {\n if (Platform.isNode) {\n return \"NodeJS\";\n } else {\n return \"Browser\";\n }\n}\n/** @private */\nexport function getErrorString(e) {\n if (e.stack) {\n return e.stack;\n } else if (e.message) {\n return e.message;\n }\n return `${e}`;\n}\n/** @private */\nexport function getGlobalThis() {\n // globalThis is semi-new and not available in Node until v12\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n throw new Error(\"could not find global\");\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\nimport { LogLevel } from \"./ILogger\";\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\nexport class FetchHttpClient extends HttpClient {\n constructor(logger) {\n super();\n this._logger = logger;\n if (typeof fetch === \"undefined\") {\n // In order to ignore the dynamic require in webpack builds we need to do this magic\n // @ts-ignore: TS doesn't know about these names\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\n this._jar = new (requireFunc(\"tough-cookie\").CookieJar)();\n this._fetchType = requireFunc(\"node-fetch\");\n // node-fetch doesn't have a nice API for getting and setting cookies\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\n } else {\n this._fetchType = fetch.bind(getGlobalThis());\n }\n if (typeof AbortController === \"undefined\") {\n // In order to ignore the dynamic require in webpack builds we need to do this magic\n // @ts-ignore: TS doesn't know about these names\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\n this._abortControllerType = requireFunc(\"abort-controller\");\n } else {\n this._abortControllerType = AbortController;\n }\n }\n /** @inheritDoc */\n async send(request) {\n // Check that abort was not signaled before calling send\n if (request.abortSignal && request.abortSignal.aborted) {\n throw new AbortError();\n }\n if (!request.method) {\n throw new Error(\"No method defined.\");\n }\n if (!request.url) {\n throw new Error(\"No url defined.\");\n }\n const abortController = new this._abortControllerType();\n let error;\n // Hook our abortSignal into the abort controller\n if (request.abortSignal) {\n request.abortSignal.onabort = () => {\n abortController.abort();\n error = new AbortError();\n };\n }\n // If a timeout has been passed in, setup a timeout to call abort\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\n let timeoutId = null;\n if (request.timeout) {\n const msTimeout = request.timeout;\n timeoutId = setTimeout(() => {\n abortController.abort();\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\n error = new TimeoutError();\n }, msTimeout);\n }\n if (request.content === \"\") {\n request.content = undefined;\n }\n if (request.content) {\n // Explicitly setting the Content-Type header for React Native on Android platform.\n request.headers = request.headers || {};\n if (isArrayBuffer(request.content)) {\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\n } else {\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\n }\n }\n let response;\n try {\n response = await this._fetchType(request.url, {\n body: request.content,\n cache: \"no-cache\",\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\n headers: {\n \"X-Requested-With\": \"XMLHttpRequest\",\n ...request.headers\n },\n method: request.method,\n mode: \"cors\",\n redirect: \"follow\",\n signal: abortController.signal\n });\n } catch (e) {\n if (error) {\n throw error;\n }\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\n throw e;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (request.abortSignal) {\n request.abortSignal.onabort = null;\n }\n }\n if (!response.ok) {\n const errorMessage = await deserializeContent(response, \"text\");\n throw new HttpError(errorMessage || response.statusText, response.status);\n }\n const content = deserializeContent(response, request.responseType);\n const payload = await content;\n return new HttpResponse(response.status, response.statusText, payload);\n }\n getCookieString(url) {\n let cookies = \"\";\n if (Platform.isNode && this._jar) {\n // @ts-ignore: unused variable\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\n }\n return cookies;\n }\n}\nfunction deserializeContent(response, responseType) {\n let content;\n switch (responseType) {\n case \"arraybuffer\":\n content = response.arrayBuffer();\n break;\n case \"text\":\n content = response.text();\n break;\n case \"blob\":\n case \"document\":\n case \"json\":\n throw new Error(`${responseType} is not supported.`);\n default:\n content = response.text();\n break;\n }\n return content;\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\nimport { LogLevel } from \"./ILogger\";\nimport { isArrayBuffer } from \"./Utils\";\nexport class XhrHttpClient extends HttpClient {\n constructor(logger) {\n super();\n this._logger = logger;\n }\n /** @inheritDoc */\n send(request) {\n // Check that abort was not signaled before calling send\n if (request.abortSignal && request.abortSignal.aborted) {\n return Promise.reject(new AbortError());\n }\n if (!request.method) {\n return Promise.reject(new Error(\"No method defined.\"));\n }\n if (!request.url) {\n return Promise.reject(new Error(\"No url defined.\"));\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(request.method, request.url, true);\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n if (request.content === \"\") {\n request.content = undefined;\n }\n if (request.content) {\n // Explicitly setting the Content-Type header for React Native on Android platform.\n if (isArrayBuffer(request.content)) {\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\n } else {\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\n }\n }\n const headers = request.headers;\n if (headers) {\n Object.keys(headers).forEach(header => {\n xhr.setRequestHeader(header, headers[header]);\n });\n }\n if (request.responseType) {\n xhr.responseType = request.responseType;\n }\n if (request.abortSignal) {\n request.abortSignal.onabort = () => {\n xhr.abort();\n reject(new AbortError());\n };\n }\n if (request.timeout) {\n xhr.timeout = request.timeout;\n }\n xhr.onload = () => {\n if (request.abortSignal) {\n request.abortSignal.onabort = null;\n }\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\n } else {\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\n }\n };\n xhr.onerror = () => {\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\n reject(new HttpError(xhr.statusText, xhr.status));\n };\n xhr.ontimeout = () => {\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\n reject(new TimeoutError());\n };\n xhr.send(request.content);\n });\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { AbortError } from \"./Errors\";\nimport { FetchHttpClient } from \"./FetchHttpClient\";\nimport { HttpClient } from \"./HttpClient\";\nimport { Platform } from \"./Utils\";\nimport { XhrHttpClient } from \"./XhrHttpClient\";\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\nexport class DefaultHttpClient extends HttpClient {\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\n constructor(logger) {\n super();\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\n this._httpClient = new FetchHttpClient(logger);\n } else if (typeof XMLHttpRequest !== \"undefined\") {\n this._httpClient = new XhrHttpClient(logger);\n } else {\n throw new Error(\"No usable HttpClient found.\");\n }\n }\n /** @inheritDoc */\n send(request) {\n // Check that abort was not signaled before calling send\n if (request.abortSignal && request.abortSignal.aborted) {\n return Promise.reject(new AbortError());\n }\n if (!request.method) {\n return Promise.reject(new Error(\"No method defined.\"));\n }\n if (!request.url) {\n return Promise.reject(new Error(\"No url defined.\"));\n }\n return this._httpClient.send(request);\n }\n getCookieString(url) {\n return this._httpClient.getCookieString(url);\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// Not exported from index\n/** @private */\nexport class TextMessageFormat {\n static write(output) {\n return `${output}${TextMessageFormat.RecordSeparator}`;\n }\n static parse(input) {\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\n throw new Error(\"Message is incomplete.\");\n }\n const messages = input.split(TextMessageFormat.RecordSeparator);\n messages.pop();\n return messages;\n }\n}\nTextMessageFormat.RecordSeparatorCode = 0x1e;\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { TextMessageFormat } from \"./TextMessageFormat\";\nimport { isArrayBuffer } from \"./Utils\";\n/** @private */\nexport class HandshakeProtocol {\n // Handshake request is always JSON\n writeHandshakeRequest(handshakeRequest) {\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\n }\n parseHandshakeResponse(data) {\n let messageData;\n let remainingData;\n if (isArrayBuffer(data)) {\n // Format is binary but still need to read JSON text from handshake response\n const binaryData = new Uint8Array(data);\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\n if (separatorIndex === -1) {\n throw new Error(\"Message is incomplete.\");\n }\n // content before separator is handshake response\n // optional content after is additional messages\n const responseLength = separatorIndex + 1;\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\n remainingData = binaryData.byteLength > responseLength ? binaryData.slice(responseLength).buffer : null;\n } else {\n const textData = data;\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\n if (separatorIndex === -1) {\n throw new Error(\"Message is incomplete.\");\n }\n // content before separator is handshake response\n // optional content after is additional messages\n const responseLength = separatorIndex + 1;\n messageData = textData.substring(0, responseLength);\n remainingData = textData.length > responseLength ? textData.substring(responseLength) : null;\n }\n // At this point we should have just the single handshake message\n const messages = TextMessageFormat.parse(messageData);\n const response = JSON.parse(messages[0]);\n if (response.type) {\n throw new Error(\"Expected a handshake response from the server.\");\n }\n const responseMessage = response;\n // multiple messages could have arrived with handshake\n // return additional data to be parsed as usual, or null if all parsed\n return [remainingData, responseMessage];\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/** Defines the type of a Hub Message. */\nexport var MessageType = /*#__PURE__*/function (MessageType) {\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\n return MessageType;\n}(MessageType || {});\n\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { SubjectSubscription } from \"./Utils\";\n/** Stream implementation to stream items to the server. */\nexport class Subject {\n constructor() {\n this.observers = [];\n }\n next(item) {\n for (const observer of this.observers) {\n observer.next(item);\n }\n }\n error(err) {\n for (const observer of this.observers) {\n if (observer.error) {\n observer.error(err);\n }\n }\n }\n complete() {\n for (const observer of this.observers) {\n if (observer.complete) {\n observer.complete();\n }\n }\n }\n subscribe(observer) {\n this.observers.push(observer);\n return new SubjectSubscription(this, observer);\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\nimport { AbortError } from \"./Errors\";\nimport { MessageType } from \"./IHubProtocol\";\nimport { LogLevel } from \"./ILogger\";\nimport { Subject } from \"./Subject\";\nimport { Arg, getErrorString, Platform } from \"./Utils\";\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\n/** Describes the current state of the {@link HubConnection} to the server. */\nexport var HubConnectionState = /*#__PURE__*/function (HubConnectionState) {\n /** The hub connection is disconnected. */\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\n /** The hub connection is connecting. */\n HubConnectionState[\"Connecting\"] = \"Connecting\";\n /** The hub connection is connected. */\n HubConnectionState[\"Connected\"] = \"Connected\";\n /** The hub connection is disconnecting. */\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\n /** The hub connection is reconnecting. */\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\n return HubConnectionState;\n}(HubConnectionState || {});\n/** Represents a connection to a SignalR Hub. */\nexport class HubConnection {\n constructor(connection, logger, protocol, reconnectPolicy) {\n this._nextKeepAlive = 0;\n this._freezeEventListener = () => {\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\n };\n Arg.isRequired(connection, \"connection\");\n Arg.isRequired(logger, \"logger\");\n Arg.isRequired(protocol, \"protocol\");\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\n this._logger = logger;\n this._protocol = protocol;\n this.connection = connection;\n this._reconnectPolicy = reconnectPolicy;\n this._handshakeProtocol = new HandshakeProtocol();\n this.connection.onreceive = data => this._processIncomingData(data);\n this.connection.onclose = error => this._connectionClosed(error);\n this._callbacks = {};\n this._methods = {};\n this._closedCallbacks = [];\n this._reconnectingCallbacks = [];\n this._reconnectedCallbacks = [];\n this._invocationId = 0;\n this._receivedHandshakeResponse = false;\n this._connectionState = HubConnectionState.Disconnected;\n this._connectionStarted = false;\n this._cachedPingMessage = this._protocol.writeMessage({\n type: MessageType.Ping\n });\n }\n /** @internal */\n // Using a public static factory method means we can have a private constructor and an _internal_\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\n // public parameter-less constructor.\n static create(connection, logger, protocol, reconnectPolicy) {\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\n }\n /** Indicates the state of the {@link HubConnection} to the server. */\n get state() {\n return this._connectionState;\n }\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\n get connectionId() {\n return this.connection ? this.connection.connectionId || null : null;\n }\n /** Indicates the url of the {@link HubConnection} to the server. */\n get baseUrl() {\n return this.connection.baseUrl || \"\";\n }\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\n set baseUrl(url) {\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\n }\n if (!url) {\n throw new Error(\"The HubConnection url must be a valid url.\");\n }\n this.connection.baseUrl = url;\n }\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\n start() {\n this._startPromise = this._startWithStateTransitions();\n return this._startPromise;\n }\n async _startWithStateTransitions() {\n if (this._connectionState !== HubConnectionState.Disconnected) {\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\n }\n this._connectionState = HubConnectionState.Connecting;\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\n try {\n await this._startInternal();\n if (Platform.isBrowser) {\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\n }\n this._connectionState = HubConnectionState.Connected;\n this._connectionStarted = true;\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\n } catch (e) {\n this._connectionState = HubConnectionState.Disconnected;\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\n return Promise.reject(e);\n }\n }\n async _startInternal() {\n this._stopDuringStartError = undefined;\n this._receivedHandshakeResponse = false;\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\n const handshakePromise = new Promise((resolve, reject) => {\n this._handshakeResolver = resolve;\n this._handshakeRejecter = reject;\n });\n await this.connection.start(this._protocol.transferFormat);\n try {\n const handshakeRequest = {\n protocol: this._protocol.name,\n version: this._protocol.version\n };\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\n // defensively cleanup timeout in case we receive a message from the server before we finish start\n this._cleanupTimeout();\n this._resetTimeoutPeriod();\n this._resetKeepAliveInterval();\n await handshakePromise;\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\n // being rejected on close, because this continuation can run after both the handshake completed successfully\n // and the connection was closed.\n if (this._stopDuringStartError) {\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\n // will cause the calling continuation to get scheduled to run later.\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this._stopDuringStartError;\n }\n if (!this.connection.features.inherentKeepAlive) {\n await this._sendMessage(this._cachedPingMessage);\n }\n } catch (e) {\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\n this._cleanupTimeout();\n this._cleanupPingTimer();\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\n await this.connection.stop(e);\n throw e;\n }\n }\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\n async stop() {\n // Capture the start promise before the connection might be restarted in an onclose callback.\n const startPromise = this._startPromise;\n this._stopPromise = this._stopInternal();\n await this._stopPromise;\n try {\n // Awaiting undefined continues immediately\n await startPromise;\n } catch (e) {\n // This exception is returned to the user as a rejected Promise from the start method.\n }\n }\n _stopInternal(error) {\n if (this._connectionState === HubConnectionState.Disconnected) {\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\n return Promise.resolve();\n }\n if (this._connectionState === HubConnectionState.Disconnecting) {\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\n return this._stopPromise;\n }\n this._connectionState = HubConnectionState.Disconnecting;\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\n if (this._reconnectDelayHandle) {\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\n // fire the onclose callbacks.\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\n clearTimeout(this._reconnectDelayHandle);\n this._reconnectDelayHandle = undefined;\n this._completeClose();\n return Promise.resolve();\n }\n this._cleanupTimeout();\n this._cleanupPingTimer();\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\n // to the disconnected state if need be before HttpConnection.stop() completes.\n return this.connection.stop(error);\n }\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\n stream(methodName, ...args) {\n const [streams, streamIds] = this._replaceStreamingParams(args);\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\n // eslint-disable-next-line prefer-const\n let promiseQueue;\n const subject = new Subject();\n subject.cancelCallback = () => {\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\n delete this._callbacks[invocationDescriptor.invocationId];\n return promiseQueue.then(() => {\n return this._sendWithProtocol(cancelInvocation);\n });\n };\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\n if (error) {\n subject.error(error);\n return;\n } else if (invocationEvent) {\n // invocationEvent will not be null when an error is not passed to the callback\n if (invocationEvent.type === MessageType.Completion) {\n if (invocationEvent.error) {\n subject.error(new Error(invocationEvent.error));\n } else {\n subject.complete();\n }\n } else {\n subject.next(invocationEvent.item);\n }\n }\n };\n promiseQueue = this._sendWithProtocol(invocationDescriptor).catch(e => {\n subject.error(e);\n delete this._callbacks[invocationDescriptor.invocationId];\n });\n this._launchStreams(streams, promiseQueue);\n return subject;\n }\n _sendMessage(message) {\n this._resetKeepAliveInterval();\n return this.connection.send(message);\n }\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\n _sendWithProtocol(message) {\n return this._sendMessage(this._protocol.writeMessage(message));\n }\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\n send(methodName, ...args) {\n const [streams, streamIds] = this._replaceStreamingParams(args);\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\n this._launchStreams(streams, sendPromise);\n return sendPromise;\n }\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\n invoke(methodName, ...args) {\n const [streams, streamIds] = this._replaceStreamingParams(args);\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\n const p = new Promise((resolve, reject) => {\n // invocationId will always have a value for a non-blocking invocation\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\n if (error) {\n reject(error);\n return;\n } else if (invocationEvent) {\n // invocationEvent will not be null when an error is not passed to the callback\n if (invocationEvent.type === MessageType.Completion) {\n if (invocationEvent.error) {\n reject(new Error(invocationEvent.error));\n } else {\n resolve(invocationEvent.result);\n }\n } else {\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\n }\n }\n };\n const promiseQueue = this._sendWithProtocol(invocationDescriptor).catch(e => {\n reject(e);\n // invocationId will always have a value for a non-blocking invocation\n delete this._callbacks[invocationDescriptor.invocationId];\n });\n this._launchStreams(streams, promiseQueue);\n });\n return p;\n }\n on(methodName, newMethod) {\n if (!methodName || !newMethod) {\n return;\n }\n methodName = methodName.toLowerCase();\n if (!this._methods[methodName]) {\n this._methods[methodName] = [];\n }\n // Preventing adding the same handler multiple times.\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\n return;\n }\n this._methods[methodName].push(newMethod);\n }\n off(methodName, method) {\n if (!methodName) {\n return;\n }\n methodName = methodName.toLowerCase();\n const handlers = this._methods[methodName];\n if (!handlers) {\n return;\n }\n if (method) {\n const removeIdx = handlers.indexOf(method);\n if (removeIdx !== -1) {\n handlers.splice(removeIdx, 1);\n if (handlers.length === 0) {\n delete this._methods[methodName];\n }\n }\n } else {\n delete this._methods[methodName];\n }\n }\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\n onclose(callback) {\n if (callback) {\n this._closedCallbacks.push(callback);\n }\n }\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\n onreconnecting(callback) {\n if (callback) {\n this._reconnectingCallbacks.push(callback);\n }\n }\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\n onreconnected(callback) {\n if (callback) {\n this._reconnectedCallbacks.push(callback);\n }\n }\n _processIncomingData(data) {\n this._cleanupTimeout();\n if (!this._receivedHandshakeResponse) {\n data = this._processHandshakeResponse(data);\n this._receivedHandshakeResponse = true;\n }\n // Data may have all been read when processing handshake response\n if (data) {\n // Parse the messages\n const messages = this._protocol.parseMessages(data, this._logger);\n for (const message of messages) {\n switch (message.type) {\n case MessageType.Invocation:\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._invokeClientMethod(message);\n break;\n case MessageType.StreamItem:\n case MessageType.Completion:\n {\n const callback = this._callbacks[message.invocationId];\n if (callback) {\n if (message.type === MessageType.Completion) {\n delete this._callbacks[message.invocationId];\n }\n try {\n callback(message);\n } catch (e) {\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\n }\n }\n break;\n }\n case MessageType.Ping:\n // Don't care about pings\n break;\n case MessageType.Close:\n {\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\n if (message.allowReconnect === true) {\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.connection.stop(error);\n } else {\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\n this._stopPromise = this._stopInternal(error);\n }\n break;\n }\n default:\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\n break;\n }\n }\n }\n this._resetTimeoutPeriod();\n }\n _processHandshakeResponse(data) {\n let responseMessage;\n let remainingData;\n try {\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\n } catch (e) {\n const message = \"Error parsing handshake response: \" + e;\n this._logger.log(LogLevel.Error, message);\n const error = new Error(message);\n this._handshakeRejecter(error);\n throw error;\n }\n if (responseMessage.error) {\n const message = \"Server returned handshake error: \" + responseMessage.error;\n this._logger.log(LogLevel.Error, message);\n const error = new Error(message);\n this._handshakeRejecter(error);\n throw error;\n } else {\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\n }\n this._handshakeResolver();\n return remainingData;\n }\n _resetKeepAliveInterval() {\n if (this.connection.features.inherentKeepAlive) {\n return;\n }\n // Set the time we want the next keep alive to be sent\n // Timer will be setup on next message receive\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\n this._cleanupPingTimer();\n }\n _resetTimeoutPeriod() {\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\n // Set the timeout timer\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\n // Set keepAlive timer if there isn't one\n if (this._pingServerHandle === undefined) {\n let nextPing = this._nextKeepAlive - new Date().getTime();\n if (nextPing < 0) {\n nextPing = 0;\n }\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\n this._pingServerHandle = setTimeout(async () => {\n if (this._connectionState === HubConnectionState.Connected) {\n try {\n await this._sendMessage(this._cachedPingMessage);\n } catch {\n // We don't care about the error. It should be seen elsewhere in the client.\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\n this._cleanupPingTimer();\n }\n }\n }, nextPing);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/naming-convention\n serverTimeout() {\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\n }\n async _invokeClientMethod(invocationMessage) {\n const methodName = invocationMessage.target.toLowerCase();\n const methods = this._methods[methodName];\n if (!methods) {\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\n // No handlers provided by client but the server is expecting a response still, so we send an error\n if (invocationMessage.invocationId) {\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\n }\n return;\n }\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\n const methodsCopy = methods.slice();\n // Server expects a response\n const expectsResponse = invocationMessage.invocationId ? true : false;\n // We preserve the last result or exception but still call all handlers\n let res;\n let exception;\n let completionMessage;\n for (const m of methodsCopy) {\n try {\n const prevRes = res;\n res = await m.apply(this, invocationMessage.arguments);\n if (expectsResponse && res && prevRes) {\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\n }\n // Ignore exception if we got a result after, the exception will be logged\n exception = undefined;\n } catch (e) {\n exception = e;\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\n }\n }\n if (completionMessage) {\n await this._sendWithProtocol(completionMessage);\n } else if (expectsResponse) {\n // If there is an exception that means either no result was given or a handler after a result threw\n if (exception) {\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\n } else if (res !== undefined) {\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\n } else {\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\n }\n await this._sendWithProtocol(completionMessage);\n } else {\n if (res) {\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\n }\n }\n }\n _connectionClosed(error) {\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\n // If it has already completed, this should just noop.\n if (this._handshakeResolver) {\n this._handshakeResolver();\n }\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\n this._cleanupTimeout();\n this._cleanupPingTimer();\n if (this._connectionState === HubConnectionState.Disconnecting) {\n this._completeClose(error);\n } else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._reconnect(error);\n } else if (this._connectionState === HubConnectionState.Connected) {\n this._completeClose(error);\n }\n // If none of the above if conditions were true were called the HubConnection must be in either:\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\n // and potentially continue the reconnect() loop.\n // 3. The Disconnected state in which case we're already done.\n }\n _completeClose(error) {\n if (this._connectionStarted) {\n this._connectionState = HubConnectionState.Disconnected;\n this._connectionStarted = false;\n if (Platform.isBrowser) {\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\n }\n try {\n this._closedCallbacks.forEach(c => c.apply(this, [error]));\n } catch (e) {\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\n }\n }\n }\n async _reconnect(error) {\n const reconnectStartTime = Date.now();\n let previousReconnectAttempts = 0;\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\n if (nextRetryDelay === null) {\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\n this._completeClose(error);\n return;\n }\n this._connectionState = HubConnectionState.Reconnecting;\n if (error) {\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\n } else {\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\n }\n if (this._reconnectingCallbacks.length !== 0) {\n try {\n this._reconnectingCallbacks.forEach(c => c.apply(this, [error]));\n } catch (e) {\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\n }\n // Exit early if an onreconnecting callback called connection.stop().\n if (this._connectionState !== HubConnectionState.Reconnecting) {\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\n return;\n }\n }\n while (nextRetryDelay !== null) {\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\n await new Promise(resolve => {\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\n });\n this._reconnectDelayHandle = undefined;\n if (this._connectionState !== HubConnectionState.Reconnecting) {\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\n return;\n }\n try {\n await this._startInternal();\n this._connectionState = HubConnectionState.Connected;\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\n if (this._reconnectedCallbacks.length !== 0) {\n try {\n this._reconnectedCallbacks.forEach(c => c.apply(this, [this.connection.connectionId]));\n } catch (e) {\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\n }\n }\n return;\n } catch (e) {\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\n if (this._connectionState !== HubConnectionState.Reconnecting) {\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\n if (this._connectionState === HubConnectionState.Disconnecting) {\n this._completeClose();\n }\n return;\n }\n retryError = e instanceof Error ? e : new Error(e.toString());\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\n }\n }\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\n this._completeClose();\n }\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\n try {\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\n elapsedMilliseconds,\n previousRetryCount,\n retryReason\n });\n } catch (e) {\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\n return null;\n }\n }\n _cancelCallbacksWithError(error) {\n const callbacks = this._callbacks;\n this._callbacks = {};\n Object.keys(callbacks).forEach(key => {\n const callback = callbacks[key];\n try {\n callback(null, error);\n } catch (e) {\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\n }\n });\n }\n _cleanupPingTimer() {\n if (this._pingServerHandle) {\n clearTimeout(this._pingServerHandle);\n this._pingServerHandle = undefined;\n }\n }\n _cleanupTimeout() {\n if (this._timeoutHandle) {\n clearTimeout(this._timeoutHandle);\n }\n }\n _createInvocation(methodName, args, nonblocking, streamIds) {\n if (nonblocking) {\n if (streamIds.length !== 0) {\n return {\n arguments: args,\n streamIds,\n target: methodName,\n type: MessageType.Invocation\n };\n } else {\n return {\n arguments: args,\n target: methodName,\n type: MessageType.Invocation\n };\n }\n } else {\n const invocationId = this._invocationId;\n this._invocationId++;\n if (streamIds.length !== 0) {\n return {\n arguments: args,\n invocationId: invocationId.toString(),\n streamIds,\n target: methodName,\n type: MessageType.Invocation\n };\n } else {\n return {\n arguments: args,\n invocationId: invocationId.toString(),\n target: methodName,\n type: MessageType.Invocation\n };\n }\n }\n }\n _launchStreams(streams, promiseQueue) {\n if (streams.length === 0) {\n return;\n }\n // Synchronize stream data so they arrive in-order on the server\n if (!promiseQueue) {\n promiseQueue = Promise.resolve();\n }\n // We want to iterate over the keys, since the keys are the stream ids\n // eslint-disable-next-line guard-for-in\n for (const streamId in streams) {\n streams[streamId].subscribe({\n complete: () => {\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\n },\n error: err => {\n let message;\n if (err instanceof Error) {\n message = err.message;\n } else if (err && err.toString) {\n message = err.toString();\n } else {\n message = \"Unknown error\";\n }\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\n },\n next: item => {\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\n }\n });\n }\n }\n _replaceStreamingParams(args) {\n const streams = [];\n const streamIds = [];\n for (let i = 0; i < args.length; i++) {\n const argument = args[i];\n if (this._isObservable(argument)) {\n const streamId = this._invocationId;\n this._invocationId++;\n // Store the stream for later use\n streams[streamId] = argument;\n streamIds.push(streamId.toString());\n // remove stream from args\n args.splice(i, 1);\n }\n }\n return [streams, streamIds];\n }\n _isObservable(arg) {\n // This allows other stream implementations to just work (like rxjs)\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\n }\n _createStreamInvocation(methodName, args, streamIds) {\n const invocationId = this._invocationId;\n this._invocationId++;\n if (streamIds.length !== 0) {\n return {\n arguments: args,\n invocationId: invocationId.toString(),\n streamIds,\n target: methodName,\n type: MessageType.StreamInvocation\n };\n } else {\n return {\n arguments: args,\n invocationId: invocationId.toString(),\n target: methodName,\n type: MessageType.StreamInvocation\n };\n }\n }\n _createCancelInvocation(id) {\n return {\n invocationId: id,\n type: MessageType.CancelInvocation\n };\n }\n _createStreamItemMessage(id, item) {\n return {\n invocationId: id,\n item,\n type: MessageType.StreamItem\n };\n }\n _createCompletionMessage(id, error, result) {\n if (error) {\n return {\n error,\n invocationId: id,\n type: MessageType.Completion\n };\n }\n return {\n invocationId: id,\n result,\n type: MessageType.Completion\n };\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// 0, 2, 10, 30 second delays before reconnect attempts.\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\n/** @private */\nexport class DefaultReconnectPolicy {\n constructor(retryDelays) {\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\n }\n nextRetryDelayInMilliseconds(retryContext) {\n return this._retryDelays[retryContext.previousRetryCount];\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nexport abstract class HeaderNames {\r\n static readonly Authorization = \"Authorization\";\r\n static readonly Cookie = \"Cookie\";\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { HeaderNames } from \"./HeaderNames\";\nimport { HttpClient } from \"./HttpClient\";\n/** @private */\nexport class AccessTokenHttpClient extends HttpClient {\n constructor(innerClient, accessTokenFactory) {\n super();\n this._innerClient = innerClient;\n this._accessTokenFactory = accessTokenFactory;\n }\n async send(request) {\n let allowRetry = true;\n if (this._accessTokenFactory && (!this._accessToken || request.url && request.url.indexOf(\"/negotiate?\") > 0)) {\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\n allowRetry = false;\n this._accessToken = await this._accessTokenFactory();\n }\n this._setAuthorizationHeader(request);\n const response = await this._innerClient.send(request);\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\n this._accessToken = await this._accessTokenFactory();\n this._setAuthorizationHeader(request);\n return await this._innerClient.send(request);\n }\n return response;\n }\n _setAuthorizationHeader(request) {\n if (!request.headers) {\n request.headers = {};\n }\n if (this._accessToken) {\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\n }\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\n else if (this._accessTokenFactory) {\n if (request.headers[HeaderNames.Authorization]) {\n delete request.headers[HeaderNames.Authorization];\n }\n }\n }\n getCookieString(url) {\n return this._innerClient.getCookieString(url);\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\n/** Specifies a specific HTTP transport type. */\nexport var HttpTransportType = /*#__PURE__*/function (HttpTransportType) {\n /** Specifies no transport preference. */\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\n /** Specifies the WebSockets transport. */\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\n /** Specifies the Server-Sent Events transport. */\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\n /** Specifies the Long Polling transport. */\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\n return HttpTransportType;\n}(HttpTransportType || {});\n/** Specifies the transfer format for a connection. */\nexport var TransferFormat = /*#__PURE__*/function (TransferFormat) {\n /** Specifies that only text data will be transmitted over the connection. */\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\n /** Specifies that binary data will be transmitted over the connection. */\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\n return TransferFormat;\n}(TransferFormat || {});\n\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\n// it's a very new API right now.\n// Not exported from index.\n/** @private */\nexport class AbortController {\n constructor() {\n this._isAborted = false;\n this.onabort = null;\n }\n abort() {\n if (!this._isAborted) {\n this._isAborted = true;\n if (this.onabort) {\n this.onabort();\n }\n }\n }\n get signal() {\n return this;\n }\n get aborted() {\n return this._isAborted;\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { AbortController } from \"./AbortController\";\nimport { HttpError, TimeoutError } from \"./Errors\";\nimport { LogLevel } from \"./ILogger\";\nimport { TransferFormat } from \"./ITransport\";\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\n// Not exported from 'index', this type is internal.\n/** @private */\nexport class LongPollingTransport {\n constructor(httpClient, logger, options) {\n this._httpClient = httpClient;\n this._logger = logger;\n this._pollAbort = new AbortController();\n this._options = options;\n this._running = false;\n this.onreceive = null;\n this.onclose = null;\n }\n // This is an internal type, not exported from 'index' so this is really just internal.\n get pollAborted() {\n return this._pollAbort.aborted;\n }\n async connect(url, transferFormat) {\n Arg.isRequired(url, \"url\");\n Arg.isRequired(transferFormat, \"transferFormat\");\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\n this._url = url;\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\n if (transferFormat === TransferFormat.Binary && typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\") {\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\n }\n const [name, value] = getUserAgentHeader();\n const headers = {\n [name]: value,\n ...this._options.headers\n };\n const pollOptions = {\n abortSignal: this._pollAbort.signal,\n headers,\n timeout: 100000,\n withCredentials: this._options.withCredentials\n };\n if (transferFormat === TransferFormat.Binary) {\n pollOptions.responseType = \"arraybuffer\";\n }\n // Make initial long polling request\n // Server uses first long polling request to finish initializing connection and it returns without data\n const pollUrl = `${url}&_=${Date.now()}`;\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\n const response = await this._httpClient.get(pollUrl, pollOptions);\n if (response.statusCode !== 200) {\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\n // Mark running as false so that the poll immediately ends and runs the close logic\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\n this._running = false;\n } else {\n this._running = true;\n }\n this._receiving = this._poll(this._url, pollOptions);\n }\n async _poll(url, pollOptions) {\n try {\n while (this._running) {\n try {\n const pollUrl = `${url}&_=${Date.now()}`;\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\n const response = await this._httpClient.get(pollUrl, pollOptions);\n if (response.statusCode === 204) {\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\n this._running = false;\n } else if (response.statusCode !== 200) {\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\n // Unexpected status code\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\n this._running = false;\n } else {\n // Process the response\n if (response.content) {\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\n if (this.onreceive) {\n this.onreceive(response.content);\n }\n } else {\n // This is another way timeout manifest.\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\n }\n }\n } catch (e) {\n if (!this._running) {\n // Log but disregard errors that occur after stopping\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\n } else {\n if (e instanceof TimeoutError) {\n // Ignore timeouts and reissue the poll.\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\n } else {\n // Close the connection with the error as the result.\n this._closeError = e;\n this._running = false;\n }\n }\n }\n }\n } finally {\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\n if (!this.pollAborted) {\n this._raiseOnClose();\n }\n }\n }\n async send(data) {\n if (!this._running) {\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\n }\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\n }\n async stop() {\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\n this._running = false;\n this._pollAbort.abort();\n try {\n await this._receiving;\n // Send DELETE to clean up long polling on the server\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\n const headers = {};\n const [name, value] = getUserAgentHeader();\n headers[name] = value;\n const deleteOptions = {\n headers: {\n ...headers,\n ...this._options.headers\n },\n timeout: this._options.timeout,\n withCredentials: this._options.withCredentials\n };\n await this._httpClient.delete(this._url, deleteOptions);\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\n } finally {\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\n // Raise close event here instead of in polling\n // It needs to happen after the DELETE request is sent\n this._raiseOnClose();\n }\n }\n _raiseOnClose() {\n if (this.onclose) {\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\n if (this._closeError) {\n logMessage += \" Error: \" + this._closeError;\n }\n this._logger.log(LogLevel.Trace, logMessage);\n this.onclose(this._closeError);\n }\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { LogLevel } from \"./ILogger\";\nimport { TransferFormat } from \"./ITransport\";\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\n/** @private */\nexport class ServerSentEventsTransport {\n constructor(httpClient, accessToken, logger, options) {\n this._httpClient = httpClient;\n this._accessToken = accessToken;\n this._logger = logger;\n this._options = options;\n this.onreceive = null;\n this.onclose = null;\n }\n async connect(url, transferFormat) {\n Arg.isRequired(url, \"url\");\n Arg.isRequired(transferFormat, \"transferFormat\");\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\n this._url = url;\n if (this._accessToken) {\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\n }\n return new Promise((resolve, reject) => {\n let opened = false;\n if (transferFormat !== TransferFormat.Text) {\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\n return;\n }\n let eventSource;\n if (Platform.isBrowser || Platform.isWebWorker) {\n eventSource = new this._options.EventSource(url, {\n withCredentials: this._options.withCredentials\n });\n } else {\n // Non-browser passes cookies via the dictionary\n const cookies = this._httpClient.getCookieString(url);\n const headers = {};\n headers.Cookie = cookies;\n const [name, value] = getUserAgentHeader();\n headers[name] = value;\n eventSource = new this._options.EventSource(url, {\n withCredentials: this._options.withCredentials,\n headers: {\n ...headers,\n ...this._options.headers\n }\n });\n }\n try {\n eventSource.onmessage = e => {\n if (this.onreceive) {\n try {\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\n this.onreceive(e.data);\n } catch (error) {\n this._close(error);\n return;\n }\n }\n };\n // @ts-ignore: not using event on purpose\n eventSource.onerror = e => {\n // EventSource doesn't give any useful information about server side closes.\n if (opened) {\n this._close();\n } else {\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\" + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\" + \" If you have multiple servers check that sticky sessions are enabled.\"));\n }\n };\n eventSource.onopen = () => {\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\n this._eventSource = eventSource;\n opened = true;\n resolve();\n };\n } catch (e) {\n reject(e);\n return;\n }\n });\n }\n async send(data) {\n if (!this._eventSource) {\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\n }\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\n }\n stop() {\n this._close();\n return Promise.resolve();\n }\n _close(e) {\n if (this._eventSource) {\n this._eventSource.close();\n this._eventSource = undefined;\n if (this.onclose) {\n this.onclose(e);\n }\n }\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { HeaderNames } from \"./HeaderNames\";\nimport { LogLevel } from \"./ILogger\";\nimport { TransferFormat } from \"./ITransport\";\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\n/** @private */\nexport class WebSocketTransport {\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\n this._logger = logger;\n this._accessTokenFactory = accessTokenFactory;\n this._logMessageContent = logMessageContent;\n this._webSocketConstructor = webSocketConstructor;\n this._httpClient = httpClient;\n this.onreceive = null;\n this.onclose = null;\n this._headers = headers;\n }\n async connect(url, transferFormat) {\n Arg.isRequired(url, \"url\");\n Arg.isRequired(transferFormat, \"transferFormat\");\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\n let token;\n if (this._accessTokenFactory) {\n token = await this._accessTokenFactory();\n }\n return new Promise((resolve, reject) => {\n url = url.replace(/^http/, \"ws\");\n let webSocket;\n const cookies = this._httpClient.getCookieString(url);\n let opened = false;\n if (Platform.isNode || Platform.isReactNative) {\n const headers = {};\n const [name, value] = getUserAgentHeader();\n headers[name] = value;\n if (token) {\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\n }\n if (cookies) {\n headers[HeaderNames.Cookie] = cookies;\n }\n // Only pass headers when in non-browser environments\n webSocket = new this._webSocketConstructor(url, undefined, {\n headers: {\n ...headers,\n ...this._headers\n }\n });\n } else {\n if (token) {\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\n }\n }\n if (!webSocket) {\n // Chrome is not happy with passing 'undefined' as protocol\n webSocket = new this._webSocketConstructor(url);\n }\n if (transferFormat === TransferFormat.Binary) {\n webSocket.binaryType = \"arraybuffer\";\n }\n webSocket.onopen = _event => {\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\n this._webSocket = webSocket;\n opened = true;\n resolve();\n };\n webSocket.onerror = event => {\n let error = null;\n // ErrorEvent is a browser only type we need to check if the type exists before using it\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\n error = event.error;\n } else {\n error = \"There was an error with the transport\";\n }\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\n };\n webSocket.onmessage = message => {\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\n if (this.onreceive) {\n try {\n this.onreceive(message.data);\n } catch (error) {\n this._close(error);\n return;\n }\n }\n };\n webSocket.onclose = event => {\n // Don't call close handler if connection was never established\n // We'll reject the connect call instead\n if (opened) {\n this._close(event);\n } else {\n let error = null;\n // ErrorEvent is a browser only type we need to check if the type exists before using it\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\n error = event.error;\n } else {\n error = \"WebSocket failed to connect. The connection could not be found on the server,\" + \" either the endpoint may not be a SignalR endpoint,\" + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\" + \" If you have multiple servers check that sticky sessions are enabled.\";\n }\n reject(new Error(error));\n }\n };\n });\n }\n send(data) {\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\n this._webSocket.send(data);\n return Promise.resolve();\n }\n return Promise.reject(\"WebSocket is not in the OPEN state\");\n }\n stop() {\n if (this._webSocket) {\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\n this._close(undefined);\n }\n return Promise.resolve();\n }\n _close(event) {\n // webSocket will be null if the transport did not start successfully\n if (this._webSocket) {\n // Clear websocket handlers because we are considering the socket closed now\n this._webSocket.onclose = () => {};\n this._webSocket.onmessage = () => {};\n this._webSocket.onerror = () => {};\n this._webSocket.close();\n this._webSocket = undefined;\n }\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\n if (this.onclose) {\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\n } else if (event instanceof Error) {\n this.onclose(event);\n } else {\n this.onclose();\n }\n }\n }\n _isCloseEvent(event) {\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\nimport { LogLevel } from \"./ILogger\";\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\nimport { LongPollingTransport } from \"./LongPollingTransport\";\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\nimport { WebSocketTransport } from \"./WebSocketTransport\";\nconst MAX_REDIRECTS = 100;\n/** @private */\nexport class HttpConnection {\n constructor(url, options = {}) {\n this._stopPromiseResolver = () => {};\n this.features = {};\n this._negotiateVersion = 1;\n Arg.isRequired(url, \"url\");\n this._logger = createLogger(options.logger);\n this.baseUrl = this._resolveUrl(url);\n options = options || {};\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\n } else {\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\n }\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\n let webSocketModule = null;\n let eventSourceModule = null;\n if (Platform.isNode && typeof require !== \"undefined\") {\n // In order to ignore the dynamic require in webpack builds we need to do this magic\n // @ts-ignore: TS doesn't know about these names\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\n webSocketModule = requireFunc(\"ws\");\n eventSourceModule = requireFunc(\"eventsource\");\n }\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\n options.WebSocket = WebSocket;\n } else if (Platform.isNode && !options.WebSocket) {\n if (webSocketModule) {\n options.WebSocket = webSocketModule;\n }\n }\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\n options.EventSource = EventSource;\n } else if (Platform.isNode && !options.EventSource) {\n if (typeof eventSourceModule !== \"undefined\") {\n options.EventSource = eventSourceModule;\n }\n }\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\n this._connectionState = \"Disconnected\" /* Disconnected */;\n this._connectionStarted = false;\n this._options = options;\n this.onreceive = null;\n this.onclose = null;\n }\n async start(transferFormat) {\n transferFormat = transferFormat || TransferFormat.Binary;\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\n }\n this._connectionState = \"Connecting\" /* Connecting */;\n this._startInternalPromise = this._startInternal(transferFormat);\n await this._startInternalPromise;\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\n // stop() was called and transitioned the client into the Disconnecting state.\n const message = \"Failed to start the HttpConnection before stop() was called.\";\n this._logger.log(LogLevel.Error, message);\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\n await this._stopPromise;\n return Promise.reject(new AbortError(message));\n } else if (this._connectionState !== \"Connected\" /* Connected */) {\n // stop() was called and transitioned the client into the Disconnecting state.\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\n this._logger.log(LogLevel.Error, message);\n return Promise.reject(new AbortError(message));\n }\n this._connectionStarted = true;\n }\n send(data) {\n if (this._connectionState !== \"Connected\" /* Connected */) {\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\n }\n if (!this._sendQueue) {\n this._sendQueue = new TransportSendQueue(this.transport);\n }\n // Transport will not be null if state is connected\n return this._sendQueue.send(data);\n }\n async stop(error) {\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\n return Promise.resolve();\n }\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\n return this._stopPromise;\n }\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\n this._stopPromise = new Promise(resolve => {\n // Don't complete stop() until stopConnection() completes.\n this._stopPromiseResolver = resolve;\n });\n // stopInternal should never throw so just observe it.\n await this._stopInternal(error);\n await this._stopPromise;\n }\n async _stopInternal(error) {\n // Set error as soon as possible otherwise there is a race between\n // the transport closing and providing an error and the error from a close message\n // We would prefer the close message error.\n this._stopError = error;\n try {\n await this._startInternalPromise;\n } catch (e) {\n // This exception is returned to the user as a rejected Promise from the start method.\n }\n // The transport's onclose will trigger stopConnection which will run our onclose event.\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\n // stop was called during start() and start() failed.\n if (this.transport) {\n try {\n await this.transport.stop();\n } catch (e) {\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\n this._stopConnection();\n }\n this.transport = undefined;\n } else {\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\n }\n }\n async _startInternal(transferFormat) {\n // Store the original base url and the access token factory since they may change\n // as part of negotiating\n let url = this.baseUrl;\n this._accessTokenFactory = this._options.accessTokenFactory;\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\n try {\n if (this._options.skipNegotiation) {\n if (this._options.transport === HttpTransportType.WebSockets) {\n // No need to add a connection ID in this case\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\n // We should just call connect directly in this case.\n // No fallback or negotiate in this case.\n await this._startTransport(url, transferFormat);\n } else {\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\n }\n } else {\n let negotiateResponse = null;\n let redirects = 0;\n do {\n negotiateResponse = await this._getNegotiationResponse(url);\n // the user tries to stop the connection when it is being started\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\n throw new AbortError(\"The connection was stopped during negotiation.\");\n }\n if (negotiateResponse.error) {\n throw new Error(negotiateResponse.error);\n }\n if (negotiateResponse.ProtocolVersion) {\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\n }\n if (negotiateResponse.url) {\n url = negotiateResponse.url;\n }\n if (negotiateResponse.accessToken) {\n // Replace the current access token factory with one that uses\n // the returned access token\n const accessToken = negotiateResponse.accessToken;\n this._accessTokenFactory = () => accessToken;\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\n this._httpClient._accessToken = accessToken;\n this._httpClient._accessTokenFactory = undefined;\n }\n redirects++;\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\n throw new Error(\"Negotiate redirection limit exceeded.\");\n }\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\n }\n if (this.transport instanceof LongPollingTransport) {\n this.features.inherentKeepAlive = true;\n }\n if (this._connectionState === \"Connecting\" /* Connecting */) {\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\n this._connectionState = \"Connected\" /* Connected */;\n }\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\n } catch (e) {\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\n this._connectionState = \"Disconnected\" /* Disconnected */;\n this.transport = undefined;\n // if start fails, any active calls to stop assume that start will complete the stop promise\n this._stopPromiseResolver();\n return Promise.reject(e);\n }\n }\n async _getNegotiationResponse(url) {\n const headers = {};\n const [name, value] = getUserAgentHeader();\n headers[name] = value;\n const negotiateUrl = this._resolveNegotiateUrl(url);\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\n try {\n const response = await this._httpClient.post(negotiateUrl, {\n content: \"\",\n headers: {\n ...headers,\n ...this._options.headers\n },\n timeout: this._options.timeout,\n withCredentials: this._options.withCredentials\n });\n if (response.statusCode !== 200) {\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\n }\n const negotiateResponse = JSON.parse(response.content);\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\n // Negotiate version 0 doesn't use connectionToken\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\n }\n return negotiateResponse;\n } catch (e) {\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\n if (e instanceof HttpError) {\n if (e.statusCode === 404) {\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\n }\n }\n this._logger.log(LogLevel.Error, errorMessage);\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\n }\n }\n _createConnectUrl(url, connectionToken) {\n if (!connectionToken) {\n return url;\n }\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\n }\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\n if (this._isITransport(requestedTransport)) {\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\n this.transport = requestedTransport;\n await this._startTransport(connectUrl, requestedTransferFormat);\n this.connectionId = negotiateResponse.connectionId;\n return;\n }\n const transportExceptions = [];\n const transports = negotiateResponse.availableTransports || [];\n let negotiate = negotiateResponse;\n for (const endpoint of transports) {\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\n if (transportOrError instanceof Error) {\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\n transportExceptions.push(`${endpoint.transport} failed:`);\n transportExceptions.push(transportOrError);\n } else if (this._isITransport(transportOrError)) {\n this.transport = transportOrError;\n if (!negotiate) {\n try {\n negotiate = await this._getNegotiationResponse(url);\n } catch (ex) {\n return Promise.reject(ex);\n }\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\n }\n try {\n await this._startTransport(connectUrl, requestedTransferFormat);\n this.connectionId = negotiate.connectionId;\n return;\n } catch (ex) {\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\n negotiate = undefined;\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\n const message = \"Failed to select transport before stop() was called.\";\n this._logger.log(LogLevel.Debug, message);\n return Promise.reject(new AbortError(message));\n }\n }\n }\n }\n if (transportExceptions.length > 0) {\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\n }\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\n }\n _constructTransport(transport) {\n switch (transport) {\n case HttpTransportType.WebSockets:\n if (!this._options.WebSocket) {\n throw new Error(\"'WebSocket' is not supported in your environment.\");\n }\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\n case HttpTransportType.ServerSentEvents:\n if (!this._options.EventSource) {\n throw new Error(\"'EventSource' is not supported in your environment.\");\n }\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\n case HttpTransportType.LongPolling:\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\n default:\n throw new Error(`Unknown transport: ${transport}.`);\n }\n }\n _startTransport(url, transferFormat) {\n this.transport.onreceive = this.onreceive;\n this.transport.onclose = e => this._stopConnection(e);\n return this.transport.connect(url, transferFormat);\n }\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\n const transport = HttpTransportType[endpoint.transport];\n if (transport === null || transport === undefined) {\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\n } else {\n if (transportMatches(requestedTransport, transport)) {\n const transferFormats = endpoint.transferFormats.map(s => TransferFormat[s]);\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\n if (transport === HttpTransportType.WebSockets && !this._options.WebSocket || transport === HttpTransportType.ServerSentEvents && !this._options.EventSource) {\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\n } else {\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\n try {\n return this._constructTransport(transport);\n } catch (ex) {\n return ex;\n }\n }\n } else {\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\n }\n } else {\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\n }\n }\n }\n _isITransport(transport) {\n return transport && typeof transport === \"object\" && \"connect\" in transport;\n }\n _stopConnection(error) {\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\n this.transport = undefined;\n // If we have a stopError, it takes precedence over the error from the transport\n error = this._stopError || error;\n this._stopError = undefined;\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\n return;\n }\n if (this._connectionState === \"Connecting\" /* Connecting */) {\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\n }\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\n // A call to stop() induced this call to stopConnection and needs to be completed.\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\n this._stopPromiseResolver();\n }\n if (error) {\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\n } else {\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\n }\n if (this._sendQueue) {\n this._sendQueue.stop().catch(e => {\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\n });\n this._sendQueue = undefined;\n }\n this.connectionId = undefined;\n this._connectionState = \"Disconnected\" /* Disconnected */;\n if (this._connectionStarted) {\n this._connectionStarted = false;\n try {\n if (this.onclose) {\n this.onclose(error);\n }\n } catch (e) {\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\n }\n }\n }\n _resolveUrl(url) {\n // startsWith is not supported in IE\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\n return url;\n }\n if (!Platform.isBrowser) {\n throw new Error(`Cannot resolve '${url}'.`);\n }\n // Setting the url to the href propery of an anchor tag handles normalization\n // for us. There are 3 main cases.\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\n const aTag = window.document.createElement(\"a\");\n aTag.href = url;\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\n return aTag.href;\n }\n _resolveNegotiateUrl(url) {\n const index = url.indexOf(\"?\");\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\n negotiateUrl += \"/\";\n }\n negotiateUrl += \"negotiate\";\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\n negotiateUrl += index === -1 ? \"?\" : \"&\";\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\n }\n return negotiateUrl;\n }\n}\nfunction transportMatches(requestedTransport, actualTransport) {\n return !requestedTransport || (actualTransport & requestedTransport) !== 0;\n}\n/** @private */\nexport class TransportSendQueue {\n constructor(_transport) {\n this._transport = _transport;\n this._buffer = [];\n this._executing = true;\n this._sendBufferedData = new PromiseSource();\n this._transportResult = new PromiseSource();\n this._sendLoopPromise = this._sendLoop();\n }\n send(data) {\n this._bufferData(data);\n if (!this._transportResult) {\n this._transportResult = new PromiseSource();\n }\n return this._transportResult.promise;\n }\n stop() {\n this._executing = false;\n this._sendBufferedData.resolve();\n return this._sendLoopPromise;\n }\n _bufferData(data) {\n if (this._buffer.length && typeof this._buffer[0] !== typeof data) {\n throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof data}`);\n }\n this._buffer.push(data);\n this._sendBufferedData.resolve();\n }\n async _sendLoop() {\n while (true) {\n await this._sendBufferedData.promise;\n if (!this._executing) {\n if (this._transportResult) {\n this._transportResult.reject(\"Connection stopped.\");\n }\n break;\n }\n this._sendBufferedData = new PromiseSource();\n const transportResult = this._transportResult;\n this._transportResult = undefined;\n const data = typeof this._buffer[0] === \"string\" ? this._buffer.join(\"\") : TransportSendQueue._concatBuffers(this._buffer);\n this._buffer.length = 0;\n try {\n await this._transport.send(data);\n transportResult.resolve();\n } catch (error) {\n transportResult.reject(error);\n }\n }\n }\n static _concatBuffers(arrayBuffers) {\n const totalLength = arrayBuffers.map(b => b.byteLength).reduce((a, b) => a + b);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const item of arrayBuffers) {\n result.set(new Uint8Array(item), offset);\n offset += item.byteLength;\n }\n return result.buffer;\n }\n}\nclass PromiseSource {\n constructor() {\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\n }\n resolve() {\n this._resolver();\n }\n reject(reason) {\n this._rejecter(reason);\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { MessageType } from \"./IHubProtocol\";\nimport { LogLevel } from \"./ILogger\";\nimport { TransferFormat } from \"./ITransport\";\nimport { NullLogger } from \"./Loggers\";\nimport { TextMessageFormat } from \"./TextMessageFormat\";\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\n/** Implements the JSON Hub Protocol. */\nexport class JsonHubProtocol {\n constructor() {\n /** @inheritDoc */\n this.name = JSON_HUB_PROTOCOL_NAME;\n /** @inheritDoc */\n this.version = 1;\n /** @inheritDoc */\n this.transferFormat = TransferFormat.Text;\n }\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\n parseMessages(input, logger) {\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\n if (typeof input !== \"string\") {\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\n }\n if (!input) {\n return [];\n }\n if (logger === null) {\n logger = NullLogger.instance;\n }\n // Parse the messages\n const messages = TextMessageFormat.parse(input);\n const hubMessages = [];\n for (const message of messages) {\n const parsedMessage = JSON.parse(message);\n if (typeof parsedMessage.type !== \"number\") {\n throw new Error(\"Invalid payload.\");\n }\n switch (parsedMessage.type) {\n case MessageType.Invocation:\n this._isInvocationMessage(parsedMessage);\n break;\n case MessageType.StreamItem:\n this._isStreamItemMessage(parsedMessage);\n break;\n case MessageType.Completion:\n this._isCompletionMessage(parsedMessage);\n break;\n case MessageType.Ping:\n // Single value, no need to validate\n break;\n case MessageType.Close:\n // All optional values, no need to validate\n break;\n default:\n // Future protocol changes can add message types, old clients can ignore them\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\n continue;\n }\n hubMessages.push(parsedMessage);\n }\n return hubMessages;\n }\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\n writeMessage(message) {\n return TextMessageFormat.write(JSON.stringify(message));\n }\n _isInvocationMessage(message) {\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\n if (message.invocationId !== undefined) {\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\n }\n }\n _isStreamItemMessage(message) {\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\n if (message.item === undefined) {\n throw new Error(\"Invalid payload for StreamItem message.\");\n }\n }\n _isCompletionMessage(message) {\n if (message.result && message.error) {\n throw new Error(\"Invalid payload for Completion message.\");\n }\n if (!message.result && message.error) {\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\n }\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\n }\n _assertNotEmptyString(value, errorMessage) {\n if (typeof value !== \"string\" || value === \"\") {\n throw new Error(errorMessage);\n }\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\nimport { HttpConnection } from \"./HttpConnection\";\nimport { HubConnection } from \"./HubConnection\";\nimport { LogLevel } from \"./ILogger\";\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\nimport { NullLogger } from \"./Loggers\";\nimport { Arg, ConsoleLogger } from \"./Utils\";\nconst LogLevelNameMapping = {\n trace: LogLevel.Trace,\n debug: LogLevel.Debug,\n info: LogLevel.Information,\n information: LogLevel.Information,\n warn: LogLevel.Warning,\n warning: LogLevel.Warning,\n error: LogLevel.Error,\n critical: LogLevel.Critical,\n none: LogLevel.None\n};\nfunction parseLogLevel(name) {\n // Case-insensitive matching via lower-casing\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\n const mapping = LogLevelNameMapping[name.toLowerCase()];\n if (typeof mapping !== \"undefined\") {\n return mapping;\n } else {\n throw new Error(`Unknown log level: ${name}`);\n }\n}\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\nexport class HubConnectionBuilder {\n configureLogging(logging) {\n Arg.isRequired(logging, \"logging\");\n if (isLogger(logging)) {\n this.logger = logging;\n } else if (typeof logging === \"string\") {\n const logLevel = parseLogLevel(logging);\n this.logger = new ConsoleLogger(logLevel);\n } else {\n this.logger = new ConsoleLogger(logging);\n }\n return this;\n }\n withUrl(url, transportTypeOrOptions) {\n Arg.isRequired(url, \"url\");\n Arg.isNotEmpty(url, \"url\");\n this.url = url;\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\n if (typeof transportTypeOrOptions === \"object\") {\n this.httpConnectionOptions = {\n ...this.httpConnectionOptions,\n ...transportTypeOrOptions\n };\n } else {\n this.httpConnectionOptions = {\n ...this.httpConnectionOptions,\n transport: transportTypeOrOptions\n };\n }\n return this;\n }\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\n withHubProtocol(protocol) {\n Arg.isRequired(protocol, \"protocol\");\n this.protocol = protocol;\n return this;\n }\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\n if (this.reconnectPolicy) {\n throw new Error(\"A reconnectPolicy has already been set.\");\n }\n if (!retryDelaysOrReconnectPolicy) {\n this.reconnectPolicy = new DefaultReconnectPolicy();\n } else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\n } else {\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\n }\n return this;\n }\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\n build() {\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\n // provided to configureLogger\n const httpConnectionOptions = this.httpConnectionOptions || {};\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\n if (httpConnectionOptions.logger === undefined) {\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\n httpConnectionOptions.logger = this.logger;\n }\n // Now create the connection\n if (!this.url) {\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\n }\n const connection = new HttpConnection(this.url, httpConnectionOptions);\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\n }\n}\nfunction isLogger(logger) {\n return logger.log !== undefined;\n}\n","// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\nexport { AbortError, HttpError, TimeoutError } from \"./Errors\";\nexport { HttpClient, HttpResponse } from \"./HttpClient\";\nexport { DefaultHttpClient } from \"./DefaultHttpClient\";\nexport { HubConnection, HubConnectionState } from \"./HubConnection\";\nexport { HubConnectionBuilder } from \"./HubConnectionBuilder\";\nexport { MessageType } from \"./IHubProtocol\";\nexport { LogLevel } from \"./ILogger\";\nexport { HttpTransportType, TransferFormat } from \"./ITransport\";\nexport { NullLogger } from \"./Loggers\";\nexport { JsonHubProtocol } from \"./JsonHubProtocol\";\nexport { Subject } from \"./Subject\";\nexport { VERSION } from \"./Utils\";\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Utils = void 0;\nvar Utils = /** @class */function () {\n function Utils() {}\n Utils.values = function (source) {\n return Object.keys(source).map(function (key) {\n return source[key];\n });\n };\n Utils.buildQueryParameters = function (request) {\n var queryParams = Object.keys(request).map(function (key) {\n return Utils.buildQueryParam(key, request[key]);\n }).filter(function (param) {\n return !!param;\n }).join('&');\n return queryParams;\n };\n Utils.buildQueryParam = function (param, value) {\n return value == null || value == undefined || value === '' ? '' : \"\".concat(param, \"=\").concat(value);\n };\n return Utils;\n}();\nexports.Utils = Utils;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Subscription = /** @class */function () {\n function Subscription(topic) {\n this.topic = topic;\n if (!topic) {\n throw new Error('A valid topic name is required for creating subscription');\n }\n this.activationCount = 0;\n }\n Subscription.prototype.isSingle = function () {\n return this.activationCount === 1;\n };\n Subscription.prototype.isEmpty = function () {\n return this.activationCount === 0;\n };\n Subscription.prototype.increment = function () {\n this.activationCount++;\n };\n Subscription.prototype.decrement = function () {\n this.activationCount = Math.max(0, this.activationCount - 1);\n };\n return Subscription;\n}();\nexports.default = Subscription;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar subscription_1 = require(\"./subscription\");\nvar utils_1 = require(\"./utils\");\nvar SubscriptionStore = /** @class */function () {\n function SubscriptionStore() {\n this.subscriptions = {};\n }\n SubscriptionStore.prototype.add = function (topic) {\n var subscription = this.subscriptions[topic];\n if (!this.subscriptions[topic]) {\n subscription = new subscription_1.default(topic);\n this.subscriptions[subscription.topic] = subscription;\n }\n subscription.increment();\n return subscription;\n };\n SubscriptionStore.prototype.remove = function (topic) {\n var subscription = this.subscriptions[topic];\n if (subscription) {\n subscription.decrement();\n if (subscription.isEmpty()) {\n delete this.subscriptions[subscription.topic];\n }\n }\n return subscription;\n };\n SubscriptionStore.prototype.getAll = function () {\n return utils_1.Utils.values(this.subscriptions);\n };\n SubscriptionStore.prototype.clear = function () {\n this.subscriptions = {};\n };\n return SubscriptionStore;\n}();\nexports.default = SubscriptionStore;\n","\"use strict\";\n\nvar _a;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConsoleLogger = void 0;\nvar tslib_1 = require(\"tslib\");\nvar signalr_1 = require(\"@microsoft/signalr\");\n/** @private */\nvar ConsoleLogger = /** @class */function () {\n function ConsoleLogger(minimumLogLevel) {\n this.messageStyle = \"background: #222; color: #bada55\";\n this.minimumLogLevel = minimumLogLevel;\n }\n ConsoleLogger.prototype.log = function (logLevel, message) {\n var _a;\n var optionalParams = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n optionalParams[_i - 2] = arguments[_i];\n }\n if (logLevel >= this.minimumLogLevel) {\n var args = (0, tslib_1.__spreadArray)([\"\".concat(this.heading(logLevel), \": %c \").concat(message), this.messageStyle], optionalParams, true);\n (_a = ConsoleLogger.logCategory)[logLevel].apply(_a, args);\n }\n };\n ConsoleLogger.prototype.heading = function (logLevel) {\n return \"[\".concat(new Date().toISOString(), \"] [cds-client] \").concat(signalr_1.LogLevel[logLevel]);\n };\n ConsoleLogger.logCategory = (_a = {}, _a[signalr_1.LogLevel.Critical] = console.error, _a[signalr_1.LogLevel.Error] = console.error, _a[signalr_1.LogLevel.Warning] = console.warn, _a[signalr_1.LogLevel.Information] = console.info, _a[signalr_1.LogLevel.Debug] = console.log, _a[signalr_1.LogLevel.Trace] = console.log, _a[signalr_1.LogLevel.None] = function () {}, _a);\n return ConsoleLogger;\n}();\nexports.ConsoleLogger = ConsoleLogger;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ClientConnector = void 0;\nvar tslib_1 = require(\"tslib\");\nvar signalr_1 = require(\"@microsoft/signalr\");\nvar models_1 = require(\"./models\");\nvar utils_1 = require(\"./utils\");\nvar subscription_store_1 = require(\"./subscription-store\");\nvar logger_1 = require(\"./logger\");\nvar ClientConnector = /** @class */function () {\n function ClientConnector(settings, onMessageReceived, onStatusChange) {\n this.settings = settings;\n this.onMessageReceived = onMessageReceived;\n this.onStatusChange = onStatusChange;\n this.validateSettings(settings);\n this.subscriptionStore = new subscription_store_1.default();\n this.logger = new logger_1.ConsoleLogger(settings.logLevel);\n this.connectionStatus = models_1.ConnectionStatus.Disconnected;\n this.isManuallyStopped = false;\n this.lastStartTimestamp = null;\n this.retryAttempts = 0;\n this.maxRetries = settings.maxRetries || ClientConnector.DEFAULT_MAX_CONNECTION_ATTEMPTS;\n this.retryDelayMs = settings.retryDelayMs || ClientConnector.DEFAULT_CONNECTION_RETRY_DELAY;\n }\n ClientConnector.prototype.start = function () {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var connectionOptions, logLevel, url, error_1;\n var _this = this;\n return (0, tslib_1.__generator)(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.connectionStatus !== models_1.ConnectionStatus.Disconnected)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.stop()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n connectionOptions = {\n skipNegotiation: !!this.settings.skipNegotiation,\n transport: this.settings.prefferedTransportType || signalr_1.HttpTransportType.None\n };\n logLevel = this.settings.logLevel === undefined ? signalr_1.LogLevel.None : this.settings.logLevel;\n url = this.buildConnectionUrl();\n this.connection = new signalr_1.HubConnectionBuilder().withUrl(url, connectionOptions).configureLogging(logLevel).build();\n this.connection.on(\"receive\" /* Receive */, function (message) {\n return _this.handleMessage(message);\n });\n this.connection.onclose(function () {\n _this.updateStatus(models_1.ConnectionStatus.Disconnected);\n _this.retry();\n });\n this.isManuallyStopped = false;\n _a.label = 3;\n case 3:\n _a.trys.push([3, 6,, 7]);\n this.updateStatus(models_1.ConnectionStatus.Connecting);\n return [4 /*yield*/, this.connection.start()];\n case 4:\n _a.sent();\n this.updateStatus(models_1.ConnectionStatus.Connected);\n this.retryAttempts = 0;\n return [4 /*yield*/, this.renewSubscriptions()];\n case 5:\n _a.sent();\n return [3 /*break*/, 7];\n case 6:\n error_1 = _a.sent();\n this.updateStatus(models_1.ConnectionStatus.Disconnected);\n this.retry();\n return [3 /*break*/, 7];\n case 7:\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.stop = function () {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n return (0, tslib_1.__generator)(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.isManuallyStopped = true;\n clearTimeout(this.reconnectTimeout);\n if (!this.connection) return [3 /*break*/, 2];\n this.connection.off(\"receive\" /* Receive */);\n this.subscriptionStore.clear();\n return [4 /*yield*/, this.connection.stop()];\n case 1:\n _a.sent();\n this.onMessageReceived = null;\n this.onStatusChange = null;\n this.retryAttempts = 0;\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.subscribe = function (request) {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var subscribeRequest, _i, _a, topic, added;\n return (0, tslib_1.__generator)(this, function (_b) {\n switch (_b.label) {\n case 0:\n subscribeRequest = {\n topics: []\n };\n for (_i = 0, _a = request.topics; _i < _a.length; _i++) {\n topic = _a[_i];\n added = this.subscriptionStore.add(topic);\n if (added.isSingle()) {\n subscribeRequest.topics.push(added.topic);\n }\n }\n if (!subscribeRequest.topics.length) return [3 /*break*/, 2];\n return [4 /*yield*/, this.invoke(\"Subscribe\" /* Subscribe */, subscribeRequest)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.cancelSubscription = function (request) {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var cancelRequest, _i, _a, topic, removed;\n return (0, tslib_1.__generator)(this, function (_b) {\n switch (_b.label) {\n case 0:\n cancelRequest = {\n topics: []\n };\n for (_i = 0, _a = request.topics; _i < _a.length; _i++) {\n topic = _a[_i];\n removed = this.subscriptionStore.remove(topic);\n if (removed && removed.isEmpty()) {\n cancelRequest.topics.push(removed.topic);\n }\n }\n if (!cancelRequest.topics.length) return [3 /*break*/, 2];\n return [4 /*yield*/, this.send(\"Unsubscribe\" /* Unsubscribe */, cancelRequest)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.getStartTime = function () {\n return this.lastStartTimestamp;\n };\n ClientConnector.prototype.getStatus = function () {\n return this.connectionStatus;\n };\n ClientConnector.prototype.buildConnectionUrl = function () {\n var params = utils_1.Utils.buildQueryParameters({\n lang: this.settings.lang,\n country: this.settings.country,\n \"x-bwin-accessId\": this.settings.accessId,\n appUpdates: this.settings.appUpdates,\n shopTier: this.settings.shopTier\n });\n return \"\".concat(this.settings.url, \"?\").concat(params);\n };\n ClientConnector.prototype.retry = function () {\n var _this = this;\n if (this.isManuallyStopped) {\n return;\n }\n this.retryAttempts++;\n if (this.retryAttempts > this.maxRetries) {\n return;\n }\n this.reconnectTimeout = window.setTimeout(function () {\n return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {\n return (0, tslib_1.__generator)(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.logger.log(signalr_1.LogLevel.Information, \"Retrying to connect #\".concat(this.retryAttempts, \"/\").concat(this.maxRetries));\n return [4 /*yield*/, this.start()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n }, this.retryDelayMs);\n };\n ClientConnector.prototype.updateStatus = function (status) {\n this.connectionStatus = status;\n this.lastStartTimestamp = status === models_1.ConnectionStatus.Connected ? new Date() : null;\n this.logger.log(signalr_1.LogLevel.Information, \"Status changed to \".concat(models_1.ConnectionStatus[status]));\n if (this.onStatusChange) {\n this.onStatusChange(status);\n }\n };\n ClientConnector.prototype.renewSubscriptions = function () {\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var request;\n return (0, tslib_1.__generator)(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.connectionStatus !== models_1.ConnectionStatus.Connected) {\n return [2 /*return*/];\n }\n request = {\n topics: this.subscriptionStore.getAll().map(function (s) {\n return s.topic;\n })\n };\n if (!request.topics.length) return [3 /*break*/, 2];\n return [4 /*yield*/, this.send(\"Subscribe\" /* Subscribe */, request)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.handleMessage = function (message) {\n this.logger.log(signalr_1.LogLevel.Trace, \"received message\", message);\n if (this.onMessageReceived) {\n this.onMessageReceived(message);\n }\n };\n ClientConnector.prototype.send = function (methodName) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var _a;\n return (0, tslib_1.__generator)(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.connectionStatus !== models_1.ConnectionStatus.Connected) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, (_a = this.connection).send.apply(_a, (0, tslib_1.__spreadArray)([methodName], args, false))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.invoke = function (methodName) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {\n var _a;\n return (0, tslib_1.__generator)(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.connectionStatus !== models_1.ConnectionStatus.Connected) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, (_a = this.connection).invoke.apply(_a, (0, tslib_1.__spreadArray)([methodName], args, false))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ClientConnector.prototype.validateSettings = function (settings) {\n if (!settings.accessId) {\n throw new Error(\"Missing access id\");\n }\n if (!settings.lang) {\n throw new Error(\"Missing language\");\n }\n if (!settings.country) {\n throw new Error(\"Missing country\");\n }\n if (!settings.url) {\n throw new Error(\"Missing url\");\n }\n };\n ClientConnector.DEFAULT_MAX_CONNECTION_ATTEMPTS = 10;\n ClientConnector.DEFAULT_CONNECTION_RETRY_DELAY = 3000;\n return ClientConnector;\n}();\nexports.ClientConnector = ClientConnector;\n","\"use strict\";\n\n/// \nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tslib_1 = require(\"tslib\");\n(0, tslib_1.__exportStar)(require(\"./models\"), exports);\n(0, tslib_1.__exportStar)(require(\"./client-connector\"), exports);\n(0, tslib_1.__exportStar)(require(\"./utils\"), exports);\n(0, tslib_1.__exportStar)(require(\"./subscription\"), exports);\n(0, tslib_1.__exportStar)(require(\"./subscription-store\"), exports);\n","import { Injectable } from '@angular/core';\n\nimport { MessageEnvelope, SubscriptionRequest } from '@cds/push';\nimport { ConnectionConfig } from '@frontend/sports/common/client-config-data-access';\nimport { ClientConnector, ConnectionStatus, ConnectorSettings } from 'cds-client';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ApiBaseSettingsProvider } from './api-settings.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CdsPushProvider {\n private connection: ClientConnector;\n private _messageReceived$ = new Subject();\n private providerOptions: ConnectorSettings;\n\n get messageReceived$(): Observable {\n return this._messageReceived$.asObservable();\n }\n\n constructor(\n private connectionConfig: ConnectionConfig,\n apiBaseSettings: ApiBaseSettingsProvider,\n ) {\n const baseSettings = apiBaseSettings.getSettings();\n this.providerOptions = {\n url: this.connectionConfig.cdsPushUrl,\n accessId: baseSettings.accessId,\n lang: baseSettings.lang,\n country: baseSettings.userCountry,\n maxRetries: this.connectionConfig.cdsMaxRetries,\n skipNegotiation: this.connectionConfig.cdsSkipNegotiation,\n prefferedTransportType: this.connectionConfig.cdsPrefferedTransportType,\n appUpdates: false,\n };\n this.start();\n }\n\n private async start(): Promise {\n this.connection = new ClientConnector(this.providerOptions, this.onMessageReceived, this.onStatusChanged);\n await this.connection.start();\n }\n\n async subscribe(subscriptionRequest: SubscriptionRequest): Promise {\n await this.connection.subscribe(subscriptionRequest);\n }\n\n async cancelSubscription(request: SubscriptionRequest): Promise {\n await this.connection.cancelSubscription(request);\n }\n\n async restart(): Promise {\n await this.connection.stop();\n await this.start();\n }\n\n get isConnected(): boolean {\n return this.connection.getStatus() === ConnectionStatus.Connected;\n }\n\n get isDisconnected(): boolean {\n return this.connection.getStatus() === ConnectionStatus.Disconnected;\n }\n\n private onMessageReceived = (message: MessageEnvelope) => {\n this._messageReceived$.next(message);\n };\n\n private onStatusChanged = () => {};\n}\n","import { ApiService } from '@frontend/sports/common/api-utils';\nimport { firstValueFrom } from 'rxjs';\n\nexport abstract class BaseCustomLogger {\n protected readonly MAX_LOGGED_ITEMS = 50;\n protected readonly DELAY = 1000;\n\n private queue: T[] = [];\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n private timer: NodeJS.Timeout | null = null;\n\n constructor(\n private api: ApiService,\n private url: string,\n ) {}\n\n log(data: T): void {\n if (!this.isEnabled()) {\n return;\n }\n\n this.queue.push(data);\n this.sendLogs();\n }\n\n protected abstract isEnabled(): boolean;\n\n private sendLogs(): void {\n if (this.timer != null) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timer = setTimeout(async () => {\n if (this.queue.length > 0) {\n await firstValueFrom(this.api.post(this.url, this.queue.slice(0, this.MAX_LOGGED_ITEMS)));\n }\n\n this.queue = [];\n this.timer = null;\n }, this.DELAY);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { MessageEnvelope } from '@cds/push';\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { InternalFeaturesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { BaseCustomLogger } from '@frontend/sports/common/core/feature/logging';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EPSPushLogger extends BaseCustomLogger {\n constructor(\n api: ApiService,\n private internalConfig: InternalFeaturesConfig,\n ) {\n super(api, 'epslogger/logpush');\n }\n\n protected override isEnabled = (): boolean => this.internalConfig.isEPSDetailedLoggingEnabled;\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { MessageEnvelope, MessageType } from '@cds/push';\nimport { BettingOfferConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { isArray, without } from 'lodash-es';\nimport { Observable, OperatorFunction, asyncScheduler } from 'rxjs';\nimport { ThrottleConfig, buffer, filter, finalize, map, share, throttleTime } from 'rxjs/operators';\n\nimport { CdsPushProvider } from './cds-push.provider';\nimport { EPSPushLogger } from './eps-push-logger.service';\n\nexport function bufferThrottle(duration: number, config?: ThrottleConfig): OperatorFunction {\n return (source$: Observable) => source$.pipe(buffer(source$.pipe(throttleTime(duration, asyncScheduler, config))));\n}\n\nconst separator = '|';\nconst topicSeparator = '-';\n\nenum Topic {\n All = 'all',\n Grid = 'grd',\n Game = 'gam',\n NonGridable = 'ngrd',\n Specials = 'spc',\n Outrights = 'out',\n Scoreboard = 'sbf',\n ScoreboardSlim = 'sbs',\n OptionMarket = 'fxm',\n ParticipantMarket = 'fxp',\n Fixture = 'fxt',\n PlayerStats = 'psts',\n}\n\nexport interface CdsSubscription {\n readonly callback: (message: MessageEnvelope) => void;\n readonly key: string[];\n}\n\nexport abstract class BaseSubscription implements CdsSubscription {\n constructor(\n readonly contexts: string[] | undefined,\n readonly eventId: string,\n readonly lang: string,\n readonly callback: (message: MessageEnvelope) => void,\n ) {}\n\n protected abstract readonly suffix: string;\n\n get key(): string[] {\n if (!this.contexts) {\n //can be undefined for splitFixtures - setting this here explicitely with V1, as splitFixtures are always V1\n const ctx = this.getKey(OfferSource.V1, this.lang, this.eventId).toLowerCase();\n\n return [this.getKey(ctx, this.suffix)];\n }\n\n return this.contexts.map((ctx) => {\n const context = this.getContext(this.eventId, ctx, this.lang);\n\n return this.getKey(context, this.suffix);\n });\n }\n\n protected getTopic(topic: Topic, ...params: (string | number | undefined)[]): string {\n return [topic, ...params].join(topicSeparator);\n }\n\n protected getKey(...params: (string | number | undefined)[]): string {\n return params.filter((param) => param?.toString()).join(separator);\n }\n\n protected getContext(eventId: string, context: string | undefined, language: string): string {\n if (context) {\n return context;\n }\n\n return this.getKey(OfferSource.V1, language, eventId).toLowerCase();\n }\n}\n\nabstract class BaseMarketSubscription extends BaseSubscription {\n constructor(\n override readonly contexts: string[] | undefined,\n override readonly eventId: string,\n protected readonly marketId: string,\n override readonly lang: string,\n override readonly callback: (message: MessageEnvelope) => void,\n ) {\n super(contexts, eventId, lang, callback);\n }\n}\n\nexport class GridSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.Grid;\n}\n\nexport class NonGridableSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.NonGridable;\n}\n\nexport class SpecialsSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.Specials;\n}\n\nexport class OutrightsSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.Outrights;\n}\n\nexport class ScoreboardSlimSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.ScoreboardSlim;\n}\n\nexport class GameSubscription extends BaseMarketSubscription {\n protected readonly suffix: string = this.getTopic(Topic.Game, this.marketId);\n}\n\nexport class OptionMarketSubscription extends BaseMarketSubscription {\n protected readonly suffix: string = this.getTopic(Topic.OptionMarket, this.marketId);\n}\n\nexport class ParticipantMarketSubscription extends BaseMarketSubscription {\n protected readonly suffix: string = this.getTopic(Topic.ParticipantMarket, this.marketId);\n}\n\nexport class FixtureAllSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.All;\n}\n\nexport class FixtureSlimSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.Fixture;\n}\n\nexport class ScoreboardSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.Scoreboard;\n}\n\nexport class PlayerStatsSubscription extends BaseSubscription {\n protected readonly suffix: string = Topic.PlayerStats;\n}\n\nexport class CachoutSubscription implements CdsSubscription {\n constructor(\n private readonly betNumber: string,\n readonly callback: (message: MessageEnvelope) => void,\n ) {}\n\n get key(): string[] {\n return [`eps|cashout:${this.betNumber}`];\n }\n}\n\nexport class CampaignSubscription implements CdsSubscription {\n constructor(\n private readonly params: { campaignId: string; userAccountId?: string },\n readonly callback: (message: MessageEnvelope) => void,\n ) {}\n\n get key(): string[] {\n return [['spc', this.params.campaignId, this.params.userAccountId].filter((key) => !!key).join(separator)];\n }\n}\n\nexport class OverAskSubscription implements CdsSubscription {\n static createKey(offerId: string): string {\n return `overask|offerupdate|${offerId}`;\n }\n\n constructor(\n private readonly offerId: string,\n readonly callback: (message: MessageEnvelope) => void,\n ) {}\n\n get key(): string[] {\n return [OverAskSubscription.createKey(this.offerId)];\n }\n}\n\nexport class BetBuilderSubscription implements CdsSubscription {\n static createKey(sgpId: string): string {\n return `betbuilder|updates|${sgpId}`;\n }\n\n constructor(\n private readonly context: string[],\n readonly callback: (message: MessageEnvelope) => void,\n ) {}\n\n get key(): string[] {\n return this.context.map((ctx) => BetBuilderSubscription.createKey(ctx));\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CdsPushService {\n private subscriptions = new Map void)[]>();\n private observableSubscriptions: Map> = new Map>();\n private logger: SportsRemoteLogger;\n\n constructor(\n private pushProvider: CdsPushProvider,\n private ngZone: NgZone,\n loggerFactory: LoggerFactory,\n private epsLogger: EPSPushLogger,\n private bettingOfferConfig: BettingOfferConfig,\n ) {\n this.logger = loggerFactory.getLogger('CdsPushService');\n\n this.pushProvider.messageReceived$\n /**\n * Performance optimization:\n * Because of increased amount of TV2 push messages and because they are usually received by client in bursts of ~200 messages\n * we've introduced time-based buffering (defined in pushBufferingDuration) and later propagation in the system. It has a downside\n * of delaying every push message update by the buffering duration.\n */\n .pipe(bufferThrottle(this.bettingOfferConfig.pushBufferingDuration, { leading: false, trailing: true }))\n .subscribe((envelopes) => {\n this.handlePushMessage(envelopes);\n });\n }\n\n subscribe(subscriptions: CdsSubscription | CdsSubscription[]): void {\n const list = isArray(subscriptions) ? subscriptions : [subscriptions];\n\n this.ngZone.runOutsideAngular(() => {\n const newSubscriptions = [];\n for (const sub of list) {\n for (const key of sub.key) {\n if (this.subscriptions.has(key)) {\n const existing = this.subscriptions.get(key);\n existing?.push(sub.callback);\n } else {\n this.subscriptions.set(key, [sub.callback]);\n\n newSubscriptions.push(key);\n }\n }\n }\n\n if (newSubscriptions.length > 0) {\n this.pushProvider.subscribe({ topics: newSubscriptions });\n }\n });\n }\n\n subscribe$(topic: string): Observable {\n const existing$ = this.observableSubscriptions.get(topic);\n if (existing$) {\n return existing$ as Observable;\n }\n\n this.ngZone.runOutsideAngular(async () => {\n await this.pushProvider.subscribe({ topics: [topic] });\n });\n\n return this.pushProvider.messageReceived$.pipe(\n filter((envelope) => envelope.topic === topic),\n map((envelope) => envelope.payload as T),\n finalize(() => {\n this.observableSubscriptions.delete(topic);\n this.ngZone.runOutsideAngular(() => {\n this.pushProvider.cancelSubscription({ topics: [topic] });\n });\n }),\n share(),\n );\n }\n\n async restart(): Promise {\n this.subscriptions = new Map();\n await this.pushProvider.restart();\n }\n\n unsubscribe(subscriptions: CdsSubscription | CdsSubscription[]): void {\n const list = isArray(subscriptions) ? subscriptions : [subscriptions];\n\n this.ngZone.runOutsideAngular(() => {\n const topics: string[] = [];\n\n list.forEach((current) => {\n try {\n for (const key of current.key) {\n if (this.checkSubscription(current)) {\n topics.push(key);\n }\n }\n } catch (error) {\n this.logger.error(error);\n }\n });\n\n this.pushProvider.cancelSubscription({ topics });\n });\n }\n\n private checkSubscription(cdsSubscription: CdsSubscription): boolean {\n if (this.pushProvider.isDisconnected || !cdsSubscription) {\n return false;\n }\n\n for (const key of cdsSubscription.key) {\n let callbacks = this.subscriptions.get(key);\n\n if (callbacks) {\n callbacks = without(callbacks, cdsSubscription.callback);\n\n if (callbacks.length === 0) {\n this.subscriptions.delete(key);\n\n return true;\n } else {\n this.subscriptions.set(key, callbacks);\n }\n }\n }\n\n return false;\n }\n\n private handlePushMessage = (messages: MessageEnvelope[]) => {\n messages = messages.filter((m) => m.messageType !== MessageType.MainToLiveUpdate);\n const callbackList: { callbacks: ((message: MessageEnvelope) => void)[]; message: MessageEnvelope }[] = [];\n\n for (const message of messages) {\n const callbacks = this.subscriptions.get(message.topic);\n\n if (!callbacks?.length) {\n console.warn(`Received push message for not subscribed topic: ${message.topic}`);\n\n continue;\n }\n\n if (message.messageType === MessageType.CashoutUpdate) {\n this.epsLogger.log(message);\n }\n\n callbackList.push({\n callbacks,\n message,\n });\n }\n\n this.ngZone.run(() => {\n callbackList.forEach((item) => {\n item.callbacks.forEach((cb) => {\n try {\n cb(item.message);\n } catch (error) {\n this.logger.error(error, `Failed to apply push message for topic: ${item.message.topic}`);\n }\n });\n });\n });\n };\n}\n","import { Injectable, NgZone, OnDestroy } from '@angular/core';\n\nimport { SimpleCallback } from '@frontend/sports/common/core/utils/extended-types';\nimport { Observable, timer } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimerService implements OnDestroy {\n private timeouts = new Map();\n private intervals = new Map();\n private frames = new Map();\n\n constructor(private ngZone: NgZone) {}\n\n setTimeout(handler: SimpleCallback, time?: number): SimpleCallback {\n return this.setCallback(handler, this.timeouts, (callback) => window.setTimeout(callback, time), window.clearTimeout);\n }\n\n setInterval(handler: SimpleCallback, time: number): SimpleCallback {\n return this.setCallback(handler, this.intervals, (callback) => window.setInterval(callback, time), window.clearInterval, true);\n }\n\n setAnimationFrame(handler: SimpleCallback): SimpleCallback {\n return this.setCallback(handler, this.frames, window.requestAnimationFrame, window.cancelAnimationFrame);\n }\n\n setTimeoutOutsideAngular(handler: SimpleCallback, time?: number): SimpleCallback {\n return this.ngZone.runOutsideAngular(() => {\n return this.setTimeout(handler, time);\n });\n }\n\n setIntervalOutsideAngular(handler: SimpleCallback, time: number): SimpleCallback {\n return this.ngZone.runOutsideAngular(() => {\n return this.setInterval(handler, time);\n });\n }\n\n private setCallback(\n callback: SimpleCallback,\n map: Map,\n scheduler: (callback: SimpleCallback) => number,\n canceller: (handle: number) => void,\n continous = false,\n ): SimpleCallback {\n const val = scheduler(() => {\n callback();\n\n if (!continous) {\n map.delete(val);\n }\n });\n\n const removeCallback = () => {\n canceller(val);\n map.delete(val);\n };\n\n map.set(val, removeCallback);\n\n return removeCallback;\n }\n\n timer(dueTime: number | Date = 0): Observable {\n return timer(dueTime);\n }\n\n removeAll(): void {\n for (const collection of [this.timeouts, this.intervals, this.frames]) {\n for (const destructor of collection.values()) {\n destructor();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.removeAll();\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { IDynamicInjectorProvider } from '@frontend/sports/host-app/sports-product/feature/non-root-token';\nimport { ClientConfigProductName, ProductMetadata, ProductService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, distinctUntilChanged, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SportsProductService implements IDynamicInjectorProvider {\n readonly isSportsProductActive$: Observable;\n\n constructor(\n private productService: ProductService,\n private injector: Injector,\n ) {\n if (!productService.isSingleDomainApp) {\n this.isSportsProductActive$ = of(true);\n\n return;\n }\n\n const subject$ = new BehaviorSubject(this.checkIsSportsProduct(productService.current));\n\n productService.productChanged.subscribe((data) => {\n subject$.next(this.checkIsSportsProduct(data));\n });\n\n this.isSportsProductActive$ = subject$.asObservable().pipe(distinctUntilChanged());\n }\n\n getDynamicInjector(): Injector {\n if (!this.productService.isSingleDomainApp) {\n return this.injector;\n }\n\n const currentInjector = this.productService.current.injector;\n\n const sportsProduct = this.productService.getMetadata(ClientConfigProductName.SPORTS);\n\n if (!sportsProduct.isRegistered) {\n console.error(`Attempted to use sports product injector but sports product was not registered.`);\n\n return currentInjector;\n }\n\n return sportsProduct.injector;\n }\n\n activateSports(): void {\n this.productService.setActive(ClientConfigProductName.SPORTS);\n }\n\n deactivateSports(): void {\n this.productService.deactivateProduct(ClientConfigProductName.SPORTS);\n }\n\n get isSingleDomain(): boolean {\n return this.productService.isSingleDomainApp;\n }\n\n get sportsProductName(): string {\n return ClientConfigProductName.SPORTS;\n }\n\n private checkIsSportsProduct(metadata: ProductMetadata): boolean {\n return metadata.name === ClientConfigProductName.SPORTS;\n }\n}\n","import { Injector } from '@angular/core';\n\nexport let APP_INJECTOR: Injector;\n\n/**\n * Helper to set the exported {@link AppInjector}, needed as ES6 modules export\n * immutable bindings (see http://2ality.com/2015/07/es6-module-exports.html) for\n * which trying to make changes after using `import {AppInjector}` would throw:\n * \"TS2539: Cannot assign to 'AppInjector' because it is not a variable\" .\n */\nexport function setAppInjector(injector: Injector): void {\n if (!APP_INJECTOR) {\n APP_INJECTOR = injector;\n }\n}\n\nexport function resetAppInjector(): void {\n APP_INJECTOR = undefined as unknown as Injector;\n}\n","import { SportsProductService } from '@frontend/sports/host-app/sports-product/feature/sports-product-service';\nimport { Observable, OperatorFunction } from 'rxjs';\nimport { distinctUntilChanged, filter, map, skip, tap, withLatestFrom } from 'rxjs/operators';\n\nimport { APP_INJECTOR } from './app-injector';\n\nexport function fromSportsLeave(productService?: SportsProductService): Observable {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n return service.isSportsProductActive$.pipe(\n skip(1),\n distinctUntilChanged(),\n filter((x) => !x),\n );\n}\n\nexport function fromSportsEnter(productService?: SportsProductService): Observable {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n return service.isSportsProductActive$.pipe(\n skip(1),\n distinctUntilChanged(),\n filter((x) => x),\n );\n}\n\n/**\n * Emitting items if the current product is SPORTS\n */\nexport function filterSports(productService?: SportsProductService): OperatorFunction {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n\n return (source$: Observable) =>\n source$.pipe(\n withLatestFrom(service.isSportsProductActive$),\n filter(([_, isSports]) => isSports),\n map(([value]) => value),\n );\n}\n\n/**\n * Emitting items if the current product is SPORTS and emits the last non-SPORTS item whenever a SPORTS product is detected.\n */\nexport function filterSportsEmitLast(productService?: SportsProductService): OperatorFunction {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n let lastNotSportsValue: T | null = null;\n\n return (source$) =>\n new Observable((subscriber) => {\n const productSubscription = service.isSportsProductActive$.pipe(filter((x) => x)).subscribe(() => {\n if (lastNotSportsValue) {\n subscriber.next(lastNotSportsValue);\n lastNotSportsValue = null;\n }\n });\n\n const sourceSubscription = source$\n .pipe(\n withLatestFrom(service.isSportsProductActive$),\n tap(([value, isSports]) => {\n lastNotSportsValue = isSports ? null : value;\n }),\n filter(([_, isSports]) => isSports),\n map(([value]) => value),\n )\n .subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n },\n });\n\n return () => {\n productSubscription.unsubscribe();\n sourceSubscription.unsubscribe();\n };\n });\n}\n","export abstract class CrmOfferLoaderRequestParamsBaseService {\n abstract get params(): any | undefined;\n}\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\n\nimport { RewardTargetType } from '@bpos/v1/sports-promo/tokens';\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { CrmConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SimpleCallback } from '@frontend/sports/common/core/utils/extended-types';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { IRewardTokenData, RewardTokenType } from '../tokens-base/token-base.models';\nimport { CrmOfferLoaderRequestParamsBaseService } from './crm-offer-loader-request-params-base.service';\nimport { Campaign, OffersResponse } from './crm-offer.server.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CrmOfferLoaderService implements OnDestroy {\n private _promotions$ = new ReplaySubject(1);\n private _tokens$ = new ReplaySubject(1);\n private _promoRestricted$ = new BehaviorSubject(false);\n\n readonly promotions$ = this._promotions$.asObservable();\n readonly tokens$ = this._tokens$.asObservable();\n readonly promoRestricted$ = this._promoRestricted$.asObservable();\n\n private interval?: SimpleCallback;\n\n constructor(\n private apiService: ApiService,\n private crmConfig: CrmConfig,\n private userService: UserService,\n private timerService: TimerService,\n @Optional() private crmOfferLoaderRequestParamsService: CrmOfferLoaderRequestParamsBaseService | null,\n ) {\n if (!this.crmConfig.promotions.isEnabled) {\n this._promotions$.next([]);\n }\n\n if (!this.crmConfig.tokens.isEnabled) {\n this._tokens$.next([]);\n }\n\n if (this.crmConfig.promotions.isEnabled || this.crmConfig.tokens.isEnabled) {\n this.startGettingOffers();\n }\n }\n\n ngOnDestroy(): void {\n this.stopRefresh();\n }\n\n refresh(): void {\n this.fetchOffer(true);\n }\n\n private startGettingOffers(forceRefresh: boolean = false): void {\n if (this.userService.isAuthenticated) {\n this.setupOfferRefresh(forceRefresh);\n } else {\n this._tokens$.next([]);\n }\n\n this.userService.onUserLogin$.pipe(filterSportsEmitLast()).subscribe(() => this.setupOfferRefresh());\n\n this.userService.onUserLogout$.pipe(filterSportsEmitLast()).subscribe(() => {\n this._promotions$.next([]);\n this._tokens$.next([]);\n this.stopRefresh();\n });\n }\n\n private fetchOffer(forceRefresh: boolean = false): void {\n this.apiService.get('crmOffers', this.crmOfferLoaderRequestParamsService?.params).subscribe((result) => {\n if (!forceRefresh && this.crmConfig.promotions.isEnabled) {\n this._promotions$.next(result.campaigns);\n }\n\n if (this.crmConfig.tokens.isEnabled) {\n this._tokens$.next(this.getTokensResponse(result));\n }\n\n if (this.crmConfig.promotions.isRegulatoryRestricted) {\n this._promoRestricted$.next(result.isPromoOfferRestricted);\n }\n\n if (result.cancelPolling) {\n this.stopRefresh();\n }\n });\n }\n\n private getTokensResponse(response: OffersResponse): IRewardTokenData[] {\n const oddsBoostTokens: IRewardTokenData[] = response.oddsBoostTokens.map((token) => ({\n ...token,\n rewardTokenType: RewardTokenType.OddsBoost,\n }));\n\n const riskFreeTokens: IRewardTokenData[] = response.riskFreeTokens.map((token) => ({\n ...token,\n rewardTokenType: RewardTokenType.RiskFreeBet,\n }));\n\n const freeBetTokens: IRewardTokenData[] = response.freeBetTokens.map((token) => ({\n ...token,\n rewardTokenType: RewardTokenType.FreeBet,\n }));\n\n const betAndGetTokens: IRewardTokenData[] = response.betAndGetTokens.map((token) => ({\n ...token,\n rewardTokenType: RewardTokenType.BetAndGet,\n }));\n\n const rewardTokens = [...oddsBoostTokens, ...riskFreeTokens, ...freeBetTokens, ...betAndGetTokens];\n\n if (!this.crmConfig.tokens.acquisitionRewardDetails.isWelcomeOfferTokenAllowed) {\n return rewardTokens.filter((x) => x.rewardTargetType !== RewardTargetType.WelcomeOffer);\n }\n\n return rewardTokens;\n }\n\n private setupOfferRefresh(forceRefresh: boolean = false): void {\n this.fetchOffer(forceRefresh);\n\n if (this.crmConfig.promotions.refreshInterval && !forceRefresh) {\n this.interval = this.timerService.setInterval(() => this.fetchOffer(), this.crmConfig.promotions.refreshInterval);\n }\n }\n\n private stopRefresh(): void {\n if (this.interval) {\n this.interval();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { MessageEnvelope, MessageType } from '@cds/push';\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\nimport { CampaignSubscription, CdsPushService, CdsSubscription } from '@frontend/sports/content-distribution/feature';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { flatten, values } from 'lodash-es';\nimport { Observable, Subject, map } from 'rxjs';\n\nimport { Promotion } from '../crm-offer-data/crm-offer.model';\nimport { OffersResponse } from '../crm-offer-data/crm-offer.server.model';\nimport { CrmPromotionFactory } from './crm-promotion.factory';\n\nenum OfferStatus {\n Inactive = 'INACTIVE',\n Edited = 'EDITED',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CdsSubscriptionService {\n private _promotions$: Subject = new Subject();\n readonly promotions$ = this._promotions$.asObservable();\n\n private subscribedPromotions: Promotion[];\n private pushSubscriptions: StringDictionary = {};\n\n private campaignCallback = (message: MessageEnvelope) => this.campaignUpdateCallback(message);\n\n constructor(\n private cdsPushService: CdsPushService,\n private userService: UserService,\n private apiService: ApiService,\n private crmPromotionFactory: CrmPromotionFactory,\n ) {\n this.userService.onUserLogout$.pipe(filterSportsEmitLast()).subscribe(() => this.unsubscribe());\n }\n\n subscribeToPush(promotions: Promotion[]): Observable {\n this.initialize(promotions);\n\n return this._promotions$.asObservable();\n }\n\n unsubscribe(): void {\n this.cdsPushService.unsubscribe(this.getAllSubscriptions());\n this.subscribedPromotions = [];\n this.pushSubscriptions = {};\n }\n\n private initialize(promotions: Promotion[]): void {\n this.subscribedPromotions = promotions;\n this.cdsPushService.subscribe(this.getSubscriptions(promotions));\n }\n\n private getSubscriptions(promotions: Promotion[]): CdsSubscription[] {\n promotions.forEach((promo) => {\n this.pushSubscriptions[promo.id] = [\n new CampaignSubscription({ campaignId: promo.id }, this.campaignCallback),\n new CampaignSubscription({ campaignId: promo.id, userAccountId: this.userService.accountId! }, this.campaignCallback),\n ];\n });\n\n return this.getAllSubscriptions();\n }\n\n private campaignUpdateCallback = async (pushData: MessageEnvelope) => {\n if (!this.pushSubscriptions[pushData.payload.offerId]) {\n return;\n }\n const promoId = pushData.payload.offerId;\n\n switch (pushData.messageType) {\n case MessageType.PromoCampaignUpdate: {\n if (pushData.payload.status === OfferStatus.Inactive) {\n this.removePromotion(promoId);\n } else {\n this.refreshPromotions();\n }\n break;\n }\n case MessageType.PromoCampaignStatusUpdate: {\n this.removePromotion(promoId);\n break;\n }\n case MessageType.PromoUserCampaignStatusUpdate: {\n this.playerUpdate(pushData);\n break;\n }\n }\n };\n\n private removePromotion(promoId: string): void {\n this.subscribedPromotions = this.subscribedPromotions.filter((promo) => promo.id !== promoId);\n\n this.cdsPushService.unsubscribe(this.pushSubscriptions[promoId]);\n delete this.pushSubscriptions[promoId];\n\n this.push();\n }\n\n private refreshPromotions(): void {\n this.apiService\n .get('crmOffers')\n .pipe(map((result) => this.crmPromotionFactory.toModelList(result.campaigns)))\n .subscribe((data) => {\n this.initialize(data);\n this.push();\n });\n }\n\n private playerUpdate(pushData: MessageEnvelope): void {\n this.subscribedPromotions\n .filter((promo) => promo.id === pushData.payload.offerId)\n .forEach((promo) => (promo.callToAction = pushData.payload.cta));\n this.push();\n }\n\n private push(): void {\n this._promotions$.next(this.subscribedPromotions);\n }\n\n private getAllSubscriptions(): CdsSubscription[] {\n return flatten(values(this.pushSubscriptions));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { StringDictionary, hasValue } from '@frontend/sports/common/core/utils/extended-types';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { OnAppInit } from '@frontend/vanilla/core';\nimport { flatten, keyBy, uniq } from 'lodash-es';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { CrmOfferLoaderService } from '../crm-offer-data/crm-offer-loader.service';\nimport { Filter, Promotion } from '../crm-offer-data/crm-offer.model';\nimport { Campaign } from '../crm-offer-data/crm-offer.server.model';\nimport { CdsSubscriptionService } from './cds-subscription.service';\nimport { CrmPromotionFactory } from './crm-promotion.factory';\n\nexport interface PromotionMap {\n sports: StringDictionary;\n meetings: StringDictionary;\n competitions: StringDictionary;\n fixtures: StringDictionary;\n templateIds: StringDictionary;\n markets: StringDictionary;\n options: StringDictionary;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CrmPromotionProviderService implements OnAppInit {\n private _promotionsMap$ = new BehaviorSubject({\n sports: {},\n meetings: {},\n competitions: {},\n fixtures: {},\n templateIds: {},\n markets: {},\n options: {},\n });\n\n private _promotions$ = new BehaviorSubject([]);\n\n readonly promotionsMap$ = this._promotionsMap$.asObservable();\n readonly promotions$ = this._promotions$.asObservable();\n\n private subscribedPromotions: StringDictionary = {};\n\n constructor(\n private crmPromotionLoader: CrmOfferLoaderService,\n private crmPromotionFactory: CrmPromotionFactory,\n private subscriptionService: CdsSubscriptionService,\n ) {}\n\n onAppInit(): void {\n this.crmPromotionLoader.promotions$\n .pipe(\n filterSportsEmitLast(),\n map((campaigns) => this.mapPromotions(campaigns)),\n tap((promotions) => this.promotionChanged(promotions)),\n switchMap((promos) => this.subscribeToPush(promos)),\n )\n .subscribe();\n }\n\n private subscribeToPush(promos: Promotion[]): Promotion[] {\n if (!this.hasNewPromotions(promos)) {\n return promos;\n }\n\n this.subscribedPromotions = {};\n promos.forEach((promo) => (this.subscribedPromotions[promo.id] = promo.id));\n\n this.subscriptionService.subscribeToPush(promos).subscribe((promotions) => this.promotionChanged(promotions));\n\n return promos;\n }\n\n private hasNewPromotions(promos: Promotion[]): boolean {\n return promos.some((promo) => !this.subscribedPromotions[promo.id]);\n }\n\n private mapPromotions(campaigns: Campaign[]): Promotion[] {\n return this.crmPromotionFactory.toModelList(campaigns);\n }\n\n private promotionChanged(promotions: Promotion[]): void {\n const filters = flatten(promotions.map((promotion) => promotion.allFilters)).filter(hasValue);\n const promoMap = this.getPromotionMap(filters);\n\n this._promotionsMap$.next(promoMap);\n this._promotions$.next(promotions);\n }\n\n private getPromotionMap(filters: Filter[]): PromotionMap {\n return {\n sports: keyBy(uniq(flatten(filters.map((f) => f.sportIds)))),\n meetings: keyBy(uniq(flatten(filters.map((f) => f.meetingIds)))),\n competitions: keyBy(uniq(flatten(filters.map((f) => f.competitionIds)))),\n fixtures: keyBy(uniq(flatten(filters.map((f) => f.fixtureIds)))),\n templateIds: keyBy(uniq(flatten(filters.map((f) => f.marketTemplateIds)))),\n markets: keyBy(uniq(flatten(filters.map((f) => f.marketIds)))),\n options: keyBy(uniq(flatten(filters.map((f) => f.optionIds)))),\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { PersonalizedMarqueeConfig } from '@frontend/sports/common/client-config-data-access';\nimport { CookieProvider } from '@frontend/sports/common/core/utils/cookie-provider';\nimport { MarqueePayload } from '@frontend/sports/types/components/widget/types';\nimport { Observable, map } from 'rxjs';\n\nimport { CrmPromotionProviderService } from '../crm-promotion/crm-promotion-provider.service';\nimport { MarqueeComponentTile, Tile } from './marquee-tile.model';\nimport { MarqueeTileService } from './marquee-tile.service';\n\n@Injectable({ providedIn: 'root' })\nexport class MarqueeWidgetDataService {\n private readonly cookieProvider = inject(CookieProvider);\n private readonly personalizedMarqueeConfig = inject(PersonalizedMarqueeConfig);\n private readonly promoService = inject(CrmPromotionProviderService);\n private readonly tileService = inject(MarqueeTileService);\n private readonly personalizedMarqueeCookieName = 'ShowPersonalizedMarquee';\n\n combineWithPromotions(payload: MarqueePayload | undefined, tiles: Tile[]): Observable {\n return this.promoService.promotions$.pipe(\n map((promotions) => {\n if (payload && !this.isNotPersonalizedMarquee(payload)) {\n return this.tileService.combineWithPromotions(tiles, promotions);\n }\n\n return tiles;\n }),\n );\n }\n\n isNotPersonalizedMarquee(data: MarqueePayload): boolean {\n return (\n data.isPersonalizedMarquee &&\n (!this.cookieProvider.getCookie(this.personalizedMarqueeCookieName) ||\n !(data.tiles?.length >= this.personalizedMarqueeConfig.minEventsToShow))\n );\n }\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, computed, isDevMode, inject, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, NgModule, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, queueScheduler } from 'rxjs';\nimport { observeOn, withLatestFrom, scan, pluck, map, distinctUntilChanged } from 'rxjs/operators';\nimport { toSignal } from '@angular/core/rxjs-interop';\nconst REGISTERED_ACTION_TYPES = {};\nfunction resetRegisteredActionTypes() {\n for (const key of Object.keys(REGISTERED_ACTION_TYPES)) {\n delete REGISTERED_ACTION_TYPES[key];\n }\n}\n\n/**\n * @description\n * Creates a configured `Creator` function that, when called, returns an object in the shape of the `Action` interface.\n *\n * Action creators reduce the explicitness of class-based action creators.\n *\n * @param type Describes the action that will be dispatched\n * @param config Additional metadata needed for the handling of the action. See {@link createAction#usage-notes Usage Notes}.\n *\n * @usageNotes\n *\n * **Declaring an action creator**\n *\n * Without additional metadata:\n * ```ts\n * export const increment = createAction('[Counter] Increment');\n * ```\n * With additional metadata:\n * ```ts\n * export const loginSuccess = createAction(\n * '[Auth/API] Login Success',\n * props<{ user: User }>()\n * );\n * ```\n * With a function:\n * ```ts\n * export const loginSuccess = createAction(\n * '[Auth/API] Login Success',\n * (response: Response) => response.user\n * );\n * ```\n *\n * **Dispatching an action**\n *\n * Without additional metadata:\n * ```ts\n * store.dispatch(increment());\n * ```\n * With additional metadata:\n * ```ts\n * store.dispatch(loginSuccess({ user: newUser }));\n * ```\n *\n * **Referencing an action in a reducer**\n *\n * Using a switch statement:\n * ```ts\n * switch (action.type) {\n * // ...\n * case AuthApiActions.loginSuccess.type: {\n * return {\n * ...state,\n * user: action.user\n * };\n * }\n * }\n * ```\n * Using a reducer creator:\n * ```ts\n * on(AuthApiActions.loginSuccess, (state, { user }) => ({ ...state, user }))\n * ```\n *\n * **Referencing an action in an effect**\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(AuthApiActions.loginSuccess),\n * // ...\n * )\n * );\n * ```\n */\nfunction createAction(type, config) {\n REGISTERED_ACTION_TYPES[type] = (REGISTERED_ACTION_TYPES[type] || 0) + 1;\n if (typeof config === 'function') {\n return defineType(type, (...args) => ({\n ...config(...args),\n type\n }));\n }\n const as = config ? config._as : 'empty';\n switch (as) {\n case 'empty':\n return defineType(type, () => ({\n type\n }));\n case 'props':\n return defineType(type, props => ({\n ...props,\n type\n }));\n default:\n throw new Error('Unexpected config.');\n }\n}\nfunction props() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return {\n _as: 'props',\n _p: undefined\n };\n}\nfunction union(creators) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return undefined;\n}\nfunction defineType(type, creator) {\n return Object.defineProperty(creator, 'type', {\n value: type,\n writable: false\n });\n}\nfunction capitalize(text) {\n return text.charAt(0).toUpperCase() + text.substring(1);\n}\nfunction uncapitalize(text) {\n return text.charAt(0).toLowerCase() + text.substring(1);\n}\n\n/**\n * @description\n * A function that creates a group of action creators with the same source.\n *\n * @param config An object that contains a source and dictionary of events.\n * An event is a key-value pair of an event name and event props.\n * @returns A dictionary of action creators.\n * The name of each action creator is created by camel casing the event name.\n * The type of each action is created using the \"[Source] Event Name\" pattern.\n *\n * @usageNotes\n *\n * ```ts\n * const authApiActions = createActionGroup({\n * source: 'Auth API',\n * events: {\n * // defining events with payload using the `props` function\n * 'Login Success': props<{ userId: number; token: string }>(),\n * 'Login Failure': props<{ error: string }>(),\n *\n * // defining an event without payload using the `emptyProps` function\n * 'Logout Success': emptyProps(),\n *\n * // defining an event with payload using the props factory\n * 'Logout Failure': (error: Error) => ({ error }),\n * },\n * });\n *\n * // action type: \"[Auth API] Login Success\"\n * authApiActions.loginSuccess({ userId: 10, token: 'ngrx' });\n *\n * // action type: \"[Auth API] Login Failure\"\n * authApiActions.loginFailure({ error: 'Login Failure!' });\n *\n * // action type: \"[Auth API] Logout Success\"\n * authApiActions.logoutSuccess();\n *\n * // action type: \"[Auth API] Logout Failure\";\n * authApiActions.logoutFailure(new Error('Logout Failure!'));\n * ```\n */\nfunction createActionGroup(config) {\n const {\n source,\n events\n } = config;\n return Object.keys(events).reduce((actionGroup, eventName) => ({\n ...actionGroup,\n [toActionName(eventName)]: createAction(toActionType(source, eventName), events[eventName])\n }), {});\n}\nfunction emptyProps() {\n return props();\n}\nfunction toActionName(eventName) {\n return eventName.trim().split(' ').map((word, i) => i === 0 ? uncapitalize(word) : capitalize(word)).join('');\n}\nfunction toActionType(source, eventName) {\n return `[${source}] ${eventName}`;\n}\nconst INIT = '@ngrx/store/init';\nlet ActionsSubject = /*#__PURE__*/(() => {\n class ActionsSubject extends BehaviorSubject {\n constructor() {\n super({\n type: INIT\n });\n }\n next(action) {\n if (typeof action === 'function') {\n throw new TypeError(`\n Dispatch expected an object, instead it received a function.\n If you're using the createAction function, make sure to invoke the function\n before dispatching the action. For example, someAction should be someAction().`);\n } else if (typeof action === 'undefined') {\n throw new TypeError(`Actions must be objects`);\n } else if (typeof action.type === 'undefined') {\n throw new TypeError(`Actions must have a type property`);\n }\n super.next(action);\n }\n complete() {\n /* noop */\n }\n ngOnDestroy() {\n super.complete();\n }\n /** @nocollapse */\n static {\n this.ɵfac = function ActionsSubject_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ActionsSubject)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ActionsSubject,\n factory: ActionsSubject.ɵfac\n });\n }\n }\n return ActionsSubject;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ACTIONS_SUBJECT_PROVIDERS = [ActionsSubject];\nconst _ROOT_STORE_GUARD = new InjectionToken('@ngrx/store Internal Root Guard');\nconst _INITIAL_STATE = new InjectionToken('@ngrx/store Internal Initial State');\nconst INITIAL_STATE = new InjectionToken('@ngrx/store Initial State');\nconst REDUCER_FACTORY = new InjectionToken('@ngrx/store Reducer Factory');\nconst _REDUCER_FACTORY = new InjectionToken('@ngrx/store Internal Reducer Factory Provider');\nconst INITIAL_REDUCERS = new InjectionToken('@ngrx/store Initial Reducers');\nconst _INITIAL_REDUCERS = new InjectionToken('@ngrx/store Internal Initial Reducers');\nconst STORE_FEATURES = new InjectionToken('@ngrx/store Store Features');\nconst _STORE_REDUCERS = new InjectionToken('@ngrx/store Internal Store Reducers');\nconst _FEATURE_REDUCERS = new InjectionToken('@ngrx/store Internal Feature Reducers');\nconst _FEATURE_CONFIGS = new InjectionToken('@ngrx/store Internal Feature Configs');\nconst _STORE_FEATURES = new InjectionToken('@ngrx/store Internal Store Features');\nconst _FEATURE_REDUCERS_TOKEN = new InjectionToken('@ngrx/store Internal Feature Reducers Token');\nconst FEATURE_REDUCERS = new InjectionToken('@ngrx/store Feature Reducers');\n/**\n * User-defined meta reducers from StoreModule.forRoot()\n */\nconst USER_PROVIDED_META_REDUCERS = new InjectionToken('@ngrx/store User Provided Meta Reducers');\n/**\n * Meta reducers defined either internally by @ngrx/store or by library authors\n */\nconst META_REDUCERS = new InjectionToken('@ngrx/store Meta Reducers');\n/**\n * Concats the user provided meta reducers and the meta reducers provided on the multi\n * injection token\n */\nconst _RESOLVED_META_REDUCERS = new InjectionToken('@ngrx/store Internal Resolved Meta Reducers');\n/**\n * Runtime checks defined by the user via an InjectionToken\n * Defaults to `_USER_RUNTIME_CHECKS`\n */\nconst USER_RUNTIME_CHECKS = new InjectionToken('@ngrx/store User Runtime Checks Config');\n/**\n * Runtime checks defined by the user via forRoot()\n */\nconst _USER_RUNTIME_CHECKS = new InjectionToken('@ngrx/store Internal User Runtime Checks Config');\n/**\n * Runtime checks currently in use\n */\nconst ACTIVE_RUNTIME_CHECKS = new InjectionToken('@ngrx/store Internal Runtime Checks');\nconst _ACTION_TYPE_UNIQUENESS_CHECK = new InjectionToken('@ngrx/store Check if Action types are unique');\n/**\n * InjectionToken that registers the global Store.\n * Mainly used to provide a hook that can be injected\n * to ensure the root state is loaded before something\n * that depends on it.\n */\nconst ROOT_STORE_PROVIDER = new InjectionToken('@ngrx/store Root Store Provider');\n/**\n * InjectionToken that registers feature states.\n * Mainly used to provide a hook that can be injected\n * to ensure feature state is loaded before something\n * that depends on it.\n */\nconst FEATURE_STATE_PROVIDER = new InjectionToken('@ngrx/store Feature State Provider');\n\n/**\n * @description\n * Combines reducers for individual features into a single reducer.\n *\n * You can use this function to delegate handling of state transitions to multiple reducers, each acting on their\n * own sub-state within the root state.\n *\n * @param reducers An object mapping keys of the root state to their corresponding feature reducer.\n * @param initialState Provides a state value if the current state is `undefined`, as it is initially.\n * @returns A reducer function.\n *\n * @usageNotes\n *\n * **Example combining two feature reducers into one \"root\" reducer**\n *\n * ```ts\n * export const reducer = combineReducers({\n * featureA: featureAReducer,\n * featureB: featureBReducer\n * });\n * ```\n *\n * You can also override the initial states of the sub-features:\n * ```ts\n * export const reducer = combineReducers({\n * featureA: featureAReducer,\n * featureB: featureBReducer\n * }, {\n * featureA: { counterA: 13 },\n * featureB: { counterB: 37 }\n * });\n * ```\n */\nfunction combineReducers(reducers, initialState = {}) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n return function combination(state, action) {\n state = state === undefined ? initialState : state;\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\nfunction omit(object, keyToRemove) {\n return Object.keys(object).filter(key => key !== keyToRemove).reduce((result, key) => Object.assign(result, {\n [key]: object[key]\n }), {});\n}\nfunction compose(...functions) {\n return function (arg) {\n if (functions.length === 0) {\n return arg;\n }\n const last = functions[functions.length - 1];\n const rest = functions.slice(0, -1);\n return rest.reduceRight((composed, fn) => fn(composed), last(arg));\n };\n}\nfunction createReducerFactory(reducerFactory, metaReducers) {\n if (Array.isArray(metaReducers) && metaReducers.length > 0) {\n reducerFactory = compose.apply(null, [...metaReducers, reducerFactory]);\n }\n return (reducers, initialState) => {\n const reducer = reducerFactory(reducers);\n return (state, action) => {\n state = state === undefined ? initialState : state;\n return reducer(state, action);\n };\n };\n}\nfunction createFeatureReducerFactory(metaReducers) {\n const reducerFactory = Array.isArray(metaReducers) && metaReducers.length > 0 ? compose(...metaReducers) : r => r;\n return (reducer, initialState) => {\n reducer = reducerFactory(reducer);\n return (state, action) => {\n state = state === undefined ? initialState : state;\n return reducer(state, action);\n };\n };\n}\nclass ReducerObservable extends Observable {}\nclass ReducerManagerDispatcher extends ActionsSubject {}\nconst UPDATE = '@ngrx/store/update-reducers';\nlet ReducerManager = /*#__PURE__*/(() => {\n class ReducerManager extends BehaviorSubject {\n get currentReducers() {\n return this.reducers;\n }\n constructor(dispatcher, initialState, reducers, reducerFactory) {\n super(reducerFactory(reducers, initialState));\n this.dispatcher = dispatcher;\n this.initialState = initialState;\n this.reducers = reducers;\n this.reducerFactory = reducerFactory;\n }\n addFeature(feature) {\n this.addFeatures([feature]);\n }\n addFeatures(features) {\n const reducers = features.reduce((reducerDict, {\n reducers,\n reducerFactory,\n metaReducers,\n initialState,\n key\n }) => {\n const reducer = typeof reducers === 'function' ? createFeatureReducerFactory(metaReducers)(reducers, initialState) : createReducerFactory(reducerFactory, metaReducers)(reducers, initialState);\n reducerDict[key] = reducer;\n return reducerDict;\n }, {});\n this.addReducers(reducers);\n }\n removeFeature(feature) {\n this.removeFeatures([feature]);\n }\n removeFeatures(features) {\n this.removeReducers(features.map(p => p.key));\n }\n addReducer(key, reducer) {\n this.addReducers({\n [key]: reducer\n });\n }\n addReducers(reducers) {\n this.reducers = {\n ...this.reducers,\n ...reducers\n };\n this.updateReducers(Object.keys(reducers));\n }\n removeReducer(featureKey) {\n this.removeReducers([featureKey]);\n }\n removeReducers(featureKeys) {\n featureKeys.forEach(key => {\n this.reducers = omit(this.reducers, key) /*TODO(#823)*/;\n });\n this.updateReducers(featureKeys);\n }\n updateReducers(featureKeys) {\n this.next(this.reducerFactory(this.reducers, this.initialState));\n this.dispatcher.next({\n type: UPDATE,\n features: featureKeys\n });\n }\n ngOnDestroy() {\n this.complete();\n }\n /** @nocollapse */\n static {\n this.ɵfac = function ReducerManager_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ReducerManager)(i0.ɵɵinject(ReducerManagerDispatcher), i0.ɵɵinject(INITIAL_STATE), i0.ɵɵinject(INITIAL_REDUCERS), i0.ɵɵinject(REDUCER_FACTORY));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ReducerManager,\n factory: ReducerManager.ɵfac\n });\n }\n }\n return ReducerManager;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst REDUCER_MANAGER_PROVIDERS = [ReducerManager, {\n provide: ReducerObservable,\n useExisting: ReducerManager\n}, {\n provide: ReducerManagerDispatcher,\n useExisting: ActionsSubject\n}];\nlet ScannedActionsSubject = /*#__PURE__*/(() => {\n class ScannedActionsSubject extends Subject {\n ngOnDestroy() {\n this.complete();\n }\n /** @nocollapse */\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵScannedActionsSubject_BaseFactory;\n return function ScannedActionsSubject_Factory(__ngFactoryType__) {\n return (ɵScannedActionsSubject_BaseFactory || (ɵScannedActionsSubject_BaseFactory = i0.ɵɵgetInheritedFactory(ScannedActionsSubject)))(__ngFactoryType__ || ScannedActionsSubject);\n };\n })();\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScannedActionsSubject,\n factory: ScannedActionsSubject.ɵfac\n });\n }\n }\n return ScannedActionsSubject;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SCANNED_ACTIONS_SUBJECT_PROVIDERS = [ScannedActionsSubject];\nclass StateObservable extends Observable {}\nlet State = /*#__PURE__*/(() => {\n class State extends BehaviorSubject {\n static {\n this.INIT = INIT;\n }\n constructor(actions$, reducer$, scannedActions, initialState) {\n super(initialState);\n const actionsOnQueue$ = actions$.pipe(observeOn(queueScheduler));\n const withLatestReducer$ = actionsOnQueue$.pipe(withLatestFrom(reducer$));\n const seed = {\n state: initialState\n };\n const stateAndAction$ = withLatestReducer$.pipe(scan(reduceState, seed));\n this.stateSubscription = stateAndAction$.subscribe(({\n state,\n action\n }) => {\n this.next(state);\n scannedActions.next(action);\n });\n this.state = toSignal(this, {\n manualCleanup: true,\n requireSync: true\n });\n }\n ngOnDestroy() {\n this.stateSubscription.unsubscribe();\n this.complete();\n }\n /** @nocollapse */\n static {\n this.ɵfac = function State_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || State)(i0.ɵɵinject(ActionsSubject), i0.ɵɵinject(ReducerObservable), i0.ɵɵinject(ScannedActionsSubject), i0.ɵɵinject(INITIAL_STATE));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: State,\n factory: State.ɵfac\n });\n }\n }\n return State;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction reduceState(stateActionPair = {\n state: undefined\n}, [action, reducer]) {\n const {\n state\n } = stateActionPair;\n return {\n state: reducer(state, action),\n action\n };\n}\nconst STATE_PROVIDERS = [State, {\n provide: StateObservable,\n useExisting: State\n}];\n\n// disabled because we have lowercase generics for `select`\nlet Store = /*#__PURE__*/(() => {\n class Store extends Observable {\n constructor(state$, actionsObserver, reducerManager) {\n super();\n this.actionsObserver = actionsObserver;\n this.reducerManager = reducerManager;\n this.source = state$;\n this.state = state$.state;\n }\n select(pathOrMapFn, ...paths) {\n return select.call(null, pathOrMapFn, ...paths)(this);\n }\n /**\n * Returns a signal of the provided selector.\n *\n * @param selector selector function\n * @param options select signal options\n */\n selectSignal(selector, options) {\n return computed(() => selector(this.state()), options);\n }\n lift(operator) {\n const store = new Store(this, this.actionsObserver, this.reducerManager);\n store.operator = operator;\n return store;\n }\n dispatch(action) {\n this.actionsObserver.next(action);\n }\n next(action) {\n this.actionsObserver.next(action);\n }\n error(err) {\n this.actionsObserver.error(err);\n }\n complete() {\n this.actionsObserver.complete();\n }\n addReducer(key, reducer) {\n this.reducerManager.addReducer(key, reducer);\n }\n removeReducer(key) {\n this.reducerManager.removeReducer(key);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function Store_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || Store)(i0.ɵɵinject(StateObservable), i0.ɵɵinject(ActionsSubject), i0.ɵɵinject(ReducerManager));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Store,\n factory: Store.ɵfac\n });\n }\n }\n return Store;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst STORE_PROVIDERS = [Store];\nfunction select(pathOrMapFn, propsOrPath, ...paths) {\n return function selectOperator(source$) {\n let mapped$;\n if (typeof pathOrMapFn === 'string') {\n const pathSlices = [propsOrPath, ...paths].filter(Boolean);\n mapped$ = source$.pipe(pluck(pathOrMapFn, ...pathSlices));\n } else if (typeof pathOrMapFn === 'function') {\n mapped$ = source$.pipe(map(source => pathOrMapFn(source, propsOrPath)));\n } else {\n throw new TypeError(`Unexpected type '${typeof pathOrMapFn}' in select operator,` + ` expected 'string' or 'function'`);\n }\n return mapped$.pipe(distinctUntilChanged());\n };\n}\nconst RUNTIME_CHECK_URL = 'https://ngrx.io/guide/store/configuration/runtime-checks';\nfunction isUndefined(target) {\n return target === undefined;\n}\nfunction isNull(target) {\n return target === null;\n}\nfunction isArray(target) {\n return Array.isArray(target);\n}\nfunction isString(target) {\n return typeof target === 'string';\n}\nfunction isBoolean(target) {\n return typeof target === 'boolean';\n}\nfunction isNumber(target) {\n return typeof target === 'number';\n}\nfunction isObjectLike(target) {\n return typeof target === 'object' && target !== null;\n}\nfunction isObject(target) {\n return isObjectLike(target) && !isArray(target);\n}\nfunction isPlainObject(target) {\n if (!isObject(target)) {\n return false;\n }\n const targetPrototype = Object.getPrototypeOf(target);\n return targetPrototype === Object.prototype || targetPrototype === null;\n}\nfunction isFunction(target) {\n return typeof target === 'function';\n}\nfunction isComponent(target) {\n return isFunction(target) && target.hasOwnProperty('ɵcmp');\n}\nfunction hasOwnProperty(target, propertyName) {\n return Object.prototype.hasOwnProperty.call(target, propertyName);\n}\nlet _ngrxMockEnvironment = false;\nfunction setNgrxMockEnvironment(value) {\n _ngrxMockEnvironment = value;\n}\nfunction isNgrxMockEnvironment() {\n return _ngrxMockEnvironment;\n}\nfunction isEqualCheck(a, b) {\n return a === b;\n}\nfunction isArgumentsChanged(args, lastArguments, comparator) {\n for (let i = 0; i < args.length; i++) {\n if (!comparator(args[i], lastArguments[i])) {\n return true;\n }\n }\n return false;\n}\nfunction resultMemoize(projectionFn, isResultEqual) {\n return defaultMemoize(projectionFn, isEqualCheck, isResultEqual);\n}\nfunction defaultMemoize(projectionFn, isArgumentsEqual = isEqualCheck, isResultEqual = isEqualCheck) {\n let lastArguments = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, , , , ,\n let lastResult = null;\n let overrideResult;\n function reset() {\n lastArguments = null;\n lastResult = null;\n }\n function setResult(result = undefined) {\n overrideResult = {\n result\n };\n }\n function clearResult() {\n overrideResult = undefined;\n }\n /* eslint-disable prefer-rest-params, prefer-spread */\n // disabled because of the use of `arguments`\n function memoized() {\n if (overrideResult !== undefined) {\n return overrideResult.result;\n }\n if (!lastArguments) {\n lastResult = projectionFn.apply(null, arguments);\n lastArguments = arguments;\n return lastResult;\n }\n if (!isArgumentsChanged(arguments, lastArguments, isArgumentsEqual)) {\n return lastResult;\n }\n const newResult = projectionFn.apply(null, arguments);\n lastArguments = arguments;\n if (isResultEqual(lastResult, newResult)) {\n return lastResult;\n }\n lastResult = newResult;\n return newResult;\n }\n return {\n memoized,\n reset,\n setResult,\n clearResult\n };\n}\nfunction createSelector(...input) {\n return createSelectorFactory(defaultMemoize)(...input);\n}\nfunction defaultStateFn(state, selectors, props, memoizedProjector) {\n if (props === undefined) {\n const args = selectors.map(fn => fn(state));\n return memoizedProjector.memoized.apply(null, args);\n }\n const args = selectors.map(fn => fn(state, props));\n return memoizedProjector.memoized.apply(null, [...args, props]);\n}\n/**\n *\n * @param memoize The function used to memoize selectors\n * @param options Config Object that may include a `stateFn` function defining how to return the selector's value, given the entire `Store`'s state, parent `Selector`s, `Props`, and a `MemoizedProjection`\n *\n * @usageNotes\n *\n * **Creating a Selector Factory Where Array Order Does Not Matter**\n *\n * ```ts\n * function removeMatch(arr: string[], target: string): string[] {\n * const matchIndex = arr.indexOf(target);\n * return [...arr.slice(0, matchIndex), ...arr.slice(matchIndex + 1)];\n * }\n *\n * function orderDoesNotMatterComparer(a: any, b: any): boolean {\n * if (!Array.isArray(a) || !Array.isArray(b)) {\n * return a === b;\n * }\n * if (a.length !== b.length) {\n * return false;\n * }\n * let tempB = [...b];\n * function reduceToDetermineIfArraysContainSameContents(\n * previousCallResult: boolean,\n * arrayMember: any\n * ): boolean {\n * if (previousCallResult === false) {\n * return false;\n * }\n * if (tempB.includes(arrayMember)) {\n * tempB = removeMatch(tempB, arrayMember);\n * return true;\n * }\n * return false;\n * }\n * return a.reduce(reduceToDetermineIfArraysContainSameContents, true);\n * }\n *\n * export const createOrderDoesNotMatterSelector = createSelectorFactory(\n * (projectionFun) => defaultMemoize(\n * projectionFun,\n * orderDoesNotMatterComparer,\n * orderDoesNotMatterComparer\n * )\n * );\n * ```\n *\n * **Creating an Alternative Memoization Strategy**\n *\n * ```ts\n * function serialize(x: any): string {\n * return JSON.stringify(x);\n * }\n *\n * export const createFullHistorySelector = createSelectorFactory(\n * (projectionFunction) => {\n * const cache = {};\n *\n * function memoized() {\n * const serializedArguments = serialize(...arguments);\n * if (cache[serializedArguments] != null) {\n * cache[serializedArguments] = projectionFunction.apply(null, arguments);\n * }\n * return cache[serializedArguments];\n * }\n * return {\n * memoized,\n * reset: () => {},\n * setResult: () => {},\n * clearResult: () => {},\n * };\n * }\n * );\n * ```\n */\nfunction createSelectorFactory(memoize, options = {\n stateFn: defaultStateFn\n}) {\n return function (...input) {\n let args = input;\n if (Array.isArray(args[0])) {\n const [head, ...tail] = args;\n args = [...head, ...tail];\n } else if (args.length === 1 && isSelectorsDictionary(args[0])) {\n args = extractArgsFromSelectorsDictionary(args[0]);\n }\n const selectors = args.slice(0, args.length - 1);\n const projector = args[args.length - 1];\n const memoizedSelectors = selectors.filter(selector => selector.release && typeof selector.release === 'function');\n const memoizedProjector = memoize(function (...selectors) {\n return projector.apply(null, selectors);\n });\n const memoizedState = defaultMemoize(function (state, props) {\n return options.stateFn.apply(null, [state, selectors, props, memoizedProjector]);\n });\n function release() {\n memoizedState.reset();\n memoizedProjector.reset();\n memoizedSelectors.forEach(selector => selector.release());\n }\n return Object.assign(memoizedState.memoized, {\n release,\n projector: memoizedProjector.memoized,\n setResult: memoizedState.setResult,\n clearResult: memoizedState.clearResult\n });\n };\n}\nfunction createFeatureSelector(featureName) {\n return createSelector(state => {\n const featureState = state[featureName];\n if (!isNgrxMockEnvironment() && isDevMode() && !(featureName in state)) {\n console.warn(`@ngrx/store: The feature name \"${featureName}\" does ` + 'not exist in the state, therefore createFeatureSelector ' + 'cannot access it. Be sure it is imported in a loaded module ' + `using StoreModule.forRoot('${featureName}', ...) or ` + `StoreModule.forFeature('${featureName}', ...). If the default ` + 'state is intended to be undefined, as is the case with router ' + 'state, this development-only warning message can be ignored.');\n }\n return featureState;\n }, featureState => featureState);\n}\nfunction isSelectorsDictionary(selectors) {\n return !!selectors && typeof selectors === 'object' && Object.values(selectors).every(selector => typeof selector === 'function');\n}\nfunction extractArgsFromSelectorsDictionary(selectorsDictionary) {\n const selectors = Object.values(selectorsDictionary);\n const resultKeys = Object.keys(selectorsDictionary);\n const projector = (...selectorResults) => resultKeys.reduce((result, key, index) => ({\n ...result,\n [key]: selectorResults[index]\n }), {});\n return [...selectors, projector];\n}\n\n/**\n * @description\n * A function that accepts a feature name and a feature reducer, and creates\n * a feature selector and a selector for each feature state property.\n * This function also provides the ability to add extra selectors to\n * the feature object.\n *\n * @param featureConfig An object that contains a feature name and a feature\n * reducer as required, and extra selectors factory as an optional argument.\n * @returns An object that contains a feature name, a feature reducer,\n * a feature selector, a selector for each feature state property, and extra\n * selectors.\n *\n * @usageNotes\n *\n * ```ts\n * interface ProductsState {\n * products: Product[];\n * selectedId: string | null;\n * }\n *\n * const initialState: ProductsState = {\n * products: [],\n * selectedId: null,\n * };\n *\n * const productsFeature = createFeature({\n * name: 'products',\n * reducer: createReducer(\n * initialState,\n * on(ProductsApiActions.loadSuccess(state, { products }) => ({\n * ...state,\n * products,\n * }),\n * ),\n * });\n *\n * const {\n * name,\n * reducer,\n * // feature selector\n * selectProductsState, // type: MemoizedSelector, ProductsState>\n * // feature state properties selectors\n * selectProducts, // type: MemoizedSelector, Product[]>\n * selectSelectedId, // type: MemoizedSelector, string | null>\n * } = productsFeature;\n * ```\n *\n * **Creating Feature with Extra Selectors**\n *\n * ```ts\n * type CallState = 'init' | 'loading' | 'loaded' | { error: string };\n *\n * interface State extends EntityState {\n * callState: CallState;\n * }\n *\n * const adapter = createEntityAdapter();\n * const initialState: State = adapter.getInitialState({\n * callState: 'init',\n * });\n *\n * export const productsFeature = createFeature({\n * name: 'products',\n * reducer: createReducer(initialState),\n * extraSelectors: ({ selectProductsState, selectCallState }) => ({\n * ...adapter.getSelectors(selectProductsState),\n * ...getCallStateSelectors(selectCallState)\n * }),\n * });\n *\n * const {\n * name,\n * reducer,\n * // feature selector\n * selectProductsState,\n * // feature state properties selectors\n * selectIds,\n * selectEntities,\n * selectCallState,\n * // selectors returned by `adapter.getSelectors`\n * selectAll,\n * selectTotal,\n * // selectors returned by `getCallStateSelectors`\n * selectIsLoading,\n * selectIsLoaded,\n * selectError,\n * } = productsFeature;\n * ```\n */\nfunction createFeature(featureConfig) {\n const {\n name,\n reducer,\n extraSelectors: extraSelectorsFactory\n } = featureConfig;\n const featureSelector = createFeatureSelector(name);\n const nestedSelectors = createNestedSelectors(featureSelector, reducer);\n const baseSelectors = {\n [`select${capitalize(name)}State`]: featureSelector,\n ...nestedSelectors\n };\n const extraSelectors = extraSelectorsFactory ? extraSelectorsFactory(baseSelectors) : {};\n return {\n name,\n reducer,\n ...baseSelectors,\n ...extraSelectors\n };\n}\nfunction createNestedSelectors(featureSelector, reducer) {\n const initialState = getInitialState(reducer);\n const nestedKeys = isPlainObject(initialState) ? Object.keys(initialState) : [];\n return nestedKeys.reduce((nestedSelectors, nestedKey) => ({\n ...nestedSelectors,\n [`select${capitalize(nestedKey)}`]: createSelector(featureSelector, parentState => parentState?.[nestedKey])\n }), {});\n}\nfunction getInitialState(reducer) {\n return reducer(undefined, {\n type: '@ngrx/feature/init'\n });\n}\nfunction _createStoreReducers(reducers) {\n return reducers instanceof InjectionToken ? inject(reducers) : reducers;\n}\nfunction _createFeatureStore(configs, featureStores) {\n return featureStores.map((feat, index) => {\n if (configs[index] instanceof InjectionToken) {\n const conf = inject(configs[index]);\n return {\n key: feat.key,\n reducerFactory: conf.reducerFactory ? conf.reducerFactory : combineReducers,\n metaReducers: conf.metaReducers ? conf.metaReducers : [],\n initialState: conf.initialState\n };\n }\n return feat;\n });\n}\nfunction _createFeatureReducers(reducerCollection) {\n return reducerCollection.map(reducer => {\n return reducer instanceof InjectionToken ? inject(reducer) : reducer;\n });\n}\nfunction _initialStateFactory(initialState) {\n if (typeof initialState === 'function') {\n return initialState();\n }\n return initialState;\n}\nfunction _concatMetaReducers(metaReducers, userProvidedMetaReducers) {\n return metaReducers.concat(userProvidedMetaReducers);\n}\nfunction _provideForRootGuard() {\n const store = inject(Store, {\n optional: true,\n skipSelf: true\n });\n if (store) {\n throw new TypeError(`The root Store has been provided more than once. Feature modules should provide feature states instead.`);\n }\n return 'guarded';\n}\nfunction immutabilityCheckMetaReducer(reducer, checks) {\n return function (state, action) {\n const act = checks.action(action) ? freeze(action) : action;\n const nextState = reducer(state, act);\n return checks.state() ? freeze(nextState) : nextState;\n };\n}\nfunction freeze(target) {\n Object.freeze(target);\n const targetIsFunction = isFunction(target);\n Object.getOwnPropertyNames(target).forEach(prop => {\n // Ignore Ivy properties, ref: https://github.com/ngrx/platform/issues/2109#issuecomment-582689060\n if (prop.startsWith('ɵ')) {\n return;\n }\n if (hasOwnProperty(target, prop) && (targetIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true)) {\n const propValue = target[prop];\n if ((isObjectLike(propValue) || isFunction(propValue)) && !Object.isFrozen(propValue)) {\n freeze(propValue);\n }\n }\n });\n return target;\n}\nfunction serializationCheckMetaReducer(reducer, checks) {\n return function (state, action) {\n if (checks.action(action)) {\n const unserializableAction = getUnserializable(action);\n throwIfUnserializable(unserializableAction, 'action');\n }\n const nextState = reducer(state, action);\n if (checks.state()) {\n const unserializableState = getUnserializable(nextState);\n throwIfUnserializable(unserializableState, 'state');\n }\n return nextState;\n };\n}\nfunction getUnserializable(target, path = []) {\n // Guard against undefined and null, e.g. a reducer that returns undefined\n if ((isUndefined(target) || isNull(target)) && path.length === 0) {\n return {\n path: ['root'],\n value: target\n };\n }\n const keys = Object.keys(target);\n return keys.reduce((result, key) => {\n if (result) {\n return result;\n }\n const value = target[key];\n // Ignore Ivy components\n if (isComponent(value)) {\n return result;\n }\n if (isUndefined(value) || isNull(value) || isNumber(value) || isBoolean(value) || isString(value) || isArray(value)) {\n return false;\n }\n if (isPlainObject(value)) {\n return getUnserializable(value, [...path, key]);\n }\n return {\n path: [...path, key],\n value\n };\n }, false);\n}\nfunction throwIfUnserializable(unserializable, context) {\n if (unserializable === false) {\n return;\n }\n const unserializablePath = unserializable.path.join('.');\n const error = new Error(`Detected unserializable ${context} at \"${unserializablePath}\". ${RUNTIME_CHECK_URL}#strict${context}serializability`);\n error.value = unserializable.value;\n error.unserializablePath = unserializablePath;\n throw error;\n}\nfunction inNgZoneAssertMetaReducer(reducer, checks) {\n return function (state, action) {\n if (checks.action(action) && !i0.NgZone.isInAngularZone()) {\n throw new Error(`Action '${action.type}' running outside NgZone. ${RUNTIME_CHECK_URL}#strictactionwithinngzone`);\n }\n return reducer(state, action);\n };\n}\nfunction createActiveRuntimeChecks(runtimeChecks) {\n if (isDevMode()) {\n return {\n strictStateSerializability: false,\n strictActionSerializability: false,\n strictStateImmutability: true,\n strictActionImmutability: true,\n strictActionWithinNgZone: false,\n strictActionTypeUniqueness: false,\n ...runtimeChecks\n };\n }\n return {\n strictStateSerializability: false,\n strictActionSerializability: false,\n strictStateImmutability: false,\n strictActionImmutability: false,\n strictActionWithinNgZone: false,\n strictActionTypeUniqueness: false\n };\n}\nfunction createSerializationCheckMetaReducer({\n strictActionSerializability,\n strictStateSerializability\n}) {\n return reducer => strictActionSerializability || strictStateSerializability ? serializationCheckMetaReducer(reducer, {\n action: action => strictActionSerializability && !ignoreNgrxAction(action),\n state: () => strictStateSerializability\n }) : reducer;\n}\nfunction createImmutabilityCheckMetaReducer({\n strictActionImmutability,\n strictStateImmutability\n}) {\n return reducer => strictActionImmutability || strictStateImmutability ? immutabilityCheckMetaReducer(reducer, {\n action: action => strictActionImmutability && !ignoreNgrxAction(action),\n state: () => strictStateImmutability\n }) : reducer;\n}\nfunction ignoreNgrxAction(action) {\n return action.type.startsWith('@ngrx');\n}\nfunction createInNgZoneCheckMetaReducer({\n strictActionWithinNgZone\n}) {\n return reducer => strictActionWithinNgZone ? inNgZoneAssertMetaReducer(reducer, {\n action: action => strictActionWithinNgZone && !ignoreNgrxAction(action)\n }) : reducer;\n}\nfunction provideRuntimeChecks(runtimeChecks) {\n return [{\n provide: _USER_RUNTIME_CHECKS,\n useValue: runtimeChecks\n }, {\n provide: USER_RUNTIME_CHECKS,\n useFactory: _runtimeChecksFactory,\n deps: [_USER_RUNTIME_CHECKS]\n }, {\n provide: ACTIVE_RUNTIME_CHECKS,\n deps: [USER_RUNTIME_CHECKS],\n useFactory: createActiveRuntimeChecks\n }, {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createImmutabilityCheckMetaReducer\n }, {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createSerializationCheckMetaReducer\n }, {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createInNgZoneCheckMetaReducer\n }];\n}\nfunction checkForActionTypeUniqueness() {\n return [{\n provide: _ACTION_TYPE_UNIQUENESS_CHECK,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: _actionTypeUniquenessCheck\n }];\n}\nfunction _runtimeChecksFactory(runtimeChecks) {\n return runtimeChecks;\n}\nfunction _actionTypeUniquenessCheck(config) {\n if (!config.strictActionTypeUniqueness) {\n return;\n }\n const duplicates = Object.entries(REGISTERED_ACTION_TYPES).filter(([, registrations]) => registrations > 1).map(([type]) => type);\n if (duplicates.length) {\n throw new Error(`Action types are registered more than once, ${duplicates.map(type => `\"${type}\"`).join(', ')}. ${RUNTIME_CHECK_URL}#strictactiontypeuniqueness`);\n }\n}\n\n/**\n * Provides additional slices of state in the Store.\n * These providers cannot be used at the component level.\n *\n * @usageNotes\n *\n * ### Providing Store Features\n *\n * ```ts\n * const booksRoutes: Route[] = [\n * {\n * path: '',\n * providers: [provideState('books', booksReducer)],\n * children: [\n * { path: '', component: BookListComponent },\n * { path: ':id', component: BookDetailsComponent },\n * ],\n * },\n * ];\n * ```\n */\nfunction provideState(featureNameOrSlice, reducers, config = {}) {\n return makeEnvironmentProviders([..._provideState(featureNameOrSlice, reducers, config), ENVIRONMENT_STATE_PROVIDER]);\n}\nfunction _provideStore(reducers = {}, config = {}) {\n return [{\n provide: _ROOT_STORE_GUARD,\n useFactory: _provideForRootGuard\n }, {\n provide: _INITIAL_STATE,\n useValue: config.initialState\n }, {\n provide: INITIAL_STATE,\n useFactory: _initialStateFactory,\n deps: [_INITIAL_STATE]\n }, {\n provide: _INITIAL_REDUCERS,\n useValue: reducers\n }, {\n provide: _STORE_REDUCERS,\n useExisting: reducers instanceof InjectionToken ? reducers : _INITIAL_REDUCERS\n }, {\n provide: INITIAL_REDUCERS,\n deps: [_INITIAL_REDUCERS, [new Inject(_STORE_REDUCERS)]],\n useFactory: _createStoreReducers\n }, {\n provide: USER_PROVIDED_META_REDUCERS,\n useValue: config.metaReducers ? config.metaReducers : []\n }, {\n provide: _RESOLVED_META_REDUCERS,\n deps: [META_REDUCERS, USER_PROVIDED_META_REDUCERS],\n useFactory: _concatMetaReducers\n }, {\n provide: _REDUCER_FACTORY,\n useValue: config.reducerFactory ? config.reducerFactory : combineReducers\n }, {\n provide: REDUCER_FACTORY,\n deps: [_REDUCER_FACTORY, _RESOLVED_META_REDUCERS],\n useFactory: createReducerFactory\n }, ACTIONS_SUBJECT_PROVIDERS, REDUCER_MANAGER_PROVIDERS, SCANNED_ACTIONS_SUBJECT_PROVIDERS, STATE_PROVIDERS, STORE_PROVIDERS, provideRuntimeChecks(config.runtimeChecks), checkForActionTypeUniqueness()];\n}\nfunction rootStoreProviderFactory() {\n inject(ActionsSubject);\n inject(ReducerObservable);\n inject(ScannedActionsSubject);\n inject(Store);\n inject(_ROOT_STORE_GUARD, {\n optional: true\n });\n inject(_ACTION_TYPE_UNIQUENESS_CHECK, {\n optional: true\n });\n}\n/**\n * Environment Initializer used in the root\n * providers to initialize the Store\n */\nconst ENVIRONMENT_STORE_PROVIDER = [{\n provide: ROOT_STORE_PROVIDER,\n useFactory: rootStoreProviderFactory\n}, {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(ROOT_STORE_PROVIDER);\n }\n}];\n/**\n * Provides the global Store providers and initializes\n * the Store.\n * These providers cannot be used at the component level.\n *\n * @usageNotes\n *\n * ### Providing the Global Store\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideStore()],\n * });\n * ```\n */\nfunction provideStore(reducers, config) {\n return makeEnvironmentProviders([..._provideStore(reducers, config), ENVIRONMENT_STORE_PROVIDER]);\n}\nfunction featureStateProviderFactory() {\n inject(ROOT_STORE_PROVIDER);\n const features = inject(_STORE_FEATURES);\n const featureReducers = inject(FEATURE_REDUCERS);\n const reducerManager = inject(ReducerManager);\n inject(_ACTION_TYPE_UNIQUENESS_CHECK, {\n optional: true\n });\n const feats = features.map((feature, index) => {\n const featureReducerCollection = featureReducers.shift();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const reducers = featureReducerCollection /*TODO(#823)*/[index];\n return {\n ...feature,\n reducers,\n initialState: _initialStateFactory(feature.initialState)\n };\n });\n reducerManager.addFeatures(feats);\n}\n/**\n * Environment Initializer used in the feature\n * providers to register state features\n */\nconst ENVIRONMENT_STATE_PROVIDER = [{\n provide: FEATURE_STATE_PROVIDER,\n useFactory: featureStateProviderFactory\n}, {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(FEATURE_STATE_PROVIDER);\n }\n}];\nfunction _provideState(featureNameOrSlice, reducers, config = {}) {\n return [{\n provide: _FEATURE_CONFIGS,\n multi: true,\n useValue: featureNameOrSlice instanceof Object ? {} : config\n }, {\n provide: STORE_FEATURES,\n multi: true,\n useValue: {\n key: featureNameOrSlice instanceof Object ? featureNameOrSlice.name : featureNameOrSlice,\n reducerFactory: !(config instanceof InjectionToken) && config.reducerFactory ? config.reducerFactory : combineReducers,\n metaReducers: !(config instanceof InjectionToken) && config.metaReducers ? config.metaReducers : [],\n initialState: !(config instanceof InjectionToken) && config.initialState ? config.initialState : undefined\n }\n }, {\n provide: _STORE_FEATURES,\n deps: [_FEATURE_CONFIGS, STORE_FEATURES],\n useFactory: _createFeatureStore\n }, {\n provide: _FEATURE_REDUCERS,\n multi: true,\n useValue: featureNameOrSlice instanceof Object ? featureNameOrSlice.reducer : reducers\n }, {\n provide: _FEATURE_REDUCERS_TOKEN,\n multi: true,\n useExisting: reducers instanceof InjectionToken ? reducers : _FEATURE_REDUCERS\n }, {\n provide: FEATURE_REDUCERS,\n multi: true,\n deps: [_FEATURE_REDUCERS, [new Inject(_FEATURE_REDUCERS_TOKEN)]],\n useFactory: _createFeatureReducers\n }, checkForActionTypeUniqueness()];\n}\nlet StoreRootModule = /*#__PURE__*/(() => {\n class StoreRootModule {\n constructor(actions$, reducer$, scannedActions$, store, guard, actionCheck) {}\n /** @nocollapse */\n static {\n this.ɵfac = function StoreRootModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StoreRootModule)(i0.ɵɵinject(ActionsSubject), i0.ɵɵinject(ReducerObservable), i0.ɵɵinject(ScannedActionsSubject), i0.ɵɵinject(Store), i0.ɵɵinject(_ROOT_STORE_GUARD, 8), i0.ɵɵinject(_ACTION_TYPE_UNIQUENESS_CHECK, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreRootModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return StoreRootModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet StoreFeatureModule = /*#__PURE__*/(() => {\n class StoreFeatureModule {\n constructor(features, featureReducers, reducerManager, root, actionCheck) {\n this.features = features;\n this.featureReducers = featureReducers;\n this.reducerManager = reducerManager;\n const feats = features.map((feature, index) => {\n const featureReducerCollection = featureReducers.shift();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const reducers = featureReducerCollection /*TODO(#823)*/[index];\n return {\n ...feature,\n reducers,\n initialState: _initialStateFactory(feature.initialState)\n };\n });\n reducerManager.addFeatures(feats);\n }\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnDestroy() {\n this.reducerManager.removeFeatures(this.features);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreFeatureModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StoreFeatureModule)(i0.ɵɵinject(_STORE_FEATURES), i0.ɵɵinject(FEATURE_REDUCERS), i0.ɵɵinject(ReducerManager), i0.ɵɵinject(StoreRootModule), i0.ɵɵinject(_ACTION_TYPE_UNIQUENESS_CHECK, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreFeatureModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return StoreFeatureModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet StoreModule = /*#__PURE__*/(() => {\n class StoreModule {\n static forRoot(reducers, config) {\n return {\n ngModule: StoreRootModule,\n providers: [..._provideStore(reducers, config)]\n };\n }\n static forFeature(featureNameOrSlice, reducers, config = {}) {\n return {\n ngModule: StoreFeatureModule,\n providers: [..._provideState(featureNameOrSlice, reducers, config)]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StoreModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return StoreModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @description\n * Associates actions with a given state change function.\n * A state change function must be provided as the last parameter.\n *\n * @param args `ActionCreator`'s followed by a state change function.\n *\n * @returns an association of action types with a state change function.\n *\n * @usageNotes\n * ```ts\n * on(AuthApiActions.loginSuccess, (state, { user }) => ({ ...state, user }))\n * ```\n */\nfunction on(...args) {\n const reducer = args.pop();\n const types = args.map(creator => creator.type);\n return {\n reducer,\n types\n };\n}\n/**\n * @description\n * Creates a reducer function to handle state transitions.\n *\n * Reducer creators reduce the explicitness of reducer functions with switch statements.\n *\n * @param initialState Provides a state value if the current state is `undefined`, as it is initially.\n * @param ons Associations between actions and state changes.\n * @returns A reducer function.\n *\n * @usageNotes\n *\n * - Must be used with `ActionCreator`'s (returned by `createAction`). Cannot be used with class-based action creators.\n * - The returned `ActionReducer` does not require being wrapped with another function.\n *\n * **Declaring a reducer creator**\n *\n * ```ts\n * export const reducer = createReducer(\n * initialState,\n * on(\n * featureActions.actionOne,\n * featureActions.actionTwo,\n * (state, { updatedValue }) => ({ ...state, prop: updatedValue })\n * ),\n * on(featureActions.actionThree, () => initialState);\n * );\n * ```\n */\nfunction createReducer(initialState, ...ons) {\n const map = new Map();\n for (const on of ons) {\n for (const type of on.types) {\n const existingReducer = map.get(type);\n if (existingReducer) {\n const newReducer = (state, action) => on.reducer(existingReducer(state, action), action);\n map.set(type, newReducer);\n } else {\n map.set(type, on.reducer);\n }\n }\n }\n return function (state = initialState, action) {\n const reducer = map.get(action.type);\n return reducer ? reducer(state, action) : state;\n };\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ACTIVE_RUNTIME_CHECKS, ActionsSubject, FEATURE_REDUCERS, FEATURE_STATE_PROVIDER, INIT, INITIAL_REDUCERS, INITIAL_STATE, META_REDUCERS, REDUCER_FACTORY, ROOT_STORE_PROVIDER, ReducerManager, ReducerManagerDispatcher, ReducerObservable, STORE_FEATURES, ScannedActionsSubject, State, StateObservable, Store, StoreFeatureModule, StoreModule, StoreRootModule, UPDATE, USER_PROVIDED_META_REDUCERS, USER_RUNTIME_CHECKS, combineReducers, compose, createAction, createActionGroup, createFeature, createFeatureSelector, createReducer, createReducerFactory, createSelector, createSelectorFactory, defaultMemoize, defaultStateFn, emptyProps, isNgrxMockEnvironment, on, props, provideState, provideStore, reduceState, resultMemoize, select, setNgrxMockEnvironment, union };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Action, ActionCreator, Creator, MemoizedSelector, Store, props } from '@ngrx/store';\nimport { take } from 'rxjs/operators';\n\nexport interface IPayloadAction extends Action {\n payload: TPayload;\n}\n\nexport function isAction(\n action: Action,\n actionFunc: ActionCreator>,\n): action is TResult & boolean {\n return actionFunc.type === action.type;\n}\n\nexport const noopAction: Action = { type: 'NOOP_ACTION' };\n\nexport const pprops = () => props<{ payload: TPayload }>();\n\nexport const optionalProps =\n () =>\n (prop: TPayload | {} = {}) =>\n prop;\n\n/**\n * This is a hack function use as latest option. Better try using withLatestFrom or combineLatest\n */\nexport const getStoreValue = function (store: Store): TState {\n let state: TState;\n store.pipe(take(1)).subscribe((val) => (state = val));\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return state!;\n};\n\n// Unwraps the payload type of a redux action\nexport type PayloadTypeFor any> = Omit, 'type'>;\n\n// Unwraps the return type of a ngrx selector\nexport type SelectorReturnTypeFor = T extends MemoizedSelector ? R : never;\n","import { EventDetailsColumnType, EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { pprops } from '@frontend/sports/common/core/utils/redux';\nimport { EventSwitcherItem, MediaSetEventInternal, MediaTab, RestoreStatePayload } from '@frontend/sports/grid/media/feature/model';\nimport { MediaState } from '@frontend/sports/grid/media/feature/state';\nimport { createAction, props } from '@ngrx/store';\n\nexport class Actions {\n private static readonly INIT = '@media/INIT';\n private static readonly TOGGLE_MEDIA_MODULE = '@media/TOGGLE_MEDIA_MODULE';\n private static readonly TOGGLE_EXPAND = '@media/TOGGLE_EXPAND';\n private static readonly BREAKPOINT_CHANGED = '@media/BREAKPOINT_CHANGED';\n private static readonly UPDATE_SCOREBOARD = '@media/UPDATE_SCOREBOARD';\n private static readonly SET_ACTIVE_TAB = '@media/SET_ACTIVE_TAB';\n private static readonly TOGGLE_PIN = '@media/TOGGLE_PIN';\n private static readonly FETCH_VIDEO_EVENTS = '@media/FETCH_VIDEO_EVENTS';\n private static readonly START_FETCH_VIDEO_EVENTS = '@media/START_FETCH_VIDEO_EVENTS';\n private static readonly SET_VIDEO_SWITCHER_CONTENT = '@media/SET_VIDEO_SWITCHER_CONTENT';\n private static readonly SET_AVAILABLE_EXPAND_LOCATION = '@media/SET_AVAILABLE_EXPAND_LOCATION';\n private static readonly TOGGLE_AUTOPLAY = '@media/TOGGLE_AUTOPLAY';\n private static readonly SET_EVENT_INTERNAL = '@media/SET_EVENT_INTERNAL';\n private static readonly TOGGLE_UNPIN_INFO_MESSAGE = '@media/TOGGLE_UNPIN_INFO_MESSAGE';\n private static readonly TOGGLE_COLLAPSED_STATE = '@media/TOGGLE_COLLAPSED_STATE';\n private static readonly ACCEPT_UNPIN_INFO_MESSAGE = '@media/ACCEPT_UNPIN_INFO_MESSAGE';\n private static readonly START_USER_SERVICE_EVENTS_LISTENER = '@media/START_USER_SERVICE_EVENTS_LISTENER';\n private static readonly PIN_ENABLED_STATE_TOGGLE = '@media/PIN_ENABLED_STATE_TOGGLE';\n private static readonly UNSET_EVENT = '@media/UNSET_EVENT';\n private static readonly RESTORE_STATE = '@media/RESTORE_STATE';\n private static readonly START_RESTORE_STATE = '@media/START_RESTORE_STATE';\n private static readonly RESET_STATE = '@media/RESET_STATE';\n private static readonly POPULATE_FROM_STORAGE = '@media/POPULATE_FROM_STORAGE';\n\n static readonly init = createAction(Actions.INIT);\n\n static readonly toggleMediaModule = createAction(Actions.TOGGLE_MEDIA_MODULE, props<{ value: boolean }>());\n\n static readonly togglePin = createAction(Actions.TOGGLE_PIN, props<{ value: boolean }>());\n\n static readonly toggleAutoplay = createAction(Actions.TOGGLE_AUTOPLAY, props<{ value: boolean }>());\n\n static readonly toggleExpand = createAction(Actions.TOGGLE_EXPAND, props<{ value: boolean }>());\n\n static readonly breakpointChanged = createAction(Actions.BREAKPOINT_CHANGED);\n\n static readonly setActiveTab = createAction(Actions.SET_ACTIVE_TAB, props<{ tab: MediaTab }>());\n\n static readonly setVideoSwitcherContent = createAction(Actions.SET_VIDEO_SWITCHER_CONTENT, props<{ content: EventSwitcherItem[] }>());\n\n static readonly setAvailableExpandLocation = createAction(Actions.SET_AVAILABLE_EXPAND_LOCATION, props<{ value: boolean }>());\n\n static readonly startFetchVideoEvents = createAction(Actions.START_FETCH_VIDEO_EVENTS);\n\n static readonly fetchVideoEvents = createAction(Actions.FETCH_VIDEO_EVENTS);\n\n static readonly updateScoreboard = createAction(Actions.UPDATE_SCOREBOARD, props<{ model: EventModel }>());\n\n static readonly setEventInternal = createAction(Actions.SET_EVENT_INTERNAL, pprops());\n\n static readonly toggleUnpinInfoMessage = createAction(Actions.TOGGLE_UNPIN_INFO_MESSAGE, props<{ value: boolean }>());\n\n static readonly acceptUnpinInfoMessage = createAction(Actions.ACCEPT_UNPIN_INFO_MESSAGE);\n\n static readonly toggleCollapsedState = createAction(Actions.TOGGLE_COLLAPSED_STATE, props<{ value: boolean }>());\n\n static readonly startUserServiceEventsListener = createAction(Actions.START_USER_SERVICE_EVENTS_LISTENER);\n\n static readonly pinEnabledStateToggle = createAction(Actions.PIN_ENABLED_STATE_TOGGLE, props<{ value: boolean }>());\n\n static readonly unsetEvent = createAction(Actions.UNSET_EVENT, props<{ columnType: EventDetailsColumnType }>());\n\n static readonly restoreState = createAction(Actions.RESTORE_STATE, pprops());\n\n static readonly startRestoreState = createAction(Actions.START_RESTORE_STATE);\n\n static readonly resetState = createAction(Actions.RESET_STATE, props<{ value: boolean | undefined }>());\n\n static readonly populateFromStorage = createAction(Actions.POPULATE_FROM_STORAGE, props<{ state: MediaState }>());\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, distinctUntilChanged, filter } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MainContentLoaded {\n #loaded$ = new BehaviorSubject(false);\n loaded$ = this.#loaded$.pipe(distinctUntilChanged(), filter(Boolean));\n\n setLoaded(): void {\n this.#loaded$.next(true);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Widget, WidgetPage } from '@frontend/sports/types/components/widget';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetPageService {\n page: WidgetPage | null = null;\n top: Widget[] = [];\n left: Widget[] = [];\n center: Widget[] = [];\n\n setActivePage({ page, top, left, center }: { page: WidgetPage; top: Widget[]; left: Widget[]; center: Widget[] }) {\n this.page = page;\n this.top = top;\n this.left = left;\n this.center = center;\n }\n\n reset() {\n this.page = null;\n this.top = [];\n this.left = [];\n this.center = [];\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { LoggerFactory } from '@frontend/sports/common/core/feature/logging';\nimport { WidgetLocation } from '@frontend/sports/types/components/widget';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\n\nexport interface WidgetData {\n isLoaded: boolean;\n order: number;\n isVisible?: boolean;\n slot?: WidgetLocation;\n widgetId?: string;\n parentWidgetId?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetLoaderService {\n private widgetsLoaded = new Map();\n private loggedWidgetsDetails = new Map();\n private allTopLocationWidgetsLoaded = new BehaviorSubject(false);\n readonly allTopLocationWidgetsLoaded$ = this.allTopLocationWidgetsLoaded.asObservable();\n private logger = inject(LoggerFactory).getLogger('WidgetLoaderService');\n\n private widgetLoadedDetails = new Map>([\n [WidgetLocation.Top, new BehaviorSubject([])],\n [WidgetLocation.Left, new BehaviorSubject([])],\n [WidgetLocation.Center, new BehaviorSubject([])],\n [WidgetLocation.TopLeft, new BehaviorSubject([])],\n [WidgetLocation.TopRight, new BehaviorSubject([])],\n [WidgetLocation.BottomLeft, new BehaviorSubject([])],\n [WidgetLocation.BottomRight, new BehaviorSubject([])],\n ]);\n\n private getWidgetsByLocation(location: WidgetLocation): WidgetData[] {\n return [...this.widgetsLoaded.values()].filter((x) => x.slot && x.slot === location);\n }\n\n setWidgetLoaded(widgetId: string): void {\n const widgetDetails = this.widgetsLoaded.get(widgetId)!;\n this.widgetsLoaded.set(widgetId, { ...widgetDetails, isLoaded: true });\n if (widgetDetails.slot === WidgetLocation.Top || !this.getWidgetsByLocation(WidgetLocation.Top).length) {\n this.allTopLocationWidgetsLoaded.next(this.getWidgetsByLocation(WidgetLocation.Top).every((x) => x.isLoaded));\n }\n this.widgetLoadedDetails.get(widgetDetails.slot!)?.next(this.getWidgetsByLocation(widgetDetails.slot!));\n }\n\n setWidgetVisible(widgetId: string, isVisible: boolean): void {\n const widgetDetails = this.widgetsLoaded.get(widgetId)!;\n if (widgetDetails) {\n this.widgetsLoaded.set(widgetId, { ...widgetDetails, isVisible });\n this.widgetLoadedDetails.get(widgetDetails.slot!)?.next(this.getWidgetsByLocation(widgetDetails.slot!));\n }\n }\n\n setSlotWidgets(widgetId: string, widgetData: WidgetData) {\n if (!this.widgetsLoaded.has(widgetId)) {\n this.loggedWidgetsDetails.set(widgetId, { isLogged: false });\n this.widgetsLoaded.set(widgetId, widgetData);\n } else {\n const loggedWidgetDetail = this.loggedWidgetsDetails.get(widgetId)!;\n const existingWidget = this.widgetsLoaded.get(widgetId)!;\n //Implemented an additional condition to prevent log warnings due to multiple invocations of setSlotWidgets\n if (\n !loggedWidgetDetail.isLogged &&\n (existingWidget.parentWidgetId !== widgetData.parentWidgetId || existingWidget.order !== widgetData.order)\n ) {\n this.logger.warning(`Widget ${widgetId} imported multiple times`);\n this.loggedWidgetsDetails.set(widgetId, { isLogged: true });\n }\n }\n }\n\n widgetLoadedDetails$(location: WidgetLocation): Observable {\n return this.widgetLoadedDetails.get(location)?.asObservable() ?? of([]);\n }\n\n cleanWidgetsLoaded(): void {\n this.allTopLocationWidgetsLoaded.next(false);\n this.widgetLoadedDetails.forEach((v) => v.next([]));\n this.widgetsLoaded.clear();\n this.loggedWidgetsDetails.clear();\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { WidgetLocation } from '@frontend/sports/types/components/widget';\nimport { OnAppInit } from '@frontend/vanilla/core';\nimport { Observable, ReplaySubject, Subject, debounceTime, delay, filter, mergeMap, of, race, switchMap, take, tap, timer } from 'rxjs';\n\nimport { WidgetLoaderService } from '../widget/core/widget-loader.service';\nimport { WidgetPageService } from '../widget/core/widget-page.service';\nimport { MainContentLoaded } from './main-content-loaded.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RunAfterLcpService implements OnAppInit {\n private readonly ngZone = inject(NgZone);\n #widgetLoader = inject(WidgetLoaderService);\n #widgetPage = inject(WidgetPageService);\n #mainContentLoaded = inject(MainContentLoaded);\n #router = inject(Router);\n\n private readonly afterLcpCallbacks$ = new Subject<() => void>();\n private readonly lcp$$ = new ReplaySubject(1);\n readonly lcp$ = this.lcp$$.asObservable();\n\n constructor() {\n this.afterLcpCallbacks$.pipe(mergeMap((cb) => this.lcp$.pipe(tap(() => cb())))).subscribe();\n }\n\n onAppInit(): void {\n this.ngZone.runOutsideAngular(() => {\n const lcp$ = new Observable((observer) => {\n const performanceObserver = new PerformanceObserver((list) => {\n // filter out splash loader\n const otherThanSplash = list.getEntries().filter((entry) => {\n return (\n !(entry as any).element ||\n !Array.from((entry as any).element.classList)\n .join(' ')\n .includes('splash-')\n );\n });\n if (otherThanSplash.length > 0) {\n observer.next();\n }\n });\n performanceObserver.observe({ type: 'largest-contentful-paint', buffered: true });\n return () => {\n performanceObserver.disconnect();\n };\n });\n // we let LCP w/o splash loader race against the first visible widget on the center column on screen\n // in case there is no widget (e.g. EDP page) we await the main content to be activated + a delay of 1 second\n // in case we are on a non-widget page (e.g. settings, menu, etc.) we just have a hardcoded timer of 2.5 seconds\n race(\n lcp$.pipe(debounceTime(1000)),\n this.#router.events.pipe(\n filter((e) => e instanceof NavigationEnd),\n take(1),\n switchMap((e) => {\n const url = this.#router.parseUrl(e.url);\n const segment = url.root.children.primary?.segments[1]?.path;\n if (segment === 'sports' || segment === 'esports') {\n return this.#mainContentLoaded.loaded$.pipe(\n // wait for widget-layout to boot\n delay(10),\n switchMap(() => {\n if (this.#widgetPage.page && this.#widgetPage.center.filter((w) => w.visible).length > 0) {\n return (\n this.#widgetLoader\n .widgetLoadedDetails$(WidgetLocation.Center)\n // if there are no widgets, we need to move on. If there are widgets, we wait for the\n // first one to be visible\n .pipe(filter((widgetData) => widgetData.filter((widget) => widget.isVisible).length > 0))\n );\n }\n return of(null);\n }),\n );\n }\n return timer(2500);\n }),\n ),\n )\n .pipe(take(1))\n .subscribe(() => this.lcp$$.next());\n });\n }\n\n runAfterLcp(fn: () => void): void {\n this.afterLcpCallbacks$.next(fn);\n }\n}\n","export const timeSpanToMS = (timeSpan: string): number => {\n const tt = timeSpan.split(':');\n return (parseInt(tt[0]) * 3600 + parseInt(tt[1]) * 60 + parseInt(tt[2])) * 1000;\n};\n\nexport const getDateForOffset = (date: Date, minuteOffset?: number): Date => {\n const local = new Date(date);\n local.setMinutes(local.getMinutes() + (minuteOffset ?? 0));\n return local;\n};\n","/* eslint-disable import/no-unresolved, @typescript-eslint/no-shadow, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-non-null-assertion, @typescript-eslint/consistent-type-assertions */\nimport { ImageProfile } from '@cds/betting-offer';\nimport {\n VirtualCompetitionDisplayMode as CDSVirtualCompetitionDisplayMode,\n VirtualCompetitionImageType as CDSVirualCompetitionImageType,\n Competition,\n Conference,\n ExtendedTagStats,\n MarketGroupCount,\n Region,\n Sport,\n Tag,\n TagCount,\n TagParticipant,\n TagType,\n VirtualCompetition,\n VirtualCompetitionGroup,\n VirtualSport,\n} from '@cds/betting-offer/tags';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { flatten, forIn, groupBy, isArray, min, sortBy } from 'lodash-es';\n\nexport interface CountItem {\n id: number;\n name: string;\n type: ItemType;\n counts: ItemCount;\n meta: ItemMeta;\n parentId?: number;\n order?: number;\n prefix?: string;\n children: CountItem[];\n icon?: string;\n isVirtual?: boolean;\n isEsport?: boolean;\n}\n\nexport enum ItemType {\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Sport = 'Sport',\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Region = 'Region',\n Tournament = 'Tournament',\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Competition = 'Competition',\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n VirtualCompetitionGroup = 'VirtualCompetitionGroup',\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Conference = 'Conference',\n // no real clue how to fix, as it should not happen at all\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Meeting = 'Meeting',\n}\n\nexport interface ItemMeta {\n calendar?: boolean;\n coupons?: boolean;\n teamPages?: boolean;\n calendarIntervals?: string[];\n betBuilder?: boolean;\n}\n\nexport interface ItemCount {\n live: number;\n preMatch: number;\n gridable: number;\n nonGridable: number;\n outrights: number;\n outrightsByGroups: Record;\n specials: number;\n specialsByGroups: Record;\n other: number;\n antepost: number;\n liveStreaming: number;\n priceBoost?: number;\n dynamicCategories?: { [key: string]: number };\n}\n\nexport interface ItemFilter {\n type: ItemType;\n id: number;\n}\n\nexport interface RegionItem extends CountItem {\n code: string;\n}\n\nexport interface LeagueItem extends CountItem {\n siblings: number[];\n standings: boolean;\n isVirtual: boolean;\n realCompetitionId?: number;\n displayMode?: VirtualCompetitionDisplayMode;\n imageType?: VirtualCompetitionImageType;\n compoundId?: string;\n imageProfile?: ImageProfile;\n}\n\nexport interface VirtualCompetitionGroupItem extends LeagueItem {\n participants: VirtualCompetitionGroupParticipant[];\n groupOrder: number;\n groupIds: number[];\n stageIds: number[];\n parentId: number | undefined;\n}\n\nexport interface SportItem extends CountItem {\n isVirtual: boolean;\n}\n\nexport enum VirtualCompetitionDisplayMode {\n Pills = 'Pills',\n Cards = 'Cards',\n}\n\nexport enum VirtualCompetitionImageType {\n Default = 'Default',\n Flags = 'Flags',\n}\n\nexport const VirtualCompetitionPrefix = '0:';\n\nexport interface VirtualCompetitionGroupParticipant {\n code: string;\n participantId?: number;\n}\n\nconst virtualCompetitionDisplayModeMap = new Map([\n [CDSVirtualCompetitionDisplayMode.Pills, VirtualCompetitionDisplayMode.Pills],\n [CDSVirtualCompetitionDisplayMode.Cards, VirtualCompetitionDisplayMode.Cards],\n]);\n\n/**\n * Returns the n items that have order, also orders the result\n *\n * @param items list of source items\n * @param top optional number of elements to return, if not specified will return all available items\n */\nexport function takeTop(items: T[], top?: number): T[] {\n return items\n .filter((item) => item.order !== undefined)\n .sort((first, second) => first.order! - second.order!)\n .slice(0, top || items.length);\n}\n\n/**\n * Calculates the event count for the specified tag\n *\n * @param item the count item to calculate the event count\n * @param interval a flag indicating weather you want to calculate the count for rendering it on calendar pages\n */\nexport function count(item?: CountItem, interval?: boolean): number {\n if (!item || !item.counts) {\n return 0;\n }\n\n if (interval) {\n return item.counts.preMatch + item.counts.live;\n }\n\n const stateCount = item.counts.preMatch + item.counts.live;\n const typeCount = item.counts.gridable + item.counts.nonGridable + item.counts.other;\n const totalCount = min([stateCount, typeCount]) || 0;\n\n return totalCount + item.counts.specials + item.counts.outrights;\n}\n\n/* eslint-disable no-redeclare */\nexport function isItemType(item: CountItem | undefined, type: ItemType.VirtualCompetitionGroup): item is VirtualCompetitionGroupItem;\nexport function isItemType(item: CountItem | undefined, type: ItemType.Competition): item is LeagueItem;\nexport function isItemType(item: CountItem | undefined, type: ItemType.Region): item is RegionItem;\nexport function isItemType(item: CountItem | undefined, type: ItemType.Sport): item is SportItem;\nexport function isItemType(item: CountItem | undefined, type: ItemType): boolean;\nexport function isItemType(item: CountItem | undefined, type: ItemType): boolean {\n return !!item && item.type === type;\n}\n/* eslint-enable */\n\n/**\n * Returns all children and sub children of the current item(s) of a specific type\n *\n * @param items source list of items\n * @param type the item type you are looking for\n */\n/* eslint-disable no-redeclare */\nexport function children(items: CountItem | CountItem[], type: ItemType.VirtualCompetitionGroup): VirtualCompetitionGroupItem[];\nexport function children(items: CountItem | CountItem[], type: ItemType.Competition): LeagueItem[];\nexport function children(items: CountItem | CountItem[], type: ItemType.Region): RegionItem[];\nexport function children(items: CountItem | CountItem[], type: ItemType.Sport): SportItem[];\nexport function children(items: CountItem | CountItem[], type: ItemType): CountItem[];\nexport function children(items: CountItem | CountItem[], type: ItemType): CountItem[] {\n let list = isArray(items) ? items : [items];\n\n // in case there is Sport containing both Competitions and VirtualCompetitions\n // and some Competitions have Conferences\n // and some VirtualCompetitions have VirtualCompetitionGroups\n // check if every item at the current level is not the type we are looking for before continue traversing further down\n while (list.length && list.every((child) => child.type !== type)) {\n list = flatten(list.map((child) => child.children));\n }\n\n // return only the children which we are looking for\n return list.filter((child) => child.type === type);\n}\n/* eslint-enable */\n\n/**\n * Builds up the tree from a flat source of items returned by the api\n *\n * @param tagCounts source list of items\n */\nconst fromTag = (tagCounts?: TagCount[]) => {\n const result: CountItem[] = [];\n const grouped = groupBy(tagCounts || [], (tagCount: TagCount) => tagCount.tag.type);\n const values: Record> = {};\n const sports: TagCount[] = [];\n\n for (const type of [TagType.Sport, TagType.VirtualSport]) {\n if (grouped[type]) {\n sports.push(...grouped[type]);\n }\n }\n\n if (!grouped || !sports.length) {\n return result;\n }\n\n forIn(grouped, (value, key) => {\n values[key] = groupBy(value, (countTag) => {\n if (isCompetitionTag(countTag.tag)) {\n const competition = countTag.tag;\n const sportId = competition.sportId;\n const parentId = sportId === SportConstant.Tennis ? competition.parentTournamentId || countTag.tag.parentId : countTag.tag.parentId;\n\n return `${parentId}:${sportId}`;\n } else if (isVirtualCompetitionTag(countTag.tag)) {\n const competition = countTag.tag;\n const parentId = competition.tournamentId || competition.parentId || countTag.tag.parentId;\n const sportId = competition.sportId;\n\n return `${parentId}:${sportId}`;\n } else if (isConferenceTag(countTag.tag)) {\n const conference = countTag.tag;\n\n return `${conference.competitionId}`;\n }\n\n return `${countTag.tag.parentId}`;\n });\n });\n\n sports.forEach((sportTag) => {\n const sport = mapNode(sportTag);\n const order = childrenPath(sport.id);\n\n mapChildren(order, sport, sportTag, values);\n result.push(sport);\n });\n\n return sortTags(result);\n};\n\nexport function isVirtualCompetitionGroupItem(tag: CountItem): tag is VirtualCompetitionGroupItem {\n return tag.type === ItemType.VirtualCompetitionGroup;\n}\n\nexport function isCompetitionItem(tag: CountItem): tag is LeagueItem {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return tag.type === ItemType.Competition && !(tag).isVirtual;\n}\n\nexport function isVirtualCompetitionItem(tag: CountItem): tag is LeagueItem {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return tag.type === ItemType.Competition && (tag).isVirtual;\n}\n\nexport function isAntepost(sport: CountItem): boolean {\n return sport.counts.antepost !== 0 && sport.counts.antepost === sport.counts.live + sport.counts.preMatch;\n}\n\nfunction childrenPath(sport: number): string[][] {\n const base = [[TagType.Sport, TagType.VirtualSport]];\n\n if (sport === SportConstant.Tennis) {\n base.push([TagType.Tournament]);\n } else {\n base.push([TagType.Region]);\n }\n\n base.push([TagType.Competition, TagType.VirtualCompetition]);\n base.push([TagType.Conference, TagType.VirtualCompetitionGroup]);\n\n return base;\n}\n\nfunction mapChildren(\n typeOrder: string[][],\n current: CountItem,\n currentTag: TagCount,\n grouped: {\n [key: string]: {\n [parent: string]: TagCount[];\n };\n },\n): void {\n const currentType = typeOrder.findIndex((type) => type.indexOf(current.type.toString()) !== -1);\n const childTypes = typeOrder[currentType + 1];\n\n if (!childTypes) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n current.children = childTypes\n .map((childType) => {\n if (!childType || !grouped[childType]) {\n return [];\n }\n\n let currentChildren: TagCount[];\n\n if (current.type === ItemType.Region || current.type === ItemType.Tournament) {\n currentChildren = grouped[childType][`${current.id}:${currentTag.tag.parentId}`] || [];\n } else {\n // if tag.type === Competition take VirtualCompetitionId if exists\n // if it doesn't exist fallback to Competition compoundId and not the numeric id\n const parentId = isCompetitionTag(currentTag.tag) ? currentTag.tag.virtualCompetitionId || currentTag.tag.compoundId : current.id;\n\n currentChildren = grouped[childType][parentId] || [];\n }\n\n return currentChildren.map((childTag) => {\n const child = mapNode(childTag);\n mapChildren(typeOrder, child, childTag, grouped);\n\n return child;\n });\n })\n // eslint-disable-next-line sonarjs/reduce-initial-value\n .reduce((total, currentChildren) => [...total, ...currentChildren]);\n}\n\nexport function mapNode(countTag: TagCount): CountItem {\n const typeMap = new Map([\n [TagType.Sport, ItemType.Sport],\n [TagType.Region, ItemType.Region],\n [TagType.Tournament, ItemType.Tournament],\n [TagType.Competition, ItemType.Competition],\n [TagType.VirtualSport, ItemType.Sport],\n [TagType.VirtualCompetition, ItemType.Competition],\n [TagType.VirtualCompetitionGroup, ItemType.VirtualCompetitionGroup],\n [TagType.Conference, ItemType.Conference],\n ]);\n\n const type = typeMap.get(countTag.tag.type);\n\n if (!type) {\n throw new Error(`Unhandled tag type ${countTag.tag.type}`);\n }\n\n const base: CountItem = {\n id: countTag.tag.id,\n name: countTag.tag.name.value,\n type,\n counts: mapCount(countTag),\n meta: mapMeta(countTag),\n order: countTag.rank,\n children: [] as CountItem[],\n };\n\n switch (countTag.tag.type) {\n case TagType.Sport:\n return mapSport(countTag.tag as Sport, base);\n case TagType.Region:\n return mapRegion(countTag.tag as Region, base);\n case TagType.Competition:\n return mapCompetition(countTag.tag as Competition, base);\n case TagType.VirtualSport:\n return mapVirtualSport(countTag.tag as VirtualSport, base);\n case TagType.VirtualCompetition:\n return mapVirtualLeague(countTag.tag as VirtualCompetition, base);\n case TagType.VirtualCompetitionGroup:\n return mapVirtualCompetitionGroup(countTag.tag as VirtualCompetitionGroup, base);\n default:\n return base;\n }\n}\n\nfunction mapSport(tag: Sport, base: CountItem): CountItem {\n return {\n ...base,\n isEsport: tag.isEsport,\n };\n}\n\nfunction mapRegion(tag: Region, base: CountItem): RegionItem {\n return {\n ...base,\n code: tag.code,\n };\n}\n\nfunction mapCompetition(tag: Competition, base: CountItem): LeagueItem {\n const id = tag.parentLeagueId || tag.id;\n const siblings = [];\n\n if (tag.parentLeagueId) {\n siblings.push(tag.parentLeagueId);\n }\n\n if (tag.parentLeagueId !== tag.id) {\n siblings.push(tag.id);\n }\n\n if (tag.virtualCompetitionId) {\n return {\n ...base,\n id: tag.virtualCompetitionId,\n prefix: VirtualCompetitionPrefix,\n siblings,\n standings: !!tag.statistics,\n isVirtual: true,\n parentId: tag.parentId,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n displayMode: virtualCompetitionDisplayModeMap.get(tag.displayMode!), // when virtualCompetitionId is defined displayMode also has value\n realCompetitionId: id,\n imageProfile: tag.imageProfile,\n };\n } else {\n return {\n ...base,\n id,\n siblings,\n standings: !!tag.statistics,\n isVirtual: false,\n parentId: tag.parentId,\n compoundId: tag.compoundId,\n imageProfile: tag.imageProfile,\n };\n }\n}\n\nfunction mapVirtualSport(tag: VirtualSport, base: CountItem): SportItem {\n return {\n ...base,\n isVirtual: true,\n };\n}\n\nfunction mapVirtualLeague(tag: VirtualCompetition, base: CountItem): LeagueItem {\n return {\n ...base,\n id: tag.id,\n prefix: VirtualCompetitionPrefix,\n siblings: tag.competitionIds,\n standings: !!tag.statistics,\n icon: 'theme-competitions',\n isVirtual: true,\n parentId: tag.parentId,\n imageType: mapImageType(tag.imageType),\n displayMode: virtualCompetitionDisplayModeMap.get(tag.displayMode),\n };\n}\n\nfunction mapVirtualCompetitionGroup(tag: VirtualCompetitionGroup, base: CountItem): VirtualCompetitionGroupItem {\n return {\n ...base,\n id: tag.id,\n siblings: tag.competitionIds,\n standings: !!tag.statistics,\n isVirtual: true,\n participants: mapParticipant(tag.participants),\n groupOrder: tag.order,\n groupIds: tag.groupIds,\n stageIds: tag.stageIds,\n parentId: tag.parentId,\n };\n}\n\nfunction mapMeta(countTag: TagCount): ItemMeta {\n const extended: Pick = countTag.extended || {};\n\n return {\n calendar: countTag.preMatch > 0,\n coupons: extended.coupons,\n betBuilder: extended.betBuilder,\n };\n}\n\nfunction mapCount(countTag: TagCount): ItemCount {\n const extended: Partial = countTag.extended || {};\n\n return {\n live: countTag.live || 0,\n preMatch: countTag.preMatch || 0,\n gridable: extended.gridable || 0,\n nonGridable: extended.nonGridable || 0,\n outrights: extended.outrights || 0,\n outrightsByGroups: extended.outrightsByGroup || {},\n specials: extended.specials || 0,\n specialsByGroups: extended.specialsByGroup || {},\n other: extended.other || 0,\n antepost: countTag.antepost || 0,\n liveStreaming: countTag.liveStreaming || 0,\n priceBoost: extended.priceBoost || 0,\n dynamicCategories: countTag.dynamicCategories,\n };\n}\n\nfunction mapParticipant(tagParticipants: TagParticipant[] | undefined): VirtualCompetitionGroupParticipant[] {\n if (!tagParticipants) {\n return [];\n }\n\n // eslint-disable-next-line sonarjs/prefer-immediate-return, arrow-body-style\n const result = tagParticipants.map((tagParticipant) => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n code: tagParticipant.code,\n participantId: tagParticipant.participantId,\n } as VirtualCompetitionGroupParticipant;\n });\n\n return result;\n}\n\nfunction mapImageType(imageType: CDSVirualCompetitionImageType): VirtualCompetitionImageType {\n if (imageType === CDSVirualCompetitionImageType.Flags) {\n return VirtualCompetitionImageType.Flags;\n }\n\n return VirtualCompetitionImageType.Default;\n}\n\nfunction sortTags(countItems: CountItem[]): CountItem[] {\n countItems.forEach((item) => {\n if (item.children && item.children.length) {\n // eslint-disable-next-line no-param-reassign\n item.children = sortTags(item.children);\n }\n });\n\n return sortBy(countItems, ['groupOrder', 'order', 'name']);\n}\n\nfunction isVirtualCompetitionTag(tag: Tag): tag is VirtualCompetition {\n return tag.type === TagType.VirtualCompetition;\n}\n\nfunction isCompetitionTag(tag: Tag): tag is Competition {\n return tag.type === TagType.Competition;\n}\n\nfunction isConferenceTag(tag: Tag): tag is Conference {\n return tag.type === TagType.Conference;\n}\n\n// TODO - probably we should export all methods like this, as otherwise it's impossible to spy on\nexport const sportModelMethods = {\n fromTag,\n};\n","/* eslint-disable no-param-reassign */\nimport { Inject, Injectable } from '@angular/core';\n\nimport { FixturePage } from '@cds/betting-offer';\nimport { CountsFixturesResponse, FixtureView, PicksView } from '@cds/betting-offer/domain-specific';\nimport { LiveHighlightsResponse } from '@cds/betting-offer/domain-specific/live';\nimport { VirtualFixtureView, VirtualSportView } from '@cds/betting-offer/domain-specific/virtual';\nimport { TagCount, TagType } from '@cds/betting-offer/tags';\nimport {\n BatchRequest,\n CountsFixturesRequest,\n FixtureCountsRequest,\n FixtureRequest,\n FixtureState,\n FixtureViewRequest,\n LiveHighlightsRequest,\n OfferMapping,\n ParticipantMapping,\n PicksRequest,\n ScoreboardMode,\n SortByCriteria,\n Tv1PickData,\n Tv2PickData,\n VirtualOfferRequest,\n} from '@cds/query-objects';\nimport { isV2CompoundId } from '@frontend/sports/betting-offer/feature/model';\nimport {\n BaseTranslationConfig,\n BettingOfferConfig,\n CdsConfig,\n MarketGroupingConfig,\n SportsConfig,\n} from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { ExpiringCache } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { BaseCdsApi, BaseCdsApiFactory, CDS_API_FACTORY, CdsRequestOptions } from '@frontend/sports/content-distribution/feature';\nimport { Page } from '@frontend/vanilla/core';\nimport { chunk, concat, merge } from 'lodash-es';\nimport { Observable, firstValueFrom, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nexport interface BatchResponse {\n [key: string]: FixturePage;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BettingOfferApi {\n private cdsApi: BaseCdsApi;\n private pickCache: ExpiringCache;\n private readonly logger: SportsRemoteLogger;\n\n constructor(\n @Inject(CDS_API_FACTORY) cdsApiServiceFactory: BaseCdsApiFactory,\n private cdsConfig: CdsConfig,\n private sportConfig: SportsConfig,\n private baseTranslationConfig: BaseTranslationConfig,\n private page: Page,\n loggerFactory: LoggerFactory,\n private marketGroupingConfig: MarketGroupingConfig,\n private bettingOfferConfig: BettingOfferConfig,\n ) {\n this.cdsApi = cdsApiServiceFactory({ endpoint: '/bettingoffer' });\n this.pickCache = new ExpiringCache(0.5);\n this.logger = loggerFactory.getLogger('BettingOfferApi');\n }\n\n getFixtureView(\n id: string,\n statsMode: string,\n excludeMarkets: boolean,\n includePrecreated: boolean,\n isBettingInsightsEnabled: boolean,\n gridGroupIds?: string,\n useRegionalisedConfiguration: boolean = this.marketGroupingConfig.regionalisedGroupingEnabled,\n gameIds?: string,\n optionMarketIds?: string,\n marketGroupIds?: string,\n includeRelatedFixtures: boolean = this.bettingOfferConfig.includeLinkedFixtures && !isV2CompoundId(id),\n ): Promise {\n const offerMappingFilter = gridGroupIds || gameIds || optionMarketIds || marketGroupIds ? OfferMapping.Filtered : OfferMapping.All;\n const offerMapping = excludeMarkets ? OfferMapping.None : offerMappingFilter;\n\n return firstValueFrom(\n this.cdsApi.get('/fixture-view', {\n offerMapping,\n gridGroupIds,\n gameIds,\n optionMarketIds,\n scoreboardMode: ScoreboardMode.Full,\n fixtureIds: id,\n state: FixtureState.Latest,\n includePrecreatedBetBuilder: includePrecreated,\n supportVirtual: this.sportConfig.virtuals.isEnabled,\n isBettingInsightsEnabled,\n useRegionalisedConfiguration,\n includeRelatedFixtures,\n statisticsModes: statsMode,\n marketGroupIds,\n }),\n );\n }\n\n getVirtualFixtureView(sport: number, competition: number, fixture: string): Observable {\n return this.cdsApi.get('/virtual/fixture-view', {\n offerMapping: OfferMapping.All,\n sportIds: sport.toString(),\n competitionIds: competition.toString(),\n fixtureIds: fixture,\n scheduleSize: this.sportConfig.virtuals.upcomingEventCount,\n });\n }\n\n /**\n * Caches the request for 500ms so that requests coming with the same parameters will not make multiple CDS calls.\n * This happens because calls are coming from Quickbet/Betslip at the same time\n *\n * @param request\n * @returns\n * @memberof BettingOfferApi\n */\n getPicks(request: PicksRequest, options?: CdsRequestOptions): Observable {\n const requestKey = this.buildPicksRequestKey('picks', request);\n if (this.useBaseTranslation()) {\n request.alternateLanguage = this.baseTranslationConfig.defaultLanguage;\n }\n\n const source = this.cdsApi.post(`/picks`, request, options).pipe(map((response) => response?.fixturePage));\n\n return this.pickCache.getOrCreate(requestKey, source);\n }\n\n getReBetPicksView(request: PicksRequest, options?: CdsRequestOptions): Observable {\n if (this.useBaseTranslation()) {\n request.alternateLanguage = this.baseTranslationConfig.defaultLanguage;\n }\n\n return this.cdsApi.post(`/picks/re-bet`, request, options);\n }\n\n /**\n * Caches the request for 500ms so that requests coming with the same parameters will not make multiple CDS calls.\n * This happens because calls are coming from Quickbet/Betslip at the same time\n *\n * @param request\n * @returns\n * @memberof BettingOfferApi\n */\n getPicksViewCache(request: PicksRequest, options?: CdsRequestOptions): Observable {\n const requestKey = this.buildPicksRequestKey('picks-view', request);\n if (this.useBaseTranslation()) {\n request.alternateLanguage = this.baseTranslationConfig.defaultLanguage;\n }\n\n const source = this.cdsApi.post(`/picks`, request, options).pipe(map((response) => response));\n\n return this.pickCache.getOrCreate(requestKey, source);\n }\n\n getPicksWithFallback(request: PicksRequest): Observable {\n if (this.useBaseTranslation()) {\n request.alternateLanguage = this.baseTranslationConfig.defaultLanguage;\n }\n\n return this.cdsApi.post(`/picks-with-fallback`, request);\n }\n\n getCounts(request: FixtureCountsRequest, options?: CdsRequestOptions): Observable {\n return this.cdsApi.get('/counts', request, options);\n }\n\n getSportList(interval?: { from?: string; to?: string }, sportIds?: number[]): Observable {\n return this.cdsApi.get('/counts', {\n state: FixtureState.Latest,\n tagTypes: TagType.Sport,\n extendedTags: TagType.Sport,\n sortBy: SortByCriteria.Tags,\n supportVirtual: this.sportConfig.virtuals.isEnabled,\n sportIds: sportIds?.join(','),\n ...interval,\n });\n }\n\n getVirtualSportList(): Observable {\n return this.cdsApi.get('/virtual/sports', {\n scheduleSize: this.sportConfig.virtuals.upcomingEventCount,\n });\n }\n\n getLiveSportList(): Observable {\n const tagsToFetch = [TagType.Sport, TagType.Region, TagType.Tournament, TagType.Competition, TagType.VirtualCompetition].join(',');\n\n return this.cdsApi.get(\n '/counts',\n {\n state: FixtureState.Live,\n tagTypes: tagsToFetch,\n extendedTags: tagsToFetch,\n sortBy: SortByCriteria.Tags,\n },\n { addCustomerDnaProfileId: true },\n );\n }\n\n getPrematchEventTree(region: number, sport: number): Observable {\n const request: FixtureCountsRequest = {\n state: FixtureState.Latest,\n tagTypes: [TagType.Sport, TagType.Region, TagType.Tournament, TagType.Competition].join(','),\n extendedTags: [TagType.Sport, TagType.Region, TagType.Tournament, TagType.Competition].join(','),\n sortBy: SortByCriteria.Tags,\n sportIds: sport.toString(),\n };\n\n if (sport === SportConstant.Tennis) {\n request.tournamentIds = region.toString();\n } else {\n request.regionIds = region.toString();\n }\n\n return this.cdsApi.get('/counts', request);\n }\n\n getSport(sport: number, includeDynamicCategories?: boolean, interval?: { from?: string; to?: string }): Observable {\n return this.cdsApi.get('/counts', {\n state: FixtureState.Latest,\n tagTypes: [\n TagType.Sport,\n TagType.Region,\n TagType.Tournament,\n TagType.Competition,\n TagType.VirtualCompetition,\n TagType.VirtualCompetitionGroup,\n ].join(','),\n extendedTags: [\n TagType.Sport,\n TagType.Region,\n TagType.Tournament,\n TagType.Competition,\n TagType.VirtualCompetition,\n TagType.VirtualCompetitionGroup,\n ].join(','),\n sportIds: sport,\n sortBy: SortByCriteria.Tags,\n ...interval,\n participantMapping: ParticipantMapping.All,\n includeDynamicCategories: !!includeDynamicCategories,\n });\n }\n\n getCountsPerSport(sportId: SportConstant, tagType: TagType): Observable {\n return this.cdsApi.get('/counts', {\n state: FixtureState.Latest,\n tagTypes: tagType,\n sportIds: sportId,\n });\n }\n\n getCountsForConference(\n conferenceId?: number,\n competitionId?: number,\n interval?: { from?: string; to?: string },\n includeDynamicCategories?: boolean,\n ): Observable {\n return this.cdsApi.get('/counts', {\n tagTypes: TagType.Conference.toString(),\n extendedTags: '',\n conferenceIds: conferenceId?.toString(),\n competitionIds: competitionId?.toString(),\n includeDynamicCategories: !!includeDynamicCategories,\n ...interval,\n });\n }\n\n getFixtureList(request: FixtureRequest): Observable {\n return this.cdsApi.get(`/fixtures`, request);\n }\n\n getCountsFixtures(request: CountsFixturesRequest): Observable {\n return this.cdsApi.post(`/counts-fixtures`, request, { addCustomerDnaProfileId: true });\n }\n\n getBatchFixtureList(request: BatchRequest[]): Observable {\n const pagedRequests = chunk(request, this.cdsConfig.maxFixtureBatchSize);\n const requestObservables = pagedRequests.map((r: any) => this.cdsApi.post(`/fixtures-batch`, r));\n\n return forkJoin(requestObservables).pipe(\n catchError((err) => {\n this.logger.error(err, `Failed calling fixture-batch endpoint. Request: ${JSON.stringify(request)}`);\n\n return [];\n }),\n map((results: (BatchResponse | undefined)[]) => merge({}, ...results.filter(isDefined)) as BatchResponse),\n );\n }\n\n getFixtureListBatch(request: BatchRequest[]): Observable {\n const pagedRequests = chunk(request, this.cdsConfig.maxFixtureBatchSize);\n const requestObservables = pagedRequests.map((r: any) => this.cdsApi.post(`/fixtures-merged-batches`, r));\n\n return forkJoin(requestObservables).pipe(\n catchError((err) => {\n this.logger.error(err, `Failed calling fixtures-merged-batches endpoint. Request: ${JSON.stringify(request)}`);\n\n return [];\n }),\n map((results: (BatchResponse | undefined)[]) => merge({}, ...results.filter(isDefined)) as BatchResponse),\n );\n }\n\n getBatchCounts(request: BatchRequest[]): Observable<{ [key: string]: TagCount[] } | undefined> {\n const pagedRequests = chunk(request, this.cdsConfig.maxFixtureBatchSize);\n const requestObservables = pagedRequests.map((r: any) => this.cdsApi.post<{ [key: string]: TagCount[] }>('/counts-batch', r));\n\n return forkJoin(requestObservables).pipe(\n catchError((err) => {\n this.logger.error(err, `Failed calling counts-batch endpoint. Request: ${JSON.stringify(request)}`);\n\n return [];\n }),\n map((results) => merge({}, ...results.filter(isDefined)) as { [key: string]: TagCount[] }),\n );\n }\n\n getLiveHighlights(request: LiveHighlightsRequest): Observable {\n return this.cdsApi.get('/live/highlights', request, { addCustomerDnaProfileId: true });\n }\n\n getLiveEsports(request: LiveHighlightsRequest): Observable {\n return this.cdsApi.get('/live/esports', request, { addCustomerDnaProfileId: true });\n }\n\n getLiveStreams(request: LiveHighlightsRequest): Observable {\n return this.cdsApi.get('/live/streams', request, { addCustomerDnaProfileId: true });\n }\n\n private useBaseTranslation(): boolean {\n return this.baseTranslationConfig.isEnabled && this.baseTranslationConfig.defaultLanguage.toUpperCase() !== this.page.lang.toUpperCase();\n }\n\n private buildPicksRequestKey(prefix: string, request: PicksRequest): string {\n return concat(\n request.tv1Picks.map((p) => this.buildPickV1Key(prefix, p)),\n request.tv2Picks.map((p) => this.buildPickV2Key(prefix, p)),\n ).join('|');\n }\n\n private buildPickV1Key(prefix: string, pick: Tv1PickData): string {\n return `${prefix}-${pick.fixtureId}-${pick.gameId}-${pick.resultId}-${pick.useLiveFallback || false}`;\n }\n\n private buildPickV2Key(prefix: string, pick: Tv2PickData): string {\n return `${prefix}-${pick.fixtureId}-${pick.optionMarketId}-${pick.participantId}-${pick.isClassicBetBuilder}`;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { FixtureType } from '@cds/betting-offer';\nimport { TagCount, TagType } from '@cds/betting-offer/tags';\nimport { BatchRequest, FixtureCountsRequest, FixtureState } from '@cds/query-objects';\nimport { BettingOfferApi } from '@frontend/sports/betting-offer/feature/offer-service';\nimport { PrettyUrlsConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { CountItem, sportModelMethods } from '@frontend/sports/common/core/data-access/sport-model';\nimport { DateProviderService, getDateForOffset } from '@frontend/sports/common/core/utils/date';\nimport { filter, first, keys, mapValues, pickBy, sumBy, values } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport type CalendarIntervalKey =\n | 'now'\n | 'live'\n | 'in30minutes'\n | 'in60minutes'\n | 'in180minutes'\n | 'today'\n | 'tomorrow'\n | 'next16hours'\n | 'next2days'\n | 'next3days'\n | 'next5days'\n | 'after2days'\n | 'after3days'\n | 'midWeek'\n | 'thisWeekend'\n | 'all'\n | 'calendar';\n\nexport enum Days {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\nexport interface IntervalFilter {\n title: string;\n name: string;\n from?: Date;\n to?: Date;\n live?: boolean;\n active?: boolean;\n date?: string;\n icon?: string;\n trackingSource?: string;\n key: CalendarIntervalKey;\n}\n\nexport interface IntervalCount extends IntervalFilter {\n count: number;\n}\n\nexport interface IntervalLink extends IntervalFilter {\n url: string;\n}\n\nexport interface IntervalCountsMap {\n [key: string]: IntervalCount | undefined;\n}\n\nexport interface SportIntervalCounts {\n intervals: IntervalCountsMap;\n sport?: CountItem;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CountIntervalService {\n constructor(\n private bettingService: BettingOfferApi,\n private urlConfig: PrettyUrlsConfig,\n private sitecore: Sitecore,\n ) {}\n\n intervalStartOfDay(name: string, from: number, to: number, title: string, key: CalendarIntervalKey, trackingSource?: string): IntervalFilter {\n const now = DateProviderService.getDate();\n const today = DateProviderService.getStartOfDay(now);\n const eTitle = trackingSource;\n const filterForDay = this.buildInterval(name, today, from, to, title, key);\n filterForDay.trackingSource = eTitle;\n\n return filterForDay;\n }\n\n intervalStartingNow(name: string, from: number, to: number, title: string, key: CalendarIntervalKey, trackingSource?: string): IntervalFilter {\n const now = DateProviderService.getDate();\n const minute = DateProviderService.getStartOfMinute(now);\n const eTitle = trackingSource;\n const filterForTime = this.buildInterval(name, minute, from, to, title, key);\n filterForTime.trackingSource = eTitle;\n\n return filterForTime;\n }\n\n getCounts(intervals: { [key: string]: IntervalFilter }): Observable {\n return this.getCountsForSport(intervals).pipe(map((response) => response.intervals));\n }\n\n getCountsForSport(intervals: { [key: string]: IntervalFilter }, sportId?: string): Observable {\n /**\n * Whenever app requests ALL counts, live counts can be derived from them\n */\n const canCountLive = intervals['all'] && intervals['live'];\n if (canCountLive) {\n delete intervals['live'];\n }\n const params = this.buildRequestParameters(intervals, sportId);\n\n return this.bettingService.getBatchCounts(params).pipe(\n map((countResponse) => {\n if (!countResponse) {\n return { intervals: {}, sport: undefined };\n }\n\n const counts = mapValues(countResponse, (tagCounts, key) => {\n return {\n ...intervals[key],\n count: sumBy(tagCounts, (c) => c.live + (key === 'live' ? 0 : c.preMatch)),\n } as IntervalCount;\n });\n\n if (canCountLive) {\n counts['live'] = {\n name: this.urlConfig.translations.live,\n title: this.sitecore.globalMessages.NavLive,\n live: true,\n count: sumBy(countResponse['all'], (c) => c.live),\n key: 'live',\n };\n }\n\n const countsWithValue = pickBy(counts, (c) => c.count > 0) as { [key: string]: IntervalCount };\n const sport = sportId ? this.getSportItem(+sportId, countResponse) : undefined;\n\n return {\n intervals: countsWithValue,\n sport,\n };\n }),\n );\n }\n\n buildRequestParameters(intervals: { [key: string]: IntervalFilter }, sportId?: string): BatchRequest[] {\n return keys(intervals).map((key) => ({\n batchId: key,\n request: {\n fixtureTypes: FixtureType.Standard,\n state: FixtureState.Latest,\n tagTypes: TagType.Sport,\n extendedTags: TagType.Sport,\n from: intervals[key].from?.toISOString(),\n to: intervals[key].to?.toISOString(),\n sportIds: key === 'all' ? undefined : sportId,\n },\n }));\n }\n\n private buildInterval(name: string, start: Date, fromOffset: number, toOffset: number, title: string, key: CalendarIntervalKey): IntervalFilter {\n return {\n name,\n from: getDateForOffset(start, fromOffset),\n to: getDateForOffset(start, toOffset),\n title,\n key,\n };\n }\n\n private getSportItem(sportId: number, tagCountMap: { [key: string]: TagCount[] }): CountItem | undefined {\n /**\n * Filer by sport id is needed because when requesting ALL interval it includes all the sports\n * and we would like to filter it to match sportId; for any other interval response will contain single sport tag\n */\n const sportTag = filter(first(values(tagCountMap)), (tagCount) => tagCount.tag.id === sportId);\n\n return first(sportModelMethods.fromTag(sportTag));\n }\n}\n","// eslint-disable-next-line import/no-unresolved\nimport { Translation } from '@cds/betting-offer';\n\nexport function translationToStr(translation: Translation): string {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return translation.short || translation.value;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PrettyUrlsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { keys, merge, trim } from 'lodash-es';\n\nexport interface UrlParam {\n id: string | number;\n prefix?: string;\n name: string;\n}\n\nexport type UrlSegmentParam = number | string | UrlParam;\n\nexport class SegmentNormalizer {\n constructor(\n protected urlConfig: PrettyUrlsConfig,\n protected caseSensitive = false,\n ) {}\n\n normalize(segment: UrlSegmentParam): string {\n if (!segment) {\n return '';\n }\n\n let token: string | number;\n let tokenNormalizer = () => token.toString();\n\n if (typeof segment === 'string' || typeof segment === 'number') {\n token = segment;\n } else {\n token = segment.name;\n tokenNormalizer = () => trim(`${token}-${segment.prefix || ''}${segment.id}`, '-').replace('--', '-');\n }\n\n let flags = 'gim';\n if ('unicode' in RegExp.prototype) {\n // Check if unicode is supported.\n flags += 'u';\n }\n\n const normalization = new RegExp(this.urlConfig.tokenSanitizer, flags);\n // it does not do pole dancing\n const stripper = new RegExp(' ', flags);\n\n token = token.toString().replace(normalization, ' ').trim().replace(stripper, '-').slice(0, Math.max(0, this.urlConfig.maxTokenLength));\n\n if (!this.caseSensitive) {\n token = token.toLocaleLowerCase();\n }\n\n return tokenNormalizer();\n }\n}\n\nexport class UrlBuilder {\n private params: string[] = [];\n private query: any = {};\n\n constructor(private normalizer: SegmentNormalizer) {}\n\n appendIf(param?: UrlSegmentParam): this {\n if (param) {\n return this.append(param);\n }\n\n return this;\n }\n\n append(param: UrlSegmentParam): this {\n this.params.push(this.normalizer.normalize(param));\n\n return this;\n }\n\n appendQuery(query: any): this {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.query = merge(this.query, query || {});\n\n return this;\n }\n\n toString(): string {\n let queryParams = keys(this.query)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, eqeqeq\n .filter((key) => this.query[key] !== null && this.query[key] !== undefined)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n .map((key) => `${key}=${this.query[key]}`)\n .join('&');\n\n if (queryParams) {\n queryParams = `?${queryParams}`;\n }\n\n return `/${this.params.join('/')}${queryParams}`;\n }\n}\n","import { Participant, ParticipantOption, ParticipantPriceStatus, Price } from '@cds/betting-offer';\nimport { FixturePricingState } from '@cds/betting-offer/add-ons';\nimport { DayOfRaceDate } from '@cds/betting-offer/domain-specific/horse-racing';\nimport {\n GreyhoundParticipantData as RacingPostGreyhoundParticipantData,\n HorseParticipantData as RacingPostHorseParticipantData,\n} from '@cds/betting-offer/domain-specific/horse-racing/racing-post';\nimport { HorseParticipantData } from '@cds/betting-offer/domain-specific/horse-racing/timeform';\nimport { Meeting, TagCount } from '@cds/betting-offer/tags';\nimport { EventOption } from '@frontend/sports/betting-offer/feature/model';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\n\nimport { FixtureParticipantPriceMap, V3FixtureParticipantPriceMap } from './fixture-participant-price-map';\nimport { ForecastComponentMode } from './forecast-mode';\nimport { HorseRaceSortingDirection } from './horse-race-sorting-direction';\nimport { MarketView } from './market-view';\nimport { RaceMarketViewModel } from './race-market-view-model';\nimport { WinGameFixture, WinGameFixturePreview } from './win-game-fixture';\n\nexport interface ForecastPlaces {\n first: WinGameParticipant | null;\n second: WinGameParticipant | null;\n third: WinGameParticipant | null;\n fourth: WinGameParticipant | null;\n fifth: WinGameParticipant | null;\n}\n\nexport enum RacingConstants {\n Notavailable = 'N/A',\n}\n\nexport class ForecastModel {\n first = false;\n second = false;\n third = false;\n fourth = false;\n fifth = false;\n anyForecast = false;\n anyTricast = false;\n\n checkboxId: {\n [x in keyof ForecastPlaces]: string;\n } & { anyForecast: string; anyTricast: string } = {\n first: '',\n second: '',\n third: '',\n fourth: '',\n fifth: '',\n anyForecast: '',\n anyTricast: '',\n };\n\n constructor(\n public participant: WinGameParticipant,\n public showForecastOption: boolean,\n public showTricastOption: boolean,\n mode: ForecastComponentMode,\n ) {\n this.checkboxId = {\n first: `cb-${mode}-${participant.id}-first`,\n second: `cb-${mode}-${participant.id}-second`,\n third: `cb-${mode}-${participant.id}-third`,\n fourth: `cb-${mode}-${participant.id}-fourth`,\n fifth: `cb-${mode}-${participant.id}-fifth`,\n anyForecast: `cb-${mode}-${participant.id}-any-forecast`,\n anyTricast: `cb-${mode}-${participant.id}-any-tricast`,\n };\n }\n}\n\nexport interface RaceParticipantViewModel extends WinGameParticipant {\n attributes: TParticipantInfo;\n isSPOptionActive?: boolean;\n priceHistory: Price[];\n isOptionActive: boolean;\n availableBadges?: HorseBadge[];\n easyBetViewStats?: { [attributeName: string]: EasyBetViewStats };\n isSpotlightInformationAvailable?: boolean;\n}\n\nexport interface RaceParticipantViewModelWithOptions extends RaceParticipantViewModel {\n option: Nullable;\n spOption?: Nullable;\n}\n\nexport interface EasyBetViewStats {\n color: string;\n label?: string;\n grade?: number;\n}\n\nexport interface WinGameParticipant extends Participant {\n id: number;\n favouriteRank?: string;\n //TODO try to replace native price with Odds\n\n nativePrice?: NativePrice;\n timeformInfo?: HorseParticipantData;\n racingPostInfo?: RacingPostData;\n}\nexport interface RacingHorseParticipantData extends RacingPostHorseParticipantData {\n hasTopStarRating: boolean;\n}\nexport interface RacingPostData {\n horseData: RacingHorseParticipantData;\n greyhoundsData: RacingPostGreyhoundParticipantData;\n}\n\nexport enum HorseRaceFavouritePrefixes {\n Favourite = 'Favourite',\n FavouriteCo = 'FavouriteCo',\n FavouriteJoint = 'FavouriteJoint',\n}\n\nexport interface ForecastParticipantViewModel extends WinGameParticipant {\n availableBadges: HorseBadge[];\n participantInfo: RacingParticipantInfo;\n visible: boolean;\n marketStatus: boolean | undefined;\n}\n\nexport interface RaceResultedPlacedParticipant extends WinGameParticipant {\n isFavourite: boolean;\n favouriteLabel: string;\n attributes: RacingParticipantInfo;\n}\n\nexport enum HorseBadge {\n BeatenFavourite = 'beatenFavourite',\n CourseWins = 'courseWins',\n DistanceWins = 'distanceWins',\n CourseAndDistanceWins = 'courseAndDistanceWins',\n}\n\nexport interface RacingParticipantInfo {\n jockey?: string;\n trainer?: string;\n isFavorite: boolean;\n}\n\nexport interface HorseParticipantInfo {\n raceCardNumber?: number;\n drawNumber?: number;\n jockey: string;\n trainer: string;\n silkUrl: string;\n silkDescription: string;\n isFavorite: boolean;\n ratingStars?: number;\n}\n\nexport interface GreyhoundParticipantInfo {\n trapNumber: number;\n greyhoundName: string;\n}\n\nexport interface GreyhoundParticipantDictionary {\n [id: number]: GreyhoundParticipantInfo;\n}\n\nexport enum RacingPopups {\n HrHelp = 'hr-help-overlay',\n HrInfo = 'hr-info-overlay',\n GhHelp = 'gr-help-overlay',\n GhInfo = 'gr-info-overlay',\n}\n\nexport enum RacingPopupCSS {\n HrHelp = 'hr-help',\n HrInfo = 'hr-info',\n GhHelp = 'gh-help',\n GhInfo = 'gh-info',\n}\n\nexport const RacingTrackingConstants = {\n RACING_POST: 'racing post',\n RACING_RATINGS_INFO: 'ratings info popup',\n RACING_CARD_PAGE: 'race card page',\n RACING_RATINGS_INFO_ICON: 'ratings info icon',\n};\n\nexport interface RouteParams {\n sportId: SportConstant;\n activeTab: RacingUrlParam;\n}\nexport enum RacingUrlParam {\n Today = 'today',\n Tomorrow = 'tomorrow',\n Future = 'future',\n TodaysResults = 'todays-results',\n NextRaces = 'nextRaces',\n}\nexport interface MeetingModel {\n meeting: {\n id: number;\n name: string;\n };\n fixtures: WinGameFixturePreview[];\n day: DayOfRaceDate;\n allFixtures?: WinGameFixture[];\n}\nexport type RacingPostParticipantBase = RaceParticipantViewModel;\nexport type TimeFormParticipantBase = RaceParticipantViewModel;\n\nexport type RacingParticipantWithParticipantOption = RaceParticipantViewModelWithOptions;\nexport type RacingParticipantWithEventOption = RaceParticipantViewModelWithOptions;\n\nexport type TimeformParticipantWithParticipantOption = RaceParticipantViewModelWithOptions;\n\nexport type TimeformParticipantWithEventOption = RaceParticipantViewModelWithOptions;\nexport interface HorsesRaceWinMarketComponentViewModel {\n sortBy: HorseRaceSortingDirection;\n runners: (RacingParticipantWithParticipantOption | RacingParticipantWithEventOption)[];\n nonRunners: (RacingParticipantWithParticipantOption | RacingParticipantWithEventOption)[];\n allPricesLocked: boolean;\n allPricesSP: boolean;\n}\nexport interface HorsesParticipantComponentViewModel {\n showAge: boolean;\n showWeight: boolean;\n showBadge: boolean;\n showHorseInfo: boolean;\n showSummaryPredictor: boolean;\n showEasyBetViewStats: boolean;\n}\n\nexport interface AntepostParticipantsViewModel {\n fixture?: WinGameFixture;\n participants: WinGameParticipant[];\n options: TParticipantPriceMap;\n}\n\nexport interface RaceDetailsModel extends MeetingModel {\n fixture: WinGameFixture;\n}\n\nexport interface WinningMarketDetails {\n winningMarket: string;\n showParticipantImage: boolean;\n}\nexport interface HorsesRaceWinMarketBindings {\n fixture: WinGameFixture;\n displaySorting: boolean;\n displayRunners: boolean;\n}\nexport interface HorsesForecastBindings {\n mode: ForecastComponentMode;\n fixture: WinGameFixture;\n}\nexport interface AntepostMarketComponentBindings {\n fixture: WinGameFixture;\n}\nexport interface HorsesMeetingAllRaceViewModel {\n fixture: WinGameFixturePreview;\n pricingState: FixturePricingState;\n fixtureUrl: string;\n startDate: string;\n raceName: string;\n}\nexport interface HorsesRaceResultedViewModel {\n placed: WinGameParticipant[];\n nonRunners: WinGameParticipant[];\n dividends: { name: string; value: string; available: boolean; result: string }[];\n hasDividends: boolean;\n hasSilks: boolean;\n favorites?: WinGameParticipant[];\n participantOptionGroups?: unknown;\n}\nexport interface GreyhoundsRaceWinMarketComponentViewModel {\n sortBy: HorseRaceSortingDirection;\n runners: (RacingParticipantWithParticipantOption | RacingParticipantWithEventOption)[];\n nonRunners: string | (RacingParticipantWithParticipantOption | RacingParticipantWithEventOption)[];\n allPricesLocked: boolean;\n allPricesSP: boolean;\n expandedParticipant: { [id: number]: boolean };\n}\nexport interface ForecastColumn {\n id: keyof ForecastPlaces;\n name: string;\n visible: boolean;\n}\nexport interface TournamentGroup {\n id: DayOfRaceDate | string;\n expanded: boolean;\n tournaments: {\n url?: string;\n meeting: TagCount | Meeting;\n attributes?: {\n selected: boolean;\n };\n }[];\n}\n\nexport interface HorsesRaceComponentViewModel {\n selectedMarketView: Nullable;\n prices: FixtureParticipantPriceMap;\n timeformTipRunner?: WinGameParticipant;\n marketViews: RaceMarketViewModel[];\n priceStatusVisible: ParticipantPriceStatus;\n winMarketSuspended: boolean;\n canSelectTopForecast: boolean;\n canSelectTopTricast: boolean;\n}\n\nexport enum DerivedMarkets {\n Racewinner = 'Race Winner',\n Forecast = 'ForeCast',\n Tricast = 'TriCast',\n CombinationForecast = 'CombinationForecast',\n CombinationtTricast = 'CombinationtTricast',\n}\n","import { Location } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { FixtureBase, FixtureType } from '@cds/betting-offer';\nimport { DayOfRaceDate } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { AZSportsDataModel, PrettyUrlsConfig, SeoConfig, Sitecore, SportsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { translationToStr } from '@frontend/sports/common/core/utils/translations';\nimport { SportsProductService } from '@frontend/sports/host-app/sports-product/feature/sports-product-service';\nimport { SegmentNormalizer, UrlBuilder, UrlParam, UrlSegmentParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { RacingUrlParam } from '@frontend/sports/racing/feature/models';\nimport { DeviceService, Page, QuerySearchParams, UrlService } from '@frontend/vanilla/core';\nimport { includes, keys, toNumber, values } from 'lodash-es';\n\nimport { CategoryType } from '../navigation/navigation.models';\n\nexport enum LiveUrlParam {\n Highlights = 0,\n SportList = -1,\n Video = -2,\n Favourites = -3,\n Sport = 1,\n Esports = -4,\n}\n\nexport enum SportUrlParam {\n Competitions = 'competitions',\n Calendar = 'calendar',\n Today = 'today',\n Betting = 'betting',\n Antepost = 'antepost',\n Featured = 'featured',\n TeamPages = 'teamPages',\n WorldCupHub = 'worldCupHub',\n}\n\nexport enum SettingsUrlParam {\n Betslip = 'betslip',\n QuickBet = 'quickBet',\n EarlyPayout = 'earlyPayout',\n OddsDisplay = 'oddsDisplay',\n StakeChanges = 'stakeChanges',\n}\n\nexport enum ModelPopupTypes {\n MyBets = 'my-bets',\n Betslip = 'betslip',\n}\n\nexport enum VirtualUrlParam {\n OnDemand = 'onDemand',\n}\n\nexport enum CalendarUrlParam {\n In30minutes = 'in30minutes',\n In60minutes = 'in60minutes',\n In180minutes = 'in180minutes',\n Today = 'today',\n Tomorrow = 'tomorrow',\n After2days = 'after2days',\n After3days = 'after3days',\n Next2days = 'next2days',\n Next3days = 'next3days',\n Next5days = 'next5days',\n MidWeek = 'midWeek',\n ThisWeekend = 'thisWeekend',\n}\n\nexport enum MyBetsUrlParam {\n Live = 'live',\n Open = 'open',\n Settled = 'settled',\n}\n\nexport enum CouponUrlParam {\n BetBuilder = 'bet-builder',\n}\n\nexport enum MarketUrlParam {\n MyBets = 'my-bets',\n BetBuilder = 'bet-builder',\n Sgp = 'SGP',\n}\n\nexport interface EventLinkConfig {\n extraParams?: MarketUrlParam;\n emptyText: string;\n}\n\nexport enum MarketOfferUrlParam {\n NonGridable = 'non-gridable',\n Gridable = 'matches',\n Outrights = 'outrights',\n Specials = 'specials',\n Standings = 'standings',\n Teams = 'teams',\n PriceBoost = 'priceboost',\n}\n\nexport enum PriceBoostUrlParam {\n PriceBoostHub = 'priceBoost',\n}\n\nexport enum FavouritesDashboardUrlParam {\n Upcoming = 'upcoming',\n Competitions = 'competitions',\n Players = 'players',\n Events = 'events',\n}\n\nexport interface GameUrlParam {\n game: string;\n section: string;\n title?: string;\n provider?: string;\n lobbyPosition?: string;\n position?: number;\n}\n\nexport interface LiveSportUrlOptions {\n sport: UrlParam;\n region?: UrlParam | LiveUrlParam.Sport;\n league?: UrlParam;\n conference?: UrlParam;\n isEsport?: boolean;\n}\n\nexport interface BetsUrlOptions {\n sport: UrlParam;\n region?: UrlParam;\n league?: UrlParam;\n conference?: UrlParam;\n category?: string;\n subCategory?: Record;\n dynamicCategory?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UrlHelperService {\n private sportsProductService = inject(SportsProductService);\n\n constructor(\n protected page: Page,\n private location: Location,\n private urlService: UrlService,\n protected urlConfig: PrettyUrlsConfig,\n private sportConfig: SportsConfig,\n protected sitecore: Sitecore,\n private device: DeviceService,\n private seoConfig: SeoConfig,\n private azSportsData: AZSportsDataModel,\n ) {}\n\n getUrl(url?: string): string {\n if (!url) {\n return '#';\n }\n\n if (url.startsWith('http')) {\n return url;\n }\n\n const firstChar = url.charAt(0);\n const locationPath = this.location.path();\n\n if (url === '/') {\n url = this.prependPrefix('');\n } else if (firstChar === '/') {\n url = this.prependPrefix(url);\n } else if (firstChar === '?') {\n url = `${locationPath}${url}`;\n } else {\n url = `${locationPath}/${url}`;\n }\n\n return url.replace(/\\/$/, '');\n }\n\n getHomeUrl(): string {\n return this.prefix;\n }\n\n getMultiSportsHubUrl(): string {\n return `${this.prefix}/${this.urlConfig.translations.multiSports}/${this.urlConfig.translations.multiSportsHubName}`;\n }\n\n getESportsUrl(): string {\n const productPath = this.sportsProductService.isSingleDomain ? this.sportsProductService.sportsProductName + '/' : '';\n return `/${this.page.lang}/${productPath}${this.esportsTranslation}`;\n }\n\n getSearchUrl(): string {\n return this.prefix + '?popup=betfinder';\n }\n\n getMyBetPopupUrl(): string {\n return this.prefix + '?popup=my-bets';\n }\n\n getAtoZUrl(): string {\n return `/${this.page.lang}/product-menu`;\n }\n\n getCalendarUrl(interval?: string | CalendarUrlParam): string {\n if (!interval) {\n return this.getBuilder(this.urlConfig.translations.calendar).toString();\n }\n\n const allowed: string[] = values(CalendarUrlParam);\n const allowedTranslations = allowed.map((key) => this.urlConfig.translations[key]);\n\n if (interval in CalendarUrlParam) {\n return this.getBuilder(this.urlConfig.translations[interval]).toString();\n }\n\n if (allowed.indexOf(interval) !== -1) {\n return this.getBuilder(this.urlConfig.translations[interval]).toString();\n }\n if (allowedTranslations.indexOf(interval) !== -1) {\n return this.getBuilder(interval).toString();\n } else {\n throw new Error('Wrong calendar interval');\n }\n }\n\n getLiveUrl(tab: LiveUrlParam = LiveUrlParam.Highlights, tracking?: string): string {\n const map = {\n [LiveUrlParam.Video]: this.urlConfig.translations.video,\n [LiveUrlParam.SportList]: this.urlConfig.translations.all,\n [LiveUrlParam.Highlights]: this.urlConfig.translations.betting,\n [LiveUrlParam.Favourites]: this.urlConfig.translations.favourites,\n [LiveUrlParam.Esports]: this.urlConfig.translations.esports,\n [LiveUrlParam.Sport]: this.urlConfig.translations.sport,\n };\n\n const mapped = map[tab as keyof typeof map];\n const builder = this.getBuilder(this.urlConfig.translations.live, mapped);\n\n if (tracking) {\n builder.appendQuery({ trid: tracking });\n }\n\n return builder.toString();\n }\n\n getPriceBoostUrl(): string {\n return this.getBuilder(this.urlConfig.translations.priceBoost).toString();\n }\n\n getLiveSportUrl({ sport, region, league, isEsport, conference }: LiveSportUrlOptions): string {\n if (isEsport) {\n return this.getLiveUrl(LiveUrlParam.Esports);\n }\n\n const builder = this.getBuilder(this.urlConfig.translations.live, sport);\n\n if (region) {\n if (region === LiveUrlParam.Sport) {\n builder.appendQuery({ fallback: false });\n } else {\n builder.append(region);\n }\n }\n\n if (league) {\n builder.append(league);\n }\n\n if (conference) {\n builder.append(conference);\n }\n\n return builder.toString();\n }\n\n getVirtualSportUrl(param?: VirtualUrlParam.OnDemand): string;\n getVirtualSportUrl(sport: UrlParam, competition?: UrlParam, event?: string): string;\n getVirtualSportUrl(sportOrParam?: UrlParam | VirtualUrlParam.OnDemand, competition?: UrlParam, event?: string): string {\n const builder = this.getBuilder(this.urlConfig.translations.virtual);\n\n if (sportOrParam) {\n if (sportOrParam === VirtualUrlParam.OnDemand) {\n builder.append(this.urlConfig.translations.onDemand);\n } else {\n builder.append(sportOrParam);\n }\n }\n\n if (competition) {\n builder.append(competition);\n\n if (event) {\n builder.appendQuery({ tab: event });\n }\n }\n\n return builder.toString();\n }\n\n getTournamentUrl(sport: UrlParam, tournament: string, league?: UrlParam): string {\n const builder = this.getBuilder(sport, this.urlConfig.translations.tournaments, tournament);\n\n if (league) {\n builder.append(league);\n }\n\n return builder.toString();\n }\n\n getEventUrl(event?: UrlParam, market?: MarketUrlParam): string {\n const builder = this.getBuilder(this.urlConfig.translations.events);\n\n if (!event) {\n return builder.toString();\n }\n\n return builder.append(event).appendQuery({ market }).toString();\n }\n\n getFixtureUrl(sport: UrlParam, fixture: UrlParam, prefix?: string): string {\n return prefix\n ? this.getBuilder(prefix, sport, this.urlConfig.translations.fixtures, fixture).toString()\n : this.getBuilder(sport, this.urlConfig.translations.fixtures, fixture).toString();\n }\n\n getFixtureUrlByFixture(fixtureLike: Pick, prefix?: string): string {\n const fixture: UrlParam = {\n id: fixtureLike.id,\n name: translationToStr(fixtureLike.name),\n };\n const sport: UrlParam = {\n id: fixtureLike.sport.id,\n name: translationToStr(fixtureLike.sport.name),\n };\n switch (fixtureLike.fixtureType) {\n case FixtureType.Antepost:\n return prefix\n ? this.getBuilder(prefix, sport, this.urlConfig.translations.fixtures, fixture).toString()\n : this.getBuilder(sport, this.urlConfig.translations.fixtures, fixture).toString();\n case FixtureType.DayOfRace:\n const dayOfRaceFixture = fixtureLike as Pick;\n\n return this.getRacingUrlByFixture(fixtureLike.sport.id, dayOfRaceFixture);\n default:\n return '';\n }\n }\n\n getCouponUrl(sport: UrlParam, coupon?: UrlParam | CouponUrlParam): string {\n const builder = this.getBuilder(sport, this.urlConfig.translations.coupons);\n\n if (coupon) {\n if (coupon === CouponUrlParam.BetBuilder) {\n builder.append(this.urlConfig.translations.betBuilder);\n } else {\n builder.append(coupon);\n }\n }\n\n return builder.toString();\n }\n\n getCompetitionCouponUrl(sport: UrlParam, coupon?: UrlParam | CouponUrlParam, region?: UrlParam, league?: UrlParam): string {\n const builder = this.getBuilder(sport, this.urlConfig.translations.coupons);\n if (region) {\n builder.append(region);\n }\n\n if (league) {\n builder.append(league);\n }\n\n if (coupon) {\n if (coupon === CouponUrlParam.BetBuilder) {\n builder.append(this.urlConfig.translations.betBuilder);\n } else {\n builder.append(coupon);\n }\n }\n\n return builder.toString();\n }\n\n getMultiBuilderUrl(league?: UrlParam): string {\n const builder = this.getBuilder(this.urlConfig.translations.multiBuilder);\n\n if (league) {\n builder.append(league);\n }\n\n return builder.toString();\n }\n\n getBetsUrl({ sport, region, league, conference, category, subCategory, dynamicCategory }: BetsUrlOptions): string {\n const builder = this.getBuilder(this.urlConfig.translations.bets).append(sport).appendIf(region).appendIf(league).appendIf(conference);\n\n if (category) {\n builder.appendQuery({ category });\n }\n if (subCategory?.outrightCategory || subCategory?.specialCategory) {\n builder.appendQuery(subCategory);\n }\n\n if (dynamicCategory) {\n builder.appendQuery({ dynamicCategory });\n }\n\n return builder.toString();\n }\n\n getBettingUrl({ sport, region, league, conference }: BetsUrlOptions): string {\n const builder = this.getBuilder(sport);\n\n if (region) {\n builder.append(this.urlConfig.translations.betting).append(region).appendIf(league).appendIf(conference);\n }\n\n return builder.toString();\n }\n\n getStandingsUrl(sport: UrlParam, region?: UrlParam, league?: UrlParam, group?: UrlParam): string {\n const builder = this.getBuilder(this.urlConfig.translations.standings);\n builder.append(sport);\n if (region) {\n builder.append(region);\n }\n if (league) {\n builder.append(league);\n }\n if (group) {\n builder.append(group);\n }\n\n return builder.toString();\n }\n\n getTeamPagesUrl(sport: UrlParam, team?: UrlParam, league?: UrlParam): string {\n const builder = this.getBuilder(sport, this.urlConfig.translations.teamPages);\n builder.append(league || this.urlConfig.translations.myTeams);\n if (team) {\n builder.append(team);\n }\n\n return builder.toString();\n }\n\n getTeamPagesSearchUrl(sportUrl: string, sportId: string | number | undefined): string {\n return sportUrl + `&teamId=${sportId}`;\n }\n\n getSettingsUrl(settings: SettingsUrlParam): string {\n return this.getBuilder(this.urlConfig.translations.settings, this.urlConfig.translations[settings]).toString();\n }\n\n getMyBetsUrl(page?: MyBetsUrlParam, params?: Params): string {\n const builder = this.getMyBetsUrlBuilder(page);\n if (params) {\n builder.appendQuery(params);\n }\n\n return builder.toString();\n }\n\n getPrintUrlBuilder(): UrlBuilder {\n const builder = this.getMyBetsUrlBuilder();\n builder.append('print');\n\n return builder;\n }\n\n shouldRemoveHref(): Nullable {\n if (this.seoConfig.removeHrefToEventForRobot && this.device.isRobot) {\n return true;\n }\n\n return null;\n }\n\n private getMyBetsUrlBuilder(page?: MyBetsUrlParam): UrlBuilder {\n const builder = this.getBuilder(this.urlConfig.translations.myBets);\n\n if (page) {\n builder.append(this.urlConfig.translations[page]);\n }\n\n return builder;\n }\n\n /**\n * Used to generate sport pages specific urls\n * - sport list url (with fallback from SportsConfig.competitionLandingPage)\n * - sport lobby url (with fallback from SportsConfig.competitionLandingPage)\n * - sport competition page with specific context (all fixtures for that context)\n * - sport comeptition list for specific context (all, today, ....)\n * - sport specific pages (calendar, force lobby)\n *\n * @param {UrlParam} sport sport for which we want to generate the url, if undefined returns all sports url\n * @param {string | SportUrlParam | CalendarUrlParam} context context for which we want to generate the url for, can be a translated\n * token (from PrettyUrlsConfig.translations) or a SportUrl param, and the value will be tested agains the allowed walues, otherwise\n * serice throws. SportUrlParam.Featured which is being used only to force sports with compeittion landing page to\n * generate sport featured url and the context is not used in the url\n * @param {SportUrlParam.Competitions} subContext the sub-context for the url generation, only allowed way is SportUrlParam.Competitions\n * and when used will generate urls for competitions list for specific context\n * @returns {string} url for the requested params\n * @throws when specified context is not a valid token\n * @example\n * // all the examples suppose that the language is de and golf is configured to have competition landing page\n *\n * // returns /de/sports/alle\n * urlHelper.getSportUrl();\n *\n * // returns /de/sports/fußball-4\n * urlHelper.getSportUrl(football);\n * urlHelper.getSportUrl(football, SportUrlParam.Featured);\n *\n * // returns /de/sports/golf-13?fallback=true\n * urlHelper.getSportUrl(golf);\n *\n * // returns /de/sports/golf-13\n * urlHelper.getSportUrl(golf, SportUrlParam.Featured);\n *\n * // returns /de/sports/fußball-4/nach-2-tagen\n * urlHelper.getSportUrl(football, CalendarUrlParam.After3day);\n * urlHelper.getSportUrl(football, 'nach-2-tagen');\n *\n * // returns /de/sports/fußball-4/wetten/wettbewerben\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, SportUrlParam.Competitions);\n *\n * // returns /de/sports/fußball-4/kalendar\n * urlHelper.getSportUrl(football, SportUrlParam.Calendar);\n */\n getSportUrl(sport?: UrlParam, context?: string | SportUrlParam | CalendarUrlParam, subContext?: SportUrlParam.Competitions): string;\n /**\n * Used to generate sport fixture list pages with different contexts and levels\n *\n * @param {UrlParam} sport sport for which we want to generate the url\n * @param {string | SportUrlParam | CalendarUrlParam} context context for which we want to generate the url for, can be a translated\n * token (from PrettyUrlsConfig.translations) or a SportUrl param, and the value will be tested agains the allowed walues, otherwise\n * serice throws.\n * @param {UrlParam} region the region for which we want the fixture list to be filtered\n * @param {UrlParam} league the league (or virtual competition) for which we want the fixture list to be filtered\n * @param {UrlParam} group the group (virtual competition group) or conference for which we want the fixture list to be filtered\n * @param {tab} tab the tab of the specific market offer (matches/outrights/specials) for which we want the fixture list to be filtered\n * @param {shouldApplyFallback} shouldApplyFallback should {sportId}?fallback=true to be applied for special sports\n * @returns {string} url for the requested params\n * @throws when specified context is not a valid token\n * @example\n * // returns /de/sports/fußball-4/nach-2-tagen\n * urlHelper.getSportUrl(football, CalendarUrlParam.After3day);\n * urlHelper.getSportUrl(football, 'nach-2-tagen');\n *\n * // returns /de/sports/fußball-4/wetten/welt-6\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world);\n *\n * // returns /de/sports/fußball-4/wetten/welt-6/bundesliga-43\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world, bundesliga);\n *\n * // returns /de/sports/fußball-4/wetten/welt-6/bundesliga-43\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world, bundesliga);\n *\n * // returns /de/sports/fußball-4/wetten/welt-6/weltmeisterschaft-100\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world, worldCup);\n *\n * // returns /de/sports/fußball-4/wetten/welt-6/weltmeisterschaft-100/gruppe-a-1\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world, worldCup, groupA);\n *\n * // returns /de/sports/fußball-4/wetten/welt-6/weltmeisterschaft-100/gruppe-a-1?tab=outrights\n * urlHelper.getSportUrl(football, SportUrlParam.Betting, world, worldCup, groupA, 'outrights');\n */\n getSportUrl(\n sport?: UrlParam,\n context?: string | SportUrlParam | CalendarUrlParam,\n region?: UrlParam,\n league?: UrlParam,\n group?: UrlParam,\n tab?: string,\n shouldApplyFallback?: boolean,\n ): string;\n\n getSportUrl(\n sport?: UrlParam,\n context?: string,\n regionOrSubContext?: UrlParam | string,\n league?: UrlParam,\n group?: UrlParam,\n tab?: string,\n shouldApplyFallback: boolean = true,\n ): string {\n if (!sport) {\n return this.getBuilder(this.urlConfig.translations.all).toString();\n }\n\n const builder = this.getSportBuilder(sport);\n // we need to bypass the additional checks so we use the Featured context on the caller\n if (context === SportUrlParam.Featured || (!context && this.device.isRobot)) {\n return builder.toString();\n }\n\n if (!context) {\n const fallback = shouldApplyFallback && includes(this.sportConfig.competitionLandingPage, toNumber(sport.id));\n if (!this.azSportsData.azSports.find((item) => item.activeName === sport.name)) {\n return builder.appendQuery({ fallback: fallback || undefined }).toString();\n } else if (this.azSportsData.azSports.length) {\n return this.azSportsData.azSports.filter((item) => item.activeName === sport.name)[0].link;\n }\n }\n\n const appendContext = () => {\n if (keys(this.urlConfig.translations).some((current) => current === context)) {\n // check if context is a non translated token\n builder.append(this.urlConfig.translations[context!]);\n } else if (values(this.urlConfig.translations).some((current) => current === context)) {\n // check if context is a translated token\n builder.append(context!);\n } else {\n throw new Error('Context is not valid value');\n }\n\n return builder;\n };\n\n if (regionOrSubContext === SportUrlParam.Competitions) {\n appendContext().append(this.urlConfig.translations.competitions);\n } else {\n if (sport.id === SportConstant.Horses || sport.id === SportConstant.Greyhounds) {\n throw new Error(`Context is not valid for ${sport.id === SportConstant.Horses ? 'horse' : 'greyhounds'} racing`);\n } else if (context === SportUrlParam.Antepost) {\n return builder.append(this.urlConfig.translations.eachWay).toString();\n } else {\n appendContext();\n }\n\n if (regionOrSubContext) {\n builder.append(regionOrSubContext);\n\n if (league) {\n builder.append(league);\n\n if (group) {\n builder.append(group);\n }\n }\n }\n }\n\n if (tab) {\n builder.appendQuery({ tab });\n }\n\n return builder.toString();\n }\n\n getPopupUrl(popupName: string): string {\n const url = this.urlService.current();\n url.search.set('popup', popupName);\n\n return url.url();\n }\n\n getFavouriteUrl(name?: string): string {\n const builder = this.getBuilder(this.urlConfig.translations.favourites);\n\n if (name) {\n builder.append(name);\n }\n\n return builder.toString();\n }\n\n getFavouriteUrlByUrlParam(favouritesUrlParam: FavouritesDashboardUrlParam): string {\n const builder = this.getBuilder(this.urlConfig.translations.favourites);\n const name = this.urlConfig.translations[favouritesUrlParam];\n if (name) {\n builder.append(name);\n }\n\n return builder.toString();\n }\n\n getRaceUrl(sportId: SportConstant, param: RacingUrlParam | UrlParam, filterOrRace?: RacingUrlParam | UrlParam): string {\n const sport = {\n id: sportId,\n name:\n sportId === SportConstant.Horses ? this.sitecore.horseRacing.common.HorsesLinkText : this.sitecore.horseRacing.common.GreyhoundRacing,\n };\n\n const builder = this.getSportBuilder(sport);\n\n if (\n param === RacingUrlParam.Future ||\n param === RacingUrlParam.Today ||\n param === RacingUrlParam.Tomorrow ||\n param === RacingUrlParam.NextRaces\n ) {\n const url = builder.append(this.urlConfig.translations[param]).toString();\n\n return url;\n }\n\n return this.getRacingUrl(param, builder, filterOrRace);\n }\n\n protected getRacingUrl(param: RacingUrlParam | UrlParam, builder: UrlBuilder, filterOrRace?: RacingUrlParam | UrlParam): string {\n if ('id' in (param as UrlParam)) {\n builder.append(param);\n filterOrRace = filterOrRace || RacingUrlParam.Today;\n\n for (const filter of [RacingUrlParam.Today, RacingUrlParam.Tomorrow]) {\n if (filterOrRace === filter || filterOrRace === this.urlConfig.translations[filter]) {\n builder.append(this.urlConfig.translations[filter]);\n }\n }\n if (typeof filterOrRace !== 'string' && 'id' in filterOrRace) {\n builder.append(filterOrRace);\n }\n\n return builder.toString();\n } else {\n throw new Error('Param is not valid for horse racing');\n }\n }\n\n getRacingUrlByFixture(\n sportId: SportConstant,\n fixtureLike: Pick,\n dayOfRace?: DayOfRaceDate,\n isAllRaceUrl = false,\n ): string {\n const meetingParam = {\n id: fixtureLike.meeting.id,\n name: translationToStr(fixtureLike.meeting.name),\n };\n\n if (isAllRaceUrl) {\n const dayRoute = (dayOfRace === DayOfRaceDate.Today ? RacingUrlParam.Today : RacingUrlParam.Tomorrow).concat('/all');\n const allRaceParam = {\n id: dayRoute,\n name: dayRoute,\n };\n\n return this.getRaceUrl(sportId, meetingParam, allRaceParam);\n }\n\n return this.getRaceUrl(sportId, meetingParam, { id: fixtureLike.id, name: '' });\n }\n\n getBuilder(...params: UrlSegmentParam[]): UrlBuilder {\n return this.getBuilderInternal(params);\n }\n\n protected getBuilderInternal(params: UrlSegmentParam[], caseSensitive: boolean = false): UrlBuilder {\n const normalizer = new SegmentNormalizer(this.urlConfig, caseSensitive);\n\n const builder = new UrlBuilder(normalizer);\n\n builder.append(this.page.lang).append(this.productPath);\n params.forEach((param) => builder.append(param));\n\n return builder;\n }\n\n protected getSportBuilder(...params: UrlSegmentParam[]): UrlBuilder {\n return this.getBuilder(...params);\n }\n\n getAbsolute(relativeUrl: string = ''): string {\n const url = this.urlService.current();\n let absUrl = `${url.protocol}://${url.hostname}`;\n if (!relativeUrl) {\n absUrl += this.prefix;\n }\n absUrl += relativeUrl;\n\n return absUrl;\n }\n\n getLastSegment(url: string): string {\n const parsed = this.urlService.parse(url);\n\n return parsed.pathname.split('/').pop() || parsed.pathname;\n }\n\n getQueryParams(url?: string): QuerySearchParams | undefined {\n if (url) {\n return this.urlService.parse(url).search;\n }\n\n return;\n }\n\n private prependPrefix(url: string): string {\n const isEsports = url.indexOf(this.esportsTranslation) !== -1;\n if (url.indexOf(this.prefix) === -1 && !isEsports) {\n return this.prefix + url;\n }\n\n return url;\n }\n\n private get prefix(): string {\n return `/${this.page.lang}/${this.productPath}`;\n }\n\n private get esportsTranslation(): string {\n return this.urlConfig.translations.esports;\n }\n\n get productPath(): string {\n return this.sportsProductService.isSingleDomain ? this.sportsProductService.sportsProductName : this.page.product;\n }\n}\n","export enum CalendarFilterTracking {\n Live = 'Live',\n Today = 'Today',\n Tomorrow = 'Tomorrow',\n In30minutes = 'In 30 Min',\n In3Hours = 'In 3 Hrs',\n In60Minutes = 'In 60 Min',\n In2Days = 'In 2 Days',\n In3Days = 'In 3 Days',\n}\n","import { Injectable } from '@angular/core';\n\nimport { PrettyUrlsConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { DateProviderService } from '@frontend/sports/common/core/utils/date';\nimport { IntlService } from '@frontend/vanilla/core';\n\nimport { CountIntervalService, IntervalFilter } from './count-interval.service';\nimport { CalendarFilterTracking } from './model';\n\n@Injectable({ providedIn: 'root' })\nexport class CalendarIntervalService {\n readonly dayOffset = 24 * 60;\n\n constructor(\n protected countIntervalService: CountIntervalService,\n private intlService: IntlService,\n protected sitecore: Sitecore,\n protected urlConfig: PrettyUrlsConfig,\n ) {}\n\n getCalendarIntervals(): Record {\n const { translations } = this.urlConfig;\n const { globalMessages } = this.sitecore;\n\n return {\n live: { name: translations.live, title: globalMessages.NavLive, live: true, trackingSource: CalendarFilterTracking.Live, key: 'live' },\n today: this.countIntervalService.intervalStartOfDay(\n translations.today,\n 0,\n this.dayOffset,\n globalMessages.NavToday,\n 'today',\n CalendarFilterTracking.Today,\n ),\n tomorrow: this.countIntervalService.intervalStartOfDay(\n translations.tomorrow,\n this.dayOffset,\n this.dayOffset * 2,\n globalMessages.Tomorrow,\n 'tomorrow',\n CalendarFilterTracking.Tomorrow,\n ),\n after2days: this.countIntervalService.intervalStartOfDay(\n translations.after2days,\n this.dayOffset * 2,\n this.dayOffset * 3,\n this.getDate(2),\n 'after2days',\n CalendarFilterTracking.In2Days,\n ),\n after3days: this.countIntervalService.intervalStartOfDay(\n translations.after3days,\n this.dayOffset * 3,\n this.dayOffset * 4,\n this.getDate(3),\n 'after3days',\n CalendarFilterTracking.In3Days,\n ),\n in30minutes: this.countIntervalService.intervalStartingNow(\n translations.in30minutes,\n 0,\n 30,\n `${globalMessages.StartingIn} 30'`,\n 'in30minutes',\n CalendarFilterTracking.In30minutes,\n ),\n in60minutes: this.countIntervalService.intervalStartingNow(\n translations.in60minutes,\n 0,\n 60,\n `${globalMessages.StartingIn} 60'`,\n 'in60minutes',\n CalendarFilterTracking.In60Minutes,\n ),\n in180minutes: this.countIntervalService.intervalStartingNow(\n translations.in180minutes,\n 0,\n 180,\n `${globalMessages.StartingIn} 180'`,\n 'in180minutes',\n CalendarFilterTracking.In3Hours,\n ),\n };\n }\n\n /**\n * Returns a date that is relative to the current date by the number of daysFromCurrentDate. It is formatted with a given format or 'shortDate'.\n *\n * @param [daysFromCurrentDate=0]\n * @param [format]\n * @returns\n *\n * @memberOf Calendar\n */\n getDate(daysFromCurrentDate: number = 0, format?: string): string {\n let date = DateProviderService.getDate();\n format = format || 'shortDate';\n\n if (daysFromCurrentDate > 0) {\n date = new Date(date.setDate(date.getDate() + daysFromCurrentDate));\n }\n\n return this.intlService.formatDate(date, format) || '';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BettingOfferApi } from '@frontend/sports/betting-offer/feature/offer-service';\nimport { CalendarConfig, CalendarData, PrettyUrlsConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { DateProviderService } from '@frontend/sports/common/core/utils/date';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { SportsTimeFilterRestriction } from '@frontend/sports/types/components/calendar';\nimport { IntlService, LoadingIndicatorService } from '@frontend/vanilla/core';\nimport { now, orderBy, sumBy, values } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { CalendarUrlParam, UrlHelperService } from '../navigation-core/url-helper.service';\nimport { CalendarIntervalService } from './calendar-interval.service';\nimport { CountIntervalService, IntervalCount, IntervalFilter, IntervalLink, SportIntervalCounts } from './count-interval.service';\n\nexport enum CalendarLayout {\n MiniCarousel = 'MiniCarousel',\n Stacked = 'Stacked',\n TilesCarousel = 'TilesCarousel',\n}\n\nexport enum CalendarPage {\n Featured = 'Featured',\n Competitions = 'Competitions',\n SportsCalendar = 'SportsCalendar',\n LiveCalendar = 'LiveCalendar',\n AtozSports = 'AtozSports',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CalendarService {\n constructor(\n private bettingService: BettingOfferApi,\n private countIntervalService: CountIntervalService,\n private indicatorService: LoadingIndicatorService,\n private intlService: IntlService,\n private calendarIntervalService: CalendarIntervalService,\n private urlConfig: PrettyUrlsConfig,\n private urlHelper: UrlHelperService,\n public sitecore: Sitecore,\n private calendarData: CalendarData,\n private calendarConfig: CalendarConfig,\n ) {}\n\n getInterval(name?: string): IntervalFilter | undefined {\n return values(this.getCalendarIntervals())\n .filter((current) => current.name === name)\n .pop();\n }\n\n isInterval(name?: string): boolean {\n const { translations } = this.urlConfig;\n\n return [\n translations.today,\n translations.tomorrow,\n translations.after2days,\n translations.after3days,\n translations.in30minutes,\n translations.in60minutes,\n translations.in180minutes,\n translations.next2days,\n translations.next3days,\n translations.next5days,\n translations.midWeek,\n translations.thisWeekend,\n ].some((current) => current === name);\n }\n\n getTimeInterval(name?: string): { from?: string; to?: string } | undefined {\n const current = this.getInterval(name);\n\n if (current) {\n return {\n from: current.from?.toISOString(),\n to: current.to?.toISOString(),\n };\n }\n\n return;\n }\n\n /**\n * Returns a date that is relative to the current date by the number of daysFromCurrentDate. It is formatted with a given format or 'shortDate'.\n *\n * @param [daysFromCurrentDate=0]\n * @param [format]\n * @returns\n *\n * @memberOf Calendar\n */\n getDate(daysFromCurrentDate: number = 0, format?: string): string {\n let date = DateProviderService.getDate();\n format = format || 'shortDate';\n\n if (daysFromCurrentDate > 0) {\n date = new Date(date.setDate(date.getDate() + daysFromCurrentDate));\n }\n\n return this.intlService.formatDate(date, format) || '';\n }\n\n getCalendarCounts(sportId?: string): Observable {\n const indicator = this.indicatorService.start();\n try {\n const intervals = this.getCalendarIntervals();\n\n return this.countIntervalService.getCountsForSport(intervals, sportId);\n } finally {\n indicator.done();\n }\n }\n\n isCalendarAvailable(sportId: string): Observable {\n const intervals = this.getCalendarIntervals();\n const params = this.countIntervalService.buildRequestParameters(\n {\n calendar: {\n from: intervals.today.from,\n to: intervals.after3days.to,\n title: 'calendar',\n name: 'calendar',\n key: 'calendar',\n },\n },\n sportId,\n );\n\n return this.bettingService.getBatchCounts(params).pipe(\n map((result) => {\n const tags = result ? result.calendar : [];\n\n return !!sumBy(tags, (tag) => tag.preMatch + tag.live);\n }),\n );\n }\n\n getCalendarIntervals(): Record {\n return this.calendarIntervalService.getCalendarIntervals();\n }\n\n getCalendarLinks(pageName: CalendarPage, sport?: UrlParam, activeLink?: string): IntervalLink[] {\n const time = now();\n const intervals = this.getCalendarIntervals();\n const intervalsPage = this.getSitecoreIntervals(intervals, pageName, sport);\n const links = intervalsPage.map((key) => this.getUrl(key, intervals[key], sport, activeLink)).filter(isDefined);\n\n return orderBy(links, [(link) => (!link.to || link.to.getTime() < time ? time : link.to)], ['asc']);\n }\n\n private getSitecoreIntervals(intervals: { [key: string]: IntervalFilter }, pageName: CalendarPage, sport?: UrlParam): string[] {\n switch (pageName) {\n case CalendarPage.Featured:\n return this.getPageIntervals(intervals, this.calendarData.calendarItems.featurePage, sport);\n\n case CalendarPage.Competitions:\n return this.getPageIntervals(intervals, this.calendarData.calendarItems.competitionPage, sport);\n\n case CalendarPage.AtozSports:\n return this.getIntervalForAllSports(this.calendarData.calendarItems.atoZPage);\n default:\n return [];\n }\n }\n\n private getIntervalForAllSports(intervals: string[]): string[] {\n const keyList: string[] = [];\n\n intervals.forEach((detail) => {\n keyList.push(detail);\n });\n\n return keyList;\n }\n\n private getPageIntervals(intervals: { [key: string]: IntervalFilter }, sportDetails: SportsTimeFilterRestriction[], sport?: UrlParam): string[] {\n const keyList: string[] = [];\n\n sportDetails.forEach((detail) => {\n let intervalKey: string | undefined = '';\n if (detail.allSports) {\n intervalKey = intervals[detail.timeFilter] ? detail.timeFilter : undefined;\n } else if (detail.sports.find((k) => k.name?.toLowerCase() === sport?.name.toLowerCase())) {\n intervalKey = intervals[detail.timeFilter] ? detail.timeFilter : undefined;\n }\n if (intervalKey) {\n keyList.push(intervalKey);\n }\n });\n\n return keyList;\n }\n\n getUrl(\n key: string,\n interval: IntervalFilter | IntervalCount,\n sport: UrlParam | undefined,\n activeLink?: string,\n region?: UrlParam,\n league?: UrlParam,\n ): IntervalLink | undefined {\n let url: string;\n\n if (key === 'live') {\n return;\n } else {\n if (sport) {\n url = region ? this.urlHelper.getSportUrl(sport, interval.name, region, league) : this.urlHelper.getSportUrl(sport, interval.name);\n } else {\n url = this.urlHelper.getCalendarUrl(interval.name);\n }\n\n interval.date = this.intlService.formatDate(interval.from!, this.calendarConfig.topMenuDateFormat) || '';\n interval.title = this.getIntervalTitle(key, interval);\n }\n\n interval.icon = this.sitecore.globalMessages.SportsCalendarIcon;\n interval.active = interval.name === activeLink;\n\n return { ...interval, url };\n }\n\n getIntervalTitle(key: string, interval: IntervalFilter): string {\n switch (key) {\n case CalendarUrlParam.In30minutes:\n return this.sitecore.globalMessages.in30Minutes;\n case CalendarUrlParam.In60minutes:\n return this.sitecore.globalMessages.in60Minutes;\n case CalendarUrlParam.In180minutes:\n return this.sitecore.globalMessages.in180Minutes;\n case CalendarUrlParam.After2days:\n return this.sitecore.globalMessages.After2Days;\n case CalendarUrlParam.After3days:\n return this.sitecore.globalMessages.After3Days;\n default:\n return interval.title;\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { ParticipantImage } from '@cds/betting-offer';\nimport { MasterDataInfoResponse } from '@cds/betting-offer/domain-specific';\nimport { MasterDataInfoRequest } from '@cds/query-objects';\nimport { ExpiringCache, ExpiringCacheFactory } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { NumberDictionary, StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\nimport { BaseCdsApi, BaseCdsApiFactory, CDS_API_FACTORY } from '@frontend/sports/content-distribution/feature';\nimport { CompetitionDetail } from '@frontend/sports/types/components/team-pages';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class MasterdataApiService {\n private teamsByComepetitionCache: ExpiringCache;\n private cdsApi: BaseCdsApi;\n\n constructor(@Inject(CDS_API_FACTORY) cdsApiServiceFactory: BaseCdsApiFactory, cacheFactory: ExpiringCacheFactory) {\n this.cdsApi = cdsApiServiceFactory({ endpoint: '/masterdata' });\n this.teamsByComepetitionCache = cacheFactory.create(600);\n }\n\n getCompetitionsAndTeamsCount(competitions: CompetitionDetail[]): Observable {\n return this.getCompetitionCount(competitions).pipe(\n map((response) => {\n if (!response) {\n return [];\n }\n\n return competitions.filter((c) => response[c.competitionId]);\n }),\n );\n }\n\n getCompetitionCount(competitions: CompetitionDetail[]): Observable | undefined> {\n const compIds = competitions.map((s) => s.competitionId).join(',');\n const source = this.cdsApi.get>('/competitions/participants/counts/v2', { competitionIds: compIds });\n\n return this.teamsByComepetitionCache.getOrCreate(`team-pages-competitions-${compIds}`, source);\n }\n\n getImagesInfo(sportId: number, participantIds: number[]): Observable[] | undefined> {\n const participants = participantIds.map((s) => s).join(',');\n const source = this.cdsApi.get[]>('/info/participants', { sportId, participantIds: participants });\n\n return this.teamsByComepetitionCache.getOrCreate(`team-pages-participants-${participantIds}`, source);\n }\n\n getVirtualCompetitionInfo(request: MasterDataInfoRequest): Observable {\n return this.cdsApi.get('/info/virtual-competition', request);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TagCount } from '@cds/betting-offer/tags';\nimport { BettingOfferApi } from '@frontend/sports/betting-offer/feature/offer-service';\nimport { ClientCachingConfig, TeamPagesConfig, TeamPagesModuleConfig } from '@frontend/sports/common/client-config-data-access';\nimport { CountItem, sportModelMethods } from '@frontend/sports/common/core/data-access/sport-model';\nimport { ExpiringCache } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { first, map, switchMap } from 'rxjs/operators';\n\nimport { MasterdataApiService } from '../cds/cds-masterdata-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SportsCacheService {\n private liveSportList: ExpiringCache = new ExpiringCache(this.clientCachingConfig.liveSportListTimeout);\n private sportListCache: ExpiringCache = new ExpiringCache(this.clientCachingConfig.sportListTimeout);\n private sportItemCache: ExpiringCache = new ExpiringCache(this.clientCachingConfig.sportTimeout);\n\n constructor(\n private clientCachingConfig: ClientCachingConfig,\n private bettingContent: BettingOfferApi,\n private teamPagesData: TeamPagesModuleConfig,\n private teamPagesConfig: TeamPagesConfig,\n private masterdataApi: MasterdataApiService,\n userService: UserService,\n ) {\n userService.onAuthenticationChange$.pipe(filterSportsEmitLast()).subscribe(() => {\n this.sportListCache.clear();\n });\n }\n\n getSportList(): Observable {\n const source = this.bettingContent.getSportList().pipe(map((result) => sportModelMethods.fromTag(result)));\n\n return this.sportListCache.getOrCreate('sport-list', source);\n }\n\n getLiveSportList(): Observable {\n const source = this.bettingContent.getLiveSportList().pipe(map((result) => sportModelMethods.fromTag(result)));\n\n return this.liveSportList.getOrCreate('live-sport-list', source);\n }\n\n getSport(id: number, competitionId?: number, conferenceId?: number, includeDynamicCategories?: boolean): Observable {\n const sportSource = forkJoin([this.bettingContent.getSport(id, includeDynamicCategories), this.isTeamPagesEnabled(id)]);\n\n return this.sportItemCache.getOrCreate(`sport-${id}${includeDynamicCategories ? `-withDynamicCategories` : ''}`, sportSource).pipe(\n switchMap(([tag, team]) =>\n this.getConference(conferenceId, competitionId, undefined, includeDynamicCategories).pipe(\n map((conference) => {\n const sport = sportModelMethods.fromTag((tag || []).concat(conference || [])).pop();\n if (sport) {\n return {\n ...sport,\n meta: {\n ...sport.meta,\n teamPages: team,\n },\n };\n }\n\n return;\n }),\n ),\n ),\n );\n }\n\n // TODO: New call to bettingoffer/counts is needed because CDS requires CopmetitionId to process Conferences\n // Revert these changes when CDS starts returning Conferences counts per SportId\n getConference(\n conferenceId?: number,\n competitionId?: number,\n interval?: { from?: string; to?: string },\n includeDynamicCategories?: boolean,\n ): Observable {\n if (!conferenceId || !competitionId) {\n return of(undefined);\n }\n\n const conference = this.bettingContent.getCountsForConference(conferenceId, competitionId, interval, includeDynamicCategories);\n\n return !interval\n ? this.sportItemCache.getOrCreate(\n `competition-${competitionId}-conference-${conferenceId}${includeDynamicCategories ? `-withDynamicCategories` : ''}`,\n conference,\n )\n : conference;\n }\n\n getAllSportsList(): Observable {\n const result = forkJoin([this.getSportList(), this.getLiveSportList()]).pipe(\n map(([latestSports, liveSports]) => {\n const allSports = new Array();\n allSports.push(...latestSports);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let index = 0; index < allSports.length; index++) {\n if (liveSports.find((x) => x.id === allSports[index].id)) {\n allSports[index] = liveSports.find((x) => x.id === allSports[index].id)!;\n } else {\n allSports[index].counts.live = 0;\n }\n }\n\n return allSports;\n }),\n );\n\n return result;\n }\n\n private isTeamPagesEnabled(sportId: number) {\n const id = Number(sportId);\n const isTeamPagesEnabledForSport = this.teamPagesConfig.whitelistedSports.includes(id);\n\n if (this.teamPagesConfig.isEnabled && isTeamPagesEnabledForSport) {\n return this.teamPagesData.whenReady.pipe(\n first(),\n switchMap(() => {\n const sports = this.teamPagesData.teamPageItems.sportDetails;\n const competitions = sports?.find((s) => s.sportId === sportId)?.competitionDetails;\n if (competitions?.length) {\n return this.masterdataApi.getCompetitionsAndTeamsCount(competitions).pipe(\n map((p) => {\n return p.length > 0;\n }),\n );\n }\n\n return of(false);\n }),\n );\n }\n\n return of(false);\n }\n}\n","export enum RouteTag {\n AntepostFixture = 'AntepostFixture',\n Competition = 'Competition',\n CouponDetails = 'CouponDetails',\n Coupons = 'Coupons',\n EventDetails = 'EventDetails',\n Featured = 'Featured',\n HorseRaceDetails = 'HorseRaceDetails',\n GreyhoundRaceDetails = 'GreyhoundRaceDetails',\n Horses = 'Horses',\n RacingFuture = 'RacingFuture',\n RacingToday = 'RacingToday',\n RacingTomorrow = 'RacingTomorrow',\n RacingAntepostSpecials = 'RacingAntepostSpecials',\n RacingTodayResults = 'RacingTodayResults',\n RacingRaces = 'RacingRaces',\n Live = 'Live',\n LiveAll = 'LiveAll',\n LiveEsports = 'LiveEsports',\n LiveHighlights = 'LiveHighlights',\n LiveRegion = 'LiveRegion',\n LiveSport = 'LiveSport',\n LiveVideo = 'LiveVideo',\n LiveLeague = 'LiveLeague',\n LiveConference = 'LiveConference',\n Lobby = 'Lobby',\n MultiBuilder = 'MultiBuilder',\n MyBets = 'MyBets',\n Settings = 'Settings',\n SportList = 'SportList',\n SportLobby = 'SportLobby',\n VirtualFixture = 'VirtualFixture',\n MyTeams = 'MyTeams',\n TeamPages = 'TeamPages',\n HorsesBetFilterResults = 'HorsesBetFilterResults',\n EarlyPayoutSettings = 'EarlyPayoutSettings',\n GeneralBetslipSettings = 'GeneralBetslipSettings',\n WorldCupHub = 'WorldCupHub',\n EsportsLobby = 'EsportsLobby',\n TopScreenLobby = 'TopScreenLobby',\n MultiSportsLobby = 'MultiSportsLobby',\n}\n","export enum SchemaMarkupType {\n BreadcrumbList = 'BreadcrumbList',\n ListItem = 'ListItem',\n Place = 'Place',\n PostalAddress = 'PostalAddress',\n SportsEvent = 'SportsEvent',\n Thing = 'Thing',\n}\n","import { SchemaMarkupType } from './schema-markup-enum';\n\nexport class SeoMarkupConstants {\n static regionWorldCode = 'WRL';\n static ldJsonPrefix = 'ldJson_';\n static markupSchemaContext = 'http://schema.org';\n}\n\nexport class SeoGenericSchema {\n '@type': string;\n '@id': string;\n 'name': string;\n\n 'constructor'(type: SchemaMarkupType, name?: string, id?: string) {\n this['@type'] = type;\n if (name) {\n this.name = name;\n }\n if (id) {\n this['@id'] = id;\n }\n }\n}\n\nexport class SeoPlaceSchema extends SeoGenericSchema {\n address: SeoPostalAddressSchema;\n\n constructor(name: string, address: SeoPostalAddressSchema) {\n super(SchemaMarkupType.Place, name);\n this.address = address;\n }\n}\n\nexport class SeoSportsEventSchema extends SeoGenericSchema {\n '@context' = SeoMarkupConstants.markupSchemaContext;\n 'startDate': string;\n 'url': string;\n 'location': SeoPlaceSchema;\n\n 'constructor'(name: string, startDate: string, url: string, location: SeoPlaceSchema) {\n super(SchemaMarkupType.SportsEvent, name);\n this.startDate = startDate;\n this.url = url;\n this.location = location;\n }\n}\n\nexport class SeoPostalAddressSchema extends SeoGenericSchema {\n addressCountry: string;\n\n constructor(name: string, addressCountry: string, isRegion: boolean) {\n if (!isRegion) {\n super(SchemaMarkupType.PostalAddress, name);\n } else {\n super(SchemaMarkupType.PostalAddress);\n this.addressCountry = addressCountry;\n }\n }\n}\n\nexport class SeoLdJsonSchemaContainer {\n '@graph': Array | SeoBreadcrumbSchema;\n\n 'constructor'(graph: Array | SeoBreadcrumbSchema) {\n this['@graph'] = graph;\n }\n}\n\nexport class SeoItemSchema extends SeoGenericSchema {\n constructor(id: string) {\n super(SchemaMarkupType.Thing, '', id);\n }\n}\n\nexport class SeoListItemSchema extends SeoGenericSchema {\n item: SeoItemSchema;\n position: number;\n\n constructor(item: SeoItemSchema, name: string, position: number) {\n super(SchemaMarkupType.ListItem, name);\n this.item = item;\n this.position = position;\n }\n}\n\nexport class SeoBreadcrumbSchema extends SeoGenericSchema {\n '@context' = SeoMarkupConstants.markupSchemaContext;\n 'itemListElement': Array;\n\n 'constructor'(itemListElement: Array) {\n super(SchemaMarkupType.BreadcrumbList);\n this.itemListElement = itemListElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { concat, padStart, uniqBy } from 'lodash-es';\nimport { Subject, debounceTime } from 'rxjs';\n\nimport { BreadcrumbModel } from '../breadcrumbs/breadcrumb.models';\nimport { UrlHelperService } from '../navigation-core/url-helper.service';\nimport { SchemaMarkupType } from './schema-markup-enum';\nimport {\n SeoBreadcrumbSchema,\n SeoItemSchema,\n SeoLdJsonSchemaContainer,\n SeoListItemSchema,\n SeoMarkupConstants,\n SeoPlaceSchema,\n SeoPostalAddressSchema,\n SeoSportsEventSchema,\n} from './schema-markup.models';\n\n@Injectable({ providedIn: 'root' })\nexport class SchemaMarkupService {\n private readonly logger: SportsRemoteLogger;\n private events: Array;\n private moduleEvents$ = new Subject();\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n loggerFactory: LoggerFactory,\n private urlHelper: UrlHelperService,\n ) {\n this.logger = loggerFactory.getLogger('SchemaMarkupService');\n this.events = [];\n this.moduleEvents$.pipe(debounceTime(100), takeUntilDestroyed()).subscribe((_) => {\n this.addEventSchemaMarkup(this.events);\n });\n }\n\n private get document(): Document {\n return this._doc;\n }\n\n private addGenericSchemaMarkup(schemaMarkupType: SchemaMarkupType): HTMLScriptElement {\n const scriptElement = this.document.createElement('script');\n\n scriptElement.type = `application/ld+json`;\n scriptElement.id = `${SeoMarkupConstants.ldJsonPrefix}${schemaMarkupType}`;\n\n return scriptElement;\n }\n\n addBreadcrumbSchemaMarkup(breadcrumbs: BreadcrumbModel[]): void {\n if (breadcrumbs && breadcrumbs.length > 0) {\n const scriptElement = this.addGenericSchemaMarkup(SchemaMarkupType.BreadcrumbList);\n scriptElement.text = this.generateBreadcrumbSchema(breadcrumbs);\n if (scriptElement.text) {\n this.addSchemaMarkupScriptToBody(SchemaMarkupType.BreadcrumbList, scriptElement);\n }\n }\n }\n\n cleanEvents(): void {\n this.events = [];\n }\n\n addEventSchemaMarkup(events: Array): void {\n this.events = events;\n if (events && events.length > 0) {\n const scriptElement = this.addGenericSchemaMarkup(SchemaMarkupType.SportsEvent);\n if (this.isFixutreModel(events)) {\n scriptElement.text = this.generateFixtureSchema(events as Fixture[]);\n } else {\n scriptElement.text = this.generateEventSchema(events as EventModel[]);\n }\n this.addSchemaMarkupScriptToBody(SchemaMarkupType.SportsEvent, scriptElement);\n }\n }\n\n updateModuleEvents(fixtures: Array) {\n this.events = uniqBy(concat(this.events, fixtures), (f) => f.id);\n this.moduleEvents$.next();\n }\n\n private isFixutreModel(model: Array): boolean {\n return model && model.some((event) => event && 'context' in event && event['source']);\n }\n\n private generateBreadcrumbSchema(breadcrumbs: BreadcrumbModel[]): string {\n const listItemSchema: SeoListItemSchema[] = breadcrumbs\n .filter((crumb) => crumb.url)\n .map((crumb, index) => {\n return new SeoListItemSchema(new SeoItemSchema(this.urlHelper.getAbsolute(this.urlHelper.getUrl(crumb.url))), crumb.title, index);\n });\n\n if (listItemSchema.length > 0) {\n const breadCrumbsSchema = new SeoBreadcrumbSchema(listItemSchema);\n\n return this.generateLdJson(breadCrumbsSchema);\n }\n\n return '';\n }\n\n private generateLdJson(schema: Array | SeoBreadcrumbSchema): string {\n const ldJson = new SeoLdJsonSchemaContainer(schema);\n\n return JSON.stringify(ldJson);\n }\n\n private generateFixtureSchema(events: Fixture[]): string {\n const eventsSchema = events.map((fixture) =>\n this.generateSportEventSchemaObject(\n fixture.name.value,\n this.getIsoStringWithZone(new Date(fixture.startDate)),\n fixture.id,\n fixture.competition.name.value,\n fixture.region.name.value,\n fixture.region.code,\n ),\n );\n\n return this.generateLdJson(eventsSchema);\n }\n\n private generateEventSchema(events: EventModel[]): string {\n const eventsSchema = events.map((event) =>\n this.generateSportEventSchemaObject(\n event.name,\n this.getIsoStringWithZone(new Date(event.startDate)),\n event.id,\n event.league.name,\n event.region.name,\n event.region.code || '',\n ),\n );\n\n return this.generateLdJson(eventsSchema);\n }\n\n private generateSportEventSchemaObject(\n name: string,\n startDate: string,\n id: string,\n leagueName: string,\n regionName: string,\n regionCode: string,\n ): SeoSportsEventSchema {\n const isRegion = this.getRegion(regionCode);\n\n return new SeoSportsEventSchema(\n name,\n startDate,\n this.urlHelper.getAbsolute(this.urlHelper.getEventUrl({ id, name })),\n new SeoPlaceSchema(leagueName, new SeoPostalAddressSchema(leagueName, regionName, isRegion)),\n );\n }\n\n private getRegion(regionCode: string): boolean {\n let isRegion = false;\n if (regionCode && regionCode.toUpperCase() !== SeoMarkupConstants.regionWorldCode) {\n // if region is WORLD then region should be league name\n isRegion = true;\n }\n\n return isRegion;\n }\n\n private addSchemaMarkupScriptToBody(schemaType: SchemaMarkupType, script: HTMLScriptElement): void {\n try {\n this.removeSchemaMarkupScriptFromBody(schemaType);\n this.document.body.appendChild(script);\n } catch (error) {\n this.logger.error(error, 'Error adding Schema Markup script to view');\n }\n }\n\n removeSchemaMarkupScriptFromBody(schemaType: SchemaMarkupType): void {\n try {\n const ldJson = this.document.getElementById(`${SeoMarkupConstants.ldJsonPrefix}${schemaType}`);\n if (ldJson) {\n ldJson.remove();\n }\n } catch (error) {\n this.logger.error(error, 'Error Removing Schema Markup script from Body');\n }\n }\n\n private getIsoStringWithZone(date: Date): string {\n if (!date) {\n return '';\n }\n let timezoneOffSet = date.getTimezoneOffset();\n const negativeOffset = timezoneOffSet < 0;\n timezoneOffSet = Math.abs(timezoneOffSet);\n const offSetHrs = Math.floor(timezoneOffSet / 60);\n const offSetMin = Math.abs(timezoneOffSet % 60);\n let timezoneStandard = '';\n\n if (timezoneOffSet === 0) {\n timezoneStandard = 'Z';\n } else if (negativeOffset) {\n timezoneStandard = `+${this.padValue(offSetHrs)}:${this.padValue(offSetMin)}`;\n } else {\n timezoneStandard = `-${this.padValue(offSetHrs)}:${this.padValue(offSetMin)}`;\n }\n\n return date.toISOString().substring(0, 19) + timezoneStandard;\n }\n\n private padValue(val: number): string {\n return padStart(val.toString(), 2, '0');\n }\n}\n","import { MarqueeIndexedFixtureView } from '@cds/betting-offer/domain-specific';\nimport { MarqueeTile } from '@frontend/sports/types/components/content';\nimport { BetStationWidgetLayoutResponse, Widget, WidgetLayoutResponse, WidgetLocation } from '@frontend/sports/types/components/widget';\nimport { MarqueePayload } from '@frontend/sports/types/components/widget/types';\nimport { cloneDeep, isEqual, lastIndexOf, sortBy } from 'lodash-es';\n\nexport const LARGE_LAYOUT_BREAKPOINT = 'gt-md';\nexport const MEDIUM_LAYOUT_BREAKPOINT = 'gt-sm';\nexport const SMALL_LAYOUT_BREAKPOINT = 'lt-md';\n\nexport function forSlot(model: WidgetLayoutResponse | BetStationWidgetLayoutResponse, slot: WidgetLocation): Widget[] {\n return model?.widgets?.filter((config) => config.location === slot) || [];\n}\n\nexport function mergeMarqueePayload(regularMarqueePayload: MarqueePayload, personalizedMarqueePayload: MarqueePayload): MarqueePayload {\n const { combinedTiles, combinedFixtures } = getCombinedTilesAndFixtures(regularMarqueePayload, personalizedMarqueePayload);\n let orderedTiles = cloneDeep(combinedTiles);\n let orderedFixtures = cloneDeep(combinedFixtures);\n\n if (!personalizedMarqueePayload.isPersonalizedMarquee && personalizedMarqueePayload.tiles?.length) {\n orderedTiles = sortBy(combinedTiles, (tile) => {\n const sitecoreTemplateId = tile.trackingDetail.sitecoreTemplateId\n ? tile.trackingDetail.sitecoreTemplateId.substring(lastIndexOf(tile.trackingDetail.sitecoreTemplateId, '/') + 1)\n : '';\n return personalizedMarqueePayload.sitecoreIds.indexOf(sitecoreTemplateId);\n });\n\n orderedTiles.forEach((data, index) => {\n const combinedTileIndex = combinedTiles.findIndex((tile) => isEqual(tile, data));\n const combinedFixtureIndex = combinedFixtures.findIndex((fixture) => fixture.requestIndex === combinedTileIndex);\n if (combinedFixtureIndex > -1) {\n orderedFixtures[combinedFixtureIndex].requestIndex = index;\n }\n });\n\n orderedFixtures = sortBy(orderedFixtures, (fixture) => fixture.requestIndex);\n }\n\n return {\n backgroundContainerConfig: regularMarqueePayload.backgroundContainerConfig || personalizedMarqueePayload.backgroundContainerConfig,\n fixtures: orderedFixtures,\n globalLink: regularMarqueePayload.globalLink || personalizedMarqueePayload.globalLink,\n isPersonalizedMarquee: regularMarqueePayload.isPersonalizedMarquee || personalizedMarqueePayload.isPersonalizedMarquee,\n showAutomatedMarqueesOnEventPage:\n regularMarqueePayload.showAutomatedMarqueesOnEventPage || personalizedMarqueePayload.showAutomatedMarqueesOnEventPage,\n tiles: orderedTiles,\n sitecoreIds: [],\n };\n}\n\nfunction getCombinedTilesAndFixtures(\n regularMarqueePayload: MarqueePayload,\n personalizedMarqueePayload: MarqueePayload,\n): { combinedTiles: MarqueeTile[]; combinedFixtures: MarqueeIndexedFixtureView[] } {\n const combinedFixtures = [...(regularMarqueePayload.fixtures ?? [])];\n const combinedTiles = [...(regularMarqueePayload.tiles ?? [])];\n\n personalizedMarqueePayload.tiles?.forEach((data, index) => {\n const personalizedFixtureIndex = personalizedMarqueePayload.fixtures.findIndex((x) => x.requestIndex === index);\n combinedTiles.push(data);\n if (personalizedFixtureIndex > -1) {\n combinedFixtures.push({ ...personalizedMarqueePayload.fixtures[personalizedFixtureIndex], requestIndex: combinedTiles.length - 1 });\n }\n });\n\n return { combinedTiles, combinedFixtures };\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CountItem,\n ItemType,\n children,\n isVirtualCompetitionGroupItem,\n isVirtualCompetitionItem,\n} from '@frontend/sports/common/core/data-access/sport-model';\n\nimport { CompetitionRoute } from '../../../navigation/navigation.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompetitionIdService {\n getCompetitionId(sport: CountItem | undefined, params: CompetitionRoute): number | undefined {\n const competitionId = Array.isArray(params.league) ? params.league[0] : params.league;\n if (!sport || !params.isVirtual) {\n return competitionId;\n }\n\n return this.getRealVirtualCompetitionId(sport, params.region, competitionId, params.virtualCompetitionGroup);\n }\n\n getRealVirtualCompetitionId(\n sport: CountItem,\n regionId: number | undefined,\n virtualCompetitionId: number | undefined,\n virtualGroupId: number | undefined,\n ): number | undefined {\n const region = sport.children.find((item) => (item.type === ItemType.Region || item.type === ItemType.Tournament) && item.id === regionId);\n\n if (region) {\n const virtualCompetition = region.children.filter(isVirtualCompetitionItem).find((item) => item.id === virtualCompetitionId);\n if (virtualCompetition) {\n const virtualGroup = virtualCompetition.children.filter(isVirtualCompetitionGroupItem).find((item) => item.id === virtualGroupId);\n\n return virtualGroup ? virtualGroup.siblings[0] || virtualCompetition.realCompetitionId : virtualCompetition.siblings[0];\n }\n }\n\n return;\n }\n\n getCompoundId(sport: CountItem | undefined, leagueId: number | number[] | undefined): string | undefined {\n if (leagueId && sport) {\n const compoundId = children(sport, ItemType.Competition).find((p) => p.id === leagueId)?.compoundId;\n\n return compoundId;\n }\n\n return;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { GeolocationConfig } from '@frontend/sports/common/client-config-data-access';\nimport { CountItem } from '@frontend/sports/common/core/data-access/sport-model';\nimport { WidgetContext, WidgetPage } from '@frontend/sports/types/components/widget';\nimport { GeolocationService } from '@frontend/vanilla/core';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n\nimport { SportsCacheService } from '../../client-caching/sports-cache.service';\nimport { CompetitionIdService } from '../../event-list-shared/sport/competitions/competition-id.service';\n\nexport interface WidgetContextEnhancement {\n location?: string;\n realCompetitionId?: number;\n compoundCompetitionId?: string;\n}\n\ninterface EnhancedCompetitionId {\n realCompetitionId?: number;\n compoundCompetitionId?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetContextEnhanceService {\n constructor(\n private geolocation: GeolocationService,\n private geolocationConfig: GeolocationConfig,\n private bettingCache: SportsCacheService,\n private competitionIdService: CompetitionIdService,\n ) {}\n\n getEnhancedProperties(context: WidgetContext): Observable {\n return forkJoin([this.getCompetitionIds$(context), this.getGeolocation$()]).pipe(\n map(([competitionIds, location]) => {\n return {\n ...competitionIds,\n location,\n };\n }),\n );\n }\n\n private getCompetitionIds$(context: WidgetContext): Observable {\n if (context.page !== WidgetPage.CompetitionLobby) {\n return of(undefined);\n }\n\n return this.bettingCache.getSport(context.sportId!).pipe(\n map((sport) => {\n return sport\n ? {\n realCompetitionId: this.getRealVirtualCompetitionId(sport, context),\n compoundCompetitionId: this.getCompoundCompetitionId(sport, context),\n }\n : undefined;\n }),\n );\n }\n\n private getRealVirtualCompetitionId(sport: CountItem, context: WidgetContext): number | undefined {\n if (!context.virtualCompetitionId) {\n return undefined;\n }\n\n return this.competitionIdService.getRealVirtualCompetitionId(\n sport,\n context.regionId || context.tournamentId,\n context.virtualCompetitionId,\n context.virtualCompetitionGroupId,\n );\n }\n\n private getCompoundCompetitionId(sport: CountItem, context: WidgetContext): string | undefined {\n if (context.virtualCompetitionId) {\n return undefined;\n }\n\n return this.competitionIdService.getCompoundId(sport, context.competitionId);\n }\n\n private getGeolocation$(): Observable {\n if (!this.geolocationConfig.isGeolocationEnabled) {\n return of(undefined);\n }\n\n return this.geolocation.whenReady.pipe(\n first(),\n map(() => {\n return this.geolocation.currentPosition?.mappedLocation?.locationId || undefined;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { CDNCachingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { RouteTag } from '@frontend/sports/common/core/data-access/route';\nimport { usePreloaderData } from '@frontend/sports/common/core/utils/preloaded-data';\nimport { ScoreboardCarouselPayload } from '@frontend/sports/types/components/scoreboard-carousel/models';\nimport {\n LayoutSize,\n Widget,\n WidgetContext,\n WidgetLayoutResponse,\n WidgetPage,\n WidgetResponse,\n WidgetType,\n} from '@frontend/sports/types/components/widget';\nimport { ComposableWidgetPayload } from '@frontend/sports/types/components/widget/types';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { MediaQueryService } from '@frontend/vanilla/core';\nimport { includes, merge, uniqBy } from 'lodash-es';\nimport { EMPTY, Observable, combineLatest, defer, map, switchMap, take, tap } from 'rxjs';\n\nimport { SchemaMarkupService } from '../../schema-markup/schema-markup.service';\nimport { LARGE_LAYOUT_BREAKPOINT, MEDIUM_LAYOUT_BREAKPOINT, SMALL_LAYOUT_BREAKPOINT } from '../core/widget.constants';\nimport { WidgetContextEnhanceService } from './widget-context-enhance.service';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetContextService {\n private readonly sizes = new Map([\n [LARGE_LAYOUT_BREAKPOINT, LayoutSize.Large],\n [MEDIUM_LAYOUT_BREAKPOINT, LayoutSize.Medium],\n [SMALL_LAYOUT_BREAKPOINT, LayoutSize.Small],\n ]);\n\n private readonly pages = new Map([\n [RouteTag.Lobby, WidgetPage.HomeLobby],\n [RouteTag.SportLobby, WidgetPage.SportLobby],\n [RouteTag.EsportsLobby, WidgetPage.ESportsLobby],\n [RouteTag.Competition, WidgetPage.CompetitionLobby],\n [RouteTag.EventDetails, WidgetPage.EventDetailsPage],\n [RouteTag.MultiSportsLobby, WidgetPage.MultiSportsLobby],\n ]);\n\n private readonly widgetsWithFixturePayload = [WidgetType.NextToGo, WidgetType.TabbedGrid, WidgetType.OutrightsGrid];\n\n constructor(\n private api: ApiService,\n private media: MediaQueryService,\n private router: Router,\n private enhanceService: WidgetContextEnhanceService,\n private schemaMarkupService: SchemaMarkupService,\n private cdnCachingConfig: CDNCachingConfig,\n private userSerivce: UserService,\n ) {}\n\n // TODO Angular 14 update: Setting type for the context parameter is breaking the tests. Investigation needed.\n @usePreloaderData({\n preloader: (window).MS2JS?.ModularHomePageDataLoader,\n condition: (context: any) => {\n if (context.page === WidgetPage.HomeLobby) {\n return true;\n } else if (context.page === WidgetPage.SportLobby) {\n const preloader = (window).MS2JS?.ModularHomePageDataLoader;\n\n return (\n preloader?.requestContext() &&\n context.sportId === preloader.requestContext().sportId &&\n context.layoutSize === preloader.requestContext().layoutSize &&\n Object.keys(context).filter((k) => context[k] != null).length === 3\n );\n }\n\n return false;\n },\n })\n getLayout(context: any, enchanceContext: boolean = true): Observable {\n if (enchanceContext) {\n return this.enhanceContext(context).pipe(\n switchMap((enhanced) =>\n this.api.get('widget', this.userSerivce.isAuthenticated ? { ...enhanced, isAuth: '1' } : enhanced),\n ),\n );\n } else {\n return this.api.get('widget', this.userSerivce.isAuthenticated ? { ...context, isAuth: '1' } : context);\n }\n }\n\n getWidget(context: Partial, addSchemaMarkup = false, forceBatchCall = false): Observable> {\n return defer(() => {\n const params = this.getContext();\n if (!context.shouldIncludePayload || forceBatchCall) {\n return this.getWidgetBatch([context], params).pipe(map((widgets) => widgets?.[0] as Widget));\n }\n if (context.shouldIncludePersonalizedData) {\n return this.getPersonalizedWidgetData(context, params);\n }\n return this.getWidgetData(context, params);\n }).pipe(\n tap((widget) => {\n if (addSchemaMarkup && widget.payload && !(!context.shouldIncludePayload || forceBatchCall)) {\n this.updateSchemaMarkUpJson(widget);\n }\n }),\n );\n }\n\n preResolveWidgets(route: ActivatedRouteSnapshot) {\n const params = this.getContext({ snapshot: route });\n return this.getLayout(params).pipe(\n switchMap((layout) => {\n if (!layout.widgets) {\n return EMPTY;\n }\n return combineLatest(\n layout.widgets\n .filter((widget) => this.cdnCachingConfig.widgets.includes(widget.type))\n .flatMap((widget) => {\n const cdnContext = { widgetId: widget.id, shouldIncludePayload: true };\n if ([WidgetType.Marquee, WidgetType.OutrightsMarquee].includes(widget.type)) {\n return [\n this.getWidgetData(cdnContext, params),\n this.getPersonalizedWidgetData({ ...cdnContext, shouldIncludePersonalizedData: true }, params),\n ];\n }\n return [this.getWidgetData(cdnContext, params)];\n }),\n );\n }),\n take(1),\n );\n }\n\n getWidgetBatch(contexts: Partial[], params = this.getContext()): Observable[] | undefined> {\n return this.enhanceContext(params).pipe(\n switchMap((enhanced) => {\n const data = contexts.map((context) => merge({}, enhanced, context));\n\n return this.api.post('widget/batch', data, { params: enhanced });\n }),\n map((collection) => collection.widgets),\n );\n }\n\n private updateSchemaMarkUpJson(widget: Widget): void {\n const widgetsToConsider =\n widget.type === WidgetType.Composable\n ? (widget.payload as ComposableWidgetPayload)?.items?.flatMap(\n (slot) => slot?.activeChildren?.filter((w) => includes(this.widgetsWithFixturePayload, w?.type)) ?? [],\n )\n : [widget];\n\n const payload = uniqBy(\n widgetsToConsider.flatMap((w) => this.getFixtures(w)),\n (f) => f.id,\n );\n\n if (payload?.length) {\n this.schemaMarkupService.updateModuleEvents(payload);\n }\n }\n\n private getFixtures(widget: Widget): Fixture[] {\n if (widget.type === WidgetType.ScoreboardCarousel) {\n return (widget.payload as ScoreboardCarouselPayload).carouselEvents.map((ev) => ev.fixture);\n }\n\n return (widget.payload as { fixtures: Fixture[] }).fixtures;\n }\n\n private getWidgetData(context: Partial, params: WidgetContext): Observable> {\n return this.enhanceContext(params).pipe(\n switchMap((enhanced) => {\n const data = merge({}, enhanced, context);\n\n return this.api.get('widget/widgetdata', data);\n }),\n map((collection) => (collection.widgets?.length ? collection.widgets[0] : {}) as Widget),\n );\n }\n\n private getPersonalizedWidgetData(context: Partial, params: WidgetContext): Observable> {\n return this.enhanceContext(params).pipe(\n switchMap((enhanced) => {\n const data = merge({}, enhanced, context);\n\n return this.api.get('widget/personalizedWidgetData', data);\n }),\n map((collection) => (collection.widgets?.length ? collection.widgets[0] : {}) as Widget),\n );\n }\n\n getContext({ snapshot }: { snapshot?: ActivatedRouteSnapshot } = {}): WidgetContext {\n snapshot = snapshot || this.getRoute();\n\n const isTennis = snapshot.params.sport && snapshot.params.sport === SportConstant.Tennis;\n const isFakeRegion = snapshot.params.region === '10001' && snapshot.params.league;\n\n return {\n layoutSize: this.getSize(),\n page: this.getPage(snapshot.data.tag),\n sportId: snapshot.params.sport ? parseInt(snapshot.params.sport) : undefined,\n regionId: snapshot.params.region && !isTennis && !isFakeRegion ? parseInt(snapshot.params.region) : undefined,\n tournamentId: snapshot.params.region && isTennis ? parseInt(snapshot.params.region) : undefined,\n competitionId: !snapshot.params.isVirtual && snapshot.params.league ? parseInt(snapshot.params.league) : undefined,\n virtualCompetitionId: snapshot.params.isVirtual && snapshot.params.league ? parseInt(snapshot.params.league) : undefined,\n virtualCompetitionGroupId:\n snapshot.params.isVirtual && snapshot.params.virtualCompetitionGroup ? parseInt(snapshot.params.virtualCompetitionGroup) : undefined,\n fixtureId: snapshot.params.event ? snapshot.params.event : undefined,\n fixtureStage: snapshot.params.fixtureStage ? snapshot.params.fixtureStage : undefined,\n };\n }\n\n enhanceContext(context: WidgetContext): Observable {\n return this.enhanceService.getEnhancedProperties(context).pipe(\n map((additionalProps) => {\n return {\n ...context,\n ...additionalProps,\n };\n }),\n );\n }\n\n private getPage(tag: RouteTag): WidgetPage {\n const page = this.pages.get(tag);\n\n if (page) {\n return page;\n }\n\n throw new Error('Page not supported');\n }\n\n private getSize(): LayoutSize {\n for (const [query, size] of this.sizes) {\n if (this.media.isActive(query)) {\n return size;\n }\n }\n\n throw new Error('Layout configuration not supported');\n }\n\n private getRoute(): ActivatedRouteSnapshot {\n let route = this.router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n return route;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { CDNCachingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { WidgetLayoutResponse, WidgetType } from '@frontend/sports/types/components/widget';\nimport { ComposableWidgetPayload } from '@frontend/sports/types/components/widget/types';\nimport { flatten, includes, uniqBy } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\n\nimport { ISchemaMarkupResolver } from '../../schema-markup/schema-markup.resolver';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetSchemaMarkupResolver implements ISchemaMarkupResolver {\n private readonly widgetsWithFixtures = [WidgetType.NextToGo, WidgetType.TabbedGrid, WidgetType.OutrightsGrid];\n\n private readonly widgetsWithFixturesOrComposable = [...this.widgetsWithFixtures, WidgetType.Composable];\n\n constructor(private cdnCachingConfig: CDNCachingConfig) {\n this.widgetsWithFixturesOrComposable = this.widgetsWithFixturesOrComposable.filter((items) => !this.cdnCachingConfig.widgets.includes(items));\n this.widgetsWithFixtures = this.widgetsWithFixtures.filter((items) => !this.cdnCachingConfig.widgets.includes(items));\n }\n\n resolve(model: WidgetLayoutResponse): Observable> {\n if (!model?.widgets?.length) {\n return of([]);\n }\n\n const widgetsToConsider = flatten(\n model.widgets\n .filter((w) => includes(this.widgetsWithFixturesOrComposable, w?.type))\n .map((widget) =>\n widget.type === WidgetType.Composable\n ? (widget.payload as ComposableWidgetPayload)?.items?.flatMap(\n (slot) => slot?.activeChildren?.filter((w) => includes(this.widgetsWithFixtures, w?.type)) ?? [],\n )\n : [widget],\n ),\n );\n\n const uniqueFixtures = uniqBy(\n widgetsToConsider.flatMap((w) => (w.payload as { fixtures: Fixture[] }).fixtures),\n (f) => f.id,\n );\n\n return of(uniqueFixtures);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport { WidgetLayoutResponse } from '@frontend/sports/types/components/widget';\nimport { Observable } from 'rxjs';\n\nimport { WidgetContextService } from './widget-context.service';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetResolver {\n readonly #widgetContextService = inject(WidgetContextService);\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n return this.#widgetContextService.getLayout(this.#widgetContextService.getContext({ snapshot: route }));\n }\n\n preResolve(route: ActivatedRouteSnapshot) {\n this.#widgetContextService.preResolveWidgets(route).subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { NativeAppService, Page } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface PrettyUrlApiResponse {\n [language: string]: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NoMatchRouteGuard {\n constructor(\n private router: Router,\n private nativeAppService: NativeAppService,\n private apiService: ApiService,\n private page: Page,\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean {\n if (!this.nativeAppService.isNative) {\n return true;\n }\n const urlParams = {\n url: state.url,\n sourceLanguage: 'en',\n targetLanguages: this.page.lang,\n };\n\n return this.apiService.get('url', urlParams).pipe(\n map((result) => {\n if (result[this.page.lang] !== decodeURI(state.url)) {\n return this.router.parseUrl(result[this.page.lang]);\n }\n\n return true;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { SeoConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SimpleCallback } from '@frontend/sports/common/core/utils/extended-types';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { DeviceService } from '@frontend/vanilla/core';\nimport { clone } from 'lodash-es';\nimport { finalize } from 'rxjs/operators';\n\nexport interface LogRecord {\n source: string;\n url: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SeoLoggerService {\n private records: LogRecord[] = [];\n private recordsTimer?: SimpleCallback;\n\n constructor(\n private device: DeviceService,\n private api: ApiService,\n private timer: TimerService,\n private seo: SeoConfig,\n ) {}\n\n log(record: LogRecord): void {\n if (!this.device.isRobot || !this.seo.isClientCatchallLoggingEnabled) {\n return;\n }\n\n this.records.push(record);\n\n if (this.recordsTimer) {\n return;\n }\n\n this.recordsTimer = this.timer.setTimeout(() => {\n this.api\n .post('seo/log', { records: clone(this.records) })\n .pipe(\n finalize(() => {\n this.records.splice(0);\n this.recordsTimer = undefined;\n }),\n )\n .subscribe();\n }, this.seo.clientLoggingDebounce);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\n\nimport { SeoLoggerService } from './seo-logger.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SeoRedirectGuard {\n constructor(\n private router: Router,\n private logger: SeoLoggerService,\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): UrlTree {\n let node = route.parent;\n const segments: string[] = [];\n\n while (node) {\n segments.unshift(...node.url.map((segment) => segment.path));\n node = node.parent;\n }\n\n const url = `/${segments.join('/')}`;\n\n /**\n * we are logging the source url which triggered this guard and the resulting redirect url for\n * ex /en/sports/non-existent-route/non-exising-segment will be redirected to parent route /\n * so the logger will log\n *\n * { source: \"/en/sports/non-existent-route/non-exising-segment\", url: \"/\" }\n * this switing to parent route automaitcally also resolves the issues of url will wrong culture/area\n * like /en/wrong-area or /wrong-culture as the redirect to the parent / actually redirect to the propper\n * default /culture/area\n */\n\n this.logger.log({ source: state.url, url });\n\n return this.router.parseUrl(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport { Observable, firstValueFrom } from 'rxjs';\n\nimport { CalendarService } from './calendar.service';\nimport { SportIntervalCounts } from './count-interval.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CalendarResolver {\n constructor(private service: CalendarService) {}\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n return this.service.getCalendarCounts(route.params.sport);\n }\n\n preResolve(route: ActivatedRouteSnapshot) {\n firstValueFrom(this.service.getCalendarCounts(route.params.sport));\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ProductService, StylesService } from '@frontend/vanilla/core';\n\n@Injectable({ providedIn: 'root' })\nexport class StylesLazyLoadingService {\n private readonly stylesService = inject(StylesService);\n private readonly productService = inject(ProductService);\n\n async lazyLoad(aliasOrPath: string): Promise {\n if (this.productService.isSingleDomainApp) {\n return;\n }\n\n await this.stylesService.load(aliasOrPath);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, share } from 'rxjs/operators';\n\nimport { DomainEvent } from './dispatcher.models';\n\nexport type Action = (input: T) => void;\n\ninterface DispatcherSubscription {\n observable: Observable;\n}\n\n/* eslint-enable @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match */\n\n@Injectable({ providedIn: 'root' })\nexport class DispatcherService implements OnDestroy {\n protected listeners = new Map();\n private subject = new Subject<{ event: string; data: any }>();\n\n // dispatch listeners\n dispatch(event: DomainEvent | string, data?: T): void {\n const key = this.getKey(event);\n\n const subscription = this.listeners.get(key);\n if (!subscription) {\n // No need to dispatch something if no listeners\n return;\n }\n\n this.subject.next({ event: key, data });\n }\n\n /**\n * @inheritdoc\n */\n on(event: DomainEvent | string): Observable {\n const subscription = this.getOrCreateSubscription(event);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return subscription.observable;\n }\n\n ngOnDestroy(): void {\n this.subject.complete();\n }\n\n private getKey(evt: DomainEvent | string): string {\n return this.isDomainEvent(evt) ? evt.key : evt;\n }\n\n private getOrCreateSubscription(event: DomainEvent | string): DispatcherSubscription {\n const key = this.getKey(event);\n if (!this.listeners.has(key)) {\n this.listeners.set(key, {\n observable: this.subject.asObservable().pipe(\n filter((de) => de.event === key),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n map((_) => _.data),\n share(),\n ),\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unnecessary-type-assertion\n return this.listeners.get(key)!;\n }\n\n private isDomainEvent(evt: DomainEvent | string): evt is DomainEvent {\n return !!(evt as DomainEvent).key;\n }\n}\n","import { ComponentRef, NgModuleRef, Type, ViewContainerRef, inject } from '@angular/core';\n\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { LazyClientConfigBase } from '@frontend/vanilla/core';\nimport { assign } from 'lodash-es';\nimport { Observable, Subject, firstValueFrom, from, isObservable, of } from 'rxjs';\nimport { catchError, map, takeUntil, tap } from 'rxjs/operators';\n\nimport ModuleLoaderService from './module-loader.service';\nimport { StylesLazyLoadingService } from './styles/style-loading.service';\n\nexport interface ComponentProxy {\n /**\n * Will emit at most once.\n *\n * @memberof ComponentProxy\n */\n create(container: ViewContainerRef): Observable;\n\n destroy(): void;\n\n update(data: Partial): void;\n\n subscribeToOutputs(events: ComponentOutput): void;\n}\n\ntype ComponentLoadingInfo = () => Promise<{ module: NgModuleRef; type: Type }>;\n\ntype ComponentOutput = {\n readonly [P in keyof Partial]: Function;\n};\n\nclass ComponentProxyRef implements ComponentProxy {\n data: Partial = {};\n component?: ComponentRef;\n\n private destroy$ = new Subject();\n private outputs?: ComponentOutput;\n\n constructor(\n private componentLoadingInfo: ComponentLoadingInfo,\n private logger: SportsRemoteLogger,\n ) {}\n\n create(container: ViewContainerRef): Observable {\n return from(this.componentLoadingInfo()).pipe(\n tap((compLoadingInfo) => {\n container.clear();\n\n const component = container.createComponent(compLoadingInfo.type, { ngModuleRef: compLoadingInfo.module });\n\n this.component = component;\n\n if (this.data) {\n this.update(this.data);\n }\n\n if (this.outputs) {\n this.subscribeToOutputs(this.outputs);\n this.outputs = undefined;\n }\n }),\n map(() => {}),\n catchError((e) => {\n this.logger.error(e);\n\n return of();\n }),\n takeUntil(this.destroy$),\n );\n }\n\n update(data: Partial): void {\n this.data = assign(this.data, data);\n\n if (this.component) {\n for (const key in this.data) {\n this.component.setInput(key, this.data[key]);\n }\n\n this.component.changeDetectorRef.detectChanges();\n }\n }\n\n subscribeToOutputs(events: ComponentOutput): void {\n if (!this.component) {\n this.outputs = events;\n\n return;\n }\n\n const keys = Object.keys(events);\n for (const key of keys) {\n //@ts-ignore allow dynamic accessor, please don't use this, instead, use typing.\n const output = this.component.instance[key];\n if (isObservable(output)) {\n //@ts-ignore allow dynamic accessor, please don't use this, instead, use typing.\n output.pipe(takeUntil(this.destroy$)).subscribe(events[key]);\n }\n }\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n\nexport abstract class ComponentLoaderService {\n private logger: SportsRemoteLogger;\n\n private readonly stylesLazyLoadingService = inject(StylesLazyLoadingService);\n\n constructor(\n private moduleLoaderService: ModuleLoaderService,\n private loggerFactory: LoggerFactory,\n ) {\n this.logger = this.loggerFactory.getLogger('ComponentLoaderService');\n }\n\n abstract readonly moduleName: string;\n\n abstract getModule(): Promise>;\n\n protected getComponentProxy(\n typeSelector: (module: T) => Type,\n styleSheet?: string,\n ...lazyConfigs: LazyClientConfigBase[]\n ): ComponentProxyRef {\n const logger = this.loggerFactory.getLogger('ComponentLoaderService');\n\n const componentLoadingInfo = async () => {\n try {\n const stylesPromise = styleSheet ? this.stylesLazyLoadingService.lazyLoad(styleSheet) : Promise.resolve();\n const [module] = await Promise.all([\n firstValueFrom(this.moduleLoaderService.loadModule(this.moduleName, this.getModule, ...lazyConfigs)),\n stylesPromise,\n ]);\n const type = typeSelector(module.instance);\n\n return { module, type };\n } catch (e) {\n this.logger.error(e);\n throw e;\n }\n };\n\n return new ComponentProxyRef(componentLoadingInfo, logger);\n }\n}\n","import { Injectable, NgModuleRef, Type, createNgModule } from '@angular/core';\n\nimport { DispatcherService } from '@frontend/sports/common/core/utils/dispatcher';\nimport { SportsProductService } from '@frontend/sports/host-app/sports-product/feature/sports-product-service';\nimport { WidgetType } from '@frontend/sports/types/components/widget';\nimport { EventsService, LazyClientConfigBase } from '@frontend/vanilla/core';\nimport { uniq } from 'lodash-es';\nimport { Observable, combineLatest, from, of } from 'rxjs';\nimport { map, mergeMap, share, switchMap, tap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport default class ModuleLoaderService {\n readonly lazyFeatures: string[] = [\n WidgetType.LinkList,\n WidgetType.Marquee,\n WidgetType.NextToGo,\n WidgetType.TopEvents,\n WidgetType.TabbedGrid,\n WidgetType.OutrightsGrid,\n WidgetType.Composable,\n WidgetType.ShowCase,\n WidgetType.CompetitionPriceBoosts,\n WidgetType.Media,\n WidgetType.MiniGames,\n WidgetType.SportTree,\n WidgetType.BetStationMarquee,\n WidgetType.BetStationTopScreenSportsBanner,\n WidgetType.BetStationLiveTicker,\n WidgetType.BetStationSports,\n WidgetType.BetStationSportsBanner,\n WidgetType.BetstationEventList,\n WidgetType.BetStationRacing,\n WidgetType.PopularMultiBets,\n WidgetType.PanicButton,\n WidgetType.TimeFilters,\n WidgetType.HiddenMarket,\n WidgetType.Favourites,\n WidgetType.BetColumn,\n WidgetType.BetGenerator,\n WidgetType.CompetitionStandings,\n WidgetType.PromoContainer,\n WidgetType.StoryContent,\n WidgetType.TopItems,\n WidgetType.ScoreboardCarousel,\n ];\n\n private loadedModules: Map> | NgModuleRef>;\n private loadedFeatures = new Map();\n\n constructor(\n private sportsProductService: SportsProductService,\n private dispatcher: DispatcherService,\n private eventsService: EventsService,\n ) {\n this.loadedModules = new Map> | NgModuleRef>();\n }\n\n loadModule(moduleName: string, moduleLoader: () => Promise>, ...lazyConfigs: LazyClientConfigBase[]): Observable> {\n const loadedModule = this.loadedModules.get(moduleName);\n if (loadedModule) {\n if (loadedModule instanceof Observable) {\n return loadedModule;\n }\n\n return of(loadedModule);\n }\n const lazyConfigsObservable = lazyConfigs?.length ? combineLatest(lazyConfigs.map((c) => c.whenReady)) : of({});\n\n const observable = from(moduleLoader()).pipe(\n switchMap((module) => (lazyConfigsObservable ? lazyConfigsObservable.pipe(map((_) => module)) : of(module))),\n mergeMap((moduleType) => of(createNgModule(moduleType, this.sportsProductService.getDynamicInjector()))),\n tap((ref) => {\n this.loadedModules.set(moduleName, ref);\n this.dispatcher.dispatch('MODULE_LOADED', moduleName);\n }),\n share(),\n );\n this.loadedModules.set(moduleName, observable);\n\n return observable;\n }\n\n lazyLoadFeatures(eventName: string | string[]) {\n const events = uniq(Array.isArray(eventName) ? eventName : [eventName]);\n events\n .filter((event) => this.lazyFeatures.includes(event) && !this.loadedFeatures.has(event))\n .forEach((event) => {\n this.loadedFeatures.set(event, true);\n this.eventsService.raise({ eventName: event });\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class PageVisibilityService {\n private readonly _doc = inject(DOCUMENT);\n private documentProperties = this.getDocumentProperties();\n private visibilityStream = new BehaviorSubject<{ isVisible: boolean; pageHiddenDuration?: number }>({\n isVisible: this.isVisible,\n });\n private notificationTimeout: any;\n private pageHiddenTimeStamp: number | undefined;\n\n constructor() {\n this._doc.addEventListener(this.documentProperties.eventName, this.handleVisibilityChange, false);\n }\n\n visibilityChange() {\n return this.visibilityStream.asObservable();\n }\n\n private handleVisibilityChange = (): void => {\n const isVisible = this.isVisible;\n\n const pageHiddenDuration = this.pageHiddenTimeStamp ? Date.now() - this.pageHiddenTimeStamp : undefined;\n this.pageHiddenTimeStamp = isVisible ? undefined : Date.now();\n\n clearTimeout(this.notificationTimeout);\n // wait a bit before launching the event - let things settel down after the page is visible again\n this.notificationTimeout = setTimeout(() => this.visibilityStream.next({ isVisible, pageHiddenDuration }), 150);\n };\n\n private get isVisible(): boolean {\n return !this._doc[this.documentProperties.hiddenPropertyName as keyof Document];\n }\n\n private getDocumentProperties(): { eventName: string; hiddenPropertyName: string } {\n if (typeof this._doc.hidden !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n return { eventName: 'visibilitychange', hiddenPropertyName: 'hidden' };\n } else if (typeof (this._doc).msHidden !== 'undefined') {\n return { eventName: 'msvisibilitychange', hiddenPropertyName: 'msHidden' };\n } else if (typeof (this._doc).webkitHidden !== 'undefined') {\n return { eventName: 'webkitvisibilitychange', hiddenPropertyName: 'webkitHidden' };\n }\n return { eventName: '', hiddenPropertyName: '' };\n }\n}\n","export enum ProfileActionName {\n RemoveOverAsk = 'RemoveOverAsk',\n RemoveQuickBet = 'RemoveQuickBet',\n RemoveGamingCrossSell = 'RemoveGamingCrossSell',\n PreBetSlipMessage = 'PreBetSlipMessage',\n PostBetSlipMessage = 'PostBetSlipMessage',\n}\n\nexport enum FeatureLocation {\n QuickBet = 'QuickBet',\n PreBetSlipMessage = 'PreBetSlipMessage',\n PostBetSlipMessage = 'PostBetSlipMessage',\n}\n\nexport interface IARCProfileConfiguration {\n profileId: string;\n profileActions: ProfileActionDetail[];\n}\nexport interface ProfileActionDetail {\n name: string;\n frequency?: number;\n}\n\nexport const ProfileMessageStorageKeys = {\n preBetMessageStorageKey: 'prebetLastMsgDisplayDate',\n postBetMessageStorageKey: 'postbetLastMsgDisplayDate',\n actionForMessagedisplayPre: 'actionForMessagedisplayPre',\n actionForMessagedisplayPost: 'actionForMessagedisplayPost',\n loginActionPrebet: 'prebetLogin',\n loginActionPostbet: 'postbetLogin',\n firstLoginActionPrebet: 'prebetFirstLogin',\n firstLoginActionPostbet: 'postbetFirstLogin',\n};\n\nexport interface ArcRestrictionTrackingData {\n action?: string;\n position: string;\n source: string;\n}\n\nexport enum ArcRestrictionTrackingConstants {\n CategoryEvent = 'gambling control',\n LabelEvent = 'safer gambling',\n SourceBetslip = 'betslip',\n SourceBetslipQuickBet = 'betslip - quick bet',\n SourceBetslipReceipt = 'betslip - bet receipt',\n SaferGamblingEventDetails = 'safer gambling info message',\n PlayBreakEventDetails = 'customer on break info message',\n FindOutMoreLinkPositionEvent = 'find out more - link',\n UrlClicked = 'not applicale',\n}\n\nexport enum TrackingEvent {\n Click = 'Click',\n Load = 'Load',\n Collapse = 'Collapse',\n Expand = 'Expand',\n}\n","import { Injectable } from '@angular/core';\n\nimport { ARCConfig, ArcUserConfig } from '@frontend/sports/common/client-config-data-access';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { IProfileConfiguration } from '@frontend/sports/types/components/a-r-c';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { ClientConfigService, LocalStoreService, RtmsService } from '@frontend/vanilla/core';\nimport { PageVisibilityService } from '@frontend/vanilla/features/page-visibility';\nimport { Observable, merge, of } from 'rxjs';\nimport { filter, map, shareReplay, startWith, switchMap } from 'rxjs/operators';\n\nimport { IARCProfileConfiguration, ProfileActionName, ProfileMessageStorageKeys } from './arc.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ArcRestrictionService {\n readonly isUserOnPlayBreak$: Observable = of(false);\n readonly arcProfileDetails$ = of(this.m2User.arcProfileDetails);\n\n readonly gamingCrossSellEnabled$ = of(false);\n readonly preBetslipMessageEnabled$ = of(false);\n readonly postBetslipMessageEnabled$ = of(false);\n readonly quickBetEnabled$ = of(false);\n readonly overAskEnabled$ = of(false);\n\n private readonly playBreakMessages = {\n PLAY_BREAK_START_EVENT: true,\n PLAY_BREAK_END_EVENT: true,\n };\n\n constructor(\n private rtmsService: RtmsService,\n private m2User: UserService,\n private clientConfig: ClientConfigService,\n private arcConfig: ARCConfig,\n private pageVisibilityService: PageVisibilityService,\n private localStorage: LocalStoreService,\n ) {\n if (arcConfig.isUserProfilingEnabled) {\n this.m2User.onUserLogin$.pipe(filterSportsEmitLast()).subscribe(() => {\n this.localStorage.set(ProfileMessageStorageKeys.actionForMessagedisplayPre, ProfileMessageStorageKeys.loginActionPrebet);\n this.localStorage.set(ProfileMessageStorageKeys.actionForMessagedisplayPost, ProfileMessageStorageKeys.loginActionPostbet);\n });\n this.arcProfileDetails$ = this.m2User.onAuthenticationChange$.pipe(\n map(() => m2User.arcProfileDetails),\n startWith(m2User.arcProfileDetails),\n shareReplay(1),\n );\n this.gamingCrossSellEnabled$ = this.arcProfileDetails$.pipe(\n map((profile) => this.getGamingCrossSellState(profile)),\n shareReplay(1),\n );\n\n this.preBetslipMessageEnabled$ = this.arcProfileDetails$.pipe(\n map((profile) => this.getPreBetslipMessageState(profile)),\n shareReplay(1),\n );\n this.postBetslipMessageEnabled$ = this.arcProfileDetails$.pipe(\n map((profile) => this.getPostBetslipMessageState(profile)),\n shareReplay(1),\n );\n this.quickBetEnabled$ = this.arcProfileDetails$.pipe(\n map((profile) => this.getQuickBetState(profile)),\n shareReplay(1),\n );\n this.overAskEnabled$ = this.arcProfileDetails$.pipe(\n map((profile) => this.getOverAskState(profile)),\n shareReplay(1),\n );\n }\n if (arcConfig.isPlayBreakEnabled) {\n const playBreakStateFromRTMS$ = this.rtmsService.messages.pipe(\n filter((m) => this.playBreakMessages[m.type as keyof typeof this.playBreakMessages]),\n switchMap(() => this.clientConfig.reload([ArcUserConfig])),\n map(() => this.m2User.arcPlayBreak),\n );\n\n const playBreakStateAfterLogin$ = this.m2User.onUserLogInWithSettings$.pipe(map(() => this.m2User.arcPlayBreak));\n const playBreakStateAfterPageVisibility$ = this.pageVisibilityService.visibilityChange().pipe(\n filter((p) => this.visibilityChange(p.isVisible, p.pageHiddenDuration)),\n switchMap(() => this.clientConfig.reload([ArcUserConfig])),\n map(() => this.m2User.arcPlayBreak),\n );\n\n this.isUserOnPlayBreak$ = merge(\n playBreakStateFromRTMS$,\n playBreakStateAfterLogin$,\n playBreakStateAfterPageVisibility$,\n of(this.m2User.arcPlayBreak),\n ).pipe(shareReplay(1));\n }\n }\n\n private visibilityChange(isVisible: boolean, pageHiddenDuration?: number): boolean {\n if (!isVisible) {\n return false;\n }\n\n const pageHiddenForTooLong =\n (pageHiddenDuration || 0) > this.arcConfig.pageHiddenReloadThreshold && this.arcConfig.pageHiddenReloadThreshold > 0;\n\n return pageHiddenForTooLong;\n }\n\n get profileDetails(): Observable {\n return this.arcProfileDetails$;\n }\n\n private getGamingCrossSellState(profileDetails: IProfileConfiguration): boolean {\n return (\n profileDetails.profileActions.some((action) => action.name === ProfileActionName.RemoveGamingCrossSell) &&\n this.arcConfig.profileActionsSwitch.isRemoveGamingCrosssellEnabled\n );\n }\n\n private getPreBetslipMessageState(profileDetails: IProfileConfiguration): boolean {\n return (\n profileDetails.profileActions.some((action) => action.name === ProfileActionName.PreBetSlipMessage) &&\n this.arcConfig.profileActionsSwitch.isBetslipMessagingEnabled\n );\n }\n\n private getPostBetslipMessageState(profileDetails: IProfileConfiguration): boolean {\n return (\n profileDetails.profileActions.some((action) => action.name === ProfileActionName.PostBetSlipMessage) &&\n this.arcConfig.profileActionsSwitch.isBetslipMessagingEnabled\n );\n }\n\n private getQuickBetState(profileDetails: IProfileConfiguration): boolean {\n return (\n profileDetails.profileActions.some((action) => action.name === ProfileActionName.RemoveQuickBet) &&\n this.arcConfig.profileActionsSwitch.isRemoveQuickbetEnabled\n );\n }\n\n private getOverAskState(profileDetails: IProfileConfiguration): boolean {\n return (\n profileDetails.profileActions.some((action) => action.name === ProfileActionName.RemoveOverAsk) &&\n this.arcConfig.profileActionsSwitch.isRemoveOverAskEnabled\n );\n }\n}\n","import { Type } from '@angular/core';\n\nimport { uniq } from 'lodash-es';\n\nexport type Task = () => void;\nexport class TaskScheduler {\n private tasks: Task[] = [];\n\n schedule(task: Task): void {\n this.tasks.push(task);\n }\n\n flush(): void {\n requestAnimationFrame(() => {\n this.tasks.forEach((task) => task());\n this.tasks = [];\n });\n }\n}\n\nexport interface ColumnComponentRegistration {\n component: Type;\n inputs?: any;\n location: LayoutColumn;\n}\n\nexport interface ColumnComponentRemoval {\n component: any;\n location: LayoutColumn;\n}\n\nexport enum LayoutColumn {\n Left = 'Left',\n Center = 'Center',\n Right = 'Right',\n}\n\nexport enum ColumnSize {\n Default = 'default',\n Small = 'sm',\n Large = 'lg',\n ExtraLarge = 'xl',\n}\n\nexport enum RightColumnSize {\n Default,\n Large,\n ExtraLarge,\n}\n\nexport abstract class Layout {\n private availableColumns = [...this.orderedColumns];\n private contentColumns: LayoutColumn[] = [];\n private readonly _registeredComponents: Map = new Map();\n\n constructor(maxColumnsCount: number, defaultComponents?: ColumnComponentRegistration[]) {\n this.refreshLayout(maxColumnsCount);\n\n if (defaultComponents) {\n defaultComponents.forEach((c) => this.registerComponent(c));\n }\n }\n\n /**\n * Possible columns for layout ordered from most important to least important.\n * This is how when the resolution changes we decide on which columns to show.\n *\n * @readonly\n * @protected\n * @abstract\n * @type {LayoutColumn[]}\n * @memberof Layout\n */\n protected get orderedColumns(): LayoutColumn[] {\n return [];\n }\n\n get isLeftVisible(): boolean {\n return this.columnVisible(LayoutColumn.Left);\n }\n\n get isRightVisible(): boolean {\n return this.columnAvailable(LayoutColumn.Right);\n }\n\n get shouldHaveLeftColumn(): boolean {\n return this.columnAvailable(LayoutColumn.Left);\n }\n\n get shouldHaveRightColumn(): boolean {\n return this.columnAvailable(LayoutColumn.Right);\n }\n\n get shouldHaveThreeColumns(): boolean {\n return this.shouldHaveLeftColumn && this.shouldHaveRightColumn;\n }\n\n get maxColumnCount(): number {\n return this.availableColumns.length;\n }\n\n get visibleColumns(): LayoutColumn[] {\n const columns: LayoutColumn[] = [LayoutColumn.Center];\n if (this.isLeftVisible) {\n columns.push(LayoutColumn.Left);\n }\n if (this.isRightVisible) {\n columns.push(LayoutColumn.Right);\n }\n\n return columns;\n }\n\n columnVisible(column: LayoutColumn): boolean {\n return this.columnAvailable(column) && this.contentColumns.some((current) => current === column);\n }\n\n registeredComponents(): ColumnComponentRegistration[] {\n return Array.from(this._registeredComponents.values());\n }\n\n registerComponent(data: ColumnComponentRegistration): boolean {\n if (this._registeredComponents.has(data.component)) {\n return false;\n }\n\n this._registeredComponents.set(data.component, { ...data });\n this.checkColumnsForComponents();\n\n return true;\n }\n\n removeComponent(component: any, location: LayoutColumn): void {\n this._registeredComponents.delete(component);\n this.checkColumnsForComponents();\n }\n\n refreshLayout(visibleColumns: number): boolean {\n const columnNumberDifferent = this.availableColumns.length !== visibleColumns;\n this.availableColumns = this.orderedColumns.slice(0, visibleColumns);\n\n return columnNumberDifferent;\n }\n\n private columnAvailable(column: LayoutColumn): boolean {\n return this.availableColumns.some((current) => current === column);\n }\n\n private checkColumnsForComponents(): void {\n const componentsArray = this.registeredComponents().map((component) => component.location);\n this.contentColumns = uniq(componentsArray);\n }\n}\n\nexport class FixedLayout extends Layout {\n protected override get orderedColumns(): LayoutColumn[] {\n return [LayoutColumn.Center];\n }\n}\n\nexport interface ColumnSizeData {\n column: LayoutColumn;\n size: ColumnSize;\n width: number;\n}\n\nexport class ResponsiveLayout extends Layout {\n protected override get orderedColumns(): LayoutColumn[] {\n return [LayoutColumn.Center, LayoutColumn.Left, LayoutColumn.Right];\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { assign, clone, isMatch } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ColumnSize } from './layout.model';\n\nexport interface AdaptiveLayoutFlag {\n columns?: number;\n headerNavigation?: boolean;\n bottomNavigation?: boolean;\n headerSubNavigation?: boolean;\n subNavigationHiddenOnSmallScreen?: boolean;\n shouldHideSubNavigation?: boolean;\n topNavigationHiddenOnSmallScreen?: boolean;\n headerTabNavigation?: boolean;\n breadcrumbNavigation?: boolean;\n subNavigation?: boolean;\n stickyHeader?: boolean;\n cardContent?: boolean;\n htmlClass?: string;\n fixedContent?: boolean;\n quickBetActive?: boolean;\n quickBetBuilderActive?: boolean;\n rightColumnSize?: ColumnSize;\n shouldKeepBreadcrumbs?: boolean;\n}\n\nexport class AdaptiveLayoutState {\n constructor(public flags: AdaptiveLayoutFlag) {}\n\n get htmlClasses(): string[] {\n const classes: string[] = [];\n\n if (this.flags.htmlClass) {\n classes.push(this.flags.htmlClass);\n }\n\n if (this.flags.cardContent) {\n classes.push('card-content');\n }\n\n if (this.flags.fixedContent) {\n classes.push('fixed-content');\n }\n\n if (this.flags.subNavigation) {\n classes.push('header-sub-navigation');\n }\n\n if (this.flags.stickyHeader) {\n classes.push('header-sticky');\n }\n\n return classes;\n }\n\n get cardContent(): boolean | undefined {\n return this.flags.cardContent;\n }\n\n get columns(): number {\n const fixedLayout = 1;\n\n if (this.flags.fixedContent) {\n return fixedLayout;\n }\n\n return this.flags.columns || fixedLayout;\n }\n\n get headerNavigation(): boolean | undefined {\n return this.flags.headerNavigation && (!this.flags.breadcrumbNavigation || this.flags.columns === 3);\n }\n\n get headerSubNavigation(): boolean | undefined {\n return this.flags.headerSubNavigation;\n }\n\n get headerSubNavigationHidden(): boolean | undefined {\n return !this.flags.subNavigation || (this.flags.shouldHideSubNavigation && this.flags.subNavigationHiddenOnSmallScreen);\n }\n\n get headerTopNavigationHidden(): boolean | undefined {\n return !this.flags.headerNavigation || (this.flags.topNavigationHiddenOnSmallScreen && this.bottomNavigation);\n }\n\n get headerTabNavigation(): boolean | undefined {\n return this.flags.headerTabNavigation;\n }\n\n get breadcrumbNavigation(): boolean | undefined {\n return this.flags.breadcrumbNavigation;\n }\n\n get bottomNavigation(): boolean {\n return !!this.flags && !!this.flags.columns && this.flags.columns < 3 && !!this.flags.bottomNavigation;\n }\n\n get hasRightColumn(): boolean {\n return this.columns === 3;\n }\n\n get quickBetActive(): boolean {\n return !!this.flags.quickBetActive && this.quickBetCanBeShown;\n }\n\n get quickBetBuilderActive(): boolean {\n return !!this.flags.quickBetBuilderActive;\n }\n\n get quickBetCanBeShown(): boolean {\n return this.columns < 3 || !!this.flags.quickBetBuilderActive;\n }\n\n get rightColumnSize(): ColumnSize {\n return this.flags.rightColumnSize || ColumnSize.Default;\n }\n\n get showDesktopAZSports(): boolean {\n return this.columns > 2;\n }\n}\n\nexport interface AdaptiveLayoutProvider {\n asObservable(): Observable;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AdaptiveLayoutService {\n private state = new AdaptiveLayoutState({});\n private stateChange = new BehaviorSubject(this.state);\n private providerListChange = new Subject();\n\n private currentProviders: AdaptiveLayoutProvider[] = [];\n\n readonly stateChange$ = this.stateChange.asObservable();\n\n get current(): AdaptiveLayoutState {\n return this.state;\n }\n\n register(...providers: AdaptiveLayoutProvider[]): void {\n this.currentProviders.push(...providers);\n this.providerListChange.next();\n\n const observables = this.currentProviders.map((provider) => provider.asObservable());\n\n merge(...observables)\n .pipe(filterSportsEmitLast(), takeUntil(this.providerListChange))\n .subscribe((flags) => {\n if (isMatch(this.state.flags, flags)) {\n return;\n }\n\n const stateFlags = assign({}, this.state.flags, flags);\n this.state = new AdaptiveLayoutState(stateFlags);\n\n this.stateChange.next(clone(this.state));\n });\n }\n}\n","import { toLower, values } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ColumnSize, ColumnSizeData, Layout, LayoutColumn, TaskScheduler } from './layout.model';\n\nexport class MeasuredColumn {\n private sizes: Map = new Map();\n private _currentSize = ColumnSize.Default;\n\n constructor(readonly column: LayoutColumn) {\n this.sizes.set(ColumnSize.Default, 0);\n }\n\n get width(): number {\n return this.sizes.get(this._currentSize) || 0;\n }\n\n setWidth(width: number): void {\n this.sizes.set(this._currentSize, width);\n }\n\n setSize(size: ColumnSize): void {\n this._currentSize = size;\n }\n\n get currentSize(): ColumnSize {\n return this._currentSize;\n }\n}\n\nexport class ColumnMeasurement {\n private _layoutSize: { [key: string]: MeasuredColumn } = {\n [LayoutColumn.Left]: new MeasuredColumn(LayoutColumn.Left),\n [LayoutColumn.Center]: new MeasuredColumn(LayoutColumn.Center),\n [LayoutColumn.Right]: new MeasuredColumn(LayoutColumn.Right),\n };\n\n private _columnSizeChanged = new BehaviorSubject({ column: LayoutColumn.Left, size: ColumnSize.Default, width: 0 });\n\n get columnSizeChanged(): Observable {\n return this._columnSizeChanged.asObservable();\n }\n\n get layoutSize(): { [key: string]: MeasuredColumn } {\n return this._layoutSize;\n }\n\n constructor(\n private deviceLayout: Layout,\n private readonly _doc: Document,\n ) {}\n\n measureLayout(scheduler: TaskScheduler): void {\n const visibleColumns = this.deviceLayout.visibleColumns;\n const allMeasured = visibleColumns.every((c) => this._layoutSize[c].width > 0);\n\n if (allMeasured) {\n this.pushSizeChanges();\n\n return;\n }\n\n scheduler.schedule(() => {\n const left = this.getColumnWidth(LayoutColumn.Left);\n const center = this.getColumnWidth(LayoutColumn.Center);\n const right = this.getColumnWidth(LayoutColumn.Right);\n\n this._layoutSize[LayoutColumn.Right].setWidth(right);\n\n this._layoutSize[LayoutColumn.Left].setWidth(left);\n this._layoutSize[LayoutColumn.Center].setWidth(center);\n\n this.pushSizeChanges();\n });\n }\n\n updateColumnSize(change: { column: LayoutColumn; size: ColumnSize }): void {\n if (change && change.column !== LayoutColumn.Right) {\n throw new Error('Can set a ColumnSize only for LayoutColumn.Right. Attempted value: ' + change.column);\n }\n\n this._layoutSize[change.column].setSize(change.size);\n }\n\n reset(): void {\n values(this._layoutSize).forEach((mc) => mc.setWidth(0));\n }\n\n private pushSizeChanges(): void {\n this._columnSizeChanged.next({\n column: LayoutColumn.Left,\n size: ColumnSize.Default,\n width: this._layoutSize[LayoutColumn.Left].width,\n });\n this._columnSizeChanged.next({\n column: LayoutColumn.Center,\n size: ColumnSize.Default,\n width: this._layoutSize[LayoutColumn.Center].width,\n });\n this._columnSizeChanged.next({\n column: LayoutColumn.Right,\n size: this._layoutSize[LayoutColumn.Right].currentSize || ColumnSize.Default,\n width: this._layoutSize[LayoutColumn.Right].width,\n });\n }\n\n private getColumnWidth(column: LayoutColumn): number {\n const element = this.getElement(column);\n const getFloat = (value: string | null) => parseFloat(value || '0');\n\n if (!element) {\n return 0;\n }\n\n const style = getComputedStyle(element);\n\n const xPadding = getFloat(style.paddingLeft) + getFloat(style.paddingRight);\n const xBorder = getFloat(style.borderLeftWidth) + getFloat(style.borderRightWidth);\n\n // Element width and height minus padding and border\n return element.offsetWidth - xPadding - xBorder;\n }\n\n private getElement(column: LayoutColumn): HTMLElement | null {\n if (column === LayoutColumn.Center) {\n return this._doc.querySelector(`.column-${toLower(column)}`) ?? this._doc.querySelector(`.column-wrapper`);\n }\n\n return this._doc.querySelector(`.column-${toLower(column)}`);\n }\n}\n","import { inject } from '@angular/core';\n\nimport { EventsService, TimerService, VanillaEventNames } from '@frontend/vanilla/core';\nimport { filter, take } from 'rxjs';\n\nimport { TaskScheduler } from './layout.model';\n\nexport class FooterMeasurement {\n private height: number;\n private tryCount = 0;\n private maxTryCount = 3;\n private callbackTimeout = 2500;\n\n get footerSize(): number {\n return this.height;\n }\n\n eventService = inject(EventsService);\n timer = inject(TimerService);\n\n constructor(private readonly _doc: Document) {}\n\n measureFooter(scheduler: TaskScheduler): void {\n scheduler.schedule(() =>\n this.eventService.allEvents\n .pipe(\n filter((event) => event.eventName === VanillaEventNames.FooterLoaded),\n take(1),\n )\n .subscribe(() => this.calculateFooter()),\n );\n }\n\n private calculateFooter(): void {\n const footer = this._doc.querySelector('vn-footer,vn-responsive-footer');\n if (footer == null) {\n this.retry();\n return;\n }\n\n const height = footer.getBoundingClientRect().height;\n if (height) {\n this.height = height;\n } else {\n this.retry();\n }\n }\n\n private retry() {\n if (this.maxTryCount > this.tryCount) {\n this.timer.scheduleIdleCallback(() => this.calculateFooter(), this.callbackTimeout);\n this.tryCount++;\n }\n }\n\n reset(): void {\n this.height = 0;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { HtmlNode, MediaQueryService } from '@frontend/vanilla/core';\nimport { keys, toLower } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilKeyChanged, filter, skip } from 'rxjs/operators';\n\nimport { AdaptiveLayoutService, AdaptiveLayoutState } from './adaptive-layout.service';\nimport { ColumnMeasurement } from './column-measurement';\nimport { FooterMeasurement } from './footer-measurement';\nimport { ColumnComponentRegistration, ColumnComponentRemoval, ColumnSize, ColumnSizeData, Layout, LayoutColumn, TaskScheduler } from './layout.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ColumnLayoutService {\n private deviceLayout: Layout;\n private measurement: ColumnMeasurement;\n private footerMeasurement: FooterMeasurement;\n\n private _componentRegistered = new Subject();\n private _componentUpdated = new Subject();\n private _componentRemoved = new Subject();\n private _layoutChanged = new Subject();\n\n readonly componentUpdated$ = this._componentUpdated.asObservable();\n\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n private layoutService: AdaptiveLayoutService,\n private mediaService: MediaQueryService,\n private htmlNode: HtmlNode,\n ) {\n this.mediaService\n .observe()\n .pipe(\n skip(1),\n filter(() => !!this.measurement),\n filterSportsEmitLast(),\n )\n .subscribe(() => this.resetMeasurement());\n this.footerMeasurement = new FooterMeasurement(this._doc);\n }\n\n initializeLayout(deviceLayout: Layout): void {\n if (this.deviceLayout) {\n throw new Error('ColumnLayout has been already initialized!');\n }\n\n this.measurement = new ColumnMeasurement(deviceLayout, this._doc);\n this.resetMeasurement();\n\n this.deviceLayout = deviceLayout;\n this.layoutService.stateChange$.pipe(distinctUntilKeyChanged('columns')).subscribe(this.mediaChangeHandler);\n\n this.deviceLayout.registeredComponents().forEach((c) => this._componentRegistered.next(c));\n }\n\n get layout(): Layout {\n return this.deviceLayout;\n }\n\n get componentRegistered(): Observable {\n return this._componentRegistered.asObservable();\n }\n\n get componentRemoved(): Observable {\n return this._componentRemoved.asObservable();\n }\n\n get layoutChanged(): Observable {\n return this._layoutChanged.asObservable();\n }\n\n register(data: ColumnComponentRegistration): void {\n if (this.deviceLayout.registerComponent(data)) {\n this.columnVisibilityHandler();\n this._componentRegistered.next(data);\n } else {\n this._componentUpdated.next(data);\n }\n }\n\n remove(component: any, location: LayoutColumn): void {\n this.deviceLayout.removeComponent(component, location);\n this.columnVisibilityHandler();\n this._componentRemoved.next({ component, location });\n }\n\n resetMeasurement(): void {\n const scheduler = new TaskScheduler();\n\n this.measurement.reset();\n this.footerMeasurement.reset();\n\n this.measurement.measureLayout(scheduler);\n this.footerMeasurement.measureFooter(scheduler);\n\n scheduler.flush();\n }\n\n get rightColumnSizeChanged(): Observable {\n return this.measurement.columnSizeChanged.pipe(\n filter((c) => c.column === LayoutColumn.Right && c.width > 0),\n distinctUntilKeyChanged('width'),\n );\n }\n\n get currentRightColumnSize(): ColumnSizeData {\n const measurement = this.measurement.layoutSize[LayoutColumn.Right];\n\n return {\n column: LayoutColumn.Right,\n size: measurement.currentSize,\n width: measurement.width,\n };\n }\n\n get centerColumnSizeChanged(): Observable {\n return this.measurement.columnSizeChanged.pipe(\n filter((c) => c.column === LayoutColumn.Center && c.width > 0),\n distinctUntilKeyChanged('width'),\n );\n }\n\n get currentCenterColumnSize(): ColumnSizeData {\n const measurement = this.measurement.layoutSize[LayoutColumn.Center];\n\n return {\n column: LayoutColumn.Center,\n size: measurement.currentSize,\n width: measurement.width,\n };\n }\n\n get currentFooterSize(): number {\n return this.footerMeasurement.footerSize;\n }\n\n setColumnSize(size: ColumnSize, column: LayoutColumn): void {\n if (column === LayoutColumn.Center || column === LayoutColumn.Left) {\n throw new Error('Column sizing can not be applied to the Center or Left column');\n }\n\n if (!this.layout.columnVisible(column)) {\n return;\n }\n\n this.applyColumnSize(size, column);\n\n this.measurement.updateColumnSize({ column, size });\n this.resetMeasurement();\n }\n\n private applyColumnSize(size: ColumnSize, column: LayoutColumn): void {\n const getClassName = (columnSize: ColumnSize) => `content-${toLower(column)}-${toLower(columnSize)}`;\n\n const className = getClassName(size);\n const classList = keys(ColumnSize)\n .map((key) => ColumnSize[key as keyof typeof ColumnSize])\n .map((key) => getClassName(key));\n\n classList.forEach((current) => this.htmlNode.setCssClass(current, false));\n\n if (size !== ColumnSize.Default) {\n this.htmlNode.setCssClass(className, true);\n }\n }\n\n private mediaChangeHandler = (state: AdaptiveLayoutState): void => {\n const layoutRefreshed = this.deviceLayout.refreshLayout(state.columns);\n\n if (layoutRefreshed) {\n this.columnVisibilityHandler();\n this._layoutChanged.next();\n }\n };\n\n private columnVisibilityHandler(): void {\n this.htmlNode.setCssClass('content-left', this.deviceLayout.isLeftVisible);\n this.htmlNode.setCssClass('content-right', this.deviceLayout.isRightVisible);\n }\n}\n","/**\n * EVENT NAMES\n * can be any string except the 'error.XXXXXX' format which is reserved for error reporting\n * and except the 'pageView' that is reserved for the page navigation/view.\n */\nconst eventConstants = {\n EVENT_PAGE_VIEW: 'pageView',\n EVENT_CART_CHECKOUT: 'Cart.checkout',\n EVENT_PURCHASE: 'purchase',\n EVENT_CHECKOUT: 'checkout',\n EVENT_CART_PURCHASE: 'Cart.purchase',\n EVENT_CART_ADD: 'Cart.betAdded',\n EVENT_CART_REMOVE: 'Cart.betRemove',\n EVENT_CLICKS: 'Event.Clicks',\n EVENT_BETSLIP_ERROR: 'Betslip_Error',\n EVENT_EARLYPAYOUT: 'event.earlyPayout',\n EVENT_EDIT_BET: 'Event.Functionality.EditMyBet',\n EVENT_EDIT_FAVOURITES: 'Event.Functionality.EditMyFavourites',\n EVENT_LINE_SWITCHER: 'Event.LineSwitcher',\n EVENT_MEDIA: 'Event.SiteElement.Interactions',\n EVENT_FUNC_MARKET_SWITCH: 'Event.Functionality.MarketSwitch',\n EVENT_FUNC_BETS: 'Event.Functionality.Bets',\n EVENT_FUNC_SHOWHIDE_BETS: 'Event.Functionality.ShowHideBets',\n EVENT_INIT_QUICKBET: 'Event.InitiateQB',\n EVENT_NAVIGATION_MENUS: 'Event.NavigationMenus',\n EVENT_AUTO_EARLYPAYOUT_SET: 'event.AutoearlyPayoutSet',\n EVENT_VIDEO_INTERACTIONS: 'Event.VideoInteractions',\n EVENT_FAVOURITES: 'event.favourites',\n EVENT_GAME_OPEN: 'gameOpen',\n EVENT_VIRTUAL_OPEN: 'virtualOpen',\n EVENT_MINI_GAME_OPEN: 'miniGameOpen',\n EVENT_RELOAD_HIDDEN: 'reloadHidden',\n EVENT_RELOAD_OFFLINE: 'reloadOffline',\n EVENT_PREF_NAV: 'perfNav',\n EVENT_PERF_APP_LOAD: 'perfAppLoad',\n EVENT_TRACKING: 'Event.Tracking',\n EVENT_PODVIEW: 'Event.podView',\n EVENT_AZSPORTS: 'Event.NavigationMenus',\n EVENT_ALERT_ENABLED: 'Alert Enabled',\n EVENT_MARKET_SWITCH: 'Event.MarketSwitch',\n EVENT_GEOLOCATION_ERROR: 'GEOLocation.ERROR',\n EVENT_TRIGGER_GEO_FETCH: 'GEOLocation.FETCH',\n EVENT_OVERASK: 'Event.OverAsk',\n EVENT_CONTENT_VIEW: 'contentView',\n EVENT_BET_STATUS: 'Event.BetStatus',\n EVENT_CART_ADD_BALANCE: 'cart.addBalance',\n MESSAGE_VIEW: 'Message View',\n EVENT_CORE_NAVIGATION: 'Event.CoreNavigation',\n EVENT_TEASER_BETS: 'Event.TeaserBets',\n EVENT_NAME: 'event.name',\n EVENT_CLICK: 'click',\n SEE_ALL: 'see all',\n SEE_ALL_OVERLAY: 'see all overlay',\n LOAD: 'load',\n CLOSE: 'close',\n SPORTS_EVENT: 'sports event',\n};\n\ntype EventConstants = typeof eventConstants;\n\nexport const NOT_APPLICABLE = 'not applicable';\nexport const TRACKING_GAMEDETAILS = 'live|penalties|red cards';\n\nexport const TRACKING_NO_GAMEDETAILS = 'no game details available';\n\n/**\n * VARIABLES\n * for data objects variables with deeper hierarchy the JavaScript dot notation must be used (e.g. user.profile.accountID)\n */\nconst dataConstants = {\n BUTTON_CLICK_EVENT: 'Event.buttonClick' as const,\n CART_PURCHASE: 'cart.purchase' as const,\n CART_CHECKOUT: 'cart.checkout' as const,\n TRANSACTION_PRODUCT_ODDS: 'transaction.Products.odds' as const,\n COMPONENT_ACTION_EVENT: 'component.ActionEvent' as const,\n COMPONENT_AUTO_EARLYPAYOUT: 'component.AutoEarlyPayout' as const,\n COMPONENT_CATEGORY_EVENT: 'component.CategoryEvent' as const,\n COMPONENT_CATEGORY_SUB_TYPE: 'component.categorySubType' as const,\n COMPONENT_CATEGORY_TYPE: 'component.categoryType' as const,\n COMPONENT_EVENT_NAME: 'component.EventName' as const,\n COMPONENT_EVENT_DETAILS: 'component.EventDetails' as const,\n COMPONENT_FAVOURITES_ACTION: 'component.favourites-action' as const,\n COMPONENT_GAME_CONTAINER_DESCRIPTION: 'component.gameContainerDescription' as const,\n COMPONENT_GAME_CONTAINER_LOCATION: 'component.gameContainerLocation' as const,\n COMPONENT_GAME_DISPLAY_NAME: 'component.gameDisplayName' as const,\n COMPONENT_GAME_FAVOURITE: 'component.gameFavourite' as const,\n COMPONENT_GAME_GRID_POSITION: 'component.Game.GridPosition' as const,\n COMPONENT_GAME_NAME: 'component.gameName' as const,\n COMPONENT_GAME_PLAYING_STATUS: 'component.gamePlayingStatus' as const,\n COMPONENT_GAME_POSITION: 'component.Game.position' as const,\n COMPONENT_GAME_SECTION: 'component.Game.section' as const,\n COMPONENT_GAME_STATUS: 'component.gameStatus' as const,\n COMPONENT_GAME_TYPE: 'component.gameType' as const,\n COMPONENT_LABEL_EVENT: 'component.LabelEvent' as const,\n COMPONENT_LEAGUE_ID: 'component.LeagueId' as const,\n COMPONENT_LOCATION_EVENT: 'component.LocationEvent' as const,\n COMPONENT_MODULE_NAME: 'component.moduleName' as const,\n COMPONENT_MARKET_ID: 'component.MarketID' as const,\n COMPONENT_POSITION_EVENT: 'component.PositionEvent' as const,\n COMPONENT_PAGE_LAYOUT: 'component.pageLayout' as const,\n COMPONENT_MODULE_POSITION: 'component.modulePosition' as const,\n COMPONENT_MODULE_CUSTOM_NAME: 'component.moduleCustName' as const,\n COMPONENT_REFERRED_BET: 'component.referredBet' as const,\n COMPONENT_SITE_ELEMENT_INTERCATIONS: 'component.SiteElement.Interactions' as const,\n COMPONENT_SLIP_ID: 'component.SlipID' as const,\n COMPONENT_SPORT_ID: 'component.SportId' as const,\n COMPONENT_URL_CLICKED: 'component.URLClicked' as const,\n CUSTOMER_ID: 'customer.id' as const,\n COMPONENT_CONTENT_POSITION: 'component.ContentPosition' as const,\n COMPONENT_MODULE_SOURCE: 'component.moduleSource' as const,\n COMPONENT_MODULE_TYPE: 'component.moduleType' as const,\n COMPONENT_BET_SOURCE: 'component.betsource' as const,\n COMPONENT_MODULE_AFFILIATION_CONFIG: 'component.moduleAffiliationConfig' as const,\n PAGE_BETSLIP_ERROR: 'page.Betslip_Error' as const,\n PAGE_DISPLAYED_ELEMENT: 'page.displayed.element' as const,\n PAGE_EDITBET_ERROR: 'page.EditedBet_Error' as const,\n PAGE_NAME: 'page.name' as const,\n PAGE_NAVIGATION_MENUS: 'page.navigationMenus' as const,\n PAGE_PROMOTION_ID: 'page.promotionID' as const,\n PAGE_REFERRING_ACTION: 'page.referringAction' as const,\n PAGE_RELOAD_AFTER_HIDDEN: 'page.reloadAfterPageHidden' as const,\n PAGE_RELOAD_AFTER_OFFLINE: 'page.reloadAfterOffline' as const,\n PAGE_SITE_SECTION: 'page.siteSection' as const,\n PAGE_URL: 'page.url' as const,\n MARQUEE_CONTENT_LOGIC: 'marquee.contentLogic' as const,\n PERFORMANCE_APP_COMPILAION: 'performance.appCompilation' as const,\n PERFORMANCE_APP_RUN: 'performance.appRun' as const,\n PERFORMANCE_ASSETS_FETCH: 'performance.assetsFetch' as const,\n PERFORMANCE_CDSAPI: 'performance.cdsApi' as const,\n PERFORMANCE_CLIENT_BOOTSTRAP: 'performance.clientBootstrap' as const,\n PERFORMANCE_DOM_LOADED: 'performance.domContentLoaded' as const,\n PERFORMANCE_INTERACTIVE: 'performance.interactive' as const,\n PERFORMANCE_LOAD: 'performance.load' as const,\n MARKET_ID: 'marketID' as const,\n Transaction_Product_Category: 'transactionProducts.category' as const,\n Transaction_Product_BetType: 'transactionProducts.betType' as const,\n PERFORMANCE_NAV: 'performance.nav' as const,\n PRODUCT_BET_SPORTS: 'product.betSports' as const,\n PRODUCT_PICK_DETAILS: 'product.pickDetails' as const,\n VIDEO_INTERNAL_EVENT_ID: 'video.InternalEventID' as const,\n VIDEO_PROVIDER_EVENT_ID: 'video.ProviderEventID' as const,\n INVOKE_PRODUCT: 'invoker.product' as const,\n INVOKE_INTERFACE: 'invoker.interface' as const,\n SPORT_EVENT_ID: 'sportEventID' as const,\n SPORT_LEAGUE_ID: 'leagueID' as const,\n GEOLOCATION_FETCH_TYPE: 'geolocation.fetchType' as const,\n GEOLOCATION_ERRORCODE: 'geolocation.errorCode' as const,\n GEOLOCATION_ERRORMESSAGE: 'geolocation.errorMessage' as const,\n SHOW_MODULE: 'showmodule' as const,\n BETS_BOOSTS: 'betsBoosts' as const,\n BET_TICKET_ID: 'betTicketID' as const,\n COMPONENT_RESULT_ID: 'component.ResultID' as const,\n SPORT_ID: 'sportID' as const,\n RESULT_ID: 'resultID' as const,\n REGION_ID: 'regionID' as const,\n BET_TYPE: 'betType' as const,\n PROMO_ID: 'promoID' as const,\n MESSAGE_TYPE: 'messageType' as const,\n GAME_DETAILS: 'gameDetails' as const,\n COMPONENT_SITECORE_ID: 'component.sitecoreID' as const,\n COMPONENT_USER_SEGMENTS: 'component.userSegment' as const,\n MARQUEE_NAME: 'marqueeName' as const,\n SITECORE_TEMPLATE_ID: 'page.sitecoretemplateid' as const,\n MARQUEE_TYPE: 'marqueeType' as const,\n SHOW_MARQUEE: 'showmarquee' as const,\n MARQUEE_RECOMMENDATION_TYPE: 'component.recommendationtype' as const,\n BET_DETAILS: 'bet_details' as const,\n BET_CALENDER: 'bet_calendar' as const,\n QUICKBET: 'quickbet' as const, // Track when user taps on the place bet button\n PlaceBetSuccess: { PAGE_NAME: 'M2_slip_placed' }, // Track when bet placement is successful\n PlaceBet: { PAGE_NAME: 'M2_slip_action_PlaceBet' as const },\n TOPEVENTS_POD_DATA: 'podData' as const,\n Event_ID: 'eventId' as const,\n SHOW_NEXTRACES: 'shownextraces' as const,\n SELECTIONS_IN_SLIP: 'selectionsInSlip' as const,\n VARIANT: 'variant' as const,\n EVENT_NAME: 'event.name' as const,\n BET_TRACKING_TYPE: 'bet_tracking_type' as const,\n BET_PICK_TYPE: 'bet_type' as const,\n BETTING: 'betting' as const,\n MYBETS: 'my bets' as const,\n COPY_BETSLIP_ID: 'copy betslip id' as const,\n BETSLIP_TYPE: 'betslip_type' as const,\n BETS: 'bets' as const,\n};\n\ntype DataConstants = typeof dataConstants;\n\nconst miscellaneousConstants = {\n LINE_SWITCHER_TRACKING: 'BetslipLineSwitcher' as const,\n};\n\ntype MiscellaneousConstants = typeof miscellaneousConstants;\n\nexport const PRE_CREATED_SGP = 'pre-created sgp';\n\nexport enum VideoStreamTrackingStatus {\n VideoStreaming = 'Video Streaming',\n VideoInitiated = 'Video-Initiated',\n NotApplicable = 'not applicable',\n VideoStarted = 'VideoStarted',\n VideoContent = 'Video Content Not Available Message',\n UserNotLoggedIn = 'Log In to watch video live',\n StreamingAvailableCta = 'streaming available CTA',\n}\n\nexport enum EsportTrackingValues {\n Esports = 'esports',\n LivePage = 'live page',\n LivePageShowMoreCta = 'show more',\n BannerMessage = 'esports welcome message',\n}\n\ntype TrackingConstants = EventConstants & DataConstants & MiscellaneousConstants;\n\nexport const trackingConstants: TrackingConstants = {\n ...eventConstants,\n ...dataConstants,\n ...miscellaneousConstants,\n};\nexport interface TrackGeneral {\n events?: string | undefined;\n earlyPayoutAmount?: number;\n earlyPayoutSlipID?: string;\n error?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n eventId?: any;\n pushUpdate?: boolean;\n autoCashoutAmount?: number;\n autoCashoutType?: string;\n sportId?: number;\n name?: string;\n source?: string;\n [trackingConstants.PAGE_NAME]: string | undefined;\n [trackingConstants.PAGE_DISPLAYED_ELEMENT]: string | undefined;\n [trackingConstants.PAGE_URL]: string | undefined;\n [trackingConstants.PAGE_PROMOTION_ID]: string | undefined;\n [trackingConstants.BUTTON_CLICK_EVENT]: string | undefined;\n [trackingConstants.PAGE_BETSLIP_ERROR]: string | undefined;\n [trackingConstants.PAGE_REFERRING_ACTION]: string | undefined;\n [trackingConstants.COMPONENT_CATEGORY_EVENT]: string | undefined;\n [trackingConstants.COMPONENT_LABEL_EVENT]: string | undefined;\n [trackingConstants.COMPONENT_ACTION_EVENT]: string | undefined;\n [trackingConstants.COMPONENT_EVENT_DETAILS]: string | undefined;\n [trackingConstants.COMPONENT_URL_CLICKED]: string | undefined;\n [trackingConstants.COMPONENT_LOCATION_EVENT]: string | undefined;\n [trackingConstants.COMPONENT_POSITION_EVENT]: string | undefined;\n [trackingConstants.PAGE_RELOAD_AFTER_HIDDEN]: number | undefined;\n [trackingConstants.PAGE_RELOAD_AFTER_OFFLINE]: number | undefined;\n}\n\nexport interface TrackUpdate {\n [trackingConstants.PAGE_REFERRING_ACTION]: string;\n [trackingConstants.COMPONENT_CATEGORY_EVENT]?: string | undefined;\n [trackingConstants.PAGE_DISPLAYED_ELEMENT]?: string | undefined;\n}\n\nexport interface TrackError {\n message: string;\n code?: string;\n}\n\nexport interface TrackCrossSaleData {\n [trackingConstants.COMPONENT_CATEGORY_EVENT]: string;\n [trackingConstants.COMPONENT_LABEL_EVENT]: string;\n [trackingConstants.COMPONENT_ACTION_EVENT]: string;\n [trackingConstants.COMPONENT_POSITION_EVENT]: string;\n [trackingConstants.COMPONENT_LOCATION_EVENT]: string;\n [trackingConstants.COMPONENT_EVENT_DETAILS]: string;\n [trackingConstants.COMPONENT_URL_CLICKED]: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TrackData = Record;\n\nexport interface ITrackAction {\n name: string;\n type: TrackingType;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n}\n\nexport enum TrackingType {\n PageName,\n Referring,\n EventClick,\n}\n\nexport enum ExternalClient {\n Wrapper = 'sportsw',\n PokerNativeApp = 'poker',\n PokerDesktopClient = 'pokervc',\n PokerMac = 'pokermc',\n}\n\nexport interface TrackExternalClient {\n [trackingConstants.INVOKE_PRODUCT]: string;\n [trackingConstants.INVOKE_INTERFACE]: string;\n}\n\nexport interface TrackingSource {\n source: string;\n position?: number;\n gameDetails?: string;\n moduleType?: string;\n isFallbackMarketEnabled?: boolean;\n isAutomatedMarquee?: boolean;\n marqueeName?: string;\n sitecoreTemplateId?: string;\n marqueeType?: string;\n calendarTitle?: string;\n controllerTabName?: string;\n playersName?: string;\n betDetails?: string;\n variant?: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { TrackingService as VanillaTrackingService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nimport { TrackData, TrackError, TrackExternalClient, TrackUpdate, trackingConstants } from './tracking.models';\n\n@Injectable({ providedIn: 'root' })\nexport class TrackingService {\n constructor(private vanillaTracking: VanillaTrackingService) {}\n\n get whenReady(): Observable {\n return this.vanillaTracking.whenReady;\n }\n\n /**\n * @description Updates the Datalayer and triggers the event specified by the eventName parameter\n * @param eventName name of the event\n * @param trackingObject (optional) object to update the Datalayer with\n * @param options (optional) timeout in milliseconds for the Google Tag Manager\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n track(eventName: string, trackingObject?: TrackData, options?: any): void {\n this.vanillaTracking.triggerEvent(eventName, trackingObject, options);\n this.clean();\n }\n\n /**\n * @description Updates the Datalayer without triggering any event\n * @param data object to update the Datalayer with\n */\n update(trackingObject: Partial | Partial): void {\n this.vanillaTracking.updateDataLayer(trackingObject);\n }\n\n /**\n * @description Triggers a special error event by pushing it to the Datalayer\n * @param errorDetail convention is to use an object with two properties:\n * 1. 'message' with the string description of the error and\n * 2. 'code' with the error identificator\n */\n trackError(errorDetail: TrackError): void {\n this.vanillaTracking.reportError(errorDetail);\n }\n\n /**\n * @description Similar to {@link track} incl. additional update event triggered\n * @param eventName name of the event\n * @param trackingObject (optional) object to update the Datalayer with\n * @param options (optional) timeout in milliseconds for the Google Tag Manager\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n triggerEventWithCleaning(eventName?: string, trackingObject?: TrackData, options?: any): void {\n this.vanillaTracking.triggerEvent(eventName || 'pageView', trackingObject, options);\n this.clean();\n }\n\n private clean(): void {\n this.vanillaTracking.updateDataLayer({ [trackingConstants.PAGE_REFERRING_ACTION]: '' });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { CookieProvider } from '@frontend/sports/common/core/utils/cookie-provider';\nimport { ExternalClient, TrackExternalClient, TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { NativeAppService, OnAppInit, UrlService } from '@frontend/vanilla/core';\n\nimport { ArcRestrictionService } from '../arc/arc-restriction.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ExternalNativeAppService implements OnAppInit {\n private channels: { [key: string]: string } = {};\n hideGamingOverlayByArc: boolean;\n constructor(\n private urlService: UrlService,\n private cookieProvider: CookieProvider,\n private trackingService: TrackingService,\n private nativeAppService: NativeAppService,\n private arcRestrictionService: ArcRestrictionService,\n ) {\n this.channels['desktoplobby'] = 'desktop lobby';\n this.channels['desktoptable'] = 'desktop table';\n this.channels['mobilelobby'] = 'mobile lobby';\n this.arcRestrictionService.gamingCrossSellEnabled$.subscribe((state) => {\n this.hideGamingOverlayByArc = state;\n });\n }\n\n onAppInit(): void | Promise {\n const parsedUrl = this.urlService.current();\n const invokeModule = parsedUrl.search.get('invokeModule');\n\n if (this.nativeAppService.applicationName) {\n if (invokeModule != null) {\n this.cookieProvider.setCookie('invokeModule', invokeModule, { expires: 1 });\n }\n const trackingData = this.getTrackingData(this.nativeAppService.applicationName, invokeModule!);\n this.trackingService.update(trackingData);\n }\n }\n\n private getTrackingData(value: string, channel: string): Partial {\n switch (value.toLowerCase()) {\n case ExternalClient.Wrapper:\n return {\n [trackingConstants.INVOKE_PRODUCT]: 'sports to sports',\n [trackingConstants.INVOKE_INTERFACE]: '',\n };\n case ExternalClient.PokerNativeApp:\n case ExternalClient.PokerDesktopClient:\n case ExternalClient.PokerMac:\n return {\n [trackingConstants.INVOKE_PRODUCT]: 'poker to sports',\n [trackingConstants.INVOKE_INTERFACE]: this.channels[channel],\n };\n default:\n return {};\n }\n }\n\n isPokerNativeApp(): boolean {\n return this.nativeAppService.applicationName?.toLowerCase() === 'poker';\n }\n}\n","import { Injectable, Type } from '@angular/core';\n\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { LoggerFactory } from '@frontend/sports/common/core/feature/logging';\n\nimport { ComponentLoaderService, ComponentProxy } from '../deferred/component-loader.service';\nimport ModuleLoaderService from '../deferred/module-loader.service';\nimport { EventDetailsModule } from './event-details.module';\n\nexport interface EventSwitcherEventViewBinding {\n event: EventModel;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class EventSwitcherComponentLoaderService extends ComponentLoaderService {\n moduleName = 'EventDetailsModule';\n componentProxy: ComponentProxy;\n\n constructor(moduleLoader: ModuleLoaderService, loggerFactory: LoggerFactory) {\n super(moduleLoader, loggerFactory);\n this.componentProxy = this.getComponentProxy((module) => module.eventSwitcherComponent);\n }\n\n getEventSwitcherComponent(): ComponentProxy {\n return this.componentProxy;\n }\n\n getModule(): Promise> {\n return import('./event-details.module').then((m) => m.EventDetailsModule);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { find } from 'lodash-es';\n\nimport { ColumnLayoutService } from './column-layout.service';\nimport { ColumnComponentRegistration, ColumnSize, LayoutColumn } from './layout.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ColumnLayoutRegister implements OnDestroy {\n private resized: LayoutColumn[] = [];\n private readonly registeredComponents: ColumnComponentRegistration[] = [];\n\n constructor(private columnLayout: ColumnLayoutService) {}\n\n register(registration: ColumnComponentRegistration): void {\n this.columnLayout.register(registration);\n this.registeredComponents.push(registration);\n }\n\n resizeColumn(size: ColumnSize, column: LayoutColumn): void {\n if (!find(this.resized, column)) {\n this.resized.push(column);\n }\n\n this.columnLayout.setColumnSize(size, column);\n }\n\n ngOnDestroy(): void {\n this.clear();\n }\n\n private clear(): void {\n this.registeredComponents.forEach((registration) => this.columnLayout.remove(registration.component, registration.location));\n\n this.registeredComponents.splice(0, this.registeredComponents.length);\n this.resized.forEach((column) => this.columnLayout.setColumnSize(ColumnSize.Default, column));\n }\n}\n","import { Injectable, Type } from '@angular/core';\n\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\n// It's disabled because it needs to be awaited when creating the component proxy\n// eslint-disable-next-line no-restricted-imports\nimport { SitecoreMyBetsConfig, SportsUserSettings } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory } from '@frontend/sports/common/core/feature/logging';\n\nimport { ComponentLoaderService, ComponentProxy } from '../deferred/component-loader.service';\nimport ModuleLoaderService from '../deferred/module-loader.service';\nimport { MyBetsModule } from './my-bets.module';\n\nexport interface EventViewBinding {\n event: EventModel;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MyBetsComponentLoaderService extends ComponentLoaderService {\n moduleName = 'MyBetsModule';\n\n constructor(\n moduleLoader: ModuleLoaderService,\n loggerFactory: LoggerFactory,\n private sitecoreMyBets: SitecoreMyBetsConfig,\n private userSettings: SportsUserSettings,\n ) {\n super(moduleLoader, loggerFactory);\n }\n\n getColumnViewComponent(): ComponentProxy {\n return this.getComponentProxy((module) => module.columnComponent, 'my-bets', this.sitecoreMyBets, this.userSettings);\n }\n\n getEventViewComponent(): ComponentProxy {\n return this.getComponentProxy((module) => module.eventComponent, 'my-bets', this.sitecoreMyBets, this.userSettings);\n }\n\n getModule(): Promise> {\n return import('./my-bets.module').then((m) => m.MyBetsModule);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { MyBetsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { ExpiringCache } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { OpenBetsSummary } from '@frontend/sports/types/models/my-bets';\nimport { firstValueFrom, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryApiService {\n private readonly logger: SportsRemoteLogger;\n private mybetsStatsCache: ExpiringCache;\n\n constructor(\n private apiService: ApiService,\n loggerFactory: LoggerFactory,\n private myBetsConfig: MyBetsConfig,\n ) {\n this.logger = loggerFactory.getLogger('MyBetsApiService');\n\n const timeout = (this.myBetsConfig.cacheTimeout || 100) / 1000;\n this.mybetsStatsCache = new ExpiringCache(timeout);\n }\n\n async getOpenBetsCount(): Promise {\n const source = this.apiService.get('mybets/stats').pipe(\n catchError((error) => {\n this.logger.error(error, 'Get OpenBetsCount response failed.');\n\n return of({\n openEvents: {},\n openBetsCount: 0,\n liveBetsCount: 0,\n betNumbers: [],\n isMigrationSummary: false,\n hasError: false,\n });\n }),\n );\n\n return firstValueFrom(this.mybetsStatsCache.getOrCreate(`mybets-stats`, source));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { MyBetsConfig, MyBetsVisualizationTrackingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { DispatcherService } from '@frontend/sports/common/core/utils/dispatcher';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { filterSportsEmitLast, fromSportsEnter, fromSportsLeave } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { OpenBetsSummary } from '@frontend/sports/types/models/my-bets';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { sum } from 'lodash-es';\nimport { BehaviorSubject, Subject, firstValueFrom, timer } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SummaryApiService } from './summary-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MyBetsSummaryService {\n private readonly defaultSummary: OpenBetsSummary = {\n openEvents: {},\n liveBetsCount: 0,\n openBetsCount: 0,\n betNumbers: [],\n isMigrationSummary: false,\n hasError: false,\n };\n\n private readonly EARLY_PAYOUT_SUCCESS = 'EARLY_PAYOUT_SUCCESS';\n private readonly BET_PLACE_SUCCESS = 'BET_PLACE_SUCCESS';\n private readonly CASH_OUT_ALREADY_EXECUTED = 'CASH_OUT_ALREADY_EXECUTED';\n\n private _summaryUpdate = new BehaviorSubject | undefined>(undefined);\n readonly summaryUpdate = this._summaryUpdate.pipe(filter(isDefined));\n\n private stopped$: Subject;\n\n constructor(\n private loader: SummaryApiService,\n private dispatcherService: DispatcherService,\n private userService: UserService,\n private mybetsConfig: MyBetsConfig,\n private mybetsVisualizationTrackingConfig: MyBetsVisualizationTrackingConfig,\n ) {\n this.stopped$ = new Subject();\n\n if (this.userService.isAuthenticated) {\n this.start();\n }\n\n this.userService.onUserLogInWithSettings$.pipe(filterSportsEmitLast()).subscribe(() => this.start());\n this.userService.onUserLogout$.pipe(filterSportsEmitLast()).subscribe(() => this.stop());\n fromSportsEnter().subscribe(() => this.userService.isAuthenticated && this.start());\n fromSportsLeave().subscribe(() => () => this.stop());\n }\n\n get summary(): Readonly {\n return this._summaryUpdate.value || this.defaultSummary;\n }\n\n update(summary: OpenBetsSummary): void {\n this._summaryUpdate.next(summary);\n }\n\n getOpenBetsCount(evt: EventModel): number {\n const openEvents = this.summary.openEvents;\n if (Object.keys(openEvents).length !== 0 && this.mybetsVisualizationTrackingConfig?.isEnabled) {\n return openEvents[evt.id]?.openBetsCount;\n }\n const eventIds = [evt.id, ...(evt.splitFixtureIds || []), ...(evt.hybridFixtureData?.fixtureId ? [evt.hybridFixtureData.fixtureId] : [])];\n const eventCounts = eventIds.filter((eid) => openEvents[eid]).map((eid) => openEvents[eid].openBetsCount);\n\n return sum(eventCounts);\n }\n\n private start(): void {\n this.stop();\n this.subscribeBetPlacementActions();\n firstValueFrom(this.mybetsVisualizationTrackingConfig.whenReady);\n if (!this.mybetsConfig.isOpenSummaryLoadingRestricted) {\n timer(0, this.mybetsConfig.myBetsRefreshInMilliseconds || 120000)\n .pipe(takeUntil(this.stopped$))\n .subscribe(() => this.refresh());\n }\n }\n\n async refresh(aggresive: boolean = false): Promise {\n if (aggresive || !this._summaryUpdate.value || this.summary.openBetsCount > 0) {\n let summary: OpenBetsSummary;\n try {\n summary = await this.loader.getOpenBetsCount();\n } catch {\n summary = { ...this.defaultSummary };\n }\n\n this.update(summary);\n }\n }\n\n private stop(): void {\n this.stopped$.next();\n }\n\n private subscribeBetPlacementActions(): void {\n this.dispatcherService.on(this.EARLY_PAYOUT_SUCCESS).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n\n this.dispatcherService.on(this.BET_PLACE_SUCCESS).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n\n this.dispatcherService.on(this.CASH_OUT_ALREADY_EXECUTED).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n }\n\n private onBetPlacementAction = () => {\n this.refresh(true);\n };\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class DomainEvent {\n constructor(public key: string) {}\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n LoginResponseHandlerService,\n LoginResponseOptions,\n LoginStoreService,\n ProductNavigationService,\n SharedFeaturesApiService,\n UserService,\n WorkflowHandleResponse,\n WorkflowResponse,\n} from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\n\n/**\n * @whatItDoes Provides options to get the user out of workflow mode.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowService {\n constructor(\n private api: SharedFeaturesApiService,\n private loginResponseHandler: LoginResponseHandlerService,\n private loginStore: LoginStoreService,\n private user: UserService,\n private productNavigationService: ProductNavigationService,\n ) {}\n\n /**\n * @whatItDoes Calls POS API `FinalizeWorkflow` method, executes login including redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalize(options?: LoginResponseOptions): Promise {\n return await this.execute(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'finalizeWorkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `SkipWorkflow` method, executes login including redirection.\n *\n * @description\n *\n * Skips the workflow.\n */\n async skip(options?: LoginResponseOptions): Promise {\n return await this.execute(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'skipworkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `workflowdata` and then finalize().\n *\n * @description\n *\n * Finalizes workflow with data.\n */\n async finalizeWithData(data: any, options?: LoginResponseOptions): Promise {\n await firstValueFrom(this.api.post('workflowdata', data));\n\n return await this.finalize(options);\n }\n\n /**\n * @whatItDoes Calls POS API `FinalizeWorkflow` method, executes login without redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalizeHandle(options?: LoginResponseOptions): Promise {\n return await this.executeHandle(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'finalizeWorkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `workflowdata`, then `FinalizeWorkflow` method, executes login without redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalizeWithDataHandle(data: any, options?: LoginResponseOptions): Promise {\n await firstValueFrom(this.api.post('workflowdata', data));\n\n return await this.finalizeHandle(options);\n }\n\n private async execute(action: string, options?: LoginResponseOptions): Promise {\n let response;\n\n try {\n response = await firstValueFrom(this.api.post(action, this.getParameters()));\n } catch (loginError: any) {\n this.productNavigationService.goTo(loginError?.redirectUrl);\n return { loginError: loginError };\n }\n\n await this.loginResponseHandler.handleResponse(response, options);\n\n return {}; // better not to return response here because handleResponse redirects. if they need it they need to use Handle method\n }\n\n private async executeHandle(action: string, options?: LoginResponseOptions): Promise {\n let response;\n\n try {\n response = await firstValueFrom(this.api.post(action, this.getParameters()));\n } catch (error: any) {\n this.productNavigationService.goTo(error?.redirectUrl);\n\n return { loginError: error };\n }\n\n const loginRedirectInfo = await this.loginResponseHandler.handle(response, options);\n\n return { loginResponse: response, loginRedirectInfo: loginRedirectInfo };\n }\n\n private getParameters(): { loginType: string | null } {\n return {\n loginType: this.loginStore.LoginType,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService, MessageType } from '@frontend/vanilla/core';\n\nexport interface ProviderParameters {\n loginUrl: string;\n redirectUrl: string;\n clientId: string;\n appendNonce: boolean;\n welcomeDialog?: boolean;\n sdkUrl?: string;\n sdkVersion?: string;\n sdkCookie?: boolean;\n sdkLogin?: boolean;\n redirectQueryParams?: { [key: string]: string };\n}\n\n@LazyClientConfig({ key: 'vnLogin2', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: loginConfigFactory,\n})\nexport class LoginConfig extends LazyClientConfigBase {\n autoFocusUsername?: boolean;\n closeButtonTextCssClass: string;\n connectCardVersion: number;\n disableLoginOnFormInvalid: boolean;\n disableFeatureDataPrefetch: { [key: string]: string };\n enableLimitsToaster: boolean;\n fastLoginOptionsEnabled: boolean;\n fastLoginToggleEnabled: boolean;\n isDateOfBirthEnabled: boolean;\n isLoginWithMobileEnabled: boolean;\n loginMessages: { urlPattern: string; name: string; type: MessageType }[];\n loginOptions: string[];\n passwordHintsOnNthAttempt: number;\n prefillUsernameToggleEnabled: boolean;\n providers: { [key: string]: ProviderParameters };\n recaptchaEnterpriseEnabled: boolean;\n rememberMeEnabled: boolean;\n resetLoginFormErrorCodes: string[];\n selectedTabEnabled: boolean;\n showCloseButtonAsText: boolean;\n showRegisterButton: boolean;\n signInByEmail: boolean;\n titleCssClass: string;\n useOpenRegistrationEvent: boolean;\n useProviderProfile: boolean;\n v2: boolean;\n version: number;\n showLoginSpinner: boolean;\n}\n\nexport function loginConfigFactory(service: LazyClientConfigService) {\n return service.get(LoginConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { DslService, UserEvent, UserLoginEvent, UserService } from '@frontend/vanilla/core';\nimport { first } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { LoginConfig } from './login.client-config';\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginService {\n constructor(\n private userService: UserService,\n private loginConfig: LoginConfig,\n private dslService: DslService,\n ) {}\n\n runAfterLogin(source: string, callback: () => void) {\n this.loginConfig.whenReady.pipe(first()).subscribe(() => {\n if (this.userService.isAuthenticated) {\n this.runCallback(source, callback);\n }\n\n this.userService.events\n .pipe(filter((event: UserEvent) => event instanceof UserLoginEvent))\n .subscribe(() => this.runCallback(source, callback));\n });\n }\n\n private runCallback(source: string, callback: () => void) {\n const featureName =\n Object.keys(this.loginConfig.disableFeatureDataPrefetch).find((name: string) => source.toLowerCase().includes(name.toLowerCase())) || '';\n\n const dsl = this.loginConfig.disableFeatureDataPrefetch[featureName];\n\n if (dsl) {\n this.dslService.evaluateExpression(dsl).subscribe((disabled: boolean) => {\n if (!disabled) {\n callback();\n }\n });\n } else {\n callback();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @experimental\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CryptoResourceService {\n constructor(private api: SharedFeaturesApiService) {}\n\n encrypt(data: string, purpose: string): Observable {\n return this.api.get('crypto/encrypt', { data, purpose }).pipe(map((response: { result: string }) => response?.result));\n }\n\n decrypt(data: string, purpose: string): Observable {\n return this.api.get('crypto/decrypt', { data, purpose }).pipe(map((response: { result: string }) => response?.result));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { CryptoResourceService } from './crypto-resource.service';\n\n/**\n * @description This service provides means to encrypt/decrypt data with the configured secret key for a given purpose.\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108}\n *\n * @howToUse\n * ```\n * const encryptedData = await cryptoService.encrypt(data, purpose);\n * const decryptedData = await cryptoService.decrypt(encryptedData, purpose);\n * ```\n *\n * @experimental\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CryptoService {\n constructor(private cryptoResourceService: CryptoResourceService) {}\n\n /**\n * @param data Value to encrypt.\n * @param purpose Encryption identifier (e.g. `login`).\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108/keys/303112/valuematrix}\n */\n encrypt(data: string, purpose: string): Observable {\n return this.cryptoResourceService.encrypt(data, purpose);\n }\n\n /**\n * @param value Encrypted value.\n * @param purpose Decryption identifier (e.g. `login`).\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108/keys/303112/valuematrix}\n */\n decrypt(value: string, purpose: string): Observable {\n return this.cryptoResourceService.decrypt(value, purpose);\n }\n}\n","import { DynamicScriptsService, LoginProviderProfile, ScriptOptions, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { AuthOptions, AuthResponse } from './login-providers.models';\n\n/**\n * @protected\n */\nexport abstract class BaseLoginProviderService {\n get loginResponse(): Observable | null> {\n return this.loginResponseSubject;\n }\n\n get profile(): Observable {\n return this.profileSubject;\n }\n\n protected loginResponseSubject = new Subject | null>();\n protected profileSubject = new BehaviorSubject(null);\n\n protected constructor(\n private dynamicScriptsService: DynamicScriptsService,\n private trackingService: TrackingService,\n ) {}\n\n protected async initSdk(typeofSdk: string, config: ProviderParameters, scriptOptions?: ScriptOptions): Promise {\n return new Promise((resolve) => {\n if (typeofSdk === 'undefined' && config.sdkUrl && config.clientId) {\n this.dynamicScriptsService\n .load(config.sdkUrl, {\n async: true,\n defer: true,\n crossorigin: 'anonymous',\n ...scriptOptions,\n })\n .then(() => resolve());\n } else {\n resolve();\n }\n });\n }\n\n protected trackSuccessLoginWithProvider(provider: string) {\n this.trackingService.triggerEvent('Event.Tracking', {\n 'component.LabelEvent': provider,\n 'component.ActionEvent': 'success',\n 'component.PositionEvent': 'not applicable',\n 'component.LocationEvent': 'not applicable',\n 'component.EventDetails': 'direct login',\n 'component.URLClicked': 'not applicable',\n });\n }\n\n protected abstract login(options: AuthOptions): void;\n\n protected abstract initProfile(config?: ProviderParameters): void;\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CookieName,\n CookieService,\n DynamicScriptsService,\n Logger,\n LoginProvider,\n LoginProviderProfile,\n NavigationService,\n TrackingService,\n} from '@frontend/vanilla/core';\nimport { CryptoService } from '@frontend/vanilla/shared/crypto';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions, AuthResponse } from './login-providers.models';\n\nimport SignInResponseI = AppleSignInAPI.SignInResponseI;\nimport UserI = AppleSignInAPI.UserI;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AppleProviderService extends BaseLoginProviderService {\n constructor(\n private cookieService: CookieService,\n private cryptoService: CryptoService,\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth: AuthResponse) => {\n const authorization = auth.response?.authorization;\n const redirectUrl = auth.options.authUrl?.redirectUrl;\n\n if (authorization && redirectUrl) {\n // Authenticate using SDK login\n redirectUrl.search.append('access_token', authorization.id_token);\n redirectUrl.search.append('code', authorization.code);\n\n if (auth.response?.user) {\n const nonce = this.cookieService.get(CookieName.Nonce);\n\n this.cryptoService.encrypt(JSON.stringify(auth.response.user), nonce).subscribe({\n next: (encryptedUserData: string) => this.cookieService.put(CookieName.AppleUser, encryptedUserData),\n complete: () => {\n this.trackSuccessLoginWithProvider(LoginProvider.APPLE);\n this.navigationService.goTo(redirectUrl.absUrl());\n },\n error: () => this.navigationService.goTo(redirectUrl.absUrl()),\n });\n }\n } else {\n this.logger.warn('Filed to login with Apple provider; fallback to login with URI', auth?.response);\n this.navigationService.goTo(auth?.options.authUrl?.url?.absUrl() || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n if (options.providerParameters?.sdkLogin) {\n this.initSdk(typeof AppleID, options.providerParameters, {\n onloadCallback: () =>\n AppleID?.auth.init({\n clientId: options.providerParameters?.clientId,\n redirectURI: options.providerParameters?.redirectUrl,\n }),\n }).then(() => {\n if (typeof AppleID !== 'undefined') {\n AppleID.auth.signIn(options.providerParameters).then(\n (response: SignInResponseI) => {\n this.loginResponseSubject.next({ response, options });\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n });\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Apple profile data from cookies\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile() {\n const encryptedUserData = this.cookieService.get(CookieName.AppleUser);\n const profile: LoginProviderProfile = {\n provider: LoginProvider.APPLE,\n };\n\n if (encryptedUserData) {\n const nonce = this.cookieService.get(CookieName.Nonce);\n\n this.cryptoService.decrypt(encryptedUserData, nonce).subscribe({\n next: (data: string) => {\n const userData: UserI = JSON.parse(data);\n profile.name = `${userData.name.firstName} ${userData.name.lastName}`;\n },\n complete: () => this.profileSubject.next(profile),\n error: () => this.profileSubject.next(profile),\n });\n } else {\n this.profileSubject.next(profile);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DynamicScriptsService, Logger, LoginProvider, LoginProviderProfile, NavigationService, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions, AuthResponse, FacebookProfileData } from './login-providers.models';\n\nimport LoginStatus = facebook.LoginStatus;\nimport StatusResponse = facebook.StatusResponse;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FacebookProviderService extends BaseLoginProviderService {\n get connectionStatus(): Observable {\n return this.connectionStatusSubject;\n }\n\n private connectionStatusSubject = new BehaviorSubject('unknown');\n\n constructor(\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth: AuthResponse) => {\n const authResponse = auth.response?.authResponse;\n const redirectUrl = auth.options.authUrl?.redirectUrl;\n\n if (authResponse?.accessToken && redirectUrl) {\n // Authenticate using SDK login\n redirectUrl.search.append('access_token', authResponse.accessToken);\n if (authResponse.signedRequest) {\n redirectUrl.search.append('code', authResponse.signedRequest);\n }\n redirectUrl.search.append('expires_in', authResponse.expiresIn.toString());\n\n if (authResponse.data_access_expiration_time) {\n redirectUrl.search.append('data_access_expiration_time', authResponse.data_access_expiration_time.toString());\n }\n\n this.trackSuccessLoginWithProvider(LoginProvider.FACEBOOK);\n this.navigationService.goTo(redirectUrl.absUrl());\n } else {\n this.logger.warn('Filed to login with Facebook provider; fallback to login with URI', auth);\n this.navigationService.goTo(auth.options.authUrl.url || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n const config = options.providerParameters;\n\n if (config?.sdkLogin) {\n this.initSdk(typeof FB, config, { onloadCallback: () => this.initFacebookAuth(config) }).then(\n () => {\n if (typeof FB !== 'undefined') {\n FB.login((response: StatusResponse) => {\n this.loginResponseSubject.next({ response, options });\n });\n } else {\n this.loginResponseSubject.next(null);\n }\n },\n (reason: any) => this.loginResponseSubject.next(reason),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Facebook profile data\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile(config?: ProviderParameters) {\n const profile: LoginProviderProfile = {\n provider: LoginProvider.FACEBOOK,\n };\n\n if (config?.sdkLogin) {\n this.initSdk(typeof FB, config, { onloadCallback: () => this.initFacebookAuth(config) }).then(\n () => {\n if (typeof FB !== 'undefined') {\n FB.getLoginStatus((response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n\n FB.api('/me', { fields: 'name,picture{url}' }, (response: FacebookProfileData) => {\n profile.name = response?.name;\n profile.pictureUrl = response?.picture?.data.url;\n\n this.profileSubject.next(profile);\n });\n } else {\n this.profileSubject.next(profile);\n }\n },\n () => this.profileSubject.next(profile),\n );\n } else {\n this.profileSubject.next(profile);\n }\n }\n\n private initFacebookAuth(config: ProviderParameters) {\n FB?.init({\n appId: config.clientId,\n cookie: !!config.sdkCookie,\n xfbml: true,\n version: config.sdkVersion || 'v10.0',\n });\n\n FB?.Event.subscribe('auth.login', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n FB?.Event.subscribe('auth.statusChange', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n FB?.Event.subscribe('auth.authResponseChange', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DynamicScriptsService, Logger, LoginProvider, LoginProviderProfile, NavigationService, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions } from './login-providers.models';\n\nimport AuthResponse = gapi.auth2.AuthResponse;\nimport GoogleAuth = gapi.auth2.GoogleAuth;\nimport GoogleUser = gapi.auth2.GoogleUser;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleProviderService extends BaseLoginProviderService {\n constructor(\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth) => {\n const redirectUrl = auth.options.authUrl.redirectUrl;\n\n if (auth.response && redirectUrl) {\n // Authenticate using SDK login\n\n redirectUrl.search.append('access_token', auth.response.access_token);\n redirectUrl.search.append('code', auth.response.id_token);\n redirectUrl.search.append('expires_in', auth.response.expires_in.toString());\n redirectUrl.search.append('data_access_expiration_time', auth.response.expires_at.toString());\n\n this.trackSuccessLoginWithProvider(LoginProvider.GOOGLE);\n this.navigationService.goTo(redirectUrl.absUrl());\n } else {\n this.logger.warn('Filed to login with Google provider; fallback to login with URI', auth);\n this.navigationService.goTo(auth.options.authUrl.url?.absUrl() || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n if (options.providerParameters?.sdkLogin) {\n this.initAuth(options.providerParameters).then(\n (googleAuth: GoogleAuth | null) => {\n if (googleAuth) {\n googleAuth.signIn(options.signInOptions).then(\n (response: GoogleUser) => {\n this.loginResponseSubject.next({ response: response.getAuthResponse(), options });\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Google profile data\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile(config?: ProviderParameters) {\n const profile: LoginProviderProfile = {\n provider: LoginProvider.GOOGLE,\n };\n\n if (config?.sdkLogin) {\n this.initAuth(config).then(\n (googleAuth: GoogleAuth | null) => {\n const user = googleAuth?.currentUser.get().getBasicProfile();\n\n const googleProfile: LoginProviderProfile = {\n ...profile,\n name: user?.getName() || '',\n pictureUrl: user?.getImageUrl() || '',\n };\n this.profileSubject.next(googleProfile);\n },\n () => this.profileSubject.next(profile),\n );\n } else {\n this.profileSubject.next(profile);\n }\n }\n\n private initAuth(config: ProviderParameters): Promise {\n return new Promise((resolve) => {\n if (typeof gapi === 'undefined') {\n this.initSdk(typeof gapi, config).then(\n () => {\n if (typeof gapi !== 'undefined') {\n gapi.load('auth2', () => {\n resolve(\n gapi.auth2.init({\n client_id: config.clientId,\n }),\n );\n });\n } else {\n resolve(null);\n }\n },\n () => this.loginResponseSubject.next(null),\n );\n } else {\n resolve(\n gapi.auth2.init({\n client_id: config.clientId,\n }),\n );\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CommonMessages,\n CookieName,\n CookieService,\n LoginProvider,\n LoginProviderProfile,\n MessageLifetime,\n MessageQueueService,\n MessageScope,\n MessageType,\n NavigationService,\n ParsedUrl,\n UrlService,\n UtilsService,\n} from '@frontend/vanilla/core';\nimport { LoginConfig, ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\n\nimport { AppleProviderService } from './apple-provider.service';\nimport { FacebookProviderService } from './facebook-provider.service';\nimport { GoogleProviderService } from './google-provider.service';\nimport { AuthUrl, ProviderLoginOptions } from './login-providers.models';\n\nimport SigninOptions = AppleSignInAPI.ClientConfigI;\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginProvidersService {\n readonly providersProfile = new BehaviorSubject(null);\n\n constructor(\n private loginConfig: LoginConfig,\n private commonMessages: CommonMessages,\n private urlService: UrlService,\n private cookieService: CookieService,\n private utilsService: UtilsService,\n private navigationService: NavigationService,\n private messageQueueService: MessageQueueService,\n private appleProviderService: AppleProviderService,\n private googleProviderService: GoogleProviderService,\n private facebookProviderService: FacebookProviderService,\n ) {}\n\n /**\n * Initialize user profiles when available and `sdkLogin` config is enabled.\n **/\n initProvidersProfile() {\n combineLatest([this.appleProviderService.profile, this.googleProviderService.profile, this.facebookProviderService.profile]).subscribe(\n ([appleProfile, googleProfile, facebookProfile]) => {\n if (googleProfile && facebookProfile && appleProfile) {\n this.providersProfile.next([appleProfile, googleProfile, facebookProfile]);\n }\n },\n );\n\n this.appleProviderService.initProfile();\n this.googleProviderService.initProfile(this.loginConfig.providers[LoginProvider.GOOGLE]);\n this.facebookProviderService.initProfile(this.loginConfig.providers[LoginProvider.FACEBOOK]);\n }\n\n /**\n * Invokes login with via URL for a given provider.\n * Appends passed queryParams parameter values to the URL provided via {@link ProviderLoginOptions}.\n **/\n urlAuth(options: ProviderLoginOptions) {\n const providerConfig = this.loginConfig.providers[options.provider];\n\n if (providerConfig?.appendNonce) {\n this.updateNonce();\n }\n\n const authUrl = this.getAuthUrl(options, providerConfig);\n\n if (authUrl?.url?.absUrl()) {\n if (options.provider === LoginProvider.YAHOO) {\n this.appendToUri(authUrl.url, [CookieName.Nonce, CookieName.LoginHint, CookieName.IdTokenHint]);\n }\n\n this.navigationService.goTo(authUrl.url.absUrl());\n } else {\n this.showLoginError();\n }\n }\n\n /** Invokes login with via SDK for a given provider. */\n sdkAuth(options: ProviderLoginOptions) {\n const providerParameters = this.loginConfig.providers[options.provider];\n\n if (providerParameters?.appendNonce) {\n this.updateNonce();\n }\n\n const authUrl = this.getAuthUrl(options, providerParameters);\n\n if (!authUrl?.url && !authUrl?.redirectUrl) {\n this.showLoginError();\n } else if (options.provider === LoginProvider.APPLE) {\n const signInOptions: SigninOptions = {\n ...options.loginOptions,\n clientId: providerParameters?.clientId,\n nonce: authUrl?.url?.search.get(CookieName.Nonce) || undefined,\n };\n this.appleProviderService.login({\n signInOptions,\n providerParameters,\n authUrl,\n });\n } else if (options.provider === LoginProvider.GOOGLE) {\n this.googleProviderService.login({\n signInOptions: options.loginOptions,\n providerParameters,\n authUrl,\n });\n } else if (options.provider === LoginProvider.FACEBOOK) {\n this.facebookProviderService.login({\n signInOptions: options.loginOptions,\n providerParameters,\n authUrl,\n });\n }\n }\n\n private getAuthUrl(options: ProviderLoginOptions, providerConfig?: ProviderParameters): AuthUrl | null {\n if (!providerConfig) {\n return null;\n }\n\n const redirectUrl = this.urlService.parse(providerConfig.redirectUrl);\n\n for (const key in options.redirectQueryParams) {\n const redirectQuery = options.redirectQueryParams[key];\n\n if (redirectQuery) {\n redirectUrl.search.append(key, redirectQuery);\n }\n }\n\n const url = this.urlService.parse(providerConfig.loginUrl);\n url.search.append('client_id', providerConfig.clientId);\n url.search.append('redirect_uri', redirectUrl.absUrl());\n\n for (const key in options.queryParams) {\n const query = options.queryParams[key];\n\n if (query) {\n url.search.append(key, query);\n }\n }\n\n if (providerConfig.appendNonce) {\n url.search.append(CookieName.Nonce, this.cookieService.get(CookieName.Nonce));\n }\n\n return { url, redirectUrl };\n }\n\n /** Appends values of cookies with the listed keys and deletes those cookies. */\n private appendToUri(url: ParsedUrl, cookieKeys: string[] = []) {\n cookieKeys.forEach((cookieName: string) => {\n const value = this.cookieService.get(cookieName);\n\n if (value) {\n url.search.append(cookieName, value);\n this.cookieService.remove(cookieName);\n }\n });\n }\n\n /**\n * Updates the 'nonce' cookie.\n *\n * A unique, single-use string to associate a client session with the user's identity token.\n * This value is also used to prevent replay attacks and allows you to correlate the initial authentication request\n * with the identity token provided in the authorization response.\n **/\n private updateNonce() {\n this.cookieService.remove(CookieName.Nonce);\n\n const guid = this.utilsService.generateGuid();\n this.cookieService.put(CookieName.Nonce, guid);\n }\n\n private showLoginError() {\n this.messageQueueService.clear();\n this.messageQueueService.add({\n scope: MessageScope.Login,\n html: this.commonMessages.LoginError || '',\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { filterSports } from '@frontend/sports/host-app/sports-product/feature/utils';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHelper {\n private firstLoadFlag = 2;\n\n constructor(private router: Router) {\n this.router.events.pipe(filterSports(), takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.navigationEnded(event);\n }\n });\n }\n\n private navigationEnded(event: NavigationEnd): void {\n if (this.firstLoadFlag) {\n this.firstLoadFlag--;\n }\n\n const isAddBetsRoute = event && event.url.toLowerCase().indexOf('addbets') > -1;\n\n if (isAddBetsRoute && this.firstLoadFlag) {\n // we're initializing the app on the addBets route and might open the betslip popup\n // don't allow back;\n this.firstLoadFlag = 2;\n }\n\n if (event && event.url.indexOf('labelhost') > -1) {\n this.firstLoadFlag = 2;\n }\n }\n\n forceHomePage(): boolean {\n return this.firstLoadFlag === 1;\n }\n\n allowBack(): boolean {\n return !this.firstLoadFlag;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Params } from '@angular/router';\n\nimport { FixtureBase } from '@cds/betting-offer';\nimport { YahooOpenIdConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { RacingUrlParam } from '@frontend/sports/racing/feature/models';\nimport {\n CookieService,\n GoToOptions,\n LoginProvider,\n MenuAction,\n MenuActionsService,\n NativeAppService,\n NavigationService,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { LoginProvidersService } from '@frontend/vanilla/shared/login-providers';\nimport { Subject, concatMap, distinctUntilKeyChanged, tap, windowTime } from 'rxjs';\n\nimport { NavigationHelper } from './navigation-helper.service';\nimport { FavouritesDashboardUrlParam, LiveUrlParam, MarketUrlParam, MyBetsUrlParam, SportUrlParam, UrlHelperService } from './url-helper.service';\n\nexport enum YahooOpenIdTriggerOption {\n BetSlip = 'betslip',\n}\n\nexport interface GoToLink {\n url: string;\n options: GoToOptions;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RedirectHelperService {\n private readonly navigationSubject$ = new Subject();\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n navigation: NavigationService,\n private navigationHelper: NavigationHelper,\n private urlHelper: UrlHelperService,\n private menuActionsService: MenuActionsService,\n private loginWithProvidersService: LoginProvidersService,\n private cookieService: CookieService,\n private yahooOpenidconfig: YahooOpenIdConfig,\n private nativeAppService: NativeAppService,\n ngZone: NgZone,\n ) {\n ngZone.runOutsideAngular(() =>\n this.navigationSubject$\n .pipe(\n windowTime(300),\n concatMap((obs) => obs.pipe(distinctUntilKeyChanged('url'))),\n tap((redirect: GoToLink) => navigation.goTo(redirect.url, redirect.options)),\n takeUntilDestroyed(),\n )\n .subscribe(),\n );\n }\n\n goToLiveSport(options: { sport: UrlParam; region?: UrlParam; ignoreBrowserHistory?: boolean; isEsport?: boolean }): void {\n this.goToPage(\n this.urlHelper.getLiveSportUrl({ sport: options.sport, region: options.region, isEsport: options.isEsport }),\n options.ignoreBrowserHistory,\n );\n }\n\n goToLive(tab: LiveUrlParam = LiveUrlParam.Highlights, tracking?: string): void {\n this.goToPage(this.urlHelper.getLiveUrl(tab, tracking));\n }\n\n goToSport(sport: UrlParam, context?: SportUrlParam, subContext?: SportUrlParam.Competitions): void;\n goToSport(sport: UrlParam, region?: UrlParam, league?: UrlParam): void;\n goToSport(sport: UrlParam, regionOrContext?: UrlParam | SportUrlParam, leagueOrSubContext?: UrlParam | SportUrlParam.Competitions): void {\n let url: string;\n\n if (!regionOrContext || typeof regionOrContext === 'string') {\n url = this.urlHelper.getSportUrl(sport, regionOrContext as SportUrlParam, leagueOrSubContext as SportUrlParam.Competitions);\n } else {\n url = this.urlHelper.getSportUrl(sport, SportUrlParam.Betting, regionOrContext, leagueOrSubContext as UrlParam);\n }\n\n this.goToPage(url);\n }\n\n goToVirtualSport(sport: UrlParam, competition?: UrlParam, event?: string): void {\n this.goToPage(this.urlHelper.getVirtualSportUrl(sport, competition, event));\n }\n\n goToEvent(event: UrlParam, market?: MarketUrlParam): void {\n this.goToPage(this.urlHelper.getEventUrl(event, market));\n }\n\n goToLogin(options?: {\n forceReload?: boolean;\n appendReferrer?: boolean | string;\n referrerNeedsLoggedInUser?: boolean;\n useYahooLogin?: boolean;\n }): void {\n const returnUrl = typeof options?.appendReferrer === 'string' ? options.appendReferrer : '';\n if (options?.useYahooLogin && this.isYahooOpenIdFlow()) {\n this.loginWithProvidersService.urlAuth({\n provider: LoginProvider.YAHOO,\n redirectQueryParams: { trigger: YahooOpenIdTriggerOption.BetSlip },\n });\n } else {\n this.menuActionsService.invoke(MenuAction.GOTO_LOGIN, '', [undefined, undefined, { returnUrl }]);\n }\n }\n\n goToHorseRacing(page: RacingUrlParam): void;\n goToHorseRacing(meeting: UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void;\n goToHorseRacing(param: RacingUrlParam | UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void {\n if (typeof param === 'string') {\n this.goToPage(this.urlHelper.getRaceUrl(SportConstant.Horses, param));\n } else if (param) {\n this.goToPage(this.urlHelper.getRaceUrl(SportConstant.Horses, param, filterOrRace));\n }\n }\n\n goToFixtureByFixture(fixture: Pick): void {\n this.goToPage(this.urlHelper.getFixtureUrlByFixture(fixture));\n }\n\n goToFixture(sport: UrlParam, fixture: UrlParam, prefix?: string): void {\n this.goToPage(this.urlHelper.getFixtureUrl(sport, fixture, prefix));\n }\n\n goToFavouriteWithUrlParam(urlParam: FavouritesDashboardUrlParam): void {\n this.goToPage(this.urlHelper.getFavouriteUrlByUrlParam(urlParam));\n }\n\n goHome(ignoreBrowserHistory?: boolean, isBackNavigation = false): void {\n this.goToPage(this.urlHelper.getHomeUrl(), ignoreBrowserHistory ?? true, isBackNavigation);\n }\n\n goToMyBets(route?: MyBetsUrlParam, trackingParams?: Params, ignoreBrowserHistory: boolean = true): void {\n this.goToPage(this.urlHelper.getMyBetsUrl(route, trackingParams), ignoreBrowserHistory);\n }\n\n goToPage(url?: string, ignoreBrowserHistory: boolean = false, isBackNavigation = false): void {\n if (!url) {\n return;\n }\n\n this.navigationSubject$.next({ url, options: { replace: ignoreBrowserHistory, isBackNavigation } });\n }\n\n goToRacing(sportId: SportConstant, param: RacingUrlParam | UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void {\n this.goToPage(this.urlHelper.getRaceUrl(sportId, param, filterOrRace));\n }\n\n goBack(url?: string): void {\n if (url) {\n this.goToPage(url, undefined, true);\n\n return;\n }\n\n if (this.navigationHelper.forceHomePage() && !this.userIsComingFromPortalPromotions) {\n this.goToPage('/', undefined, true);\n\n return;\n }\n\n this.#window.history.back();\n }\n\n reloadPage(): void {\n this.#window.location.reload();\n }\n\n private isYahooOpenIdFlow(): boolean {\n const nativeAppValue = this.yahooOpenidconfig.nativeAppCookie || '';\n const loginHint = !!this.cookieService.get('login_hint');\n const idTokenHint = !!this.cookieService.get('id_token_hint');\n\n return this.yahooOpenidconfig.enableOnBetPlacement && this.nativeAppService.applicationName === nativeAppValue && (loginHint || idTokenHint);\n }\n\n private get userIsComingFromPortalPromotions(): boolean {\n const referrer = this._doc.referrer;\n\n return referrer.indexOf('promotions') > -1;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivationEnd, ActivationStart, GuardsCheckEnd, NavigationEnd, Router, RoutesRecognized } from '@angular/router';\n\nimport { clone } from 'lodash-es';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { buffer, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class RouterEventsService {\n private currentRouteActivationEnd = new BehaviorSubject(undefined);\n private currentRouteActivationStart = new BehaviorSubject(undefined);\n private currentRouteRoutesRecognized = new BehaviorSubject(undefined);\n private recognizedRoutes: string[] = [];\n\n /**\n *\n * It filters all the ActivationEnd events that occured before NavigationEnd and takes the very first one\n * That's because angular will emit multiple ActivationEnd event for each child route until entire route tree is resolved\n * and NavigationEnd indicates the end as expected\n *\n * @readonly\n * @type {Observable}\n * @memberof RouterEventsService\n */\n get currentActivationEnd(): Observable {\n return this.currentRouteActivationEnd.asObservable();\n }\n\n /**\n *\n * It filters all the ActivationStart events that occured before GuardsCheckEnd and takes the very first one\n * That's because angular will emit multiple ActivationStart event for each child route until entire route tree is resolved\n * and GuardsCheckEnd indicates the end as expected\n *\n * @readonly\n * @type {Observable}\n * @memberof RouterEventsService\n */\n get currentActivationStart(): Observable {\n return this.currentRouteActivationStart.asObservable();\n }\n\n /**\n *\n * It filters all the NavigationStart\n *\n * @readonly\n * @type {Observable}\n * @memberof RouterEventsService\n */\n get currentRoutesRecognized(): Observable {\n return this.currentRouteRoutesRecognized.asObservable();\n }\n\n get isDirectLink(): boolean {\n return this.recognizedRoutes.length === 1;\n }\n\n get urlHistory(): string[] {\n return clone(this.recognizedRoutes);\n }\n\n constructor(private router: Router) {\n this.initCurrentRouteActivationEnd();\n this.initCurrentRouteActivationStart();\n this.initCurrentRouteRoutesRecognized();\n }\n\n private initCurrentRouteActivationEnd(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof ActivationEnd),\n buffer(this.router.events.pipe(filter((e) => e instanceof NavigationEnd))),\n map((events) => events[0]),\n distinctUntilChanged(),\n )\n .subscribe(this.currentRouteActivationEnd);\n }\n\n private initCurrentRouteActivationStart(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof ActivationStart),\n buffer(this.router.events.pipe(filter((e) => e instanceof GuardsCheckEnd))),\n map((events) => events[events.length - 1]),\n distinctUntilChanged(),\n )\n .subscribe(this.currentRouteActivationStart);\n }\n\n private initCurrentRouteRoutesRecognized(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof RoutesRecognized),\n distinctUntilChanged(),\n )\n .subscribe((event) => {\n this.recognizedRoutes.push(event.url);\n this.currentRouteRoutesRecognized.next(event);\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { RouteTag } from '@frontend/sports/common/core/data-access/route';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { filterSports } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { BehaviorSubject, map } from 'rxjs';\n\nexport enum ScrollFreezeServiceTypes {\n All,\n Page,\n CustomScrollbar,\n None,\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollFreezeService {\n private _freezeCountPage = 0;\n private _freezeCountPs = 0;\n private urlWhenScreenWasFrozen!: string;\n\n private currentRouteTag$ = new BehaviorSubject(undefined);\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n private router: Router,\n routerEvent: RouterEventsService,\n ) {\n routerEvent.currentActivationEnd\n .pipe(\n filterSports(),\n map((ae) => {\n return ae?.snapshot?.data?.['tag'] as RouteTag;\n }),\n )\n .subscribe(this.currentRouteTag$);\n }\n\n freezeScroll(type?: ScrollFreezeServiceTypes): void {\n if (type === ScrollFreezeServiceTypes.None) {\n return;\n }\n switch (type) {\n case ScrollFreezeServiceTypes.CustomScrollbar:\n this.freezeCountPs++;\n break;\n case ScrollFreezeServiceTypes.All:\n this.freezeCountPs++;\n this.freezePage();\n break;\n case ScrollFreezeServiceTypes.Page:\n default:\n this.freezePage();\n break;\n }\n }\n\n private freezePage(): void {\n this.freezeCountPage++;\n if (this.freezeCountPage > 1) {\n return;\n }\n\n this.urlWhenScreenWasFrozen = this.router.url;\n\n this.bodyStyle.setProperty('top', `-${this.scrollingElement.scrollTop}px`);\n this.bodyElement.classList.add('noscroll');\n }\n\n forceScroll(x?: number, y?: number): void {\n if (this.isScrollFrozen) {\n this.bodyStyle.setProperty('top', `${-1 * (y || 0)}px`);\n } else {\n this.#window.scroll({ top: y, left: x });\n }\n }\n\n releaseScroll(type?: ScrollFreezeServiceTypes): void {\n if (type === ScrollFreezeServiceTypes.None) {\n return;\n }\n switch (type) {\n case ScrollFreezeServiceTypes.CustomScrollbar:\n this.freezeCountPs--;\n break;\n case ScrollFreezeServiceTypes.All:\n this.freezeCountPs--;\n this.releaseScrollPage();\n break;\n case ScrollFreezeServiceTypes.Page:\n default:\n this.releaseScrollPage();\n break;\n }\n }\n\n releaseScrollPage(): void {\n this.freezeCountPage--;\n if (this.freezeCountPage) {\n return;\n }\n\n // When 'position' css-property is removed (set by .noscroll class) element autoscrolls to top,\n // thus we need to save top position and manually scroll to it\n // PS: Safari returns wrong value so we check style.top first.\n const currentTopStr = this.bodyElement.style.top || this.#window.getComputedStyle(this.bodyElement)['top'] || '';\n\n this.bodyStyle.removeProperty('top');\n this.bodyElement.classList.remove('noscroll');\n\n if (this.shouldSkipResetScroll) {\n return;\n }\n\n const currentTop = Math.abs(parseInt(currentTopStr.replace(/px/gi, ''), 10));\n if (currentTop >= 0) {\n this.scrollingElement.scrollTop = currentTop;\n }\n }\n\n // if only difference is the popup being removed then do the scroll-reset on EDP so it doesnt scroll to top\n private get shouldSkipResetScroll(): boolean {\n if (this.currentRouteTag$.value !== RouteTag.EventDetails) {\n return this.isUrlHasChanged();\n }\n\n const parsedUrl = this.router.parseUrl(this.router.url);\n delete parsedUrl.queryParams?.['popup'];\n\n return this.isUrlHasChanged(parsedUrl.toString());\n }\n\n get isScrollFrozen(): boolean {\n return Boolean(this.bodyElement.classList && this.bodyElement.classList.contains('noscroll')) || this.freezeCountPs > 0;\n }\n\n private get scrollingElement(): Element {\n return this._doc.scrollingElement || this._doc.body;\n }\n\n private get bodyElement(): HTMLElement {\n return this._doc.body;\n }\n\n private get bodyStyle(): CSSStyleDeclaration {\n return this.bodyElement.style;\n }\n\n private get freezeCountPage(): number {\n return this._freezeCountPage;\n }\n\n private set freezeCountPage(value: number) {\n this._freezeCountPage = value < 0 ? 0 : value;\n }\n\n private get freezeCountPs(): number {\n return this._freezeCountPs;\n }\n\n private set freezeCountPs(value: number) {\n this._freezeCountPs = value < 0 ? 0 : value;\n }\n\n private isUrlHasChanged(url?: string): boolean {\n return (url ?? this.router.url) !== this.urlWhenScreenWasFrozen;\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Wrapper around MutationObserver API\n */\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverService {\n private defaultOptions: MutationObserverInit = {\n childList: true,\n subtree: true,\n };\n\n readonly #window = inject(WINDOW);\n\n /*\n * Provides an observable stream of DOM changes for a given element\n * */\n observe(element: HTMLElement, options: MutationObserverInit = this.defaultOptions): Observable {\n return new Observable((observer) => {\n let mutationObserver: MutationObserver | undefined;\n\n if (this.isMutationObserverSupported) {\n mutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n observer.next(mutations);\n });\n\n mutationObserver.observe(element, options);\n }\n\n const unsubscribe = () => {\n if (mutationObserver) {\n mutationObserver.disconnect();\n }\n };\n\n return unsubscribe;\n });\n }\n\n private get isMutationObserverSupported(): boolean {\n return 'MutationObserver' in this.#window;\n }\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { ElementRef, Injectable, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { InternalFeaturesConfig } from '@frontend/sports/common/client-config-data-access';\n\n@Injectable({ providedIn: 'root' })\nexport class AutomationService implements OnDestroy {\n get isActive(): boolean {\n return this.internalFeatureConfig.isAutomationDebugEnabled;\n }\n\n constructor(\n rendererFactory: RendererFactory2,\n private internalFeatureConfig: InternalFeaturesConfig,\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n private readonly attributeName = 'data-automation';\n private renderer: Renderer2;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private destroy = () => {};\n\n private removeAllAttributes(elementRef: ElementRef): void {\n const element = elementRef.nativeElement as Element;\n const attributes = Object.keys(element.attributes)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n .map((key) => {\n const attribute = element.attributes[key as keyof NamedNodeMap] as object;\n if ('name' in attribute) {\n return attribute.name as string;\n }\n return '';\n })\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n .filter((n) => n.startsWith(this.attributeName));\n\n for (const attr of attributes) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.renderer.removeAttribute(element, attr);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addAttr(elementRef: ElementRef, value: string | { [key: string]: any } | null | undefined): void {\n if (!this.isActive) {\n return;\n }\n\n this.removeAllAttributes(elementRef);\n\n if (value == null || typeof value === 'string') {\n // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore No idea why there is a typescript error here.\n this.setSimpleAttribute(elementRef, value);\n } else {\n this.setExtendedAttribute(elementRef, value);\n }\n\n this.destroy = () => this.removeAllAttributes(elementRef);\n }\n\n private setSimpleAttribute(elementRef: ElementRef, value: string | null | undefined): void {\n if (typeof value === 'undefined') {\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, 'undefined');\n\n return;\n }\n\n if (value == null) {\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, 'null');\n\n return;\n }\n\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setExtendedAttribute(elementRef: ElementRef, value: { [key: string]: any }): void {\n const keys = Object.keys(value);\n\n for (const key of keys) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.renderer.setAttribute(elementRef.nativeElement, `${this.attributeName}-${key}`, value[key]);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\nimport { AutomationService } from './automation.service';\n\n/**\n * Adds a data-automation-selector attribute to html element.\n * the input data should be passed always through binding.\n * Example:\n *
\n *
\n *
\n */\n@Directive({\n selector: '[msAutomation]',\n})\nexport class AutomationDirective {\n @Input('msAutomation')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set data(value: string | { [key: string]: any }) {\n if (!this.service.isActive) {\n return;\n }\n\n this.service.addAttr(this.elementRef, value);\n }\n\n constructor(\n private service: AutomationService,\n private elementRef: ElementRef,\n ) {\n if (!service.isActive) {\n // Add a safe check is somebody did not used a binding for the data.\n const elm = elementRef.nativeElement as Element;\n const hasAttribute = elm.hasAttribute('msAutomation');\n if (hasAttribute) {\n elm.removeAttribute('msAutomation');\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AutomationDirective } from './automation.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AutomationDirective],\n exports: [AutomationDirective],\n})\nexport class AutomationModule {}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function (window, document, exportName, undefined) {\n 'use strict';\n\n var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\n var TEST_ELEMENT = document.createElement('div');\n var TYPE_FUNCTION = 'function';\n var round = Math.round;\n var abs = Math.abs;\n var now = Date.now;\n\n /**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\n function setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n }\n\n /**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n }\n\n /**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\n function each(obj, iterator, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n }\n\n /**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\n function deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\n var assign;\n if (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n } else {\n assign = Object.assign;\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n var extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n }, 'extend', 'Use `assign`.');\n\n /**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n var merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n }, 'merge', 'Use `assign`.');\n\n /**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n function inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign(childP, properties);\n }\n }\n\n /**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\n function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n }\n\n /**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n function boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n }\n\n /**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\n function ifUndefined(val1, val2) {\n return val1 === undefined ? val2 : val1;\n }\n\n /**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n }\n\n /**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n }\n\n /**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\n function hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\n function inStr(str, find) {\n return str.indexOf(find) > -1;\n }\n\n /**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n function splitStr(str) {\n return str.trim().split(/\\s+/g);\n }\n\n /**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\n function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n i++;\n }\n return -1;\n }\n }\n\n /**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\n function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n }\n\n /**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n function uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n }\n\n /**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n function prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n }\n\n /**\n * get a unique id\n * @returns {number} uniqueId\n */\n var _uniqueId = 1;\n function uniqueId() {\n return _uniqueId++;\n }\n\n /**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\n function getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n }\n var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n var SUPPORT_TOUCH = 'ontouchstart' in window;\n var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\n var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n var INPUT_TYPE_TOUCH = 'touch';\n var INPUT_TYPE_PEN = 'pen';\n var INPUT_TYPE_MOUSE = 'mouse';\n var INPUT_TYPE_KINECT = 'kinect';\n var COMPUTE_INTERVAL = 25;\n var INPUT_START = 1;\n var INPUT_MOVE = 2;\n var INPUT_END = 4;\n var INPUT_CANCEL = 8;\n var DIRECTION_NONE = 1;\n var DIRECTION_LEFT = 2;\n var DIRECTION_RIGHT = 4;\n var DIRECTION_UP = 8;\n var DIRECTION_DOWN = 16;\n var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\n var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\n var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n var PROPS_XY = ['x', 'y'];\n var PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n /**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n this.init();\n }\n Input.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function () {},\n /**\n * bind the events\n */\n init: function () {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n /**\n * unbind the events\n */\n destroy: function () {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n };\n\n /**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n function createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n }\n\n /**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n function inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n }\n\n /**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n function computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n }\n function computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n }\n\n /**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n function computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity,\n velocityX,\n velocityY,\n direction;\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n }\n\n /**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n }\n\n /**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n function getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0,\n y = 0,\n i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n }\n\n /**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\n function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n }\n\n /**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n }\n\n /**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n }\n\n /**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n }\n\n /**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n }\n\n /**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n }\n var MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n };\n var MOUSE_ELEMENT_EVENTS = 'mousedown';\n var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n /**\n * Mouse events input\n * @constructor\n * @extends Input\n */\n function MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n }\n inherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n });\n var POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n };\n\n // in IE10 the pointer types is defined as an enum\n var IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n };\n var POINTER_ELEMENT_EVENTS = 'pointerdown';\n var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n // IE10 has prefixed support, and case-sensitive\n if (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n }\n\n /**\n * Pointer events input\n * @constructor\n * @extends Input\n */\n function PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n Input.apply(this, arguments);\n this.store = this.manager.session.pointerEvents = [];\n }\n inherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType == INPUT_TYPE_TOUCH;\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n });\n var SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\n var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Touch events input\n * @constructor\n * @extends Input\n */\n function SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n Input.apply(this, arguments);\n }\n inherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n return [all, changed];\n }\n var TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n function TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n Input.apply(this, arguments);\n }\n inherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n }\n\n /**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\n var DEDUP_TIMEOUT = 2500;\n var DEDUP_DISTANCE = 25;\n function TouchMouseInput() {\n Input.apply(this, arguments);\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n this.primaryTouch = null;\n this.lastTouches = [];\n }\n inherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType == INPUT_TYPE_TOUCH,\n isMouse = inputData.pointerType == INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n this.callback(manager, inputEvent, inputData);\n },\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n });\n function recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n }\n function setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function () {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n }\n function isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX,\n y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x),\n dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n }\n var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\n var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n // magical touchAction value\n var TOUCH_ACTION_COMPUTE = 'compute';\n var TOUCH_ACTION_AUTO = 'auto';\n var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n var TOUCH_ACTION_NONE = 'none';\n var TOUCH_ACTION_PAN_X = 'pan-x';\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n var TOUCH_ACTION_MAP = getTouchActionProps();\n\n /**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n TouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function (value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n /**\n * just re-set the touchAction value\n */\n update: function () {\n this.set(this.manager.options.touchAction);\n },\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function () {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function (input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n },\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function (srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n };\n\n /**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n }\n function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n }\n\n /**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n var STATE_POSSIBLE = 1;\n var STATE_BEGAN = 2;\n var STATE_CHANGED = 4;\n var STATE_ENDED = 8;\n var STATE_RECOGNIZED = STATE_ENDED;\n var STATE_CANCELLED = 16;\n var STATE_FAILED = 32;\n\n /**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n function Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n this.id = uniqueId();\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n Recognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function (options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function () {\n return this.requireFail.length > 0;\n },\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function (otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function (input) {\n var self = this;\n var state = this.state;\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function (input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function () {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function (inputData) {},\n // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function () {},\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function () {}\n };\n\n /**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\n function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n }\n\n /**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\n function directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n }\n\n /**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\n function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n }\n\n /**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n function AttrRecognizer() {\n Recognizer.apply(this, arguments);\n }\n inherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function (input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function (input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n });\n\n /**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n this.pX = null;\n this.pY = null;\n }\n inherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n getTouchAction: function () {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n directionTest: function (input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n attrTest: function (input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n },\n emit: function (input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n function PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n emit: function (input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n function PressRecognizer() {\n Recognizer.apply(this, arguments);\n this._timer = null;\n this._input = null;\n }\n inherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_AUTO];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function (input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n function RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n });\n\n /**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n getTouchAction: function () {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n attrTest: function (input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return this._super.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n emit: function (input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n }\n });\n\n /**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n function TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n inherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_MANIPULATION];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n failTimeout: function () {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function () {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n }\n\n /**\n * @const {string}\n */\n Hammer.VERSION = '2.0.7';\n\n /**\n * default settings\n * @namespace\n */\n Hammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {\n enable: false\n }], [PinchRecognizer, {\n enable: false\n }, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n }, ['tap']], [PressRecognizer]],\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n };\n var STOP = 1;\n var FORCED_STOP = 2;\n\n /**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n Manager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function (options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function (force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n curRecognizer = session.curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (\n // 1\n !curRecognizer || recognizer == curRecognizer ||\n // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function (recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function (recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n },\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function (recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n return this;\n },\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function (events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function (events, handler) {\n if (events === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function (event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function () {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n };\n\n /**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n function toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n }\n\n /**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n function triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n }\n assign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n });\n\n // this prevents errors when Hammer is loaded in the presence of an AMD\n // style loader but by script tag, not by the loader.\n var freeGlobal = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}; // jshint ignore:line\n freeGlobal.Hammer = Hammer;\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Hammer;\n });\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n } else {\n window[exportName] = Hammer;\n }\n})(window, document, 'Hammer');","import { Injectable, NgZone, inject } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\n\nexport class EventService {\n protected _subject$: Subject | undefined;\n private subscription: Subscription | undefined;\n private _eventAuditTime = 150;\n private get subject(): Subject {\n if (!this._subject$) {\n this.setup();\n return this._subject$;\n } else {\n return this._subject$;\n }\n }\n constructor(\n private zone: NgZone,\n private target: Element | Window,\n private event: string,\n ) {}\n\n subscribe(next?: (target: EventTarget) => void, error?: (error: unknown) => void, complete?: () => void): Subscription {\n return this.subject.subscribe({ next, error, complete });\n }\n\n asObservable(): Observable {\n return this.subject.asObservable();\n }\n\n private listener(): void {\n this.zone.run(() => {\n if (!this._subject$ || !this._subject$.observed) {\n this.subscription?.unsubscribe();\n this._subject$ = undefined;\n } else {\n this._subject$.next(this.target);\n }\n });\n }\n\n private setup(): asserts this is this & { _subject$: Subject } {\n this._subject$ = new Subject();\n\n this.zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this.target, this.event)\n .pipe(auditTime(this._eventAuditTime))\n .subscribe(() => {\n this.listener();\n });\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class WindowEventService {\n readonly #window = inject(WINDOW);\n\n constructor(private zone: NgZone) {}\n\n scroll = new EventService(this.zone, this.#window, 'scroll');\n resize = new EventService(this.zone, this.#window, 'resize');\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error */\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\n\nimport { EventService } from '@frontend/sports/common/core/utils/window-event';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nexport type ScrollElement = Element | Window;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollContainerService {\n target: ScrollElement | undefined;\n eventTarget: ScrollElement | undefined;\n private scrollSubject = new Subject();\n private scrollSubscription: Subscription | undefined;\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(private zone: NgZone) {\n this.setTarget((this._doc.scrollingElement || this.#window) as ScrollElement, this.#window);\n }\n\n get scroll(): Observable {\n return this.scrollSubject.asObservable();\n }\n\n get scrollTop(): number {\n return (this.target as Window).scrollY || (this.target as Element).scrollTop || 0;\n }\n\n get height(): number {\n return (this.target as Window).innerHeight || (this.target as Element).clientHeight;\n }\n\n get container(): HTMLElement {\n //@ts-ignore allow dynamic accessor, please don't use this, instead, use typing.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.target['document'] || this.target;\n }\n\n get scrollHeight(): number {\n return (this.target as Element).scrollHeight;\n }\n\n scrollTo(x?: number, y?: number): void {\n requestAnimationFrame(() => {\n const element = this.target as Element;\n\n if (x !== undefined) {\n element.scrollLeft = -x;\n }\n\n if (y !== undefined) {\n element.scrollTop = -y;\n }\n });\n }\n\n scrollToDelta(x?: number, y?: number): void {\n requestAnimationFrame(() => {\n const element = this.target as Element;\n\n if (x !== undefined) {\n element.scrollLeft = element.scrollLeft + x;\n }\n\n if (y !== undefined) {\n element.scrollTop = element.scrollTop + y;\n }\n });\n }\n\n /**\n * Set the element that will be scrolling.\n *\n * The method has two parameters because on mobile, at least, we can have the following situation:\n * - when calling window.scrollTop the property is 0 even if the page is scrolled\n * - if we use document.scrollingElement then the scrollTop property is correct but the scroll event does not fire on this element\n *\n * So the `target` element is the one that returns the correct `scrollTop` and the `scrollEventTarget` is the element on which the `scroll` event fires.\n *\n * :(\n *\n * @param target - element that returns the correct `scrollTop` value\n * @param [scrollEventTarget] - element on which the `scroll` event fires\n * @memberof ScrollContainerService\n */\n setTarget(target: ScrollElement, scrollEventTarget?: ScrollElement): void {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n\n this.eventTarget = scrollEventTarget || target;\n const scrollService = new EventService(this.zone, this.eventTarget, 'scroll');\n\n this.target = target;\n this.scrollSubscription = scrollService.subscribe(() => {\n this.scrollSubject.next(target);\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/consistent-type-assertions\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n promise: Promise;\n resolve!: (value?: T | PromiseLike) => void;\n reject!: (reason?: any) => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */\nimport { ComponentRef, ViewRef } from '@angular/core';\n\nimport { Deferred } from '@frontend/sports/common/core/utils/deferred';\nimport { isPromise } from '@frontend/sports/common/core/utils/extended-types';\nimport { ReplaySubject } from 'rxjs';\n\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalCoverComponent } from './modal-cover.component';\nimport { ModalWindowComponent, PopupClosingResult } from './modal-window.component';\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef,\n ) {}\n}\n\n/**\n * A reference to an active (currently opened) modal. Instances of this class\n * can be injected into components passed as modal content.\n */\nexport class ActiveModal {\n /**\n * Can be used to close a modal, passing an optional result.\n */\n //lint rule disabled because the function is meant to be overriden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n close(reason?: any): void {}\n\n /**\n * Can be used to dismiss a modal, passing an optional reason.\n */\n //lint rule disabled because the function is meant to be overriden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n dismiss(reason?: any): void {}\n\n /**\n * A promise that is resolved when a modal is closed and rejected when a modal is dismissed.\n */\n result: Promise;\n}\n\n/**\n * A reference to a newly opened modal.\n */\nexport class ModalRef {\n private static readonly SPACE = ' ';\n private updateData$ = new ReplaySubject(1);\n\n readonly newData$ = this.updateData$.asObservable();\n\n /**\n * The instance of component used as modal's content.\n * Undefined when a TemplateRef is used as modal's content.\n */\n get componentInstance(): any {\n if (this._contentRef?.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The instance of componentRef used as modal's content.\n * Undefined when a TemplateRef is used as modal's content.\n */\n get componentRef(): any {\n if (this._contentRef?.componentRef) {\n return this._contentRef.componentRef;\n }\n }\n\n constructor(\n private _windowCmptRef: ComponentRef | null,\n private _contentRef: ContentRef | null,\n private _backdropCmptRef?: ComponentRef | null,\n private _coverCmptRef?: ComponentRef | null,\n private _beforeDismiss?: () => boolean | Promise,\n ) {\n _windowCmptRef?.instance.dismiss.subscribe(this.dismiss.bind(this));\n\n this.deferred = new Deferred();\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.deferred.promise.then(null, () => {});\n }\n\n updateTitle(title: string): void {\n const windowComponentInstance = this._windowCmptRef?.instance;\n\n if (windowComponentInstance) {\n windowComponentInstance.title = title;\n }\n }\n\n updateData(data: object): void {\n this.updateData$.next(data);\n }\n\n private deferred: Deferred;\n\n /**\n * A promise that is resolved when a modal is closed and rejected when a modal is dismissed.\n */\n get result(): Promise {\n return this.deferred.promise;\n }\n\n /**\n * Append a class name to class list.\n *\n * @param currentClasses\n */\n private appendClass(currentClasses: string, newClass: string): string {\n const classList = currentClasses.split(ModalRef.SPACE);\n classList.push(newClass);\n\n return classList.join(ModalRef.SPACE);\n }\n\n /**\n * Add a css class to the modal-window root\n */\n addWindowClass(windowClass: string): this {\n const windowComponentInstance = this._windowCmptRef && this._windowCmptRef.instance;\n if (windowComponentInstance) {\n windowComponentInstance.windowClass = this.appendClass(windowComponentInstance.windowClass, windowClass);\n }\n\n return this;\n }\n\n /**\n * Add a new class to the backdrop element.\n *\n * @param newClass the class to add.\n */\n addBackdropClass(newClass: string): this {\n const backdrop = this._backdropCmptRef && this._backdropCmptRef.instance;\n if (backdrop) {\n backdrop.backdropClass = this.appendClass(backdrop.backdropClass, newClass);\n }\n\n return this;\n }\n\n /**\n * Can be used to close a modal, passing an optional result.\n */\n close(result?: PopupClosingResult): void {\n if (this._windowCmptRef) {\n this.deferred.resolve(result);\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n this.deferred.reject(reason);\n this._removeModalElements();\n }\n\n /**\n * Can be used to dismiss a modal, passing an optional reason.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(\n (result: any) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n );\n //lint rule disabled to explicitly compare to false values, undefined or nulls should still dismiss\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef?.location.nativeElement as HTMLElement;\n windowNativeEl.remove();\n this._windowCmptRef?.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement as HTMLElement;\n backdropNativeEl.remove();\n this._backdropCmptRef.destroy();\n }\n\n if (this._coverCmptRef) {\n const coverNativeEl = this._coverCmptRef.location.nativeElement as HTMLElement;\n coverNativeEl.remove();\n this._coverCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n this._coverCmptRef = null;\n }\n}\n"],"names":["p","AccaBoostConfig","_a","c","factory","__ngFactoryType__","__ngConditionalFactory__","accaBoostConfigFactory","ɵɵinject","ClientConfigService","__decorate","ClientConfig","key","product","ClientConfigProductName","SPORTS","service","get","AccountBalanceConfig","accountBalanceConfigFactory","AnimationConfig","animationConfigFactory","AppConfig","appConfigFactory","ARCConfig","aRCConfigFactory","ArcUserConfig","arcUserConfigFactory","reload","AutomatedMarqueeTilesConfig","automatedMarqueeTilesConfigFactory","AZMenuConfig","aZMenuConfigFactory","AZSportsDataModel","aZSportsDataModelFactory","BannersConfig","bannersConfigFactory","BaseTranslationConfig","baseTranslationConfigFactory","BetBuilderConfig","betBuilderConfigFactory","BetContextualTrackingConfig","betContextualTrackingConfigFactory","BetFinderConfig","betFinderConfigFactory","BetradarImages","betradarImagesFactory","BetradarVisualizationConfig","betradarVisualizationConfigFactory","BetslipBarConfig","betslipBarConfigFactory","BetslipConfig","betslipConfigFactory","BetslipOnboardingConfig","betslipOnboardingConfigFactory","BetslipUpsellConfig","betslipUpsellConfigFactory","BettingInsightsConfiguration","bettingInsightsConfigurationFactory","BettingInsightsSitecoreConfig","LazyClientConfigBase","bettingInsightsSitecoreConfigFactory","LazyClientConfigService","LazyClientConfig","BettingOfferConfig","bettingOfferConfigFactory","CalendarConfig","calendarConfigFactory","CalendarData","calendarDataFactory","CasinoMiniGamesConfig","casinoMiniGamesConfigFactory","CDNCachingConfig","cDNCachingConfigFactory","CdsConfig","cdsConfigFactory","ClientCachingConfig","clientCachingConfigFactory","CompetitionTreeConfig","competitionTreeConfigFactory","ComposableConfig","composableConfigFactory","ConnectionConfig","connectionConfigFactory","CrmConfig","crmConfigFactory","CRMTokenImages","cRMTokenImagesFactory","CurrencyConfig","currencyConfigFactory","CustomerDnaBettingOfferConfig","customerDnaBettingOfferConfigFactory","CustomerDnaDefaultStakeTeaserConfig","customerDnaDefaultStakeTeaserConfigFactory","EarlyPayoutConfig","earlyPayoutConfigFactory","EpcotConfig","epcotConfigFactory","EventDetailsConfig","eventDetailsConfigFactory","EventSwitcherConfig","eventSwitcherConfigFactory","FavouritesConfig","favouritesConfigFactory","FormCouponConfig","formCouponConfigFactory","GeolocationConfig","geolocationConfigFactory","GridConfig","gridConfigFactory","GTMConfig","gTMConfigFactory","ImagesConfig","imagesConfigFactory","ImgConfigurationData","imgConfigurationDataFactory","InternalFeaturesConfig","internalFeaturesConfigFactory","IntroPagesConfig","introPagesConfigFactory","IsQuickDepositAllowedResult","isQuickDepositAllowedResultFactory","LayoutNavigationConfig","layoutNavigationConfigFactory","LcpCandidateConfig","lcpCandidateConfigFactory","LineSwitcherConfig","lineSwitcherConfigFactory","LinkExternalAccountConfig","linkExternalAccountConfigFactory","LiveNavigationConfig","liveNavigationConfigFactory","LiveSectionConfig","liveSectionConfigFactory","MarketGroupingConfig","marketGroupingConfigFactory","MarketHelpConfig","marketHelpConfigFactory","MarqueeConfig","marqueeConfigFactory","MarqueeTilesConfig","marqueeTilesConfigFactory","MatchListConfig","matchListConfigFactory","MediaConfig","mediaConfigFactory","MobileConfirmationNotificationClientConfig","f","mobileConfirmationNotificationClientConfigFactory","MocksConfig","mocksConfigFactory","MsPage","msPageFactory","MultiBuilderConfig","multiBuilderConfigFactory","MultiSportsHubConfig","multiSportsHubConfigFactory","MyBetsConfig","myBetsConfigFactory","MyBetsVisualizationTrackingConfig","myBetsVisualizationTrackingConfigFactory","NativeAlertsConfig","nativeAlertsConfigFactory","NewCustomerBettingOfferConfig","newCustomerBettingOfferConfigFactory","NextToGoConfig","nextToGoConfigFactory","NgrxReportsConfiguration","ngrxReportsConfigurationFactory","NotificationsConfig","notificationsConfigFactory","OddsConfig","oddsConfigFactory","OddsFormatSettings","oddsFormatSettingsFactory","OutrightsGridConfig","outrightsGridConfigFactory","OverAskConfig","overAskConfigFactory","OverrideStatisticsConfig","overrideStatisticsConfigFactory","ParticipantsConfig","participantsConfigFactory","PerformanceProfilingConfig","performanceProfilingConfigFactory","PersonalizedMarqueeConfig","personalizedMarqueeConfigFactory","PopularBetsConfig","popularBetsConfigFactory","PopularSearchData","popularSearchDataFactory","PopupsConfig","popupsConfigFactory","PrematchNavigationConfig","prematchNavigationConfigFactory","PrettyUrlsConfig","prettyUrlsConfigFactory","PreviousPageLocationConfiguration","previousPageLocationConfigurationFactory","PriceBoostConfig","priceBoostConfigFactory","QuickBetConfig","quickBetConfigFactory","QuickDepositConfig","quickDepositConfigFactory","QuickLinks","quickLinksFactory","RacingConfig","racingConfigFactory","RacingPromos","racingPromosFactory","RandomMultiGeneratorConfig","randomMultiGeneratorConfigFactory","RealityCheckConfig","realityCheckConfigFactory","ReBetConfig","reBetConfigFactory","RegionalQuickLinksConfig","regionalQuickLinksConfigFactory","RegionsConfig","regionsConfigFactory","ReturnsMessageConfig","returnsMessageConfigFactory","ScoreboardBackgroundConfig","scoreboardBackgroundConfigFactory","ScrollingSizeConfig","scrollingSizeConfigFactory","SeoConfig","seoConfigFactory","ShareMyBetConfig","shareMyBetConfigFactory","ShowcaseConfig","showcaseConfigFactory","Sitecore","sitecoreFactory","SitecoreEventDetailsConfig","sitecoreEventDetailsConfigFactory","SitecoreGameMessagesConfig","sitecoreGameMessagesConfigFactory","SitecoreMobileConfirmationConfig","sitecoreMobileConfirmationConfigFactory","SitecoreMyBetsConfig","sitecoreMyBetsConfigFactory","SitecoreOddsPreferenceConfig","sitecoreOddsPreferenceConfigFactory","SitecorePopularBetsConfig","sitecorePopularBetsConfigFactory","SitecoreTokenCardDetailsConfig","sitecoreTokenCardDetailsConfigFactory","SitemapSitecore","sitemapSitecoreFactory","SkeletonConfig","skeletonConfigFactory","SportsApiVersionConfig","sportsApiVersionConfigFactory","SportsConfig","sportsConfigFactory","SportsProductMenuConfig","sportsProductMenuConfigFactory","SportsProductMenuConfigV2","sportsProductMenuConfigV2Factory","SportsProductMenuSitecore","sportsProductMenuSitecoreFactory","SportsUserConfig","sportsUserConfigFactory","SportsUserSettings","sportsUserSettingsFactory","StakeConfig","stakeConfigFactory","StatisticsConfig","statisticsConfigFactory","StoryConfig","storyConfigFactory","StylingGridConfiguration","stylingGridConfigurationFactory","TaxationConfig","taxationConfigFactory","TeamPagesConfig","teamPagesConfigFactory","TeamPagesModuleConfig","teamPagesModuleConfigFactory","TeaserBetConfig","teaserBetConfigFactory","TimeFilterConfig","timeFilterConfigFactory","TopEventsConfig","topEventsConfigFactory","TopNavigationConfig","topNavigationConfigFactory","TournamentsDataConfig","tournamentsDataConfigFactory","TrapImages","trapImagesFactory","UKGCConfig","uKGCConfigFactory","WidgetConfig","widgetConfigFactory","WorldCupHubConfig","worldCupHubConfigFactory","YahooOpenIdConfig","yahooOpenIdConfigFactory","StateConverterService","constructor","statePersistServices","convert","state","Object","entries","map","value","feature","reduce","aggregate","current","save","StatePersistServiceRegistry","n","ɵfac","providedIn","_StateConverterService","NgrxReportsService","ngrxReportsConfig","local","session","STORE_KEY","actions","threshold","addAction","action","length","maxActions","shift","push","actionsUpdateThreshold","set","getActions","LocalStoreService","SessionStoreService","_NgrxReportsService","BadgeAndRibbonVisibilityOptions","NameVisibility","CompetitionPageType","VisibilityOnMarquee","TrackingTileNames","isTile","item","marqueeType","undefined","isSpecialTile","isRacingTile","racingEvent","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","inexact","quadrant","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","LN10_PRECISION","PI_PRECISION","P","x","finalise","min","max","k","Ctor","y","j","xdL","ydL","xd","yd","xs","ys","pr","rm","cosine","toLessThanHalfPi","m","rep","sd","t","t3","t3plusx","digitsToString","divide","w","d","len","one","tinyPow","taylorSeries","cosh2_x","i","d8","sinh2_x","d5","d16","d20","halfPi","getPi","wpr","xsd","px","r","x2","base","isBase10","denominator","inf","num","arg","guard","naturalLogarithm","getLn10","checkRoundingDigits","e","xe","xLTy","getBase10Exponent","q","naturalExponential","carry","z","getPrecision","sine","s","rL","toStringBinary","dp","checkInt32","str","finiteToString","maxD","d0","d1","d2","n0","n1","yn","intPow","ws","indexOfLastWord","getZeroString","repeating","di","rd","convertBase","baseIn","baseOut","arr","arrL","strL","cos2x","multiplyInteger","temp","compare","a","b","aL","bL","subtract","cmp","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","ltgt","pow","sum","c0","numerator","x1","parseDecimal","parseOther","divisor","isFloat","Decimal","sin2_x","isHyperbolic","isNeg","pi","abs","acos","acosh","add","asin","asinh","atan","atanh","atan2","cbrt","ceil","clamp","config","obj","v","useDefaults","ps","cos","cosh","clone","isDecimalInstance","div","exp","floor","hypot","ln","log","log10","log2","mod","mul","random","round","sin","sinh","sqrt","sub","tan","tanh","trunc","decimal_default","decimalOddsToAmerican","decimal","toNumber","PRECISION","minus","times","dividedBy","roundAmericanOdds","american","isUsOddsRounding","toNearest","roundDecimalToAmerican","NativeFraction","empty","toFraction","lessThanOrEqualTo","decimalPlaces","Math","simplify","values","denom","getCommonDivisor","equals","modulo","getValue","greatestCommonDivisor","NativePrice","odds","decimals","getFraction","fraction","americanOdds","getAmericanOdds","americanOddsCalculation","usOddsCalculated","fromNativePrice","default","input","fromNativePriceElement","americanOddsCalculated","usOddsRounding","price","getInitialDecimals","nativeFraction","usOdds","fromDecimals","fromDecimalsElement","americanOddsToDecimalOdds","greaterThan","floorDecimalToAmerican","decimalToAmerican","lessThan","other","toCompare","greaterThanOrEqualTo","equal","isEmpty","cloneNativePriceElement","toJSON","toString","UserService","isQuickDepositEnabled","sportsUser","columnSize","jurisdiction","clientIP","isEarlyPayoutAllowed","events","vUser","isAuthenticated","currency","ssoToken","geoCountry","country","username","workflowType","id","accountId","displayName","isEligibleForNewCustomerOffer","arcPlayBreak","arcUser","arcProfileDetails","associatedAccount","accountCategoryKey","pgAccountIdKey","onUserLogin$","pipe","filter","UserPreHooksLoginEvent","onUserLogInWithSettings$","UserLoginEvent","onUserLogout$","UserLogoutEvent","onAuthenticationChange$","UserAutologoutEvent","UserSessionExpiredEvent","UserAutologout24HoursEvent","isAnonymous","accountType","claims","accountCategoryId","getStateOrProvince","getIsStakeLimitSet","toLowerCase","getUserMobileNumber","getPGAccountId","u","_UserService","TennisPointsVisibilityService","m2User","sitecore","canDisplayPoints","leagueId","scoreboardPointsOmit","some","league","_TennisPointsVisibilityService","DayOfWeek","DateProviderService","getNow","Date","getDate","buildDate","year","month","date","hours","minutes","seconds","ms","count","arguments","Error","getStartOfDay","getFullYear","getMonth","getStartOfMinute","getHours","getMinutes","getEndOfDay","daysToBeAdded","endDate","setDate","addHours","noOfHours","setHours","subtractHours","now","valueOf","getEndOfMonth","currentDate","getDaysTo","targetDate","differenceInTime","getTime","getTimeDifference","convertToSeconds","diff","checkTimer","thresholdSeconds","getDayOfWeek","toDayOfWeek","getDay","index","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","daysFromNow","days","DateTimeParser","getStartsAtTime","delta","globalMessages","NotStarted","StartsNow","templateSettings","interpolate","startingInMinutes","template","StartingInMinutes","startingInMinute","StartingInMinute","time","formattedMinutes","padStart","_DateTimeParser","interpolateDoubleBracesString","isCaseSensitive","interpolateStringInternal","placeholderStyle","PlaceholderStyle","DoubleCurlyBraces","caseSensitive","interpolateSingleBracesString","SingleCurlyBraces","formatString","defaultFormatObjectOptions","options","mergedOptions","assign","flags","keyToPlaceholderAction","placeholderName","result","keys","replace","RegExp","generateGuid","performance","char","hashCode","hash","chr","charCodeAt","SportConstant","RegionConstant","BasketballPeriodInfo","AmericanFootballPeriodInfo","IceHockeyPeriodInfo","TennisPeriodInfo","FootballPeriodInfo","BasketballQuarters","BasketballHalves","AmericanFootballQuarters","IceHockeyPeriods","DartsLegsPeriodInfo","DartsSetsAndLegsPeriodInfo","SPORTS_WITHOUT_AVAILABLE_REGION","SPORTS_WITH_MAPPED_STATS","Turn","Weather","DartsMatchType","TeamType","MatchType","ComboPreventionMinimum","ComboPreventionType","toWeather","weather","Sunny","Cloudy","LightRain","HeavyRain","isBespokeScoreboard","event","scoreboardType","getScoreboardType","ScoreboardType","BaseballGame","PairGame","PeriodGame","Cricket","PreMatchPairGame","indexOf","isBespokeSport","sportId","isEsport","Soccer","Baseball","AmericanFootball","Basketball","Icehockey","scoreboard","started","fixtureType","participants","type","LeaderboardGame","TournamentGame","PreMatchTournament","SportType","EventScoreboard","timerVisible","timer","visible","timeIndicator","timerRunning","running","getScore","score","getStats","statistics","PairGameScore","PeriodGameScore","IcehockeyPeriodGameScore","SetGameScore","setScore","participant1WonSets","participant2WonSets","setPoint","participant1","sets","participant2","points","DartsGameScore","FootballScore","PenaltyStatus","TennisScore","TournamentScore","LeaderboardGameScore","participantsDetails","SnookerScore","CricketScore","CricketInnings","SpecialChar","getSoccerPenalties","isSoccer","penaltyShootOutScore","teams","offset","team","penalty","status","Scored","penalties","_penalty","Unset","getIcehockeyPenalties","visibleCount","getOvertime","overTimePeriod","sport","Overtime","period","overTimeScore","regularTime","finishedAfterRegularTime","regularTimeOver","firstHalfScore","SecondHalf","getOverTime","overTime","getRedCards","isNewEDPScoreboard","redCards","redcards","totalPoints","getYellowCards","yellowCards","yellowcards","getBackgroundColor","useSolid","color","getBackgroundColorInternal","showPenalties","getPairGameScore","isNewScoreboard","isSuspended","isSecondHalf","surfaceType","getSportBackgroundColor","bgColors","grass","gray","umber","waterblue","road","generic","purple","getScorePoints","includes","DateFormatterService","intlService","MINUTE","HOUR","DAY","formatMap","_formatMap","today","title","Today","format","tomorrow","Tomorrow","TimerOther","formatDate","startDate","formatterKey","getFormatKey","formatter","join","formatDateWithTime","eventDate","IntlService","_DateFormatterService","AmericanFootballScoreboardFactory","getYardDistance","americanFootballStats","yardDistance","activeDown","yardsDistance","yardsToNextDown","Halftime","RegularTimeOver","getTriCode","separator","eventScoreboard","On","distance","Own","Opp","getLiveEventInfo","T","_AmericanFootballScoreboardFactory","BaseballScoreboardFactory","getBallsStrikesOuts","baseballStats","_b","_c","_d","BallsStrikesOuts","balls","strikes","currentlyServing","outs","getBaseIcon","baseRunnerPositionClass","baseClass","baseTeam","bases","find","bt","order","hasFirstBase","hasSecondBase","hasThirdBase","BaseballBaseIcon","FirstSecondThirdBase","FirstSecondBase","FirstThirdBase","FirstBase","SecondThirdBase","SecondBase","ThirdBase","_BaseballScoreboardFactory","MessageParser","dateParser","eventDetailsConfig","parseMessages","messages","skipTime","icon","message","Number","processIcon","text","teamType","messageType","getIcon","name","icons","messageIcons","highlight","_MessageParser","ScoreboardFactory","messageParser","tennisPointsVisibilityService","dateFormatterService","baseballScoreboardFactory","americanFootballScoreboardFactory","SPORT_TYPE_LOOKUP","Football","Tennis","Badminton","Snooker","Darts","SpecialGame","SetGame","Tournament","SCOREBOARD_TYPE_LOOKUP","sportsScoreboardServices","showDate","createScoreboard","scoreboardResponse","model","getDefaultScoreboardType","periodId","indicator","bookieTicker","isGeneralTournament","sportType","getSportType","isFinished","Boolean","getSuspended","gameTimeInSeconds","formatGameTimer","createMessages","getSportStats","getSportScore","colors","getColors","bestOf","getBestOfSnooker","bestOfLegs","bestOfSets","powerPlayTeam","getDefaultSportType","defaultSportType","acc","curr","Skialpine","Motorbikes","Biathlon","sportScoreboardType","parseInt","playerInfo","colorsAvailable","players","shirtColor","messageList","content","sort","totalSeconds","scores","getFootballScore","getTennisScore","getBaseballScore","getSetGameScore","getDartsScore","getSnookerScore","getGeneralTournamentScore","getLeaderboardGameScore","getPeriodGameScore","getCricketScore","getTennisStats","getFootballStats","getBasketBallStats","getIcehockeyStats","getAmericanFootballStatistics","getBaseballStatistics","getSnookerStats","dartsMaxSet","participantsScore","split","matchType","turn","LegOnly","hundredEighties","player1","player2","legs","finished","Finish","detailed","scoreDetailed","FirstHalf","PenaltyShootout","penaltiesControl","getPenaltyScore","extraTimeScore","counter","valueMapper","Missed","penaltyMapper","first","second","team1","team2","tennisScoreboard","setCount","getTennisSetCount","isCurrentSet","partcipant1Score","partcipant2Score","partcipant1TiebBreakScore","tieBreaksValues","partcipant2TiebBreakScore","tieBreakPoints","isFutureSet","setWon","None","surface","winPoints","getSetScore","gameMode","fullScoreboard","slice","forEach","currentPeriodScore","team01","team02","slimScoreboard","overtimePeriod","scorePeriods","Quarter1","Quarter2","Quarter3","Quarter4","Firsthalf","Secondhalf","Period1","Period2","Period3","totalScore","participantScoreParser","playerId","currentPeriodId","participantParser","periods","total","_scoreboard","icehockeyScore","getPenalityAmount","frames","hasServing","Bowls","overs","runs","wickets","firstInnings","getCricketInnings","FirstInning","secondInnings","SecondInning","superOver","FirstSuperOver","hasSecondInningDataAvailable","ThirdInning","hasSuperOverDataAvailable","getCricketInningsData","inningId","isScoringTeam","stats","filteredStats","cricketScore","final","lapCounter","currentPeriod","safetyCar","preRace","items","getParticipantList","getParticipantListKeyValue","gameType","gameTypes","finalState","currentState","tennisGame","sets1","sets2","findIndex","setsWon","setPoints","goals","getFootballStatisticsEntry","corners","substitutions","responseStats","numberOfPeriods","firstHalf","secondHalf","extraTime","penaltyPoints","penaltyShots","penaltyTotalTime","getBaseStatisticsEntry","turnovers","touchdowns","fieldGoals","safeties","onePointConversions","twoPointsConversions","timeoutsLeft","timeValue","redBalls","blackBalls","pinkBalls","greenBalls","blueBalls","brownBalls","yellowBalls","fouls","century100Breaks","breaks50","threePointers","twoPointers","freeThrowsScored","rebounds","assists","freeThrowsTotals","getBasketBallStatisticsEntry","freeThrows","freeThrowsTotal","raceTo10","raceTo20","firstQuarter","secondQuarter","thirdQuarter","fourthQuarter","isOuts","homeRun","grandSlams","aces","breaks","doubleFaults","winPointsPercentage","raceTo15","getTennisStatisticsEntry","firstSet","secondSet","thirdSet","fourthSet","fifthSet","sports","Boxing","Rugby","RugbyLeague","RugbyUnion","setSports","Volleyball","TableTennis","BestOfThree","BestOfThreeChampionsTieBreak","penaltyAmount","Squash","Beachvolleyball","list","participantsInfo","rank","participant","participantList","getSportsLiveEventInfo","_ScoreboardFactory","usePreloaderData","target","propertyKey","descriptor","getDecoratedFunction","originalFunction","self","condition","apply","responseMapper","data","preloader","error","reset","loading","waitUntil","timeout","finalize","of","totalWaited","waiting","Subject","interval","takeWhile","next","complete","subscribe","asObservable","regexPattern","getSourceEventId","isV2CompoundId","test","safeEventId","getPartition","getProvider","addons","playtech","EventProviderType","Playtech","inspired","Inspired","getRankByParticipantType","participantType","EventParticipantType","Home","homeTeam","Away","awayTeam","getPitcherByParticipantType","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","pitcher","pitcherName","startingPitcher","firstName","lastName","preferredName","charAt","getWinLossStatsByParticipantType","competitionRecordsFormat","_p","_q","_r","wonLossStats","winLossStatsFormat","seasonStandings","wonMatches","wonEvents","lossMatches","lostEvents","drawMatches","drawEvents","lostEventsOvertime","competitionRecordFormat","competitionOverrides","SetTab","SortOrder","PairGamePeriod","ExtendedDisplayType","EventDetailsTags","ComboPrevention","EventOption","EventOptionGroupType","EventOptionGroup","hasSubGroups","subGroups","getSubGroups","hasGroup","group","gridGroups","hasAnyGroup","isBetBuilder","o","ResultSorting","toResultSorting","Alphabet","Default","Odds","RegionModel","EventModel","optionGroups","optionSets","published","marketsDictionary","isSetGame","isGameOfType","isTournamentGame","isPairGame","isBaseballGame","isPeriodGame","isLeaderboardGame","isStarted","Finished","getBestPerformingParticipant","fixtureForm","homeTeamHomeForm","awayTeamAwayForm","overallHomeTeamForm","overallAwayTeamForm","winCount","isBestPerformingOption","option","optionGroup","optionName","overridenName","winning","viewType","getBetBuilderConsumerFixtureId","betBuilderFixtureId","betBuilderTradingV2FixtureId","getBetBuilderIdByStage","live","betBuilderInfo","betBuilderId","betBuilderProvider","BetBuilderRowOfOptions","BetBuilderNoOfColumns","PRECREATED_BAB_EMPTY_THEME_ID","TeamGroupingValues","OddsSorting","OptionTypes","CorrectScoreHeaderButtonTabs","FeedType","ExpiringCache","cacheTime","cacheInternal","Map","getOrCreate","source","validateCache","has","getInternal","create","transformed","catchError","delete","throwError","share","connector","ReplaySubject","resetOnComplete","resetOnRefCountZero","expiration","remove","clear","ExpiringCacheFactory","_ExpiringCacheFactory","CookieProvider","cookies","getCookie","setCookie","expire","cookieExpirationDate","expires","put","deleteCookie","CookieService","_CookieProvider","Api","ApiBase","API","InjectionToken","inject","ApiServiceFactory","forwardProductApi","ProductService","getMetadata","isEnabled","apiServiceFactory","API_EXT","createForProduct","area","forwardProductApiRequestHeader","ApiServiceBase","url","params","resultOptions","showSpinner","withCredentials","api","retryCount","retryDelay","retryOnStatus","headers","responseType","resolveWithFullResponse","post","cache","withCredentialsOptions","__spreadValues","ApiServiceExternal","l","_ApiServiceExternal","ApiService","_ApiService","CustomerDnaProfileProviderService","cookieProvider","apiService","cacheFactory","cookieName","getProfileId","getProfile","profileId","loadProfile","_CustomerDnaProfileProviderService","ApiBaseSettingsProvider","mocksConfig","connectionConfig","geolocationService","newCustomerBettingOfferConfig","mediaConfig","geolocationConfig","getSettings","settings","accessId","publicAccessId","pushAccessId","lang","culture","getCountry","userCountry","restrictedCompetitionId","getRestrictedCompetitionId","shopTier","subdivisionRestrictedCountries","subdivisionCode","isoSubdivisionCode","subdivision","getSettingsWithGeolocation","isGeolocationEnabled","whenReady","location","currentPosition","mappedLocation","locationId","__spreadProps","userLocation","isMockLiveStreamGeoCountryEnabled","liveStreamGeoCountry","toUpperCase","competitionId","GeolocationService","_ApiBaseSettingsProvider","SportsRemoteLogger","loggerName","vanillaLogger","MS2_LOGGER_TOKEN","additionalMessage","resultError","description","fileName","logError","info","formattedMessage","LogType","Info","warning","Warning","DebugLogger","remoteLogger","internalFeaturesConfig","sportsLogger","errorOrMessage","isBetplacementLoggingEnabled","includeStack","stack","LoggerFactory","internalFeatures","getLogger","getDebugLogger","RemoteLogger","_LoggerFactory","urljoin","joined","call","normalize","encodeParams","param","encoded","encodeObject","part","Array","isArray","concat","propertiesToEncode","encodeProperty","pair","encodeURIComponent","encodedValues","flatArray","BaseCdsApi","apiServiceExternal","loggerFactory","apiBaseSettings","customerDnaProfileService","customerDnaBettingOfferConfig","configured","baseUrl","cdsUrlBase","logger","configure","resource","prepareRequestUrl","concatMap","response","body","err","getUrl","getDefault","request","rest","defaultQueryStringParams","addCustomerDnaProfileId","customerDnaProfileId","cdnaProfileId","endpoint","B","_BaseCdsApi","cdsFactory","apiSettings","CDS_API_FACTORY","DYNAMIC_INJECTOR_PROVIDER_TOKEN","NonRootToken","getDynamicInjector","OptionalNonRootToken","optional","isDefined","hasValue","ofType","source$","typeCheck","filterDefined","xor","isPromise","then","AngstromTagIdValues","Tv2MarketParameters","MarketTypes","HappeningValue","Et","OfferGroupingApi","apiFactory","marketGroupingConfig","gridConfig","cdsApi","getFixtureGrouping","regionalisedGroupingEnabled","getFixtureGroupingBatch","sportIds","getGridGrouping","isRegionalisedGridEnabled","getFixturesContext","regionIds","tournamentIds","category","competitionIds","virtualCompetitionIds","virtualCompetitionGroupIds","_OfferGroupingApi","window","MS2JS","GridGroupLoader","__metadata","Observable","OfferGroupingService","storage","expiringCacheFactory","sportGrouping","gridGrouping","groupingLanguage","cacheNull","null","invalidGridTimestamp","invalidGridTtl","groupingStorageKeys","getGroupingStorageKeys","isValidGroupingLang","initCacheFromStorage","clearStorageGroupingData","groupingVersion","switchMap","cacheConfiguration","isValidGroupingId","getFixtureGroupingFromApi","getFixtureGroupingForEventModel","eventModel","grouping","tap","enhanceGrouping","apbGroups","preCreatedGroups","marketGroups","offerGroup","createOfferGroup","PriceBoost","offerGroupBAB","PreCreatedBab","marketGroupItems","tags","groupId","getFixtureGroupingForSports","forkJoin","defaultIfEmpty","validConfigs","missingConfigSportIds","difference","combineLatest","iif","fetchAndCacheFixtureGroupings","cachedConfigs","fetchedConfigs","groupings","g","fetchGroupings","fg","groupingConfiguration","version","isEqual","keyPrefixes","startsWith","_OfferGroupingService","MarketType","PeriodType","HappeningType","MarketSubType","PreCreatedBuildABet","GameMarketGroupingFactory","canProcess","getMarketGroupsConfig","OptionMarketGroupingFactory","DetailedGroupingFactory","factories","getOptionSets","marketGroup","selectedOptionGroups","detailedGrouping","marketSet","isSgpGroup","storageId","getTags","marketGroupTag","isPrecreated","every","og","displayType","BetBuilder","sgpIndex","Sgp","splice","fakeMarketGroupingIfNotFound","groupMarkets","restrictPeriodGrouping","restrictSorting","groupedMarkets","preSortedOptionGroups","sortMarkets","uniq","setId","marketGroupMarkets","groupedMarketGroupMarkets","market","periodGroup","groupMarketsByPeriods","groupMarketsBySubGroups","transformEventGroupsPerPrecreatedGroup","precreatedOptionGroups","transformedOptionGroups","marketSetIds","optionGroupsBySetId","precreatedGroup","eventOptionGroups","marketId","eventOptionsCount","flatMap","op","pgo","fixtureId","newGroupWithAllOptions","groupOptions","createSubGroup","markets","subGroupMarkets","sortSubGroupMarkets","subGroupIds","getSubGroupId","subGroupId","periodOptionGroup","getPeriodOptionGroup","subPeriodNumber","marketOrder","rangeValue","participantIds","sixPackGridGroupId","parameters","Happening","fixtureParticipant","FixtureParticipant","fixtureParticipantType","periodMarkets","createEventOptionGroupByPeriodIdDictionary","periodKeys","sortBy","periodGroupedMarkets","createPeriodOptionGroup","singlePeriodOptionGroup","res","createEventOptionGroupByMarketOrderIdWithPeriodDictionary","marketOrderMarkets","getGroupId","getOptionGroupName","root","Period","online","firstMarket","originalId","groupedTemplateIds","templateId","isPlayer_OptionGroup","periodName","PreCreated","groupType","availableTags","gr","uniqWith","tagOrder","getTagOrder","sortTags","sgpMarketGroup","allTags","uniqueTags","Popular","tagsInOrder","indexA","indexB","_DetailedGroupingFactory","mapLeague","competition","stageId","virtualCompetitionId","short","shortSign","parentLeagueId","realCompetitionId","imageProfile","mapSport","fixture","virtual","isVirtual","mapParticipants","fixtureViewType","hybridData","mapToEventParticipants","properties","reverse","eventParticipants","regExp","matches","match","countries","countryInfo","substring","trim","openIndex","closeIndex","participantId","fixtureParticipantId","shortName","image","isPlayer","CommonFixtureFactory","imgConfig","scoreboardFactory","overrideStatisticsConfig","betBuilderConfig","urlService","sourceId","precreatedOptionGroupInfo","nameSign","region","mapRegion","tradingStage","parentId","cutOffDate","stage","liveAlert","betBuilderFixture","sportcastId","isOpenForBetting","runningBallDataId","setMatchSimulation","hybridFixtureData","mapTeams","mapPlayers","gamesCount","getMarketsCount","offerSource","offerContext","contexts","hasLeagueStats","competitionGroupId","getRanks","statsId","betRadar","hasFixtureStats","provider","fixtureStatistics","stream","getStream","imgEventId","setImgAnimation","liveMatchTracker","betRadarVisualizationId","sportradarId","betRadarCoverageLevel","coverageLevel","totalMarketsCount","priceBoostCount","offerCategories","getOfferCategories","mapBetBuilderInfo","update","openForBetting","updateScoreboard","serverScoreboard","games","optionMarkets","Set","game","templateCategory","Golf","blacklistedCompetitions","isMatchSimulationEnabled","sportsWithMatchSimulation","runningBall","tournament","code","originalRegion","playerParticipants","teamId","shouldOverrideParticipantNames","optionMarket","marketType","displayTypes","overrideParticipantNameOptionMarkets","types","isOverrideParticipantNamebyDisplayType","marketConfig","rankings","teamRankings","homeTeamParticipantId","awayTeamParticipantId","getParticipantId","rankingsOnLeague","homeTeamRank","awayTeamRank","homeParticipantId","awayParticipantId","isBetBuilderEnabled","isBetBuilderEnabledForSport","videoStream","showVideoStreaming","restrictedSportIds","providerStreamId","embedPath","feedType","Twitch","twitchChannel","parse","search","streamUrl","UrlService","_CommonFixtureFactory","sortOptions","resultSorting","sorting","priceSorting","Order","nativePrice","getOptionImage","participantImageMap","optionPlayerId","player1Id","player2Id","teamImage","logoColor","headshot","getParticipantImageMap","CommonMarketFactory","betbuilderConfig","OVER_UNDER_MATCHER","getGridGroups","categoryId","groups","patch","originalMarket","excludePriceboostedMarketGrouping","Spread","patchSpread","CorrectScore","patchCorrectScore","patchPreCreatedBetBuilder","OverUnder","TotalsOverUnder","patchOverUnder","HeadToHead","TwoWayHandicap","patchHeadToHead","AutomatedPriceBoost","patchAutomatedPriceBoost","isOverUnder","isPartOfSgpGroup","getTranslated_Value","translation","orderType","marketGroupId","marketGroupItemId","MAX_VALUE","showBoostedPrice","optionMarketName","balanced","patchDetailedGrouping","correctScoreOptionsSortOrder","happening","SubPeriodNumber","RangeValue","patchHeadToHeadMarketName","patchParticipantIdToOption","Scorer","MultiFPOverUnder","patchPlayerCombined","patchPlayerMilestone","patchPlayerOutcome","DynamicCorrectScore","Points","patchCorrectScoreOptions","orderBy","subPeriod","SubPeriod","Ascending","Descending","correctScoreOptions","optionNameValues","rawScore","correctScoreOption","happeningIndex","masterSorting","HappeningToOccurV2","HappeningToOccurAndTeamToWin","participantsList","FixtureParticipantList","PassingYards","TouchdownPass","interpolatedName","Player1","Player2","playerName","marketAttribute","Goal","addParameterToMarket","parameter","existingParameter","marketTabId","enablePrecreatedBetBuilderTab","marketHelpPath","precreatedGroupId","parameterTranslations","attributes","pairs","groupBy","attribute","MarketDisplayFallbackService","SportsMarketGroupingFallbackService","shouldForceRegularDisplayTypeTV1","shouldForceRegularDisplayTypeTV2","_SportsMarketGroupingFallbackService","EventSitemapGroupingFactory","getSitemapSet","buildPrimaryLevelItems","marketGroupsPerSet","flat","children","optTags","groupItem","tagsExist","buildLowerLevelItems","groupedSets","os","keyExists","el","append","currentTag","nextLevelItem","optionGrouping","_EventSitemapGroupingFactory","optionAttributeRegex","MarketFactoryBase","getPeriodValue","sixPackGroup","replaceAttrValue","marketTabs","marketTab","attr","getTranslatedValue","mapDetailedGrouping","attrValue","forceRegularDisplayType","isPriceBoosted","regionalisedOfferGroup","getRegionalisedOfferGroup","Other","sixPackGroups","getPrecreatedBABOrderPosition","getPeriodGroup","sixPack","subIndex","optionColumnId","playerStatsProps","teamGrouping","sixPackGridId","tv1MarketGroupItemPosition","buildABetSettings","tv1MarketGroupItems","marketGroupItemPosition","tv2MarketGroupItemPosition","tv2MarketGroupItems","mg","enablePlayerMilestoneByMarketSubType","OverAndUnder","YesNo","isNaN","sortOrder","GameMarketFactory","marketFallback","canCreate","fixtureOnline","longIds","gameGrouping","createOptionGroup","combo","minimum","combo2","restriction","combo1","comboPrevention","visibility","hidden","resultOrder","optionConfig","mapOptions","categoryAttribute","templateCategoryId","hasBetBuilderMarkets","results","optionGroupId","originalEventId","optionColumns","optionColumn","optionColumnName","optionColumnSortOrder","signature","getSign","sourceName","optionAttribute","totalsPrefix","optionSpread","spread","longId","OptionMarketFactory","commonFactory","minCombo","isEachWay","isStartingPriceAvailable","isStartingPriceEnabled","isWinPriceAvailable","isWinPriceEnabled","placeTerms","matchedSixPacks","getMatchedSixPacks","originalParameters","overrideParticipantNameMarkets","opt","TemplateId","CategoryId","filterOptionsByMarketType","filterOptionsByBoostedPrice","hasHandicapParameter","priceId","boostedPriceId","boostedPrice","participantPriceType","configureOptionAttribute","columnConfig","getOptionColumnNameAndSorting","columnName","optionTypes","priceHistory","marketGroupIds","optionNames","optionTypesToFilter","optionTypesToFilterTV2MarketOptions","optionTypeFilters","currentFilter","eventGrid","SixPack_TotalsOver","SixPack_TotalsUnder","extractOptionAttribute","isSixPackGroup","matchedGroup","DecimalHandicap","Handicap","DetailedFixtureMarketFactory","updatedGroup","updateOptions","filterAndUpdatePriceBoostedOptions","updateGroupMarketIds","currentOptions","currentOptionIndex","updateOption","createOption","_DetailedFixtureMarketFactory","LinkedFixtureService","offerConfig","updateLinkedGroups","winGameLinkedFixture","fixtureMarketType","getMarketType","golfSiblingMapping","linkedSibling","_LinkedFixtureService","DetailedCreateFactory","fixtureFactory","marketFactory","groupingFactory","eventSitemapGroupingFactory","linkedFixtureService","nativeAppService","priceBoostConfig","eventParameters","createOptionGroups","splitFixtures","precreated","setParticipantsShirtColor","createMarketsDictionary","splitFixtureIds","splitFixture","fixtureScoreboard","bettingInsights","playerStats","getPlayerStats","tv2LinkedFixture","loadEventSitemap","enableSitemapNavigation","sitemapSets","precreatedGroupedInfo","mapper","flatten","precreatedMarketsInfo","marketInfo","selections","isEnabledAPB","priceBoostMarketGroup","showAsTab","filteredData","groupItemId","marketGroupItem","automatedPriceBoostMarkets","getAutomatedPriceBoostedMarkets","isTerminal","themedTabs","getBetBuilderMarketsToBeAppended","sourceFixture","precreatedFixtureId","getBetBuilderOptionGroupMarketsToBeAppended","marketGroupItemsCollection","boostedOptionMarkets","detailsGroups","contextInfo","boostedOptions","boostedOptionMarket","cloneDeep","splitWithStats","precreatedModel","emptyMarketTabs","precreatedBAB","themedName","themedTab","preCreatedMarketGroups","betBuilder","PrecreatedBuildABetTitle","PrecreatedBuildABetTitleHelpText","groupingInfo","marketName","emptyMarketTab","precreatedBABModel","preCreatedGroup","foundOption","foundMarket","currentMarketName","animationSports","fallbackColors","teamIndicatorFallbackColors","hasPlayerInfo","isColorsAvailable","areTeamColorsSame","NativeAppService","_DetailedCreateFactory","OptionGroupService","offerGroupingService","fallbackMarketsHeaderInfo","getOrder","hasNonBettableOdds","eventOptionGroup","element","fallbackMarketOddsThreshold","isBettableOptionGroup","setFallbackGroupsNames","gridIds","gridGroupConfig","getFallbackOptionGroup","fallbackMarketName","fallbackGridGroupIds","showFallbackMarkets","availableOptionGroup","gridId","isFallbackMarket","isNextGoalMarket","XthHappening","RegularTime","fallbackGridIds","_OptionGroupService","isMain","twoThreeWay","Single","getValidTotalsPrefixType","totalsPrefixType","FixtureMarketFactory","_FixtureMarketFactory","FixtureFactory","sportConfig","getOrderedMarkets","deleteOptionGroup","updateOptionGroup","fixtureMarket","updated","virtuals","marketTypeOrder","orderIndex","_FixtureFactory","NextRaceFilters","getFixtureId","compoundFixtureId","pop","mapParticipant","createWinGameParticipant","createParticipantWithTimeFormData","timeform","timeformInfo","horses","createParticipantWithRacingPostData","racingPost","racingPostInfo","horseData","hasTopStarRating","greyhoundsData","greyhounds","toWinGameFixture","isOptionBet","hasOptionMarkets","toHorseRacingTimeFormFixture","horseRacingEntity","_","toRacingPostFixture","racingpost","toRacingFixturePreview","InternalCompetitionTileService","marqueeTilesConfig","getCompetitionTiles","tiles","showOnCompetitionPage","checkRegionSportId","tile","regionSportId","_InternalCompetitionTileService","MarqueeTileService","marqueeConfig","internalCompetitionTileService","getForFixture","filterForFixture","maxRequestedEvents","hasForFixture","getForTeamPagesFixture","fixtureIds","filterForTeamPagesFixture","getForCompetition","ids","Region","tileResult","Competition","cId","rId","regionId","filterTilesResult","combineWithPromotions","marquees","promotions","promoVisibility","MarqueeOnly","All","combined","promos","getCombinablePromotions","crmPromotionVisibility","marquee","crmPromotionId","filterDisabledSportsMarquee","showOnEventPage","eventIds","fid","disabledSportIds","_MarqueeTileService","MarqueeTileFactory","optionGroupService","createBetBuilderTile","modelEvent","sitecoreTile","modelMarket","isAutomatedMarquee","gameId","optionMarketId","isPrecreatedOptionGroupInvalid","previousNativePriceValue","isPriceBoostMarquee","optionId","previousPrice","getTilePrice","previousOdds","previousOddsNumerator","previousOddsDenominator","previousOddsUs","imageUrl","mapMarket","betbuilderSelectionOverride","getBetbuilderName","showOnHomeLobby","showOnSportsLobby","getVisibilityOnMarquee","hideBuildABetBadge","leftAlignOddsButton","AwayIndicatorOverride","awayIndicatorOverride","BadgeOverrideText","badgeOverrideText","OverriddenTeamnames","overriddenTeamNames","previousNativePrice","doNotShowAnyBadgeRibbon","createMarqueeTile","getGenericTileData","isModelMarketBalanced","sitecoreOptionGroupId","marketIdString","setOverridenNames","resultId","gridGroupId","gridGroupIds","gameTemplateIds","gt","imageAlt","marketAndOptionNameOverride","eventNameOverride","eventNameVisibility","marketAndOptionNameVisibility","link","noEventSportIds","badgeTitle","badgeTitleOverride","fallbackMarketType","ogpOverlay","trafficId","createRacingTile","badgeAndRibbonVisibilityOption","mapOption","optionPrice","groupPricing","builderOptionPricing","pricingInvalid","legInformation","resultState","visibleOptions","visibilityInvalid","vo","_MarqueeTileFactory","MarqueeResponseMapperService","marqueeTileFactory","mapFixtures","fixtures","inputTiles","tileWithoutFixtures","currentIndex","correspondingFixture","requestIndex","Horses","createTile","isRegular","isAvailable","nonGridableOptions","mapMarketToGameTemplateIds","marketFilterParams","tv2OptionGroup","getTV2OptionGroups","trackingDetail","maxTiles","tileInfo","winGameFixture","DynamicMarket","SixPack","_MarqueeResponseMapperService","MoneyService","userService","currencyConfig","currencyPipe","CurrencyPipe","LOCALE_ID","betslipConfig","roundMoney","roundDigits","roundValues","transform","symbol","fractionSize","hideEmptyFraction","locale","currencyCode","formatCurrency","prependCurrencySymbol","currencySymbolDisplayList","currencySymbol","getCurrencySymbol","inputAsNumber","currencyFormat","clientCurrencyFormat","formattedValue","_MoneyService","OfferStatus","OfferStatusType","CallToAction","TrackingSource","CrmPromotionReplaceParametersService","moneyService","replaceParameters","replaceableParameters","useCurrencySymbol","showCurrencySymbol","toLocaleString","_CrmPromotionReplaceParametersService","CrmPromotionFactory","replaceParametersService","toModelList","serverCampaigns","promo","subType","startDateUtc","expiryDate","expiryDateUtc","cmsItemId","priority","callToAction","mapCallToAction","subCampaigns","subPromotions","sc","endDateUtc","allFilters","createFilter","noFilters","noSportFilters","banner","replaceBannerParameters","sortPromotions","setBannerDetails","promotion","details","replaceDetailsParameters","backgroundImageUrl","heroImageUrl","keyTerms","termsAndConditions","cta","NoOptIn","OptIn","OptedIn","meetingIds","marketTemplateIds","marketIds","optionIds","emptyFilter","mappedFilter","tId","minSelections","maxSelections","overallMinOdds","overallMaxOdds","selectionMinOdds","selectionMaxOdds","minStake","maxStake","betSlipType","_CrmPromotionFactory","PromoHubUrlTokenType","PayoutType","SignPostPayoutType","RewardTokenImages","RewardTriggerType","BuildABet","BetStatus","RewardTokenType","SignPostingOfferType","require_models","__commonJSMin","exports","ConnectionStatus","HttpError","TimeoutError","AbortError","UnsupportedTransportError","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","init_Errors","__esmMin","errorMessage","statusCode","trueProto","transport","innerErrors","HttpResponse","HttpClient","init_HttpClient","statusText","LogLevel","init_ILogger","NullLogger","init_Loggers","_logLevel","_message","getDataDetail","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","pad","val","sendMessage","transportName","httpClient","__async","getUserAgentHeader","createLogger","ConsoleLogger","userAgentHeaderName","Platform","constructUserAgent","VERSION","getOsName","getRuntime","getRuntimeVersion","runtime","runtimeVersion","userAgent","majorAndMinor","getErrorString","getGlobalThis","Arg","SubjectSubscription","init_Utils","subject","observer","minimumLogLevel","logLevel","msg","deserializeContent","FetchHttpClient","init_FetchHttpClient","requireFunc","__require","abortController","timeoutId","msTimeout","payload","XhrHttpClient","init_XhrHttpClient","resolve","reject","xhr","header","DefaultHttpClient","init_DefaultHttpClient","TextMessageFormat","init_TextMessageFormat","_TextMessageFormat","output","HandshakeProtocol","init_HandshakeProtocol","handshakeRequest","messageData","remainingData","binaryData","separatorIndex","responseLength","textData","MessageType","init_IHubProtocol","init_Subject","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HubConnectionState","HubConnection","init_HubConnection","_HubConnection","connection","protocol","reconnectPolicy","handshakePromise","startPromise","methodName","streams","streamIds","invocationDescriptor","promiseQueue","cancelInvocation","invocationEvent","sendPromise","newMethod","method","handlers","removeIdx","callback","responseMessage","nextPing","invocationMessage","methods","methodsCopy","expectsResponse","exception","completionMessage","prevRes","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","callbacks","nonblocking","invocationId","streamId","argument","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","init_DefaultReconnectPolicy","retryDelays","retryContext","HeaderNames","init_HeaderNames","AccessTokenHttpClient","init_AccessTokenHttpClient","innerClient","accessTokenFactory","allowRetry","HttpTransportType","TransferFormat","init_ITransport","AbortController","init_AbortController","LongPollingTransport","init_LongPollingTransport","transferFormat","pollOptions","pollUrl","deleteOptions","logMessage","ServerSentEventsTransport","init_ServerSentEventsTransport","accessToken","opened","eventSource","WebSocketTransport","init_WebSocketTransport","logMessageContent","webSocketConstructor","token","webSocket","_event","transportMatches","requestedTransport","actualTransport","MAX_REDIRECTS","HttpConnection","TransportSendQueue","PromiseSource","init_HttpConnection","webSocketModule","eventSourceModule","negotiateResponse","redirects","negotiateUrl","connectionToken","requestedTransferFormat","connectUrl","transportExceptions","transports","negotiate","transportOrError","ex","aTag","_TransportSendQueue","_transport","transportResult","arrayBuffers","totalLength","reason","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","init_JsonHubProtocol","hubMessages","parsedMessage","parseLogLevel","mapping","LogLevelNameMapping","isLogger","HubConnectionBuilder","init_HubConnectionBuilder","logging","transportTypeOrOptions","retryDelaysOrReconnectPolicy","httpConnectionOptions","esm_exports","__export","init_esm","require_utils","Utils","queryParams","require_subscription","Subscription","topic","require_subscription_store","subscription_1","utils_1","SubscriptionStore","subscription","require_logger","tslib_1","signalr_1","Vt","ot","optionalParams","require_client_connector","models_1","subscription_store_1","logger_1","$e","ClientConnector","onMessageReceived","onStatusChange","connectionOptions","error_1","_this","subscribeRequest","added","cancelRequest","removed","require_dist","Mt","At","Re","import_cds_client","nn","Le","CdsPushProvider","messageReceived$","_messageReceived$","onStatusChanged","baseSettings","providerOptions","cdsPushUrl","maxRetries","cdsMaxRetries","skipNegotiation","cdsSkipNegotiation","prefferedTransportType","cdsPrefferedTransportType","appUpdates","start","subscriptionRequest","cancelSubscription","restart","stop","isConnected","getStatus","Connected","isDisconnected","Disconnected","_CdsPushProvider","BaseCustomLogger","MAX_LOGGED_ITEMS","DELAY","queue","sendLogs","setTimeout","firstValueFrom","EPSPushLogger","internalConfig","isEPSDetailedLoggingEnabled","_EPSPushLogger","bufferThrottle","duration","buffer","throttleTime","asyncScheduler","topicSeparator","Topic","BaseSubscription","eventId","ctx","getKey","suffix","context","getContext","getTopic","language","BaseMarketSubscription","GridSubscription","Grid","NonGridableSubscription","NonGridable","SpecialsSubscription","Specials","OutrightsSubscription","Outrights","ScoreboardSlimSubscription","ScoreboardSlim","GameSubscription","Game","OptionMarketSubscription","OptionMarket","ParticipantMarketSubscription","ParticipantMarket","FixtureAllSubscription","FixtureSlimSubscription","Fixture","ScoreboardSubscription","Scoreboard","PlayerStatsSubscription","PlayerStats","CachoutSubscription","betNumber","CampaignSubscription","campaignId","userAccountId","OverAskSubscription","createKey","offerId","BetBuilderSubscription","sgpId","CdsPushService","pushProvider","ngZone","epsLogger","bettingOfferConfig","subscriptions","observableSubscriptions","handlePushMessage","callbackList","console","warn","run","cb","pushBufferingDuration","leading","trailing","envelopes","runOutsideAngular","newSubscriptions","existing","topics","subscribe$","existing$","envelope","unsubscribe","checkSubscription","cdsSubscription","without","NgZone","_CdsPushService","TimerService","timeouts","intervals","handler","setCallback","clearTimeout","setInterval","clearInterval","setAnimationFrame","requestAnimationFrame","cancelAnimationFrame","setTimeoutOutsideAngular","setIntervalOutsideAngular","scheduler","canceller","continous","removeCallback","dueTime","removeAll","collection","destructor","ngOnDestroy","_TimerService","SportsProductService","productService","injector","isSingleDomainApp","isSportsProductActive$","subject$","BehaviorSubject","checkIsSportsProduct","productChanged","distinctUntilChanged","currentInjector","sportsProduct","isRegistered","activateSports","setActive","deactivateSports","deactivateProduct","isSingleDomain","sportsProductName","metadata","Injector","_SportsProductService","APP_INJECTOR","setAppInjector","fromSportsLeave","skip","fromSportsEnter","filterSports","withLatestFrom","isSports","filterSportsEmitLast","lastNotSportsValue","subscriber","productSubscription","sourceSubscription","CrmOfferLoaderRequestParamsBaseService","CrmOfferLoaderService","crmConfig","timerService","crmOfferLoaderRequestParamsService","_promotions$","_tokens$","_promoRestricted$","promotions$","tokens$","promoRestricted$","tokens","startGettingOffers","stopRefresh","refresh","fetchOffer","forceRefresh","setupOfferRefresh","campaigns","getTokensResponse","isRegulatoryRestricted","isPromoOfferRestricted","cancelPolling","oddsBoostTokens","rewardTokenType","OddsBoost","riskFreeTokens","RiskFreeBet","freeBetTokens","FreeBet","betAndGetTokens","BetAndGet","rewardTokens","acquisitionRewardDetails","isWelcomeOfferTokenAllowed","rewardTargetType","refreshInterval","_CrmOfferLoaderService","CdsSubscriptionService","cdsPushService","crmPromotionFactory","pushSubscriptions","campaignCallback","campaignUpdateCallback","pushData","promoId","Inactive","removePromotion","refreshPromotions","playerUpdate","subscribeToPush","initialize","getAllSubscriptions","subscribedPromotions","getSubscriptions","_CdsSubscriptionService","CrmPromotionProviderService","crmPromotionLoader","subscriptionService","_promotionsMap$","meetings","competitions","templateIds","promotionsMap$","onAppInit","mapPromotions","promotionChanged","hasNewPromotions","filters","promoMap","getPromotionMap","keyBy","_CrmPromotionProviderService","MarqueeWidgetDataService","personalizedMarqueeConfig","promoService","tileService","personalizedMarqueeCookieName","isNotPersonalizedMarquee","isPersonalizedMarquee","minEventsToShow","_MarqueeWidgetDataService","REGISTERED_ACTION_TYPES","createAction","defineType","props","creator","INIT","ActionsSubject","_ActionsSubject","ɵɵdefineInjectable","ACTIONS_SUBJECT_PROVIDERS","_ROOT_STORE_GUARD","_INITIAL_STATE","INITIAL_STATE","REDUCER_FACTORY","_REDUCER_FACTORY","INITIAL_REDUCERS","_INITIAL_REDUCERS","STORE_FEATURES","_STORE_REDUCERS","_FEATURE_REDUCERS","_FEATURE_CONFIGS","_STORE_FEATURES","_FEATURE_REDUCERS_TOKEN","FEATURE_REDUCERS","USER_PROVIDED_META_REDUCERS","META_REDUCERS","_RESOLVED_META_REDUCERS","USER_RUNTIME_CHECKS","_USER_RUNTIME_CHECKS","ACTIVE_RUNTIME_CHECKS","_ACTION_TYPE_UNIQUENESS_CHECK","ROOT_STORE_PROVIDER","combineReducers","reducers","initialState","reducerKeys","finalReducers","finalReducerKeys","hasChanged","nextState","reducer","previousStateForKey","nextStateForKey","omit","object","keyToRemove","compose","functions","last","composed","fn","createReducerFactory","reducerFactory","metaReducers","createFeatureReducerFactory","ReducerObservable","ReducerManagerDispatcher","UPDATE","ReducerManager","_ReducerManager","dispatcher","features","reducerDict","featureKey","featureKeys","REDUCER_MANAGER_PROVIDERS","ScannedActionsSubject","_ScannedActionsSubject","ɵScannedActionsSubject_BaseFactory","ɵɵgetInheritedFactory","SCANNED_ACTIONS_SUBJECT_PROVIDERS","StateObservable","State","_State","actions$","reducer$","scannedActions","withLatestReducer$","observeOn","queueScheduler","seed","stateAndAction$","scan","reduceState","toSignal","stateActionPair","STATE_PROVIDERS","Store","_Store","state$","actionsObserver","reducerManager","pathOrMapFn","paths","select","selector","computed","operator","store","STORE_PROVIDERS","propsOrPath","mapped$","pathSlices","pluck","RUNTIME_CHECK_URL","isUndefined","isNull","isString","isBoolean","isNumber","isObjectLike","isObject","isPlainObject","targetPrototype","isFunction","isComponent","hasOwnProperty","propertyName","isEqualCheck","isArgumentsChanged","lastArguments","comparator","defaultMemoize","projectionFn","isArgumentsEqual","isResultEqual","lastResult","overrideResult","setResult","clearResult","memoized","newResult","createSelector","createSelectorFactory","defaultStateFn","selectors","memoizedProjector","memoize","head","tail","isSelectorsDictionary","extractArgsFromSelectorsDictionary","projector","memoizedSelectors","memoizedState","release","createFeatureSelector","featureName","featureState","selectorsDictionary","resultKeys","selectorResults","_createStoreReducers","_createFeatureStore","configs","featureStores","feat","conf","_createFeatureReducers","reducerCollection","_initialStateFactory","_concatMetaReducers","userProvidedMetaReducers","_provideForRootGuard","immutabilityCheckMetaReducer","checks","act","freeze","targetIsFunction","prop","propValue","serializationCheckMetaReducer","unserializableAction","getUnserializable","throwIfUnserializable","unserializableState","path","unserializable","unserializablePath","inNgZoneAssertMetaReducer","createActiveRuntimeChecks","runtimeChecks","createSerializationCheckMetaReducer","strictActionSerializability","strictStateSerializability","ignoreNgrxAction","createImmutabilityCheckMetaReducer","strictActionImmutability","strictStateImmutability","createInNgZoneCheckMetaReducer","strictActionWithinNgZone","provideRuntimeChecks","_runtimeChecksFactory","checkForActionTypeUniqueness","_actionTypeUniquenessCheck","duplicates","registrations","_provideStore","Inject","_provideState","featureNameOrSlice","StoreRootModule","_StoreRootModule","scannedActions$","actionCheck","ɵɵdefineNgModule","ɵɵdefineInjector","StoreFeatureModule","_StoreFeatureModule","featureReducers","feats","StoreModule","_StoreModule","on","createReducer","ons","existingReducer","newReducer","isAction","actionFunc","noopAction","pprops","optionalProps","getStoreValue","take","Actions","_Actions","TOGGLE_MEDIA_MODULE","TOGGLE_EXPAND","BREAKPOINT_CHANGED","UPDATE_SCOREBOARD","SET_ACTIVE_TAB","TOGGLE_PIN","FETCH_VIDEO_EVENTS","START_FETCH_VIDEO_EVENTS","SET_VIDEO_SWITCHER_CONTENT","SET_AVAILABLE_EXPAND_LOCATION","TOGGLE_AUTOPLAY","SET_EVENT_INTERNAL","TOGGLE_UNPIN_INFO_MESSAGE","TOGGLE_COLLAPSED_STATE","ACCEPT_UNPIN_INFO_MESSAGE","START_USER_SERVICE_EVENTS_LISTENER","PIN_ENABLED_STATE_TOGGLE","UNSET_EVENT","RESTORE_STATE","START_RESTORE_STATE","RESET_STATE","POPULATE_FROM_STORAGE","init","toggleMediaModule","togglePin","toggleAutoplay","toggleExpand","breakpointChanged","setActiveTab","setVideoSwitcherContent","setAvailableExpandLocation","startFetchVideoEvents","fetchVideoEvents","setEventInternal","toggleUnpinInfoMessage","acceptUnpinInfoMessage","toggleCollapsedState","startUserServiceEventsListener","pinEnabledStateToggle","unsetEvent","restoreState","startRestoreState","resetState","populateFromStorage","MainContentLoaded","_loaded$","__privateAdd","__privateSet","loaded$","__privateGet","setLoaded","_MainContentLoaded","WidgetPageService","page","top","left","center","setActivePage","_WidgetPageService","WidgetLoaderService","widgetsLoaded","loggedWidgetsDetails","allTopLocationWidgetsLoaded","allTopLocationWidgetsLoaded$","widgetLoadedDetails","getWidgetsByLocation","slot","setWidgetLoaded","widgetId","widgetDetails","isLoaded","setWidgetVisible","isVisible","setSlotWidgets","widgetData","isLogged","loggedWidgetDetail","existingWidget","parentWidgetId","widgetLoadedDetails$","cleanWidgetsLoaded","_WidgetLoaderService","RunAfterLcpService","_widgetLoader","_widgetPage","_mainContentLoaded","_router","Router","afterLcpCallbacks$","lcp$$","lcp$","mergeMap","performanceObserver","PerformanceObserver","getEntries","entry","from","classList","observe","buffered","disconnect","race","debounceTime","NavigationEnd","segment","parseUrl","primary","segments","delay","widget","runAfterLcp","_RunAfterLcpService","timeSpanToMS","timeSpan","tt","getDateForOffset","minuteOffset","setMinutes","ItemType","VirtualCompetitionDisplayMode","VirtualCompetitionImageType","VirtualCompetitionPrefix","virtualCompetitionDisplayModeMap","Pills","Cards","takeTop","counts","preMatch","stateCount","typeCount","gridable","nonGridable","specials","outrights","isItemType","child","fromTag","tagCounts","grouped","tagCount","forIn","countTag","isCompetitionTag","parentTournamentId","isVirtualCompetitionTag","tournamentId","isConferenceTag","sportTag","mapNode","childrenPath","mapChildren","isVirtualCompetitionGroupItem","VirtualCompetitionGroup","isCompetitionItem","isVirtualCompetitionItem","isAntepost","antepost","typeOrder","currentType","childTypes","childType","currentChildren","compoundId","childTag","Sport","Conference","mapCount","meta","mapMeta","mapCompetition","mapVirtualSport","mapVirtualLeague","mapVirtualCompetitionGroup","siblings","prefix","standings","displayMode","imageType","mapImageType","groupOrder","groupIds","stageIds","extended","calendar","coupons","outrightsByGroups","outrightsByGroup","specialsByGroups","specialsByGroup","liveStreaming","priceBoost","dynamicCategories","tagParticipants","tagParticipant","Flags","countItems","sportModelMethods","BettingOfferApi","cdsApiServiceFactory","cdsConfig","baseTranslationConfig","pickCache","getFixtureView","statsMode","excludeMarkets","includePrecreated","isBettingInsightsEnabled","useRegionalisedConfiguration","gameIds","optionMarketIds","includeRelatedFixtures","includeLinkedFixtures","offerMapping","scoreboardMode","includePrecreatedBetBuilder","supportVirtual","statisticsModes","getVirtualFixtureView","scheduleSize","upcomingEventCount","getPicks","requestKey","buildPicksRequestKey","useBaseTranslation","alternateLanguage","defaultLanguage","fixturePage","getReBetPicksView","getPicksViewCache","getPicksWithFallback","getCounts","getSportList","tagTypes","extendedTags","getVirtualSportList","getLiveSportList","tagsToFetch","getPrematchEventTree","getSport","includeDynamicCategories","participantMapping","getCountsPerSport","tagType","getCountsForConference","conferenceId","conferenceIds","getFixtureList","getCountsFixtures","getBatchFixtureList","requestObservables","chunk","maxFixtureBatchSize","JSON","stringify","merge","getFixtureListBatch","getBatchCounts","getLiveHighlights","getLiveEsports","getLiveStreams","tv1Picks","buildPickV1Key","tv2Picks","buildPickV2Key","pick","useLiveFallback","isClassicBetBuilder","Page","_BettingOfferApi","CountIntervalService","bettingService","urlConfig","intervalStartOfDay","to","trackingSource","eTitle","filterForDay","buildInterval","intervalStartingNow","minute","filterForTime","getCountsForSport","canCountLive","buildRequestParameters","countResponse","mapValues","sumBy","translations","NavLive","countsWithValue","pickBy","getSportItem","batchId","fixtureTypes","toISOString","fromOffset","toOffset","tagCountMap","_CountIntervalService","translationToStr","SegmentNormalizer","tokenNormalizer","prototype","normalization","tokenSanitizer","stripper","maxTokenLength","toLocaleLowerCase","UrlBuilder","normalizer","query","appendIf","appendQuery","HorseRaceFavouritePrefixes","RacingUrlParam","DerivedMarkets","LiveUrlParam","SportUrlParam","SettingsUrlParam","ModelPopupTypes","VirtualUrlParam","CalendarUrlParam","MyBetsUrlParam","CouponUrlParam","MarketUrlParam","MarketOfferUrlParam","FavouritesDashboardUrlParam","UrlHelperService","device","seoConfig","azSportsData","sportsProductService","firstChar","locationPath","prependPrefix","getHomeUrl","getMultiSportsHubUrl","multiSports","multiSportsHubName","getESportsUrl","productPath","esportsTranslation","getSearchUrl","getMyBetPopupUrl","getAtoZUrl","getCalendarUrl","getBuilder","allowed","allowedTranslations","getLiveUrl","tab","Highlights","tracking","mapped","Video","video","SportList","all","betting","Favourites","favourites","Esports","esports","builder","trid","getPriceBoostUrl","getLiveSportUrl","conference","fallback","getVirtualSportUrl","sportOrParam","OnDemand","onDemand","getTournamentUrl","tournaments","getEventUrl","getFixtureUrl","getFixtureUrlByFixture","fixtureLike","dayOfRaceFixture","getRacingUrlByFixture","getCouponUrl","coupon","getCompetitionCouponUrl","getMultiBuilderUrl","multiBuilder","getBetsUrl","subCategory","dynamicCategory","bets","outrightCategory","specialCategory","getBettingUrl","getStandingsUrl","getTeamPagesUrl","teamPages","myTeams","getTeamPagesSearchUrl","sportUrl","getSettingsUrl","getMyBetsUrl","getMyBetsUrlBuilder","getPrintUrlBuilder","shouldRemoveHref","removeHrefToEventForRobot","isRobot","myBets","getSportUrl","regionOrSubContext","shouldApplyFallback","getSportBuilder","Featured","competitionLandingPage","azSports","activeName","appendContext","Competitions","Greyhounds","Antepost","eachWay","getPopupUrl","popupName","getFavouriteUrl","getFavouriteUrlByUrlParam","favouritesUrlParam","getRaceUrl","filterOrRace","horseRacing","common","HorsesLinkText","GreyhoundRacing","Future","NextRaces","getRacingUrl","dayOfRace","isAllRaceUrl","meetingParam","meeting","dayRoute","allRaceParam","getBuilderInternal","getAbsolute","relativeUrl","absUrl","hostname","getLastSegment","parsed","pathname","getQueryParams","isEsports","Location","DeviceService","_UrlHelperService","CalendarFilterTracking","CalendarIntervalService","countIntervalService","dayOffset","getCalendarIntervals","Live","NavToday","after2days","In2Days","after3days","In3Days","in30minutes","StartingIn","In30minutes","in60minutes","In60Minutes","in180minutes","In3Hours","daysFromCurrentDate","_CalendarIntervalService","CalendarLayout","CalendarPage","CalendarService","indicatorService","calendarIntervalService","urlHelper","calendarData","calendarConfig","getInterval","isInterval","next2days","next3days","next5days","midWeek","thisWeekend","getTimeInterval","getCalendarCounts","done","isCalendarAvailable","getCalendarLinks","pageName","activeLink","links","getSitecoreIntervals","getPageIntervals","calendarItems","featurePage","competitionPage","AtozSports","getIntervalForAllSports","atoZPage","keyList","sportDetails","intervalKey","allSports","timeFilter","topMenuDateFormat","getIntervalTitle","SportsCalendarIcon","active","in30Minutes","In60minutes","in60Minutes","In180minutes","in180Minutes","After2days","After2Days","After3days","After3Days","LoadingIndicatorService","_CalendarService","MasterdataApiService","teamsByComepetitionCache","getCompetitionsAndTeamsCount","getCompetitionCount","compIds","getImagesInfo","getVirtualCompetitionInfo","_MasterdataApiService","SportsCacheService","clientCachingConfig","bettingContent","teamPagesData","teamPagesConfig","masterdataApi","liveSportList","liveSportListTimeout","sportListCache","sportListTimeout","sportItemCache","sportTimeout","sportSource","isTeamPagesEnabled","getConference","getAllSportsList","latestSports","liveSports","isTeamPagesEnabledForSport","whitelistedSports","teamPageItems","competitionDetails","_SportsCacheService","RouteTag","Me","SchemaMarkupType","SeoMarkupConstants","_SeoMarkupConstants","regionWorldCode","ldJsonPrefix","markupSchemaContext","SeoGenericSchema","SeoPlaceSchema","address","Place","SeoSportsEventSchema","SportsEvent","SeoPostalAddressSchema","addressCountry","isRegion","PostalAddress","SeoLdJsonSchemaContainer","graph","SeoItemSchema","Thing","SeoListItemSchema","position","ListItem","SeoBreadcrumbSchema","itemListElement","BreadcrumbList","SchemaMarkupService","moduleEvents$","_doc","DOCUMENT","takeUntilDestroyed","addEventSchemaMarkup","document","addGenericSchemaMarkup","schemaMarkupType","scriptElement","createElement","addBreadcrumbSchemaMarkup","breadcrumbs","generateBreadcrumbSchema","addSchemaMarkupScriptToBody","cleanEvents","isFixutreModel","generateFixtureSchema","generateEventSchema","updateModuleEvents","uniqBy","listItemSchema","crumb","breadCrumbsSchema","generateLdJson","schema","ldJson","eventsSchema","generateSportEventSchemaObject","getIsoStringWithZone","leagueName","regionName","regionCode","getRegion","schemaType","script","removeSchemaMarkupScriptFromBody","appendChild","getElementById","timezoneOffSet","getTimezoneOffset","negativeOffset","offSetHrs","offSetMin","timezoneStandard","padValue","_SchemaMarkupService","LARGE_LAYOUT_BREAKPOINT","MEDIUM_LAYOUT_BREAKPOINT","SMALL_LAYOUT_BREAKPOINT","forSlot","widgets","mergeMarqueePayload","regularMarqueePayload","personalizedMarqueePayload","combinedTiles","combinedFixtures","getCombinedTilesAndFixtures","orderedTiles","orderedFixtures","sitecoreTemplateId","lastIndexOf","sitecoreIds","combinedTileIndex","combinedFixtureIndex","backgroundContainerConfig","globalLink","showAutomatedMarqueesOnEventPage","personalizedFixtureIndex","CompetitionIdService","getCompetitionId","getRealVirtualCompetitionId","virtualCompetitionGroup","virtualGroupId","virtualCompetition","virtualGroup","getCompoundId","_CompetitionIdService","WidgetContextEnhanceService","geolocation","bettingCache","competitionIdService","getEnhancedProperties","getCompetitionIds$","getGeolocation$","compoundCompetitionId","getCompoundCompetitionId","virtualCompetitionGroupId","_WidgetContextEnhanceService","WidgetContextService","media","router","enhanceService","schemaMarkupService","cdnCachingConfig","userSerivce","sizes","pages","Lobby","SportLobby","EsportsLobby","EventDetails","MultiSportsLobby","widgetsWithFixturePayload","getLayout","enchanceContext","enhanceContext","enhanced","isAuth","getWidget","addSchemaMarkup","forceBatchCall","defer","shouldIncludePayload","getWidgetBatch","shouldIncludePersonalizedData","getPersonalizedWidgetData","getWidgetData","updateSchemaMarkUpJson","preResolveWidgets","route","snapshot","layout","cdnContext","EMPTY","widgetsToConsider","activeChildren","getFixtures","carouselEvents","ev","getRoute","isTennis","isFakeRegion","layoutSize","getSize","getPage","fixtureStage","additionalProps","size","isActive","routerState","firstChild","I","MediaQueryService","_WidgetContextService","ModularHomePageDataLoader","requestContext","WidgetSchemaMarkupResolver","widgetsWithFixtures","widgetsWithFixturesOrComposable","uniqueFixtures","_WidgetSchemaMarkupResolver","WidgetResolver","_widgetContextService","preResolve","_WidgetResolver","NoMatchRouteGuard","canActivate","isNative","urlParams","sourceLanguage","targetLanguages","decodeURI","_NoMatchRouteGuard","SeoLoggerService","seo","records","record","isClientCatchallLoggingEnabled","recordsTimer","clientLoggingDebounce","_SeoLoggerService","SeoRedirectGuard","node","parent","unshift","_SeoRedirectGuard","CalendarResolver","_CalendarResolver","StylesLazyLoadingService","stylesService","StylesService","lazyLoad","aliasOrPath","load","_StylesLazyLoadingService","DispatcherService","listeners","dispatch","getOrCreateSubscription","observable","evt","isDomainEvent","de","_DispatcherService","ComponentProxyRef","componentLoadingInfo","destroy$","container","compLoadingInfo","component","createComponent","ngModuleRef","module","outputs","subscribeToOutputs","takeUntil","setInput","changeDetectorRef","detectChanges","instance","isObservable","destroy","ComponentLoaderService","moduleLoaderService","stylesLazyLoadingService","getComponentProxy","typeSelector","styleSheet","lazyConfigs","stylesPromise","Promise","loadModule","moduleName","getModule","ModuleLoaderService","eventsService","lazyFeatures","loadedFeatures","loadedModules","moduleLoader","loadedModule","lazyConfigsObservable","moduleType","createNgModule","ref","lazyLoadFeatures","eventName","raise","EventsService","_ModuleLoaderService","PageVisibilityService","documentProperties","getDocumentProperties","visibilityStream","handleVisibilityChange","pageHiddenDuration","pageHiddenTimeStamp","notificationTimeout","addEventListener","visibilityChange","hiddenPropertyName","msHidden","webkitHidden","_PageVisibilityService","ProfileActionName","FeatureLocation","ProfileMessageStorageKeys","preBetMessageStorageKey","postBetMessageStorageKey","actionForMessagedisplayPre","actionForMessagedisplayPost","loginActionPrebet","loginActionPostbet","firstLoginActionPrebet","firstLoginActionPostbet","ArcRestrictionTrackingConstants","TrackingEvent","ArcRestrictionService","rtmsService","clientConfig","arcConfig","pageVisibilityService","localStorage","isUserOnPlayBreak$","arcProfileDetails$","gamingCrossSellEnabled$","preBetslipMessageEnabled$","postBetslipMessageEnabled$","quickBetEnabled$","overAskEnabled$","playBreakMessages","PLAY_BREAK_START_EVENT","PLAY_BREAK_END_EVENT","isUserProfilingEnabled","startWith","shareReplay","profile","getGamingCrossSellState","getPreBetslipMessageState","getPostBetslipMessageState","getQuickBetState","getOverAskState","isPlayBreakEnabled","playBreakStateFromRTMS$","playBreakStateAfterLogin$","playBreakStateAfterPageVisibility$","pageHiddenReloadThreshold","profileDetails","profileActions","RemoveGamingCrossSell","profileActionsSwitch","isRemoveGamingCrosssellEnabled","PreBetSlipMessage","isBetslipMessagingEnabled","PostBetSlipMessage","RemoveQuickBet","isRemoveQuickbetEnabled","RemoveOverAsk","isRemoveOverAskEnabled","RtmsService","_ArcRestrictionService","TaskScheduler","tasks","schedule","task","flush","LayoutColumn","ColumnSize","RightColumnSize","Layout","maxColumnsCount","defaultComponents","availableColumns","orderedColumns","contentColumns","_registeredComponents","refreshLayout","registerComponent","isLeftVisible","columnVisible","Left","isRightVisible","columnAvailable","Right","shouldHaveLeftColumn","shouldHaveRightColumn","shouldHaveThreeColumns","maxColumnCount","visibleColumns","columns","Center","column","registeredComponents","checkColumnsForComponents","removeComponent","columnNumberDifferent","componentsArray","FixedLayout","ResponsiveLayout","AdaptiveLayoutState","htmlClasses","classes","htmlClass","cardContent","fixedContent","subNavigation","stickyHeader","fixedLayout","headerNavigation","breadcrumbNavigation","headerSubNavigation","headerSubNavigationHidden","shouldHideSubNavigation","subNavigationHiddenOnSmallScreen","headerTopNavigationHidden","topNavigationHiddenOnSmallScreen","bottomNavigation","headerTabNavigation","hasRightColumn","quickBetActive","quickBetCanBeShown","quickBetBuilderActive","rightColumnSize","showDesktopAZSports","AdaptiveLayoutService","stateChange","providerListChange","currentProviders","stateChange$","register","providers","observables","isMatch","stateFlags","_AdaptiveLayoutService","MeasuredColumn","_currentSize","width","setWidth","setSize","currentSize","ColumnMeasurement","columnSizeChanged","_columnSizeChanged","_layoutSize","deviceLayout","measureLayout","pushSizeChanges","getColumnWidth","right","updateColumnSize","change","mc","getElement","getFloat","parseFloat","style","getComputedStyle","xPadding","paddingLeft","paddingRight","xBorder","borderLeftWidth","borderRightWidth","offsetWidth","querySelector","toLower","FooterMeasurement","footerSize","height","tryCount","maxTryCount","callbackTimeout","eventService","measureFooter","allEvents","VanillaEventNames","FooterLoaded","calculateFooter","footer","retry","getBoundingClientRect","scheduleIdleCallback","ColumnLayoutService","layoutService","mediaService","htmlNode","_componentRegistered","_componentUpdated","_componentRemoved","_layoutChanged","componentUpdated$","mediaChangeHandler","columnVisibilityHandler","measurement","resetMeasurement","footerMeasurement","initializeLayout","distinctUntilKeyChanged","componentRegistered","componentRemoved","layoutChanged","rightColumnSizeChanged","currentRightColumnSize","centerColumnSizeChanged","currentCenterColumnSize","currentFooterSize","setColumnSize","applyColumnSize","getClassName","className","setCssClass","HtmlNode","_ColumnLayoutService","eventConstants","EVENT_PAGE_VIEW","EVENT_CART_CHECKOUT","EVENT_PURCHASE","EVENT_CHECKOUT","EVENT_CART_PURCHASE","EVENT_CART_ADD","EVENT_CART_REMOVE","EVENT_CLICKS","EVENT_BETSLIP_ERROR","EVENT_EARLYPAYOUT","EVENT_EDIT_BET","EVENT_EDIT_FAVOURITES","EVENT_LINE_SWITCHER","EVENT_MEDIA","EVENT_FUNC_MARKET_SWITCH","EVENT_FUNC_BETS","EVENT_FUNC_SHOWHIDE_BETS","EVENT_INIT_QUICKBET","EVENT_NAVIGATION_MENUS","EVENT_AUTO_EARLYPAYOUT_SET","EVENT_VIDEO_INTERACTIONS","EVENT_FAVOURITES","EVENT_GAME_OPEN","EVENT_VIRTUAL_OPEN","EVENT_MINI_GAME_OPEN","EVENT_RELOAD_HIDDEN","EVENT_RELOAD_OFFLINE","EVENT_PREF_NAV","EVENT_PERF_APP_LOAD","EVENT_TRACKING","EVENT_PODVIEW","EVENT_AZSPORTS","EVENT_ALERT_ENABLED","EVENT_MARKET_SWITCH","EVENT_GEOLOCATION_ERROR","EVENT_TRIGGER_GEO_FETCH","EVENT_OVERASK","EVENT_CONTENT_VIEW","EVENT_BET_STATUS","EVENT_CART_ADD_BALANCE","MESSAGE_VIEW","EVENT_CORE_NAVIGATION","EVENT_TEASER_BETS","EVENT_NAME","EVENT_CLICK","SEE_ALL","SEE_ALL_OVERLAY","LOAD","CLOSE","SPORTS_EVENT","NOT_APPLICABLE","TRACKING_GAMEDETAILS","TRACKING_NO_GAMEDETAILS","dataConstants","BUTTON_CLICK_EVENT","CART_PURCHASE","CART_CHECKOUT","TRANSACTION_PRODUCT_ODDS","COMPONENT_ACTION_EVENT","COMPONENT_AUTO_EARLYPAYOUT","COMPONENT_CATEGORY_EVENT","COMPONENT_CATEGORY_SUB_TYPE","COMPONENT_CATEGORY_TYPE","COMPONENT_EVENT_NAME","COMPONENT_EVENT_DETAILS","COMPONENT_FAVOURITES_ACTION","COMPONENT_GAME_CONTAINER_DESCRIPTION","COMPONENT_GAME_CONTAINER_LOCATION","COMPONENT_GAME_DISPLAY_NAME","COMPONENT_GAME_FAVOURITE","COMPONENT_GAME_GRID_POSITION","COMPONENT_GAME_NAME","COMPONENT_GAME_PLAYING_STATUS","COMPONENT_GAME_POSITION","COMPONENT_GAME_SECTION","COMPONENT_GAME_STATUS","COMPONENT_GAME_TYPE","COMPONENT_LABEL_EVENT","COMPONENT_LEAGUE_ID","COMPONENT_LOCATION_EVENT","COMPONENT_MODULE_NAME","COMPONENT_MARKET_ID","COMPONENT_POSITION_EVENT","COMPONENT_PAGE_LAYOUT","COMPONENT_MODULE_POSITION","COMPONENT_MODULE_CUSTOM_NAME","COMPONENT_REFERRED_BET","COMPONENT_SITE_ELEMENT_INTERCATIONS","COMPONENT_SLIP_ID","COMPONENT_SPORT_ID","COMPONENT_URL_CLICKED","CUSTOMER_ID","COMPONENT_CONTENT_POSITION","COMPONENT_MODULE_SOURCE","COMPONENT_MODULE_TYPE","COMPONENT_BET_SOURCE","COMPONENT_MODULE_AFFILIATION_CONFIG","PAGE_BETSLIP_ERROR","PAGE_DISPLAYED_ELEMENT","PAGE_EDITBET_ERROR","PAGE_NAME","PAGE_NAVIGATION_MENUS","PAGE_PROMOTION_ID","PAGE_REFERRING_ACTION","PAGE_RELOAD_AFTER_HIDDEN","PAGE_RELOAD_AFTER_OFFLINE","PAGE_SITE_SECTION","PAGE_URL","MARQUEE_CONTENT_LOGIC","PERFORMANCE_APP_COMPILAION","PERFORMANCE_APP_RUN","PERFORMANCE_ASSETS_FETCH","PERFORMANCE_CDSAPI","PERFORMANCE_CLIENT_BOOTSTRAP","PERFORMANCE_DOM_LOADED","PERFORMANCE_INTERACTIVE","PERFORMANCE_LOAD","MARKET_ID","Transaction_Product_Category","Transaction_Product_BetType","PERFORMANCE_NAV","PRODUCT_BET_SPORTS","PRODUCT_PICK_DETAILS","VIDEO_INTERNAL_EVENT_ID","VIDEO_PROVIDER_EVENT_ID","INVOKE_PRODUCT","INVOKE_INTERFACE","SPORT_EVENT_ID","SPORT_LEAGUE_ID","GEOLOCATION_FETCH_TYPE","GEOLOCATION_ERRORCODE","GEOLOCATION_ERRORMESSAGE","SHOW_MODULE","BETS_BOOSTS","BET_TICKET_ID","COMPONENT_RESULT_ID","SPORT_ID","RESULT_ID","REGION_ID","BET_TYPE","PROMO_ID","MESSAGE_TYPE","GAME_DETAILS","COMPONENT_SITECORE_ID","COMPONENT_USER_SEGMENTS","MARQUEE_NAME","SITECORE_TEMPLATE_ID","MARQUEE_TYPE","SHOW_MARQUEE","MARQUEE_RECOMMENDATION_TYPE","BET_DETAILS","BET_CALENDER","QUICKBET","PlaceBetSuccess","PlaceBet","TOPEVENTS_POD_DATA","Event_ID","SHOW_NEXTRACES","SELECTIONS_IN_SLIP","VARIANT","BET_TRACKING_TYPE","BET_PICK_TYPE","BETTING","MYBETS","COPY_BETSLIP_ID","BETSLIP_TYPE","BETS","miscellaneousConstants","LINE_SWITCHER_TRACKING","PRE_CREATED_SGP","VideoStreamTrackingStatus","EsportTrackingValues","trackingConstants","TrackingType","ExternalClient","TrackingService","vanillaTracking","track","trackingObject","triggerEvent","clean","updateDataLayer","trackError","errorDetail","reportError","triggerEventWithCleaning","_TrackingService","ExternalNativeAppService","trackingService","arcRestrictionService","channels","hideGamingOverlayByArc","invokeModule","applicationName","trackingData","getTrackingData","channel","Wrapper","PokerNativeApp","PokerDesktopClient","PokerMac","isPokerNativeApp","_ExternalNativeAppService","EventSwitcherComponentLoaderService","componentProxy","eventSwitcherComponent","getEventSwitcherComponent","EventDetailsModule","_EventSwitcherComponentLoaderService","ColumnLayoutRegister","columnLayout","resized","registration","resizeColumn","_ColumnLayoutRegister","MyBetsComponentLoaderService","sitecoreMyBets","userSettings","getColumnViewComponent","columnComponent","getEventViewComponent","eventComponent","MyBetsModule","_MyBetsComponentLoaderService","SummaryApiService","myBetsConfig","cacheTimeout","mybetsStatsCache","getOpenBetsCount","openEvents","openBetsCount","liveBetsCount","betNumbers","isMigrationSummary","hasError","h","_SummaryApiService","MyBetsSummaryService","loader","dispatcherService","mybetsConfig","mybetsVisualizationTrackingConfig","defaultSummary","EARLY_PAYOUT_SUCCESS","BET_PLACE_SUCCESS","CASH_OUT_ALREADY_EXECUTED","_summaryUpdate","summaryUpdate","onBetPlacementAction","stopped$","summary","eventCounts","eid","subscribeBetPlacementActions","isOpenSummaryLoadingRestricted","myBetsRefreshInMilliseconds","aggresive","_MyBetsSummaryService","DomainEvent","WorkflowService","loginResponseHandler","loginStore","user","productNavigationService","execute","finalizeWithData","finalizeHandle","executeHandle","finalizeWithDataHandle","getParameters","loginError","goTo","redirectUrl","handleResponse","loginRedirectInfo","handle","loginResponse","loginType","LoginType","SharedFeaturesApiService","LoginResponseHandlerService","LoginStoreService","ProductNavigationService","_WorkflowService","LoginConfig","loginConfigFactory","SF","LoginService","loginConfig","dslService","runAfterLogin","runCallback","disableFeatureDataPrefetch","dsl","evaluateExpression","disabled","DslService","_LoginService","CryptoResourceService","encrypt","purpose","decrypt","_CryptoResourceService","CryptoService","cryptoResourceService","_CryptoService","BaseLoginProviderService","loginResponseSubject","profileSubject","dynamicScriptsService","initSdk","typeofSdk","scriptOptions","sdkUrl","clientId","async","crossorigin","trackSuccessLoginWithProvider","AppleProviderService","cookieService","cryptoService","navigationService","auth","authorization","authUrl","id_token","nonce","CookieName","Nonce","encryptedUserData","AppleUser","LoginProvider","APPLE","login","providerParameters","sdkLogin","AppleID","onloadCallback","redirectURI","signIn","initProfile","userData","NavigationService","Logger","DynamicScriptsService","_AppleProviderService","FacebookProviderService","connectionStatus","connectionStatusSubject","authResponse","signedRequest","expiresIn","data_access_expiration_time","FACEBOOK","FB","initFacebookAuth","getLoginStatus","fields","pictureUrl","picture","appId","cookie","sdkCookie","xfbml","sdkVersion","Event","_FacebookProviderService","GoogleProviderService","access_token","expires_in","expires_at","GOOGLE","initAuth","googleAuth","signInOptions","getAuthResponse","currentUser","getBasicProfile","googleProfile","getName","getImageUrl","gapi","auth2","client_id","_GoogleProviderService","LoginProvidersService","commonMessages","utilsService","messageQueueService","appleProviderService","googleProviderService","facebookProviderService","providersProfile","initProvidersProfile","appleProfile","facebookProfile","urlAuth","providerConfig","appendNonce","updateNonce","getAuthUrl","YAHOO","appendToUri","LoginHint","IdTokenHint","showLoginError","sdkAuth","loginOptions","redirectQueryParams","redirectQuery","loginUrl","cookieKeys","guid","scope","MessageScope","Login","html","LoginError","lifetime","MessageLifetime","CommonMessages","UtilsService","MessageQueueService","_LoginProvidersService","NavigationHelper","firstLoadFlag","navigationEnded","forceHomePage","allowBack","_NavigationHelper","YahooOpenIdTriggerOption","RedirectHelperService","_window","navigation","navigationHelper","menuActionsService","loginWithProvidersService","yahooOpenidconfig","navigationSubject$","WINDOW","windowTime","obs","redirect","goToLiveSport","goToPage","ignoreBrowserHistory","goToLive","goToSport","regionOrContext","leagueOrSubContext","Betting","goToVirtualSport","goToEvent","goToLogin","returnUrl","appendReferrer","useYahooLogin","isYahooOpenIdFlow","trigger","BetSlip","invoke","MenuAction","GOTO_LOGIN","goToHorseRacing","goToFixtureByFixture","goToFixture","goToFavouriteWithUrlParam","urlParam","goHome","isBackNavigation","goToMyBets","trackingParams","goToRacing","goBack","userIsComingFromPortalPromotions","history","back","reloadPage","nativeAppValue","nativeAppCookie","loginHint","idTokenHint","enableOnBetPlacement","referrer","MenuActionsService","_RedirectHelperService","RouterEventsService","currentActivationEnd","currentRouteActivationEnd","currentActivationStart","currentRouteActivationStart","currentRoutesRecognized","currentRouteRoutesRecognized","isDirectLink","recognizedRoutes","urlHistory","initCurrentRouteActivationEnd","initCurrentRouteActivationStart","initCurrentRouteRoutesRecognized","ActivationEnd","ActivationStart","GuardsCheckEnd","RoutesRecognized","_RouterEventsService","ScrollFreezeServiceTypes","ScrollFreezeService","routerEvent","_freezeCountPage","_freezeCountPs","currentRouteTag$","ae","freezeScroll","CustomScrollbar","freezeCountPs","freezePage","freezeCountPage","urlWhenScreenWasFrozen","bodyStyle","setProperty","scrollingElement","scrollTop","bodyElement","forceScroll","isScrollFrozen","scroll","releaseScroll","releaseScrollPage","currentTopStr","removeProperty","shouldSkipResetScroll","currentTop","isUrlHasChanged","parsedUrl","contains","_ScrollFreezeService","MutationObserverService","defaultOptions","childList","subtree","mutationObserver","isMutationObserverSupported","MutationObserver","mutations","_MutationObserverService","AutomationService","internalFeatureConfig","isAutomationDebugEnabled","rendererFactory","attributeName","renderer","createRenderer","removeAllAttributes","elementRef","nativeElement","removeAttribute","addAttr","setSimpleAttribute","setExtendedAttribute","setAttribute","RendererFactory2","_AutomationService","AutomationDirective","elm","hasAttribute","ɵɵdirectiveInject","ElementRef","inputs","_AutomationDirective","AutomationModule","CommonModule","_AutomationModule","require_hammer","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","each","iterator","deprecate","deprecationMessage","nextKey","extend","dest","src","inherit","baseP","childP","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","toArray","uniqueArray","prefixed","property","camelProp","_uniqueId","uniqueId","getWindowForElement","doc","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","TouchMouseInput","MouseInput","inputHandler","eventType","pointersLen","changedPointersLen","isFirst","isFinal","computeInputData","pointers","pointersLength","simpleCloneInputData","firstInput","firstMultiple","offsetCenter","getCenter","getAngle","getDistance","computeDeltaXY","getDirection","overallVelocity","getVelocity","getScale","getRotation","computeIntervalInputData","prevDelta","prevInput","deltaTime","velocity","velocityX","velocityY","direction","deltaX","deltaY","p1","p2","end","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","POINTER_INPUT_MAP","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","removePointer","eventTypeNormalized","pointerType","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","touches","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","getTouches","allTouches","targetIds","targetTouches","changedTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","DEDUP_DISTANCE","inputEvent","inputData","isMouse","recordTouches","isSyntheticEvent","eventData","setLastTouch","lastTouch","lts","removeLastTouch","dx","dy","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","recognizer","cleanTouchActions","srcEvent","hasNone","hasPanY","hasPanX","isTapPointer","isTapMovement","isTapTouchTime","touchMap","cssSupports","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","otherRecognizer","simultaneous","getRecognizerByNameIfManager","requireFail","emit","stateStr","inputDataClone","directionStr","AttrRecognizer","optionPointers","isRecognized","isValid","PanRecognizer","hasMoved","PinchRecognizer","inOut","PressRecognizer","validPointers","validMovement","validTime","RotateRecognizer","SwipeRecognizer","TapRecognizer","validTouchTime","validInterval","validMultiTap","tapCount","Hammer","Manager","STOP","FORCED_STOP","toggleCssProps","force","recognizers","curRecognizer","triggerDomEvent","gestureEvent","freeGlobal","EventService","_subject$","setup","zone","_eventAuditTime","listener","observed","fromEvent","auditTime","WindowEventService","resize","_WindowEventService","ScrollContainerService","scrollSubject","setTarget","scrollY","innerHeight","clientHeight","scrollHeight","scrollTo","scrollLeft","scrollToDelta","scrollEventTarget","scrollSubscription","eventTarget","scrollService","_ScrollContainerService","Deferred","promise","ContentRef","nodes","viewRef","componentRef","ActiveModal","close","dismiss","ModalRef","componentInstance","_contentRef","_windowCmptRef","_backdropCmptRef","_coverCmptRef","_beforeDismiss","updateData$","newData$","bind","deferred","updateTitle","windowComponentInstance","updateData","appendClass","currentClasses","newClass","SPACE","addWindowClass","windowClass","addBackdropClass","backdrop","backdropClass","_removeModalElements","_dismiss","_ModalRef"],"mappings":"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","x_google_ignoreList":[4,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,113,186]}