{"version":3,"file":"chunk-mawfw9l7.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/racing/feature/models/src/win-game-fixture.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/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","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","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/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/banner/game-launcher.resolver.ts","packages/sports/web/app/src/common/local-storage.service.ts","packages/sports/libs/common/core/utils/router-events/src/lib/router-events.service.ts","packages/sports/web/app/src/competition-list/competition-route.service.ts","packages/sports/web/app/src/competition-list/competition-list-seo.service.ts","packages/sports/web/app/src/seo/seo-content.service.ts","packages/sports/web/app/src/option-pick/pick-source.provider.ts","packages/sports/web/app/src/widget/core/modular-config-accessor.service.ts","packages/sports/web/app/src/widget/core/modular-pick-source.service.ts","packages/sports/common/betslip/modules/quick-bet/quick-bet.state.ts","packages/sports/common/betslip/core/picks/pick-models.ts","packages/sports/common/betslip/core/picks/pick-id.ts","packages/sports/common/betslip/core/betslip-state.ts","packages/sports/common/betslip/base/store/state.ts","packages/sports/common/betslip/base/store/selectors.ts","packages/sports/libs/odds/feature/src/odds/fraction.ts","packages/sports/libs/odds/feature/src/odds/odds.ts","packages/sports/libs/odds/feature/src/odds/odds-converter.ts","packages/sports/libs/odds/feature/src/odds/operations.ts","packages/sports/common/betslip/core/picks/betslip-pick.ts","packages/sports/common/betslip/core/picks/betslip-v2-pick.ts","packages/sports/common/betslip/core/picks/betslip-v2-option-market-pick.ts","packages/sports/common/betslip/core/picks/betslip-bet-builder-pick.ts","packages/sports/common/betslip/modules/validation/picks/betslip-pick-change-info.ts","packages/sports/common/betslip/core/picks/combo-prevention.ts","packages/sports/common/betslip/core/picks/minimum-combination.ts","packages/sports/common/betslip/core/picks/betslip-v1-pick.ts","packages/sports/common/betslip/core/picks/betslip-v2-standard-pick.ts","packages/sports/common/betslip/core/price.ts","packages/sports/common/betslip/core/picks/betslip-v2-participant-pick.ts","packages/sports/common/betslip/core/picks/betslip-v2-win-participant-pick.ts","packages/sports/common/betslip/core/picks/sport-specific/betslip-v2-golf-picks.ts","packages/sports/common/betslip/core/picks/sport-specific/betslip-v2-horse-race-picks.ts","packages/sports/common/betslip/modules/picks/services/betslip-pick-storage-loader.ts","packages/sports/common/betslip/core/group-pick-helpers.ts","packages/sports/common/betslip/core/picks/group-leg-state.ts","packages/sports/common/betslip/core/picks/betslip-group-pick.ts","packages/sports/common/betslip/core/picks/betslip-unknown-pick.ts","packages/sports/common/betslip/core/utils.ts","packages/sports/common/betslip/core/betslip-type.ts","packages/sports/common/betslip/model/over-ask/over-ask.ts","packages/sports/common/betslip/modules/picks/services/betslip-pick-helpers.ts","packages/sports/common/betslip/modules/picks/selectors.ts","packages/sports/common/betslip/modules/types/selectors.ts","packages/sports/common/betslip/modules/validation/state.ts","packages/sports/web/app/src/store-persist/storage-persister.ts","packages/sports/common/betslip/core/external-betslip-actions.ts","packages/sports/common/betslip/modules/types/base/selectors.ts","packages/sports/common/betslip/modules/validation/errors/bet-placement-error-icon.ts","packages/sports/common/betslip/modules/validation/errors/betslip-error.ts","packages/sports/common/betslip/modules/validation/errors/bet-placement-error.ts","packages/sports/common/betslip/modules/validation/errors/user/user-error.ts","packages/sports/common/betslip/modules/validation/errors/stake-error.ts","packages/sports/common/betslip/modules/validation/errors/general/under-minimum-stake.ts","packages/sports/common/betslip/modules/validation/errors/pre-check/pre-check-error.ts","packages/sports/common/betslip/modules/validation/errors/pre-check/under-minimum-stake-pre-check-error.ts","packages/sports/common/betslip/modules/stake/utils.ts","packages/sports/common/betslip/modules/single-bet/selectors.ts","packages/sports/common/betslip/modules/bet-generation/betslip-system-type.ts","packages/sports/common/betslip/modules/system-bet/models.ts","packages/sports/common/betslip/modules/bet-generation/slip-type.ts","packages/sports/common/betslip/modules/bet-generation/services/slip.utils.ts","packages/sports/common/betslip/modules/linear-bet-builder/selectors.ts","packages/sports/common/betslip/modules/stake/selectors.ts","packages/sports/common/betslip/modules/system-bet/selectors.ts","packages/sports/common/betslip/modules/validation/errors/general/min-selections-betbuilder-error.ts","packages/sports/common/betslip/modules/validation/errors/result/result-error.ts","packages/sports/common/betslip/modules/validation/services/utils/betslip-errors-state-utils.ts","packages/sports/common/betslip/modules/reward-tokens/reward-tokens.model.ts","packages/sports/common/betslip/modules/reward-tokens/services/reward-tokens.utils.ts","packages/sports/common/betslip/modules/system-bet/services/system-bet.constants.ts","packages/sports/common/betslip/modules/betplacement/services/stake/stake-utils.ts","packages/sports/common/betslip/modules/betplacement/services/stake/linear-stake-utils.ts","packages/sports/common/betslip/modules/picks/services/linear-betslip-pick.utils.ts","packages/sports/common/betslip/modules/validation/errors/client-error-type.ts","packages/sports/common/betslip/modules/validation/errors/general/betandget/reward-tokens-bet-builder-error.ts","packages/sports/common/betslip/modules/validation/errors/general/betandget/reward-tokens-min-stake-error.ts","packages/sports/common/betslip/modules/validation/errors/general/betandget/reward-tokens-selection-level-odds-error.ts","packages/sports/common/betslip/modules/validation/errors/general/betandget/reward-tokens-total-odds-error.ts","packages/sports/common/betslip/modules/validation/errors/general/group-pick-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-forbidden-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-game-type-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-max-stake-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-max-total-odds-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-min-legs-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-selection-level-max-odds-error.ts","packages/sports/common/betslip/modules/validation/errors/general/reward-tokens-slip-type-error.ts","packages/sports/common/betslip/modules/validation/errors/general/technical-error.ts","packages/sports/common/betslip/modules/validation/errors/general/incorrect-bet-count.ts","packages/sports/common/betslip/modules/validation/errors/pre-check/incorrect-options-count-pre-check-error.ts","packages/sports/common/betslip/modules/validation/errors/pre-check/no-betbuilder-system-pre-check-error.ts","packages/sports/common/betslip/modules/validation/errors/user/not-enough-money.ts","packages/sports/common/betslip/modules/validation/errors/user/overall-max-win-per-user.ts","packages/sports/common/betslip/modules/validation/services/utils/stake-limit-errors-info-utils.ts","packages/sports/common/betslip/modules/validation/services/utils/betslip-errors-utils.ts","packages/sports/common/betslip/modules/validation/selectors.ts","packages/sports/common/betslip/modules/reward-tokens/services/linear-reward-tokens.utils.ts","packages/sports/common/betslip/modules/reward-tokens/services/betstation-reward-tokens.utils.ts","packages/sports/common/betslip/modules/reward-tokens/selectors.ts","packages/sports/web/app/src/acca-boost-base/acca-boost-utils.ts","packages/sports/common/betslip/modules/betslip-bar/services/betslip-bar-visibility.service.ts","packages/sports/common/betslip/modules/hidden-market/hidden-market.selectors.ts","packages/sports/common/betslip/base/store/actions.ts","packages/sports/common/betslip/modules/settings/actions.ts","packages/sports/common/betslip/modules/edit-bet/actions.ts","packages/sports/common/betslip/integration/sports-injection-services.ts","packages/sports/common/betslip/integration/betslip-integration.service.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 { 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 { 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 { 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","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","\"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","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 { ActivatedRouteSnapshot, ResolveFn } from '@angular/router';\n\nexport enum GameLauncherSection {\n Gyml = 'gyml',\n Link = 'link',\n Jackpot = 'jackpot',\n}\n\nexport interface GameLauncherModel {\n name: string;\n section: GameLauncherSection;\n position: number;\n title: string;\n provider: string;\n lobbyPosition: string;\n}\n\nexport const gameLauncherResolver: ResolveFn = (route: ActivatedRouteSnapshot): GameLauncherModel => ({\n name: route.params.name,\n section: route.params.section,\n position: route.params.position,\n title: route.params.title,\n provider: route.params.provider,\n lobbyPosition: route.params.lobbyPosition,\n});\n","import { Injectable } from '@angular/core';\n\nimport { LocalStoreService } from '@frontend/vanilla/core';\n\nexport interface StorageItem {\n data: T;\n timestamp: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n constructor(private localStore: LocalStoreService) {}\n\n getItem(storageKey: string): T[] {\n const y = this.localStore.get(storageKey) || [];\n\n return y;\n }\n\n getItemObject(storageKey: string): T | null {\n return this.localStore.get(storageKey);\n }\n\n saveItem(storageKey: string, input: T): void {\n if (!input) {\n return;\n }\n\n this.localStore.set(storageKey, input);\n }\n\n clearStorage(storageKey: string): void {\n this.localStore.remove(storageKey);\n }\n\n addTimestampToItem(item: T): StorageItem {\n const timestamp = new Date().getTime();\n\n return { data: item, timestamp } as StorageItem;\n }\n\n sortStorageItemsByTimestamp(items: StorageItem[]): StorageItem[] {\n return items.sort((a, b) => b.timestamp - a.timestamp);\n }\n\n clearExpiredItems(expirationDays: number, storageKey: string): void {\n const storedItems: StorageItem[] = this.getItem>(storageKey);\n const currentTime = new Date().getTime();\n let hasItemRemoved = false;\n\n if (storedItems.length) {\n const filteredArray = storedItems.filter((item) => {\n if (!item?.timestamp) {\n return false;\n }\n const millisecondsInOneDay: number = 1000 * 60 * 60 * 24;\n const daysDifference: number = Math.floor((currentTime - item.timestamp) / millisecondsInOneDay);\n\n if (daysDifference >= expirationDays) {\n hasItemRemoved = true;\n\n return false;\n }\n\n return true;\n });\n\n if (hasItemRemoved) {\n this.saveItem[]>(storageKey, filteredArray);\n }\n }\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 { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PrettyUrlsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { ParsedUrl, UrlService } from '@frontend/vanilla/core';\nimport { capitalize, cloneDeep, isEqual, toInteger } from 'lodash-es';\n\nimport { CompetitionRoute } from '../navigation/navigation.models';\n\ntype RegExpMapper = (result: RegExpExecArray) => CompetitionRoute;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompetitionRouteService {\n private parsedUrl: ParsedUrl;\n private parsedRoute: CompetitionRoute = {};\n private matchers = new Map();\n private mappers = new Map();\n protected get base(): string {\n return '(/.+/sports)';\n }\n\n constructor(\n routerEvents: RouterEventsService,\n private router: Router,\n private urlService: UrlService,\n private urlConfig: PrettyUrlsConfig,\n ) {\n const context = (...options: string[]) => `(/(${options.join('|')}))`;\n const register = (key: string, regex: string, mapper: RegExpMapper) => {\n this.matchers.set(key, new RegExp(regex, 'i'));\n this.mappers.set(key, mapper);\n };\n\n const couponContext = context(this.urlConfig.translations.coupons);\n const competitionContext = context(this.urlConfig.translations.competitions);\n const conferencesContext = context(this.urlConfig.translations.conferences);\n const tournamentContext = context(this.urlConfig.translations.tournaments);\n const teampagesContext = context(this.urlConfig.translations.teamPages);\n const betsContext = '/' + this.urlConfig.translations.bets;\n const standingsContext = '/' + this.urlConfig.translations.standings;\n const liveContext = context(this.urlConfig.translations.live);\n const worldCupHubContext = context(this.urlConfig.translations.worldCupHub);\n\n const baseOptions = [\n this.urlConfig.translations.betting,\n this.urlConfig.translations.calendar,\n this.urlConfig.translations.in30minutes,\n this.urlConfig.translations.in60minutes,\n this.urlConfig.translations.in180minutes,\n this.urlConfig.translations.today,\n this.urlConfig.translations.nextRaces,\n this.urlConfig.translations.tomorrow,\n this.urlConfig.translations.after2days,\n this.urlConfig.translations.after3days,\n this.urlConfig.translations.next2days,\n this.urlConfig.translations.next3days,\n this.urlConfig.translations.next5days,\n this.urlConfig.translations.midWeek,\n this.urlConfig.translations.thisWeekend,\n ];\n const eventContext = context(...baseOptions, this.urlConfig.translations.coupons);\n const baseContext = context(...baseOptions);\n\n const node = '(/(([^/]+)-)?(\\\\d+))'; // name-identifier with optional name\n const virtualNode = '(/(([^/]+)-)?(0:(\\\\d+)))';\n\n register('bets', `${this.base}${betsContext}${node}${node}?${node}?${node}?$`, this.getBetsRoute);\n register('bets-virtual', `${this.base}${betsContext}${node}${node}${virtualNode}$`, this.getBetsVirtualRoute);\n register('sport', `${this.base}${node}${eventContext}?${competitionContext}?$`, this.getSportRoute);\n register('sport-modular', `${this.base}${node}/modular$`, this.getSportRoute); // temporary, needs to be removed after the route switch technique will be included\n register('calendar', `${this.base}${eventContext}$`, this.getCalendarRoute);\n register('conferences', `${this.base}${node}${conferencesContext}${node}?${node}?${node}?$`, this.getConferencesRoute);\n register('betting', `${this.base}${node}${baseContext}${node}?${node}?$`, this.getBettingRoute);\n register('betting-virtual', `${this.base}${node}${baseContext}${node}${virtualNode}${node}?$`, this.getVirtualBettingRoute);\n register('live', `${this.base}${liveContext}${node}${node}?${node}?$`, this.getLiveRoute);\n register('live-conference', `${this.base}${liveContext}${node}${node}?${node}?${node}?$`, this.getLiveConferenceRoute);\n register('live-virtual', `${this.base}${liveContext}${node}${node}${virtualNode}${node}?$`, this.getVirtualLiveRoute);\n register('betting-multi', `${this.base}${node}${baseContext}/(\\\\d+(,\\\\d+)*)$`, this.getBettingSportRoute);\n register('coupon', `${this.base}${node}${couponContext}(/${this.urlConfig.translations.betBuilder}|${node})?$`, this.getCouponRoute);\n register('tournament', `${this.base}${node}${tournamentContext}(/([^/]+))?${node}?$`, this.getTournamentRoute);\n register('teamPages', `${this.base}${node}${teampagesContext}(/([^/]+))?${node}?$`, this.getCommon);\n register('standings', `${this.base}${standingsContext}${node}${node}${node}?$`, this.getStandingsRoute);\n register('standings-virtual', `${this.base}${standingsContext}${node}${node}${virtualNode}${node}?$`, this.getStandingsVirtualRoute);\n register(\n 'coupon-competition',\n `${this.base}${node}${couponContext}${node}${node}(/${this.urlConfig.translations.betBuilder}|${node})$`,\n this.getCouponCompetitionRoute,\n );\n register(\n 'coupon-virtual',\n `${this.base}${node}${couponContext}${node}${virtualNode}(/${this.urlConfig.translations.betBuilder}|${node})$`,\n this.getCouponVirtualCompetitionRoute,\n );\n register('worldCupHub', `${this.base}${node}${worldCupHubContext}`, this.getWorldCupHubRoute);\n\n routerEvents.currentRoutesRecognized.subscribe((event) => {\n if (event) {\n const url = event.urlAfterRedirects || event.url || this.router.url;\n const parsed = this.urlService.parse(url);\n\n if (!this.parsedUrl || !isEqual(this.parsedUrl.path(), parsed.path()) || !isEqual(this.parsedUrl.search, parsed.search)) {\n this.parsedUrl = parsed;\n this.parsedRoute = this.parseUrl(parsed);\n }\n }\n });\n }\n\n current(): string {\n // as from vanilla code, they depend on window.location.pathname which is always encoded, so we need to decode\n return decodeURI(this.parsedUrl.url());\n }\n\n path(): string {\n // as from vanilla code, they depend on window.location.pathname which is always encoded, so we need to decode\n return decodeURI(this.parsedUrl.path());\n }\n\n params(): CompetitionRoute {\n return cloneDeep(this.parsedRoute);\n }\n\n parse(url: string): CompetitionRoute {\n const parsed = this.urlService.parse(url);\n\n return this.parseUrl(parsed);\n }\n\n private parseUrl(url: ParsedUrl): CompetitionRoute {\n let result: CompetitionRoute = {};\n\n // Root-level secondary outlets take the form e.g. /en/sports(overlay:menu/subpath)\n const decodedPathWithSecondaryOutletsRemoved = decodeURI(url.path()).replace(/\\(.*\\)/giu, '');\n\n for (const type of this.matchers.keys()) {\n const matcher = this.matchers.get(type);\n const mapper = this.mappers.get(type);\n\n if (matcher && mapper) {\n const match = matcher.exec(decodedPathWithSecondaryOutletsRemoved);\n\n if (match) {\n result = mapper(match);\n\n break;\n }\n }\n }\n\n return result;\n }\n\n private getQuery = (key: string) => this.parsedUrl.search.get(key) || undefined;\n private getInteger = (value?: string) => toInteger(value) || undefined;\n private getIntegerArray = (value?: string) => {\n const values = (value || '')\n .split(',')\n .map(this.getInteger)\n .filter((current) => !!current) as number[];\n\n if (values.length === 0) {\n return;\n }\n\n if (values.length === 1) {\n return values.pop();\n }\n\n return values;\n };\n\n private getSportRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n subContext: result[9],\n });\n\n private getBettingRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n region: this.getInteger(result[11]),\n regionName: result[10],\n league: this.getIntegerArray(result[15]),\n leagueName: result[14],\n });\n\n private getConferencesRoute: RegExpMapper = (result) => ({\n ...this.getBettingRoute(result),\n conference: result[19] ? this.getInteger(result[19]) || 0 : undefined,\n conferenceName: result[18],\n });\n\n private getVirtualBettingRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n region: this.getInteger(result[11]),\n regionName: result[10],\n league: this.getIntegerArray(result[16]),\n leagueName: result[14],\n virtualCompetitionGroup: this.getInteger(result[20]),\n virtualCompetitionGroupName: result[19],\n isVirtual: true,\n });\n\n private getBettingSportRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n league: this.getIntegerArray(result[8]),\n });\n\n private getCouponRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n coupon: this.getInteger(result[12]),\n couponName: result[11],\n });\n\n private getTournamentRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n tournament: result[9],\n league: this.getIntegerArray(result[13]),\n leagueName: result[12],\n });\n\n private getStandingsRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n context: this.urlConfig.translations.standings,\n leagueName: result[12],\n league: toInteger(result[13]),\n region: toInteger(result[9]),\n regionName: result[8],\n });\n\n private getStandingsVirtualRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n context: this.urlConfig.translations.standings,\n virtualCompetitionGroup: result[18] !== undefined ? toInteger(result[18]) : undefined,\n virtualCompetitionGroupName: result[17],\n isVirtual: true,\n leagueName: result[12],\n league: toInteger(result[14]),\n region: toInteger(result[9]),\n regionName: result[8],\n });\n\n private getCalendarRoute: RegExpMapper = (result) => ({\n base: result[1],\n context: result[3],\n });\n\n private getWorldCupHubRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n context: this.urlConfig.translations.worldCupHub,\n });\n\n private getBetsRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n league: this.getInteger(result[13]),\n leagueName: result[12],\n region: this.getInteger(result[9]),\n regionName: result[8],\n conference: this.getInteger(result[17]),\n conferenceName: result[16],\n marketOffer: this.getQuery('category'),\n outrightCategory: this.getQuery('outrightCategory'),\n specialCategory: this.getQuery('specialCategory'),\n context: this.urlConfig.translations.bets,\n });\n\n private getBetsVirtualRoute: RegExpMapper = (result) => ({\n ...this.getCommon(result),\n marketOffer: this.getQuery('category'),\n outrightCategory: this.getQuery('outrightCategory'),\n specialCategory: this.getQuery('specialCategory'),\n context: this.urlConfig.translations.bets,\n isVirtual: true,\n leagueName: result[12],\n league: toInteger(result[14]),\n region: toInteger(result[9]),\n regionName: result[8],\n });\n\n private getCommon: RegExpMapper = (result) => ({\n base: result[1],\n sport: this.getInteger(result[5]),\n sportName: result[4],\n context: result[7],\n marketTemplate: this.getInteger(this.getQuery('marketTemplate')),\n marketCategory: this.getInteger(this.getQuery('marketCategory')),\n marketOffer: this.getQuery('tab'),\n dynamicOfferCategory: this.getQuery('dynamicCategory'),\n });\n\n private getLiveRoute: RegExpMapper = (result) => ({\n base: result[1],\n sport: this.getInteger(result[7]),\n sportName: result[6],\n context: result[3],\n region: this.getInteger(result[11]),\n regionName: result[10],\n league: this.getIntegerArray(result[15]),\n leagueName: result[14],\n marketTemplate: this.getInteger(this.getQuery('marketTemplate')),\n marketCategory: this.getInteger(this.getQuery('marketCategory')),\n marketOffer: this.getQuery('tab'),\n });\n\n private getLiveConferenceRoute: RegExpMapper = (result) => ({\n ...this.getLiveRoute(result),\n conference: this.getInteger(result[19]),\n conferenceName: result[18],\n });\n\n private getVirtualLiveRoute: RegExpMapper = (result) => ({\n ...this.getLiveRoute(result),\n league: this.getIntegerArray(result[16]),\n virtualCompetitionGroup: this.getInteger(result[20]),\n virtualCompetitionGroupName: result[19],\n isVirtual: true,\n });\n\n private getCouponCompetitionRoute: RegExpMapper = (result) => ({\n ...this.getBettingRoute(result),\n coupon: this.getInteger(result[20]),\n couponName: result[19],\n });\n\n private getCouponVirtualCompetitionRoute: RegExpMapper = (result) => ({\n base: result[1],\n sport: this.getInteger(result[5]),\n sportName: result[4],\n context: result[7],\n region: this.getInteger(result[11]),\n regionName: result[10],\n league: this.getIntegerArray(result[16]),\n leagueName: result[14],\n isVirtual: true,\n coupon: this.getInteger(result[21]),\n couponName: result[20],\n });\n\n getCompetitionRouteTracking(hasFixtures: boolean): string {\n const params = this.params() ?? {};\n if (params.isVirtual) {\n let groupName = params.virtualCompetitionGroupName;\n\n if (!groupName) {\n groupName = 'All';\n }\n\n return `EventList/League/${groupName}`;\n }\n\n if (hasFixtures && params.league) {\n return 'EventList/League';\n }\n\n const routeContext = params.context;\n\n return `EventList/${capitalize(routeContext || 'all')}`;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { VirtualCompetitionGroupItem } from '@frontend/sports/common/core/data-access/sport-model';\n\nimport { FixtureList } from '../event-list-shared/sport/competitions/competition.models';\n\n@Injectable({ providedIn: 'root' })\nexport class CompetitionListSeoService {\n private realCompetitionId: number | undefined;\n\n getRealCompetitionId(): number | undefined {\n return this.realCompetitionId;\n }\n\n saveRealCompetitionId(id: number | undefined): void {\n this.realCompetitionId = id;\n }\n\n storeRealCompetitionId(fixtureList: FixtureList | undefined): void {\n this.realCompetitionId = undefined;\n const virtualCompetition = fixtureList && fixtureList.virtualCompetition;\n if (virtualCompetition) {\n const virtualGroupId = fixtureList.params && fixtureList.params.virtualCompetitionGroup;\n const virtualGroup =\n virtualCompetition.children &&\n (virtualCompetition.children.find((group) => group.id === virtualGroupId) as VirtualCompetitionGroupItem | undefined);\n this.realCompetitionId = virtualGroup ? virtualGroup.siblings[0] : virtualCompetition.siblings[0];\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { PrettyUrlsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { assign, isArray, isEqual, keys, pickBy } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport { MasterdataApiService } from '../cds/cds-masterdata-api.service';\nimport { CompetitionListSeoService } from '../competition-list/competition-list-seo.service';\nimport { CompetitionRouteService } from '../competition-list/competition-route.service';\nimport { SportUrlParam } from '../navigation-core/url-helper.service';\nimport { CompetitionRoute } from '../navigation/navigation.models';\nimport { SeoContentApiRequest, SeoContentApiResponse, SeoRoute } from './seo.models';\n\ninterface SeoContentRequest {\n filter?: string;\n lobby?: boolean;\n live?: boolean;\n virtual?: boolean;\n highlights?: boolean;\n allSports?: boolean;\n sport?: number;\n region?: number | string;\n league?: number;\n event?: string;\n video?: boolean;\n conference?: number;\n virtualCompetitionId?: number;\n virtualCompetitionGroupId?: number;\n esportsLobby?: boolean;\n esportsHighlights?: boolean;\n multiSportsLobby?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SeoContentService {\n private lastRequestApiParams: SeoContentApiRequest | null = null;\n private lastResponse: SeoContentApiResponse | null = null;\n private readonly logger: SportsRemoteLogger;\n\n constructor(\n private competitionRoute: CompetitionRouteService,\n private api: ApiService,\n loggerFactory: LoggerFactory,\n private urlConfig: PrettyUrlsConfig,\n private competitionListSeoService: CompetitionListSeoService,\n private masterDataApiService: MasterdataApiService,\n ) {\n this.logger = loggerFactory.getLogger('SeoContentService');\n }\n\n getForEventDetails(request: SeoContentRequest): Observable {\n return this.performApiRequest(request);\n }\n\n getSeoContent(routeParams: Params, data: SeoRoute): Observable {\n const competitionData = this.competitionRoute.params();\n const league = competitionData.league;\n const routeData = assign(competitionData, routeParams);\n\n if (!routeData) {\n return of(undefined);\n }\n\n return this.getLeagueId(routeData, league || routeData.league).pipe(\n switchMap((leagueId) => {\n return this.performApiRequest({\n filter: this.getSeoFilter(routeData),\n lobby: data.sportsLobby,\n live: data.live,\n virtual: data.virtual,\n highlights: data.liveHighlights,\n allSports: data.sportsList,\n sport: routeData.sport,\n region: routeData.region || routeData.tournament,\n league: leagueId,\n video: data.liveVideo,\n conference: routeData.conference,\n virtualCompetitionId: routeData.isVirtual ? routeParams.league : null,\n virtualCompetitionGroupId: routeData.isVirtual ? routeParams.virtualCompetitionGroup : null,\n esportsLobby: data.esportsLobby,\n esportsHighlights: data.esportsHighlights,\n multiSportsLobby: data.multiSportsLobby,\n }).pipe(\n tap((response) => {\n if (response) {\n const fixtureContext: (string | undefined)[] = [\n this.urlConfig.translations.betting,\n this.urlConfig.translations.conferences,\n this.urlConfig.translations.after2days,\n this.urlConfig.translations.after3days,\n this.urlConfig.translations.in30minutes,\n this.urlConfig.translations.in60minutes,\n this.urlConfig.translations.in180minutes,\n this.urlConfig.translations.today,\n this.urlConfig.translations.tomorrow,\n ];\n\n response.h1Included = fixtureContext.includes(competitionData.context) && !!competitionData.region;\n }\n }),\n );\n }),\n );\n }\n\n private getLeagueId(routeData: CompetitionRoute & Params, leagueId: number | number[] | undefined): Observable {\n const league = isArray(leagueId) ? undefined : leagueId;\n if (!routeData.isVirtual) {\n return of(league);\n }\n const realCompetitionId = this.competitionListSeoService.getRealCompetitionId();\n if (realCompetitionId) {\n return of(realCompetitionId);\n }\n if (routeData.sport && league) {\n return this.masterDataApiService\n .getVirtualCompetitionInfo({\n competitionId: league,\n sportId: routeData.sport,\n virtualCompetitionGroupId: routeData.virtualCompetitionGroup || 0,\n virtualCompetitionId: league,\n })\n .pipe(\n map(\n (virtualCompetitionInfo) =>\n virtualCompetitionInfo?.virtualCompetitionGroup?.competitionIds[0] ||\n virtualCompetitionInfo?.virtualCompetition?.competitionIds[0],\n ),\n catchError((err) => {\n if (err.status) {\n this.logger.error(err, 'Error fetching virtual competition info');\n }\n\n return of(undefined);\n }),\n );\n }\n\n return of(league);\n }\n\n private performApiRequest(request: SeoContentRequest): Observable {\n const apiParams: SeoContentApiRequest = pickBy(request, (prop) => prop != null && prop !== false && prop !== '');\n\n if (this.lastResponse != null && isEqual(apiParams, this.lastRequestApiParams)) {\n return of(this.lastResponse);\n }\n\n return this.api.get('seo/tags', apiParams).pipe(\n tap((response) => {\n this.lastRequestApiParams = apiParams;\n this.lastResponse = response;\n }),\n catchError((err) => {\n // check if request got cancelled (happens e.g. if the user quickly navigates to another page or if the signal was lost) and only log exception if it's a real error\n if (err.status) {\n this.logger.error(err, 'Error getting SEO tags');\n }\n\n return of(undefined);\n }),\n );\n }\n\n private getSeoFilter(routeData: CompetitionRoute & Params): string | undefined {\n const contextKey = (input: string | undefined) =>\n keys(this.urlConfig.translations)\n .filter((prop) => this.urlConfig.translations[prop] === input)\n .pop();\n\n const subContext = contextKey(routeData.subContext);\n\n return subContext === SportUrlParam.Competitions ? subContext : contextKey(routeData.context);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { trackingConstants } from '@frontend/sports/tracking/feature';\nimport { isNil } from 'lodash-es';\nimport { IPickTracking } from 'packages/sports/common/betslip/core/picks/pick-models';\n\n@Injectable({ providedIn: 'root' })\nexport class PickSourceProvider {\n getTracking(): { [key: string]: string } {\n return {};\n }\n\n get(\n source: string,\n contentPosition?: number,\n isFallbackMarketEnabled?: boolean,\n marqueeName?: string,\n sitecoreTemplateId?: string,\n marqueeType?: string,\n trackingOptions?: { [key: string]: string },\n isAutomatedMarquee?: boolean,\n isInSheetView?: boolean,\n ): IPickTracking {\n const baseTracking: IPickTracking = {\n source,\n additional: trackingOptions || {},\n };\n if (!isNil(contentPosition)) {\n baseTracking[trackingConstants.COMPONENT_CONTENT_POSITION] = contentPosition.toString();\n }\n\n if (!isNil(isAutomatedMarquee)) {\n baseTracking.additional![trackingConstants.MARQUEE_CONTENT_LOGIC] = isAutomatedMarquee ? 'default - automated' : 'default';\n }\n\n if (isInSheetView) {\n baseTracking.additional![trackingConstants.COMPONENT_MODULE_NAME] = trackingConstants.SEE_ALL_OVERLAY;\n baseTracking.sheetviewSuffix = `/${trackingConstants.SEE_ALL_OVERLAY}`;\n }\n\n return baseTracking;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Widget, WidgetLayoutTemplate, WidgetPage } from '@frontend/sports/types/components/widget';\n\n@Injectable()\nexport class ModularConfigAccessorService {\n private widget?: Widget;\n private parent?: Widget;\n private page?: WidgetPage;\n private layoutTemplate?: WidgetLayoutTemplate;\n\n setPage(page: WidgetPage | undefined): void {\n this.page = page;\n }\n\n getPage(): WidgetPage | undefined {\n return this.page;\n }\n\n setWidget(widget: Widget): void {\n this.widget = widget;\n }\n\n getWidget(): Readonly> | undefined {\n return this.widget;\n }\n\n setParentWidget(widget: Widget | undefined): void {\n this.parent = widget;\n }\n\n getParentWidget(): Readonly> | undefined {\n return this.parent;\n }\n\n setLayoutTemplate(layoutTemplate: WidgetLayoutTemplate | undefined): void {\n this.layoutTemplate = layoutTemplate;\n }\n\n getLayoutTemplate(): WidgetLayoutTemplate | undefined {\n return this.layoutTemplate;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { hasValue } from '@frontend/sports/common/core/utils/extended-types';\nimport { trackingConstants } from '@frontend/sports/tracking/feature';\nimport { Widget } from '@frontend/sports/types/components/widget';\nimport { isEmpty, isNil } from 'lodash-es';\nimport { IPickTracking } from 'packages/sports/common/betslip/core/picks/pick-models';\n\nimport { PickSourceProvider } from '../../option-pick/pick-source.provider';\nimport { ModularConfigAccessorService } from './modular-config-accessor.service';\n\n@Injectable()\nexport class ModularPickSourceService extends PickSourceProvider {\n constructor(private configAccessor: ModularConfigAccessorService) {\n super();\n }\n\n override getTracking(): { [key: string]: string } {\n return this.getBaseTracking();\n }\n\n override get(\n source: string,\n contentPosition?: number,\n isFallbackMarketEnabled?: boolean,\n marqueeName?: string,\n sitecoreTemplateId?: string,\n marqueeType?: string,\n trackingOptions?: { [key: string]: string },\n isAutomatedMarquee?: boolean,\n ): IPickTracking {\n const config = this.configAccessor.getWidget();\n const page = this.configAccessor.getPage();\n\n if (!config) {\n return super.get(source);\n }\n\n const baseTracking = {\n source: this.buildPath(page, config.templateName, source).toLowerCase(),\n additional: this.getBaseTracking(config),\n };\n\n if (!isNil(contentPosition)) {\n baseTracking.additional[trackingConstants.COMPONENT_CONTENT_POSITION] = contentPosition.toString();\n }\n\n if (!isNil(isAutomatedMarquee)) {\n baseTracking.additional[trackingConstants.MARQUEE_CONTENT_LOGIC] = isAutomatedMarquee ? 'default - automated' : 'default';\n } else if (!isNil(isFallbackMarketEnabled)) {\n baseTracking.additional[trackingConstants.MARQUEE_CONTENT_LOGIC] = isFallbackMarketEnabled ? 'fallback' : 'default';\n }\n\n if (!isNil(marqueeName)) {\n baseTracking.additional[trackingConstants.MARQUEE_NAME] = marqueeName;\n }\n\n if (!isNil(sitecoreTemplateId)) {\n baseTracking.additional[trackingConstants.SITECORE_TEMPLATE_ID] = sitecoreTemplateId;\n }\n\n if (!isNil(marqueeType)) {\n baseTracking.additional[trackingConstants.MARQUEE_TYPE] = marqueeType;\n }\n\n return baseTracking;\n }\n\n private getBaseTracking(config?: Readonly>): { [key: string]: string } {\n config = config || this.configAccessor.getWidget();\n const parentWidget = this.configAccessor.getParentWidget();\n\n let baseTracking = {};\n\n if (config) {\n baseTracking = Object.assign(baseTracking, config.trackingData, {\n [trackingConstants.COMPONENT_MODULE_NAME]: config.type,\n [trackingConstants.COMPONENT_MODULE_POSITION]: `${config.location}|${config.order}`,\n [trackingConstants.COMPONENT_MODULE_CUSTOM_NAME]: config.templateName,\n [trackingConstants.COMPONENT_MODULE_SOURCE]: isNil(parentWidget) ? 'standard module' : `composable|${parentWidget.templateName}`,\n });\n }\n\n const layoutTemplate = this.configAccessor.getLayoutTemplate();\n const page = this.configAccessor.getPage();\n if (layoutTemplate) {\n baseTracking = Object.assign(baseTracking, {\n [trackingConstants.COMPONENT_PAGE_LAYOUT]: this.buildPath(layoutTemplate.folder, page, layoutTemplate.name),\n });\n }\n\n return !isEmpty(baseTracking) ? baseTracking : super.getTracking();\n }\n\n private buildPath(...params: unknown[]): string {\n return params.filter(hasValue).join('/');\n }\n}\n","import { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { Odds } from '@frontend/sports/odds/feature';\nimport { Decimal } from 'decimal.js';\nimport { NumpadAction } from 'packages/sports/web/app/src/numpad/model';\n\nimport { PickId } from '../../core/picks/pick-id';\nimport { SlipResult } from '../betplacement/models';\nimport { BetPlacementError } from '../validation/errors/bet-placement-error';\nimport { BetslipError } from '../validation/errors/betslip-error';\n\nexport enum QuickBetActionButtonState {\n Login = 'Login',\n MakeDeposit = 'MakeDeposit',\n Place = 'Place',\n PlaceFreeBet = 'PlaceFreeBet',\n Placing = 'Placing',\n PlacingFreeBet = 'PlacingFreeBet',\n ProcessingDeposit = 'ProcessingDeposit',\n ProcessingDepositAndBet = 'ProcessingDepositAndBet',\n AcceptChanges = 'AcceptChanges',\n AcceptAndPlace = 'AcceptAndPlace',\n AcceptAndPlaceFreeBet = 'AcceptAndPlaceFreeBet',\n Deposit = 'Deposit',\n DepositAndPlaceBet = 'DepositAndPlaceBet',\n UpdateMinStake = 'UpdateMinStake',\n}\n\nexport enum QuickBetUiState {\n None = 'None',\n Loading = 'Loading',\n Place = 'Place',\n Success = 'Success',\n}\n\nexport interface IQuickBetActionButtonState {\n isDisabled: boolean;\n isProcessing: boolean;\n state: QuickBetActionButtonState;\n hasTaxation: boolean;\n possibleWinnings: Nullable;\n winningsBoost: Nullable;\n riskFreeAmount: Nullable;\n taxationAmount: Nullable;\n taxationLiability: Nullable;\n possibleWinningsNet: Nullable;\n}\n\nexport interface IQuickBetErrorsStatus {\n isLocked: boolean;\n isClosed: boolean;\n oddsChanged: boolean;\n oddsAccepted: boolean;\n hasBetslipErrors: boolean;\n hasStakeUpdateErrors: boolean;\n}\n\nexport interface IQuickBetWinningsState {\n hasTaxation: boolean;\n possibleWinnings: Nullable;\n winningsBoost: Nullable;\n riskFreeAmount: Nullable;\n taxationAmount: Nullable;\n taxationLiability: Nullable;\n taxationRate: Nullable;\n possibleWinningsNet: Nullable;\n originalWinnings?: Nullable;\n}\n\nexport const defaultQuickBetActionButtonState: IQuickBetActionButtonState = {\n isDisabled: false,\n isProcessing: false,\n state: QuickBetActionButtonState.Login,\n hasTaxation: false,\n possibleWinnings: null,\n winningsBoost: null,\n riskFreeAmount: null,\n taxationAmount: null,\n taxationLiability: null,\n possibleWinningsNet: null,\n};\n\nexport interface IQuickBetStakeState {\n stake: Nullable; // numpad-keys.component work with strings\n numpadAction?: NumpadAction;\n}\n\nexport const defaultQuickBetStakeState: IQuickBetStakeState = {\n stake: null,\n};\n\nexport interface IQuickBetPlaceResultWarning {\n disableButton: boolean;\n error: BetPlacementError;\n}\n\nexport interface IQuickBetPlaceResultSummaryState {\n stake: number;\n numberOfBets: number;\n currency?: string;\n possibleWinningsGross: number;\n possibleWinningsNet: number;\n}\n\nexport interface IQuickBetPlaceResultState {\n betNumber: string;\n slipResults: SlipResult;\n isSuccessful: boolean;\n errors: BetslipError[];\n warnings: IQuickBetPlaceResultWarning[];\n placedNewCustomerOffer: boolean;\n summary: IQuickBetPlaceResultSummaryState;\n isEachWay: boolean;\n acceptedOdds: Odds | null;\n boostedOdds: Odds | null;\n}\n\nexport const defaultQuickBetPlaceResultState: IQuickBetPlaceResultState = {\n betNumber: '',\n slipResults: {},\n isSuccessful: false,\n errors: [],\n warnings: [],\n placedNewCustomerOffer: false,\n summary: {},\n isEachWay: false,\n acceptedOdds: null,\n boostedOdds: null,\n};\n\nexport interface IQuickBetHelpState {\n isVisible: boolean;\n wasShown: boolean;\n}\n\nexport const defaultQuickBetHelpState: IQuickBetHelpState = {\n isVisible: false,\n wasShown: false,\n};\n\nexport interface IQuickBetState {\n uiState: QuickBetUiState;\n isDisabled: boolean;\n keepOpen: boolean;\n pickIds: PickId[];\n oddsChangedOnBetPlacement: boolean;\n pickLockedOnBetPlacement: boolean;\n displayHelper: QuickBetDisplayHelper;\n hasClosedPick: boolean;\n hasLockedPick: boolean;\n helpState: IQuickBetHelpState;\n stakeState: IQuickBetStakeState;\n actionButtonState: IQuickBetActionButtonState;\n betPlacedResult: IQuickBetPlaceResultState;\n inOverlay: boolean;\n inEditBetMode: boolean;\n}\n\nexport interface QuickBetDisplayHelper {\n addedToBetslip: boolean;\n //hidden => QB can be reopend if the user correct the error from betbar\n hiddenByError: boolean;\n //the user did not take care of the error we are closing QB\n closedByError: boolean;\n}\n\nexport const defaultQuickBetDisplayHelper: QuickBetDisplayHelper = {\n addedToBetslip: false,\n closedByError: false,\n hiddenByError: false,\n};\n\nexport const defaultQuickBetState: IQuickBetState = {\n uiState: QuickBetUiState.None,\n isDisabled: false,\n keepOpen: false,\n pickIds: [],\n displayHelper: defaultQuickBetDisplayHelper,\n oddsChangedOnBetPlacement: false,\n pickLockedOnBetPlacement: false,\n hasClosedPick: false,\n hasLockedPick: false,\n helpState: defaultQuickBetHelpState,\n stakeState: defaultQuickBetStakeState,\n actionButtonState: defaultQuickBetActionButtonState,\n betPlacedResult: defaultQuickBetPlaceResultState,\n inOverlay: false,\n inEditBetMode: false,\n};\n\nexport interface QuickBetStore {\n helpShown: boolean;\n}\n\nexport interface IQuickBetPlaceResultStorageState {\n betNumber: string;\n isSuccessful: boolean;\n errors: BetslipError[];\n warnings: IQuickBetPlaceResultWarning[];\n placedNewCustomerOffer: boolean;\n summary: IQuickBetPlaceResultSummaryState;\n isEachWay: boolean;\n acceptedOdds: Odds | null;\n boostedOdds: Odds | null;\n}\n\nexport interface IQuickBetSaveState {\n pickIds: string[];\n helpState: IQuickBetHelpState;\n keepOpen: boolean;\n stakeState: IQuickBetStakeState;\n actionButtonState: IQuickBetActionButtonState;\n betPlacedResult: IQuickBetPlaceResultStorageState;\n}\n","import { OfferSource } from '@cds';\nimport {\n FixtureStage,\n FixtureType,\n FixtureViewType,\n Parameter,\n ParticipantMarketType,\n ParticipantStatus,\n ParticipantType,\n TotalsPrefix,\n} from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { MarketSubType, MarketType } from '@frontend/sports/betting-offer/feature/types';\nimport { Odds } from '@frontend/sports/odds/feature';\nimport { SourceOfPick } from 'packages/sports/web/app/src/betslip-base/models/pick-models';\nimport { NumpadAction } from 'packages/sports/web/app/src/numpad/model';\n\nimport { BetslipGroupInformation } from '../groups/betslip-group-information';\nimport { CombinationPrevention } from './combo-prevention';\nimport { GroupLegState } from './group-leg-state';\nimport { MinimumCombination } from './minimum-combination';\nimport { SignedName } from './signed-name.model';\nimport {\n BetslipV2HorseRaceOptionMarketPick,\n BetslipV2HorseRaceWinParticipantPick,\n BetslipV2HorseRaceXCastPick,\n} from './sport-specific/betslip-v2-horse-race-picks';\n\nexport enum PickType {\n V1Pick,\n V2ParticipantPick,\n V2OptionMarketPick,\n BetBuilderPick,\n GroupedPicks,\n V2OptionMarketXcastPick,\n}\n\nexport enum PickSubType {\n None /* Dummy value for base classes. */,\n V1Pick,\n HorseWinPick /* V2ParticipantPick */,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HorseXCastPick /* V2ParticipantPick */,\n HorseOptionMarketPick /* V2 Horse Option Market Pick */,\n GolfWinPick /* V2ParticipantPick */,\n BetBuilderPick,\n StandardV2Pick /* V2 Option Market (Soccer, ... ) */,\n UnknownPick,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HorseOptionMarketXCastRacePick /* V2 Horse Option Market XCastPick*/,\n GroupedPicks,\n}\n\nexport enum ParticipantPickType {\n Win = 1,\n Forecast = 2,\n CombinationForecast = 3,\n Tricast = 4,\n CombinationTricast = 5,\n Freeform = 6,\n Derived = 7,\n None = 8,\n}\n\nexport enum HorseRacingPreFix {\n Win = 'win',\n Forecast = 'fc',\n CombinationForecast = 'cfc',\n Tricast = 'tc',\n CombinationTricast = 'ctc',\n}\n\nexport enum ResultStatus {\n Open = 1,\n Lost = 2,\n Won = 3,\n Canceled = 5,\n Unknown = 0,\n}\n\nexport enum PriceType {\n Fixed = 1,\n StartingPrice = 2,\n NoPrice = 3,\n}\n\nexport enum QuickBetPickType {\n SinglePick,\n ComboPicks,\n BetBuilderPicks,\n BetBuilderPlusPicks,\n}\n\nexport interface IBasePrice {\n type: PriceType;\n nativeOdds: Odds;\n}\n\nexport interface IPrice extends IBasePrice {\n id: number;\n isVisible: boolean;\n marketId: number;\n}\n\nexport enum PickBettingState {\n // Pick open for betting\n Open,\n // Currently locked\n Locked,\n // Pick closed\n Closed,\n}\n\nexport interface IBetslipPickStorage {\n id: string;\n priceHistory: IPrice[];\n priceType: PriceType;\n isNewCustomerOffer: boolean;\n acceptedPrice: {\n price: IPrice | null;\n isManuallyAccepted: boolean;\n };\n market: IBetslipPickMarket | null;\n pickSubType: PickSubType;\n subscriptionContext: string[];\n tracking: IPickTracking;\n boostedPriceDetails: IBoostedPrice | undefined;\n liveAlert?: boolean;\n groupInfo?: BetslipGroupInformation;\n parentLinkedEventId?: string;\n totalsPrefix?: TotalsPrefix;\n fromHybridFixture?: boolean;\n}\n\nexport enum PickOddsState {\n Open,\n Locked,\n Closed,\n}\n\nexport interface IAcceptedPrice {\n price: IPrice | null; // Accepted price will be null when current price is undefined.\n /**\n * When price is accepted automatically from user odd acceptance isManuallyAccepted is false.\n * When price is accepted manually from user when clicks on the button is true\n */\n isManuallyAccepted: boolean;\n}\n\nexport interface IBoostedPrice {\n isPriceBoosted?: boolean;\n boostedPrice: IPrice | undefined;\n boostedPriceId?: number;\n}\n\nexport interface IPickTracking {\n //below was added to support dynamic keys that are added to pick tracking without being defined here, this is a hack, and should never be reused or copied\n [key: string]: string | boolean | NumpadAction | undefined | { [key: string]: string };\n source: string;\n sourceOfBetSuffix?: string;\n affiliate?: boolean;\n numpadAction?: NumpadAction;\n additional?: { [key: string]: string };\n sourceOfPick?: SourceOfPick;\n betDetails?: string;\n betCalender?: string;\n controllerTabName?: string;\n playerName?: string;\n betType?: string;\n gameDetails?: string;\n moduleType?: string;\n contentPosition?: string;\n variant?: string;\n sheetviewSuffix?: string;\n parentLeagueId?: number;\n betPickType?: string;\n}\n\nexport interface IBetslipPickMarket {\n id: number;\n isVisible: boolean;\n gridGroups?: string[];\n marketType?: MarketType | ParticipantMarketType;\n marketSubType?: MarketSubType;\n isBetBuilderEnabled: boolean;\n templateId?: number;\n}\n\nexport interface BetslipV1PickSport {\n id: number;\n name: SignedName;\n}\n\nexport interface BetslipV1PickTeaserData {\n crossSportIds: number[];\n crossLeagueIds: number[];\n}\n\nexport interface BetslipV1PickLeague {\n id: number;\n name: SignedName;\n parentLeagueId: number | null;\n}\n\nexport interface BetslipV1PickRegion {\n id: number;\n name: SignedName;\n}\n\nexport class BetslipV1PickEvent {\n id: string;\n name: SignedName;\n groupId: number | null;\n eventDate: Date;\n cutOffDate: Date;\n isLive: boolean;\n isPublished: boolean;\n participants?: EventParticipant[];\n viewType?: FixtureViewType;\n}\n\nexport interface IBetslipV1PickEventStorage {\n id: string;\n name: SignedName;\n groupId: number | null;\n eventDate: string;\n cutOffDate: string;\n isLive: boolean;\n isPublished: boolean;\n participants?: EventParticipant[];\n viewType?: FixtureViewType;\n}\n\nexport interface BetslipV1PickMarket extends IBetslipPickMarket {\n name: SignedName;\n templateId: number;\n comboPrevention: CombinationPrevention;\n minimumCombo: MinimumCombination;\n isClosed: boolean;\n templateCategoryId?: number;\n}\n\nexport interface BetslipV1PickOption {\n id: number;\n name: SignedName;\n price: IPrice;\n}\n\nexport interface IBetslipV1PickDto {\n sport: BetslipV1PickSport;\n league: BetslipV1PickLeague;\n region: BetslipV1PickRegion;\n event: BetslipV1PickEvent;\n market: BetslipV1PickMarket;\n option: BetslipV1PickOption;\n}\n\nexport interface IBetslipV1PickStorage extends IBetslipPickStorage {\n sport: BetslipV1PickSport;\n league: BetslipV1PickLeague;\n region: BetslipV1PickRegion;\n event: IBetslipV1PickEventStorage;\n market: BetslipV1PickMarket;\n option: BetslipV1PickOption;\n teaser: BetslipV1PickTeaserData;\n}\n\nexport interface IBetslipV2PickStorage extends IBetslipPickStorage {\n fixture: IBetslipV2PickFixtureStorage;\n}\n\nexport interface IBetslipV2PickFixture {\n fixtureId: string;\n sportId: number;\n sportName: SignedName;\n eventDate: Date;\n cutOffDate: Date;\n fixtureType: FixtureType;\n stage: FixtureStage;\n name: SignedName;\n competitionGroupId: number | null;\n virtual: boolean;\n league: {\n id: number;\n name: SignedName;\n realCompetitionId?: number;\n } | null;\n region: {\n id: number;\n name: SignedName;\n } | null;\n linkedEventIds: number[];\n participants?: EventParticipant[];\n viewType?: FixtureViewType;\n}\n\nexport interface IBetslipV2PickFixtureStorage extends Omit {\n eventDate: string;\n cutOffDate: string;\n}\n\nexport interface IBetslipV2HorseRacePickFixture extends IBetslipV2PickFixture {\n bestOddsGuarantee: boolean;\n isRaceOff: boolean;\n}\n\nexport interface IBetslipV2HorseRacePickFixtureStorage extends Omit {\n eventDate: string;\n cutOffDate: string;\n}\n\nexport interface IBetslipV2GolfPickFixture extends IBetslipV2PickFixture {\n fixtureGroup: {\n id: number;\n name: SignedName;\n };\n}\n\nexport interface IBetslipV2GolfPickFixtureStorage extends Omit {\n eventDate: string;\n cutOffDate: string;\n}\n\nexport interface IBetslipV2ParticipantPickStorage extends IBetslipV2PickStorage {\n market: IBetslipV2PickParticipantMarket;\n participants: IBetslipV2PickParticipant[];\n pickSubType: PickSubType;\n betType: string;\n betTypeAltTranslation: string;\n}\n\nexport interface IBetslipV2PickParticipantMarket extends IBetslipPickMarket {\n marketType: ParticipantMarketType;\n}\n\nexport interface IPlaceTerms {\n denominator: number;\n numerator: number;\n places: number;\n}\n\nexport interface IBetslipV2WinParticipantPickStorage extends IBetslipV2ParticipantPickStorage {\n market: IBetslipV2PickWinParticipantMarket;\n}\n\nexport interface IBetslipV2PickWinParticipantMarket extends IBetslipV2PickParticipantMarket {\n isEachWay: boolean;\n placeTerms: IPlaceTerms | null;\n isStartingPriceAvailable: boolean;\n}\n\nexport interface IBetslipV2PickParticipant {\n /**\n * Fixture participant id, participant id in the fixture\n */\n fixtureParticipantId: number;\n /**\n * Participant id in the master data. e.g. horse id number.\n */\n participantId: number;\n name: SignedName;\n type: ParticipantType;\n status: ParticipantStatus;\n position: number;\n prices: IPrice[];\n drawNumber?: number;\n}\n\nexport interface IBetslipV2OptionMarket extends IBetslipPickMarket {\n name: SignedName;\n comboPrevention: CombinationPrevention;\n minimumCombo: MinimumCombination;\n parameters?: Parameter[];\n isEachWay: boolean;\n placeTerms: IPlaceTerms | null;\n isStartingPriceAvailable?: boolean;\n isFixedPriceAvailable?: boolean;\n isClosed: boolean;\n}\n\nexport interface IBetslipV2Option {\n id: number;\n name: SignedName;\n isVisible: boolean;\n prices: IPrice[];\n boostedPrice?: IPrice;\n position?: number;\n isDraw?: boolean;\n}\n\nexport interface ISportcastOption {\n longId: string;\n name: string;\n}\n\nexport interface IBetslipV2OptionMarketPickStorage extends IBetslipV2PickStorage {\n market: IBetslipV2OptionMarket;\n isFavouritePick?: boolean;\n option: IBetslipV2Option;\n pickSubType: PickSubType;\n pickType?: ParticipantPickType;\n isFromNewCustomerOffer: boolean;\n siblingOption?: IBetslipV2Option;\n}\n\nexport interface IBetslipV2OptionMarketXCastPickStorage extends IBetslipV2PickStorage {\n market: IBetslipV2OptionMarket;\n options: IBetslipV2Option[];\n pickSubType: PickSubType;\n betType: string;\n betTypeAltTranslation: string;\n}\n\nexport interface IBetslipV2GolfPickStorage extends Omit {\n fixture: IBetslipV2GolfPickFixtureStorage;\n}\n\nexport interface IBetslipV2GolfWinParticipantPickStorage\n extends Omit,\n Omit {\n // fixture type comes from IBetslipV2GolfPickStorage\n // market type comes from IBetslipV2WinParticipantPickStorage\n}\n\nexport interface GolfPick {\n fixture: IBetslipV2GolfPickFixture;\n eventName: SignedName;\n marketName: SignedName;\n}\n\nexport interface IBetslipV2HorseRacePickStorage extends Omit {\n fixture: IBetslipV2HorseRacePickFixtureStorage;\n}\n\nexport interface IBetslipV2HorseRaceParticipantPickStorage\n extends Omit,\n Omit {\n participants: IBetslipV2PickParticipant[];\n _marketName: string;\n}\n\nexport interface IBetslipV2HorseRaceWinParticipantPickStorage\n extends Omit,\n Omit {}\n\nexport interface IBetslipV2HorseRaceOptionMarketPickStorage\n extends Omit,\n Omit {\n betType: string;\n betTypeAltTranslation: string;\n}\n\nexport interface IBetslipV2HorseRaceOptionMarketXCastPickStorage\n extends Omit,\n Omit {}\n\nexport interface HorseRacePick {\n fixture: IBetslipV2HorseRacePickFixture;\n leagueId: number;\n leagueName: SignedName;\n regionId: number;\n regionName: SignedName;\n}\n\nexport interface HorseRaceParticipantPick extends HorseRacePick {\n participants: IBetslipV2PickParticipant[];\n setMarketName(value: string, altTranslation?: string): void;\n}\n\nexport type HorseRaceParticipantPickType = BetslipV2HorseRaceWinParticipantPick | BetslipV2HorseRaceXCastPick;\nexport type HorseRacePickType = HorseRaceParticipantPickType | BetslipV2HorseRaceOptionMarketPick;\n\nexport interface IBetslipBetBuilderPickStorage extends IBetslipV2OptionMarketPickStorage {\n eventId: string;\n event: IEventData;\n sportcastOptions: ISportcastOption[];\n sportcastId?: number;\n betgeniusId?: number;\n betSlipUid?: string;\n useV2key?: boolean;\n longIds?: string[];\n}\n\nexport interface IEventData {\n league: {\n id: number;\n name: SignedName;\n parentLeagueId?: number;\n };\n event: {\n id: string;\n name: SignedName;\n date: Date;\n isLive?: boolean;\n groupId?: number;\n participants?: EventParticipant[];\n viewType?: FixtureViewType;\n };\n region: {\n id: number;\n name: SignedName;\n };\n source: OfferSource;\n betBuilderTradingV2FixtureId?: string;\n}\n\nexport interface BetslipGroupPickStorage extends IBetslipPickStorage {\n price: IPrice;\n picks: IBetslipPickStorage[];\n SGPId: string;\n legsState: Record;\n isSuspended: boolean;\n}\n\nexport enum PickUpdateType {\n None = 0,\n Unknown = 1,\n /* eslint-disable no-bitwise */\n MarketVisibility = 1 << 1,\n // eslint-disable-next-line no-bitwise\n PriceVisibility = 1 << 2,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Odds = 1 << 3,\n /* eslint-enable no-bitwise */\n}\n","import { BetBuilderProvider } from '@cds/betting-offer/add-ons';\n\nimport { BetslipGroupInformation } from '../groups/betslip-group-information';\nimport { HorseRacingPreFix, ParticipantPickType, PickType } from './pick-models';\n\nexport abstract class PickId {\n fixtureId: string;\n subscriptionContext: string[] = [];\n parentLinkedEventId?: string;\n\n protected constructor(readonly id: string) {}\n\n static isEmpty(id: string | PickId): boolean {\n if (typeof id === 'string') {\n return !id;\n } else {\n return id.isEmpty();\n }\n }\n\n static Empty(): PickId {\n class EmptyPickId extends PickId {\n constructor() {\n super('');\n this.fixtureId = '';\n }\n\n getPickType(): PickType {\n throw Error('Empty Pick Id');\n }\n\n copy(): PickId {\n return new EmptyPickId();\n }\n }\n\n return new EmptyPickId();\n }\n\n isEmpty(): boolean {\n return !this.id;\n }\n\n isEqual(other?: PickId | string): boolean {\n if (!other) {\n return false;\n }\n\n if (typeof other === 'string') {\n return this.id === other;\n }\n\n return this.id === other.id;\n }\n\n toString(): string {\n return this.id;\n }\n\n abstract getPickType(): PickType;\n\n abstract copy(): PickId;\n}\n\nexport class V1PickId extends PickId {\n private static readonly ID_PREFIX = 'v1';\n private static readonly PICK_REG_EX: RegExp = new RegExp(`${V1PickId.ID_PREFIX}-e:(\\\\d+)/m:(\\\\d+)/o:(-?\\\\d+)`);\n\n private static asString(eventId: string, marketId: number, optionId: number): string {\n return `${V1PickId.ID_PREFIX}-e:${eventId}/m:${marketId}/o:${optionId}`;\n }\n\n static isId(id: PickId): id is V1PickId;\n static isId(id: string): boolean;\n static isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return V1PickId.PICK_REG_EX.test(asString);\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): V1PickId {\n const matches = id.match(V1PickId.PICK_REG_EX) as RegExpMatchArray;\n\n return new V1PickId(matches[1] /*eventId*/, +matches[2] /*marketId*/, +matches[3] /*optionId*/);\n }\n\n constructor(\n public eventId: string,\n public marketId: number,\n public optionId: number,\n ) {\n super(V1PickId.asString(eventId, marketId, optionId));\n this.fixtureId = eventId.toString();\n }\n\n getPickType(): PickType {\n return PickType.V1Pick;\n }\n\n copy(): V1PickId {\n return new V1PickId(this.eventId, this.marketId, this.optionId);\n }\n}\n\nexport abstract class V2PickId extends PickId {\n static isId(id: PickId): id is V2PickId {\n return id instanceof V2PickId;\n }\n\n protected constructor(\n id: string,\n public override fixtureId: string,\n ) {\n super(id);\n }\n}\n\nexport class V2ParticipantPickId extends V2PickId {\n protected static readonly ID_PREFIX = 'v2-p';\n private static readonly PICK_REG_EX: RegExp = new RegExp(\n `${V2ParticipantPickId.ID_PREFIX}-(win|fc|cfc|tc|ctc)-f:([\\\\d:]+)/m:(\\\\d+)((/p:(\\\\d+):(\\\\d+))+)`,\n );\n\n private static readonly PICK_PARTICIPANT_REG_EX: RegExp = new RegExp('/p:(\\\\d+):(\\\\d+)');\n\n private static getPrefix(pickType: ParticipantPickType): string {\n switch (pickType) {\n case ParticipantPickType.Win:\n return 'win';\n case ParticipantPickType.Forecast:\n return 'fc';\n case ParticipantPickType.CombinationForecast:\n return 'cfc';\n case ParticipantPickType.Tricast:\n return 'tc';\n case ParticipantPickType.CombinationTricast:\n return 'ctc';\n }\n\n return '';\n }\n\n private static asString(fixtureId: string, marketId: number, participantIds: { [id: number]: number }, pickType: ParticipantPickType): string {\n const prefix = `${V2ParticipantPickId.ID_PREFIX}-${V2ParticipantPickId.getPrefix(pickType)}-f:${fixtureId}/m:${marketId}/`;\n const entries = Object.entries(participantIds).sort((a, b) => +a[0] - +b[0]);\n const participants: string[] = [];\n for (const [key, value] of entries) {\n participants.push(`p:${key}:${value}`);\n }\n\n return prefix + participants.join('/');\n }\n\n static override isId(id: PickId): id is V2ParticipantPickId;\n static override isId(id: string): boolean;\n static override isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return V2ParticipantPickId.PICK_REG_EX.test(asString);\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): V2ParticipantPickId {\n const matches = id.match(V2ParticipantPickId.PICK_REG_EX) as RegExpMatchArray;\n const type = matches[1];\n let pickType: ParticipantPickType;\n switch (type) {\n case 'win':\n pickType = ParticipantPickType.Win;\n break;\n case 'fc':\n pickType = ParticipantPickType.Forecast;\n break;\n case 'cfc':\n pickType = ParticipantPickType.CombinationForecast;\n break;\n case 'tc':\n pickType = ParticipantPickType.Tricast;\n break;\n case 'ctc':\n pickType = ParticipantPickType.CombinationTricast;\n break;\n default:\n throw new Error('Unknown participant pick type');\n }\n const fixtureId = matches[2];\n const marketId = +matches[3];\n const participantIds: { [id: number]: number } = {};\n let match = matches[4];\n while (match.length > 0) {\n const pm = match.match(V2ParticipantPickId.PICK_PARTICIPANT_REG_EX) as RegExpMatchArray;\n participantIds[+pm[1]] = +pm[2];\n match = match.replace(V2ParticipantPickId.PICK_PARTICIPANT_REG_EX, '');\n }\n\n return pickType === ParticipantPickType.Win\n ? new V2WinPickId(fixtureId, marketId, +Object.keys(participantIds)[0])\n : new V2ParticipantPickId(fixtureId, marketId, participantIds, pickType);\n }\n\n constructor(\n fixtureId: string,\n public marketId: number,\n public participantIds: { [id: number]: number },\n public pickType: ParticipantPickType,\n ) {\n super(V2ParticipantPickId.asString(fixtureId, marketId, participantIds, pickType), fixtureId);\n }\n\n getPickType(): PickType {\n return PickType.V2ParticipantPick;\n }\n\n copy(): V2ParticipantPickId {\n return new V2ParticipantPickId(this.fixtureId, this.marketId, this.participantIds, this.pickType);\n }\n\n get participants(): number[] {\n return Object.keys(this.participantIds).map((k) => +k);\n }\n}\n\nexport class V2WinPickId extends V2ParticipantPickId {\n private static readonly V2WIN_PICK_REG_EX: RegExp = new RegExp(`${V2ParticipantPickId.ID_PREFIX}-win-f:([\\\\d:]+)/m:(\\\\d+)((/p:(\\\\d+):(\\\\d+))+)`);\n\n constructor(\n public override fixtureId: string,\n public override marketId: number,\n public participantId: number,\n ) {\n super(fixtureId, marketId, { [participantId]: 1 }, ParticipantPickType.Win);\n }\n\n static override isId(id: PickId): id is V2WinPickId;\n static override isId(id: string): boolean;\n static override isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return V2WinPickId.V2WIN_PICK_REG_EX.test(asString);\n }\n\n override copy(): V2WinPickId {\n return new V2WinPickId(this.fixtureId, this.marketId, this.participantId);\n }\n}\nexport class V2OptionMarketPickId extends V2PickId {\n private static readonly ID_PREFIX = 'v2-om';\n private static readonly PICK_REG_EX: RegExp = new RegExp(`${V2OptionMarketPickId.ID_PREFIX}-f:([\\\\d:]+)/om:(\\\\d+)/o:(\\\\d+)/p:(\\\\d+)`);\n\n static asString(fixtureId: string, optionMarketId: number, optionId: number, priceId: number): string {\n return `${V2OptionMarketPickId.ID_PREFIX}-f:${fixtureId}/om:${optionMarketId}/o:${optionId}/p:${priceId}`;\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): V2OptionMarketPickId {\n const matches = id.match(V2OptionMarketPickId.PICK_REG_EX) as RegExpMatchArray;\n\n return new V2OptionMarketPickId(matches[1] /*fixtureId*/, +matches[2] /*marketId*/, +matches[3] /*optionId*/, +matches[4] /*priceId*/);\n }\n\n constructor(\n public override fixtureId: string,\n public optionMarketId: number,\n public optionId: number,\n public priceId: number,\n ) {\n super(V2OptionMarketPickId.asString(fixtureId, optionMarketId, optionId, priceId), fixtureId);\n }\n\n static override isId(id: PickId): id is V2OptionMarketPickId;\n static override isId(id: string): boolean;\n static override isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return V2OptionMarketPickId.PICK_REG_EX.test(asString);\n }\n\n copy(): V2OptionMarketPickId {\n return new V2OptionMarketPickId(this.fixtureId, this.optionMarketId, this.optionId, this.priceId);\n }\n\n getPickType(): PickType {\n return PickType.V2OptionMarketPick;\n }\n}\n\nexport class V2OptionMarketXCastPickId extends V2PickId {\n private static readonly ID_PREFIX = 'v2-om';\n private static readonly PICK_REG_EX: RegExp = new RegExp(\n `${V2OptionMarketXCastPickId.ID_PREFIX}-?(fc|cfc|tc|ctc)?-f:([\\\\d:]+)/om:(\\\\d+)((/o:(\\\\d+):?(\\\\d+)?)*)((/p:(\\\\d+):?(\\\\d+)?)*)`,\n );\n\n private static readonly PICK_OPTION_REG_EX: RegExp = new RegExp('/o:(\\\\d+):(\\\\d+)');\n private static readonly PICK_PRICE_REG_EX: RegExp = new RegExp('/p:(\\\\d+):(\\\\d+)');\n\n private static asString(\n fixtureId: string,\n optionMarketId: number,\n optionIds: { [id: number]: number },\n priceIds: { [id: number]: number },\n pickType: ParticipantPickType,\n ): string {\n const prefix = `${V2OptionMarketXCastPickId.ID_PREFIX}-${V2OptionMarketXCastPickId.getPrefix(pickType)}-f:${fixtureId}/om:${optionMarketId}/`;\n const optionEntries = Object.entries(optionIds).sort((a, b) => +a[0] - +b[0]);\n const options: string[] = [];\n for (const [key, value] of optionEntries) {\n options.push(`o:${key}:${value}`);\n }\n const priceEntries = Object.entries(priceIds).sort((a, b) => +a[0] - +b[0]);\n const prices: string[] = [];\n for (const [key, value] of priceEntries) {\n prices.push(`p:${key}:${value}`);\n }\n\n return prefix + options.join('/') + '/' + prices.join('/');\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): V2OptionMarketXCastPickId {\n const matches = id.match(V2OptionMarketXCastPickId.PICK_REG_EX) as RegExpMatchArray;\n const type = matches[1];\n let pickType: ParticipantPickType;\n switch (type) {\n case HorseRacingPreFix.Forecast:\n pickType = ParticipantPickType.Forecast;\n break;\n case HorseRacingPreFix.CombinationForecast:\n pickType = ParticipantPickType.CombinationForecast;\n break;\n case HorseRacingPreFix.Tricast:\n pickType = ParticipantPickType.Tricast;\n break;\n case HorseRacingPreFix.CombinationTricast:\n pickType = ParticipantPickType.CombinationTricast;\n break;\n default:\n throw new Error('Unknown option market pick type');\n }\n const fixtureId = matches[2];\n const marketId = +matches[3];\n const optionIds: { [id: number]: number } = {};\n const prices: { [id: number]: number } = {};\n let match = matches[4];\n while (match.length > 0) {\n const pm = match.match(V2OptionMarketXCastPickId.PICK_OPTION_REG_EX) as RegExpMatchArray;\n optionIds[+pm[1]] = +pm[2];\n match = match.replace(V2OptionMarketXCastPickId.PICK_OPTION_REG_EX, '');\n }\n let pricematch = matches[8];\n while (pricematch.length > 0) {\n const pm = pricematch.match(V2OptionMarketXCastPickId.PICK_PRICE_REG_EX) as RegExpMatchArray;\n prices[+pm[1]] = +pm[2];\n pricematch = pricematch.replace(V2OptionMarketXCastPickId.PICK_PRICE_REG_EX, '');\n }\n\n return new V2OptionMarketXCastPickId(fixtureId, marketId, optionIds, prices, pickType);\n }\n\n constructor(\n public override fixtureId: string,\n public optionMarketId: number,\n public optionIds: { [id: number]: number },\n public priceIds: { [id: number]: number },\n public pickType: ParticipantPickType,\n ) {\n super(V2OptionMarketXCastPickId.asString(fixtureId, optionMarketId, optionIds, priceIds, pickType), fixtureId);\n }\n\n static override isId(id: PickId): id is V2OptionMarketXCastPickId;\n static override isId(id: string): boolean;\n static override isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return V2OptionMarketXCastPickId.PICK_REG_EX.test(asString);\n }\n\n copy(): V2OptionMarketXCastPickId {\n return new V2OptionMarketXCastPickId(this.fixtureId, this.optionMarketId, this.optionIds, this.priceIds, this.pickType);\n }\n\n getPickType(): PickType {\n return PickType.V2OptionMarketXcastPick;\n }\n\n private static getPrefix(pickType: ParticipantPickType): string {\n switch (pickType) {\n case ParticipantPickType.Forecast:\n return 'fc';\n case ParticipantPickType.CombinationForecast:\n return 'cfc';\n case ParticipantPickType.Tricast:\n return 'tc';\n case ParticipantPickType.CombinationTricast:\n return 'ctc';\n }\n\n return '';\n }\n}\n\nexport class BetBuilderPickId extends V2PickId {\n private static readonly ID_PREFIX = 'bb';\n private static readonly PICK_REG_EX: RegExp = new RegExp(`${BetBuilderPickId.ID_PREFIX}-e:([\\\\d:]+)/f:([\\\\d:]+)/om:(\\\\d+)/o:(\\\\d+)/p:(\\\\d+)`);\n\n private static asString(eventId: string, fixtureId: string, optionMarketId: number, optionId: number, priceId: number): string {\n const event = eventId.indexOf(':') !== -1 ? eventId.split(':').pop() : eventId;\n\n return `${BetBuilderPickId.ID_PREFIX}-e:${event}/f:${fixtureId}/om:${optionMarketId}/o:${optionId}/p:${priceId}`;\n }\n\n static override isId(id: PickId): id is BetBuilderPickId;\n static override isId(id: string): boolean;\n static override isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return BetBuilderPickId.PICK_REG_EX.test(asString);\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): BetBuilderPickId {\n const matches = id.match(BetBuilderPickId.PICK_REG_EX) as RegExpMatchArray;\n\n return new BetBuilderPickId(\n matches[1] /*eventId*/,\n matches[2] /*fixtureId*/,\n +matches[3] /*marketId*/,\n +matches[4] /*optionId*/,\n +matches[5] /*priceId*/,\n );\n }\n\n constructor(\n public eventId: string,\n fixtureId: string,\n public optionMarketId: number,\n public optionId: number,\n public priceId: number,\n ) {\n super(BetBuilderPickId.asString(eventId, fixtureId, optionMarketId, optionId, priceId), fixtureId);\n }\n\n getPickType(): PickType {\n return PickType.BetBuilderPick;\n }\n\n copy(): BetBuilderPickId {\n return new BetBuilderPickId(this.eventId, this.fixtureId, this.optionMarketId, this.optionId, this.priceId);\n }\n}\n\nexport class GroupPickId extends PickId {\n private static readonly ID_PREFIX = 'GROUP';\n private static readonly PICK_REG_EX: RegExp = new RegExp(`${GroupPickId.ID_PREFIX}-e:([^/]+)(?:\\/(.+))?`);\n\n private static asString(groupInfo: BetslipGroupInformation): string {\n return `${GroupPickId.ID_PREFIX}-e:${groupInfo.groupId}/${groupInfo.provider}`;\n }\n\n static isId(id: PickId): id is GroupPickId;\n static isId(id: string): boolean;\n static isId(id: string | PickId): boolean {\n const asString = typeof id === 'string' ? id : id.toString();\n\n return GroupPickId.PICK_REG_EX.test(asString);\n }\n\n /**\n * Do not use it. Use pickIdFactory\n *\n * @param id\n */\n static fromString(id: string): GroupPickId {\n const matches = id.match(GroupPickId.PICK_REG_EX) as RegExpMatchArray;\n\n return new GroupPickId({ groupId: matches[1], provider: matches[2] ? (matches[2] as BetBuilderProvider) : BetBuilderProvider.Angstrom });\n }\n\n constructor(public groupInfo: BetslipGroupInformation) {\n super(GroupPickId.asString(groupInfo));\n this.fixtureId = groupInfo.groupId;\n }\n\n getPickType(): PickType {\n return PickType.GroupedPicks;\n }\n\n copy(): GroupPickId {\n return new GroupPickId(this.groupInfo);\n }\n}\n\nexport type GroupEnabledPickIds = V1PickId | V2OptionMarketPickId | V2ParticipantPickId;\nexport const isGroupEnabledPickId = (pickId: PickId): pickId is GroupEnabledPickIds =>\n V1PickId.isId(pickId) || V2OptionMarketPickId.isId(pickId) || V2ParticipantPickId.isId(pickId);\n\nexport const pickIdFactory = function (id: string): PickId {\n if (V1PickId.isId(id)) {\n // V1 pick\n return V1PickId.fromString(id);\n }\n if (V2ParticipantPickId.isId(id)) {\n // V2 participant pick\n return V2ParticipantPickId.fromString(id);\n }\n if (V2OptionMarketPickId.isId(id)) {\n // V2 Option market pick\n return V2OptionMarketPickId.fromString(id);\n }\n if (V2OptionMarketXCastPickId.isId(id)) {\n return V2OptionMarketXCastPickId.fromString(id);\n }\n if (BetBuilderPickId.isId(id)) {\n return BetBuilderPickId.fromString(id);\n }\n if (PickId.isEmpty(id)) {\n return PickId.Empty();\n }\n if (GroupPickId.isId(id)) {\n return GroupPickId.fromString(id);\n }\n throw new Error('Unknown pick id string');\n};\n\nexport const pickIdOrNullFactory = function (id: string): PickId | null {\n if (V1PickId.isId(id)) {\n // V1 pick\n return V1PickId.fromString(id);\n }\n if (V2ParticipantPickId.isId(id)) {\n // V2 participant pick\n return V2ParticipantPickId.fromString(id);\n }\n if (V2OptionMarketPickId.isId(id)) {\n // V2 Option market pick\n return V2OptionMarketPickId.fromString(id);\n }\n if (V2OptionMarketXCastPickId.isId(id)) {\n return V2OptionMarketXCastPickId.fromString(id);\n }\n if (BetBuilderPickId.isId(id)) {\n return BetBuilderPickId.fromString(id);\n }\n if (PickId.isEmpty(id)) {\n return PickId.Empty();\n }\n if (GroupPickId.isId(id)) {\n return GroupPickId.fromString(id);\n }\n\n return null;\n};\n","export enum BetslipState {\n // ADDING/REMOVING picks\n Edit = 'Edit',\n // After place bet button, waiting for result from server\n Placing = 'Placing',\n // Place bet result display state\n Result = 'Result',\n}\n","import { BetslipDisplayMode } from '@frontend/sports/types/components/bet-placement';\nimport { IUiRootState } from 'packages/sports/web/app/src/ui-manager/ui-manager.state';\n\nimport { BetslipState } from '../../core/betslip-state';\nimport { IBetslipSourcePageState } from '../../model/edit-mybet/edit-bet-init';\nimport { IAffiliateState } from '../../modules/affiliates/state/affiliate.state';\nimport { IBetslipPlaceBetState, IBetslipPlaceButtonState } from '../../modules/betplacement/state';\nimport { IHiddenMarketState } from '../../modules/hidden-market/hidden-market.state';\nimport { IInfoMessagesState } from '../../modules/info-messages//state';\nimport { ILineSwitcherState } from '../../modules/line-switcher/state';\nimport { IBetslipNotificationState } from '../../modules/notifications/state';\nimport { OddsPreferencePopupState } from '../../modules/odds-preference-popup/odds-preference-state.model';\nimport { IBetslipOverAskState } from '../../modules/over-ask/state';\nimport { IBetslipPickState } from '../../modules/picks/state';\nimport { IQuickBetState } from '../../modules/quick-bet/quick-bet.state';\nimport { IQuickDepositState } from '../../modules/quick-deposit/quick-deposit.state';\nimport { IBetslipResultState } from '../../modules/result/state';\nimport { IRewardTokensState } from '../../modules/reward-tokens/state';\nimport { ISettingsState } from '../../modules/settings/state';\nimport { ITrackingState } from '../../modules/tracking/state';\nimport { IBetslipTypeState } from '../../modules/types/state';\nimport { IBetslipErrorsState } from '../../modules/validation/state';\n\nexport interface IBetslipState {\n base: IBetslipBaseState;\n picks: IBetslipPickState;\n types: IBetslipTypeState;\n errors: IBetslipErrorsState;\n rewardTokens: IRewardTokensState;\n placeBet: IBetslipPlaceBetState;\n result: IBetslipResultState;\n settings: ISettingsState;\n placeButton: IBetslipPlaceButtonState;\n overAskState: IBetslipOverAskState;\n lineSwitcher: ILineSwitcherState;\n notifications: IBetslipNotificationState;\n affiliateState: IAffiliateState;\n quickDeposit: IQuickDepositState;\n quickBet: IQuickBetState;\n oddsPreferencePopupState: OddsPreferencePopupState;\n hiddenMarket: IHiddenMarketState;\n sourcePageState: IBetslipSourcePageState;\n infoMessages: IInfoMessagesState;\n tracking: ITrackingState;\n}\n\nexport interface IBetslipBaseState {\n state: BetslipState;\n isBetslipKeypadOpened: boolean;\n displayMode: BetslipDisplayMode;\n linearModeCheckboxesEnabled: boolean;\n isSportcastAsComboEnabled: boolean;\n}\n\nexport const defaultBetslipBaseState: IBetslipBaseState = {\n state: BetslipState.Edit,\n isBetslipKeypadOpened: false,\n displayMode: BetslipDisplayMode.Tabbed,\n linearModeCheckboxesEnabled: true,\n isSportcastAsComboEnabled: false,\n};\n\nexport const betslipFeatureKey = 'betslip';\n\nexport interface IBetslipRootState extends IUiRootState {\n betslip: IBetslipState;\n}\n","import { BetslipDisplayMode } from '@frontend/sports/types/components/bet-placement';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n\nimport { BetslipState } from '../../core/betslip-state';\nimport { IBetslipState, betslipFeatureKey } from './state';\n\nexport const betslipSelector = createFeatureSelector(betslipFeatureKey);\n\nexport const betslipBaseSelector = createSelector(betslipSelector, (b) => b.base);\nexport const betslipBaseStateSelector = createSelector(betslipSelector, (b) => b.base.state);\nexport const betslipDisplayModeSelector = createSelector(betslipSelector, (b) => b.base.displayMode);\nexport const selectIsLinearBetslip = createSelector(betslipDisplayModeSelector, (b) => b === BetslipDisplayMode.Linear);\nexport const selectIsLinearCheckboxesEnabled = createSelector(betslipSelector, (b) => b.base.linearModeCheckboxesEnabled);\n\nexport const selectIsPlacingBet = createSelector(betslipSelector, (b) => b.base.state === BetslipState.Placing);\n\nexport const betslipStageSelector = createSelector(betslipBaseSelector, (baseState) => baseState.state);\n","import { Decimal } from 'decimal.js';\n\nexport class Fraction {\n private static numberEps = 0.0000001;\n numerator: Decimal;\n denominator: Decimal;\n isSimplified = false;\n\n constructor(n: number | string | Decimal, d: number | string | Decimal = 1, isSimplified: boolean = false) {\n this.numerator = new Decimal(n);\n this.denominator = new Decimal(d);\n this.isSimplified = this.denominator.equals(1) || isSimplified;\n }\n\n static create(val: { numerator: number; denominator: number } | Fraction): Fraction {\n if (val instanceof Fraction) {\n return val.copy();\n }\n\n return Fraction.fromJSON(val);\n }\n\n static fromJSON(val: { numerator: number; denominator: number }): Fraction {\n return new Fraction(val.numerator, val.denominator);\n }\n\n static toCommonDenominator(\n first: Fraction,\n second: Fraction,\n ): {\n firstNumerator: Decimal;\n secondNumerator: Decimal;\n denominator: Decimal;\n } {\n if (first.denominator.equals(second.denominator)) {\n return {\n firstNumerator: first.numerator,\n secondNumerator: second.numerator,\n denominator: first.denominator,\n };\n } else {\n const firstNumerator = first.numerator.times(second.denominator);\n const secondNumerator = second.numerator.times(first.denominator);\n const resultDenominator = first.denominator.times(second.denominator);\n\n return {\n firstNumerator,\n secondNumerator,\n denominator: resultDenominator,\n };\n }\n }\n\n private static isNumber(value: Fraction | Decimal | number): value is number {\n return typeof value === 'number';\n }\n\n private static toInt(value: number): number {\n if (Math.ceil(value) - value < Fraction.numberEps) {\n // When value is like 1.99999999 => 2\n // 0.2+0.7+0.1 = 0.99999999 => 1\n return Math.ceil(value);\n }\n if (value - Math.floor(value) < Fraction.numberEps) {\n // When value is like 2.00000001 => 2\n return Math.floor(value);\n }\n\n return NaN;\n }\n\n private static numberToFraction(value: number): Fraction {\n const intVal = Fraction.toInt(value);\n if (!isNaN(intVal)) {\n return new Fraction(intVal);\n }\n const strValue = value.toString(10);\n const dotIndex = strValue.indexOf('.');\n const decimalLength = strValue.substring(dotIndex + 1).length;\n const denominator = Math.pow(10, decimalLength);\n const numerator = +strValue.replace('.', '');\n\n return new Fraction(numerator, denominator).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 static empty(): Fraction {\n return new Fraction(0, 0, true);\n }\n\n static toFraction(value: Decimal | number | null): Fraction {\n if (value == null) {\n return Fraction.empty();\n }\n if (Fraction.isNumber(value)) {\n // number path.\n return Fraction.numberToFraction(value);\n } else {\n if (value.lessThanOrEqualTo(0)) {\n return Fraction.empty();\n }\n const dp = value.decimalPlaces();\n const denominator = Math.pow(10, dp);\n\n return new Fraction(value.times(denominator), denominator).simplify();\n }\n }\n\n static fromString(value: string): Fraction {\n if (value.indexOf('/') === -1) {\n return Fraction.empty();\n }\n const values = value.split('/');\n const numerator = new Decimal(values[0]);\n const denominator = new Decimal(values[1]);\n\n return new Fraction(numerator, denominator);\n }\n\n add(other: Fraction | number): Fraction {\n if (this.isEmpty()) {\n return Fraction.empty();\n }\n if (Fraction.isNumber(other)) {\n const intVal = Fraction.toInt(other);\n if (!isNaN(intVal)) {\n // Go to fast path (no common denominator) where if we have an integer value.\n // We multiply the value with the denominator and add to the numerator\n // 2/3 + 2 = 2/3 + 6 / 3 = (2 + 6) / 3\n return new Fraction(this.numerator.add(this.denominator.times(intVal)), this.denominator);\n }\n other = Fraction.numberToFraction(other);\n }\n if (other.isEmpty()) {\n return Fraction.empty();\n }\n const convert = Fraction.toCommonDenominator(this, other);\n\n return new Fraction(convert.firstNumerator.plus(convert.secondNumerator), convert.denominator);\n }\n\n subtract(other: Fraction | number): Fraction {\n if (this.isEmpty()) {\n return Fraction.empty();\n }\n if (Fraction.isNumber(other)) {\n const intVal = Fraction.toInt(other);\n if (!isNaN(intVal)) {\n // Go to fast path (no common denominator) where if we have an integer value.\n // We multiply the value with the denominator and subtract from the numerator\n // 2/3 - 2 = 2/3 - 6 / 3 = (2 - 6) / 3\n return new Fraction(this.numerator.minus(this.denominator.times(intVal)), this.denominator);\n }\n other = Fraction.numberToFraction(other);\n }\n if (other.isEmpty()) {\n return Fraction.empty();\n }\n const convert = Fraction.toCommonDenominator(this, other);\n\n return new Fraction(convert.firstNumerator.minus(convert.secondNumerator), convert.denominator);\n }\n\n multiply(other: Fraction | number): Fraction {\n if (this.isEmpty()) {\n return Fraction.empty();\n }\n if (Fraction.isNumber(other)) {\n other = Fraction.numberToFraction(other);\n }\n if (other.isEmpty()) {\n return Fraction.empty();\n }\n\n return new Fraction(this.numerator.times(other.numerator), this.denominator.times(other.denominator));\n }\n\n divide(other: Fraction | number): Fraction {\n if (this.isEmpty()) {\n return Fraction.empty();\n }\n if (Fraction.isNumber(other)) {\n other = Fraction.numberToFraction(other);\n }\n if (other.isEmpty()) {\n return Fraction.empty();\n }\n\n return new Fraction(this.numerator.times(other.denominator), this.denominator.times(other.numerator));\n }\n\n getValue(): Decimal {\n if (this.isEmpty()) {\n return new Decimal(0);\n }\n const n = new Decimal(this.numerator);\n const d = new Decimal(this.denominator);\n\n return n.dividedBy(d);\n }\n\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n return `${this.numerator}/${this.denominator}`;\n }\n\n simplify(): Fraction {\n if (this.isSimplified) {\n return this;\n } else {\n const greatestCommonDivisor = Fraction.getCommonDivisor(this.numerator, this.denominator);\n\n return new Fraction(this.numerator.dividedBy(greatestCommonDivisor), this.denominator.dividedBy(greatestCommonDivisor), true);\n }\n }\n\n /**\n * Compares fraction to another fraction or number\n *\n * @returns -1 if lower, 0 if equal, 1 if greater\n */\n compare(other: Fraction | number): number {\n const o = Fraction.isNumber(other) ? Fraction.toFraction(other) : other;\n const eq = Fraction.toCommonDenominator(this, o);\n\n return eq.firstNumerator.lessThan(eq.secondNumerator) ? -1 : eq.firstNumerator.greaterThan(eq.secondNumerator) ? 1 : 0;\n }\n\n lessThan(other: Fraction | number): boolean {\n return this.compare(other) === -1;\n }\n\n greaterThan(other: Fraction | number): boolean {\n return this.compare(other) === 1;\n }\n\n lessOrEqualThan(other: Fraction | number): boolean {\n return this.compare(other) <= 0;\n }\n\n greaterOrEqualThan(other: Fraction | number): boolean {\n return this.compare(other) >= 0;\n }\n\n equal(other: Fraction | number): boolean {\n return this.compare(other) === 0;\n }\n\n isEmpty(): boolean {\n return this.denominator.equals(0);\n }\n\n toJSON(): { numerator: number; denominator: number } {\n return {\n numerator: this.numerator.toNumber(),\n denominator: this.denominator.toNumber(),\n };\n }\n\n copy(): Fraction {\n return new Fraction(this.numerator, this.denominator, this.isSimplified);\n }\n}\n","import { Decimal } from 'decimal.js';\n\nimport { Fraction } from './fraction';\n\nexport interface Odds {\n decimals: number;\n fractional: { numerator: number; denominator: number };\n moneyline: number;\n}\n\nexport interface CalculatedOdds {\n decimals: Decimal;\n fractional: Fraction;\n moneyline: Decimal;\n}\n\nexport const emptyOdds: Odds = Object.freeze({\n decimals: 0,\n fractional: { numerator: 0, denominator: 0 },\n moneyline: 0,\n});\nexport const emptyCalculatedOdds: CalculatedOdds = {\n decimals: new Decimal(0),\n fractional: Fraction.empty(),\n moneyline: new Decimal(0),\n};\n","import { decimalOddsToAmerican } from '@frontend/sports/odds/feature/converters';\nimport { OddsDisplayFormat } from '@frontend/sports/types/models/user-settings';\nimport { Decimal } from 'decimal.js';\n\nimport { Fraction } from './fraction';\nimport type { CalculatedOdds, Odds } from './odds';\n\n/**\n * There are 3 main types of odds\n * 1. Decimals or European odds - a win based Odds * Stake = Total Possible payout\n * 2. Fractional or UK odds - a profit based Odds * Stake = Possible Profit ( Possible payout - Stake )\n * 3. Moneyline or US odds - a money based odds. Can have possitive or negative values.\n * When positive defines how much money will be the profit if the stake is 100.\n * When negative defines what should be the stake to have 100 profit\n */\nexport class OddsConverter {\n /**\n * Converting decimal to fration odds becomes by extracting 1 ( remove stake from the win) and convert to fraction\n *\n * @param decimals Decimal odds\n */\n static decimalToFraction(decimals: Decimal): Fraction {\n return Fraction.toFraction(decimals.minus(1)).simplify();\n }\n\n /**\n * Convert decimal to US by removing 1 ( to get the profit ) and if the result is:\n * - Greater or equal than 1 then multiply by 100\n * - Less than 1 then -100 / value\n *\n * @param decimals\n * @param precision\n */\n static decimalToUS(decimals: Decimal, precision: number = 10): Decimal {\n return decimalOddsToAmerican(decimals.toDecimalPlaces(precision));\n }\n\n /**\n * Convert fractional odds to decimal is by adding 1 ( add the stake ) and convert to decimal value\n *\n * @param fractionOdds\n */\n static fractionToDecimal(fractionOdds: Fraction): Decimal {\n return fractionOdds.add(1).getValue();\n }\n\n /**\n * Convert fractional to moneyline:\n * When fractional greater or equal to 1: Multiply by 100 and convert to decimals\n * When fractional less than 1 then we divide -100 to the fraction and convert to decimals\n *\n * @param fractionOdds\n * @param precision\n */\n static fractionToUS(fractionOdds: Fraction, precision: number = 2): Decimal {\n const us = fractionOdds.greaterOrEqualThan(1)\n ? fractionOdds.multiply(100).getValue()\n : new Fraction(100, 1).divide(fractionOdds).multiply(-1).getValue();\n\n return us.toDecimalPlaces(precision);\n }\n\n static usToDecimal(usOdds: Decimal, precision: number = 2): Decimal {\n return usOdds.lessThan(0)\n ? new Decimal(1).minus(new Decimal(100).dividedBy(usOdds).toDecimalPlaces(precision))\n : usOdds.dividedBy(100).add(1);\n }\n\n static usToFraction(usOdds: Decimal, precision: number = 2): Fraction {\n return usOdds.lessThan(0)\n ? Fraction.toFraction(new Decimal(-100).dividedBy(usOdds).toDecimalPlaces(precision))\n : Fraction.toFraction(usOdds.dividedBy(100));\n }\n\n /**\n * Convert decimal odds to the decimal value of the EW\n *\n * @param decimals\n * @param eachWay\n */\n static decimalToEachWay(decimals: Decimal, eachWay: Fraction): Decimal {\n return OddsConverter.decimalToFraction(decimals).multiply(eachWay).add(1).getValue();\n }\n\n /**\n * Convert decimal odds to the fractional value of the EW\n *\n * @param fracion\n * @param eachWay\n */\n static fractionToEachWay(fraction: Fraction, eachWay: Fraction): Fraction {\n return fraction.multiply(eachWay).simplify();\n }\n\n /**\n * Convert us odds to US value of each way\n */\n static usToEachWay(us: Decimal, eachWay: Fraction): Decimal {\n const fraction = OddsConverter.usToFraction(us, 7).multiply(eachWay).simplify();\n\n return OddsConverter.fractionToUS(fraction);\n }\n\n static convertOdds(\n targetFormat: OddsDisplayFormat,\n sourceFormat: OddsDisplayFormat,\n odds: Odds | CalculatedOdds,\n ): Partial | Partial {\n if (targetFormat === sourceFormat) {\n return odds;\n }\n switch (targetFormat) {\n case OddsDisplayFormat.EU: {\n if (sourceFormat === OddsDisplayFormat.UK) {\n return {\n decimals: OddsConverter.fractionToDecimal(Fraction.create(odds.fractional)).toNumber(),\n };\n }\n if (sourceFormat === OddsDisplayFormat.US) {\n return {\n decimals: OddsConverter.usToDecimal(new Decimal(odds.moneyline)).toNumber(),\n };\n }\n break;\n }\n case OddsDisplayFormat.UK: {\n if (sourceFormat === OddsDisplayFormat.EU) {\n return {\n fractional: OddsConverter.decimalToFraction(new Decimal(odds.decimals)).simplify().toJSON(),\n };\n }\n if (sourceFormat === OddsDisplayFormat.US) {\n return {\n fractional: OddsConverter.usToFraction(new Decimal(odds.moneyline)).simplify().toJSON(),\n };\n }\n break;\n }\n case OddsDisplayFormat.US: {\n if (sourceFormat === OddsDisplayFormat.EU) {\n return {\n moneyline: OddsConverter.decimalToUS(new Decimal(odds.decimals)).toNumber(),\n };\n }\n if (sourceFormat === OddsDisplayFormat.UK) {\n return {\n moneyline: OddsConverter.fractionToUS(Fraction.create(odds.fractional)).toNumber(),\n };\n }\n }\n }\n throw new Error('Invalid odds formats');\n }\n}\n","import { Odds as BposOdds, OddsFormat } from '@bpos';\nimport { Odds as BposCommonOdds } from '@bpos/common/bet-placement';\nimport { OddsDisplayFormat } from '@frontend/sports/types/models/user-settings';\nimport { Decimal } from 'decimal.js';\nimport { isArray } from 'lodash-es';\n\nimport { Fraction } from './fraction';\nimport { CalculatedOdds, Odds, emptyCalculatedOdds, emptyOdds } from './odds';\nimport { OddsConverter } from './odds-converter';\n\nexport class OddsOperations {\n static readonly OddsOne = OddsOperations.fromDecimalValue(new Decimal(1));\n\n static createOdds(price: { odds?: number; numerator?: number; denominator?: number; americanOdds?: number }): Odds {\n if (!price.odds && !price.numerator && !price.denominator && !price.americanOdds) {\n return emptyOdds;\n }\n\n return {\n decimals: price.odds || 0,\n fractional:\n price.numerator != null && price.denominator != null\n ? { numerator: price.numerator, denominator: price.denominator }\n : { numerator: 0, denominator: 0 },\n moneyline: price.americanOdds || 0,\n };\n }\n\n static createOdds2(odds: BposCommonOdds | undefined, oddsFormat: OddsFormat): Odds {\n if (!odds) return emptyOdds;\n switch (oddsFormat) {\n case OddsFormat.European: {\n return OddsOperations.createOdds({ odds: odds.european });\n }\n case OddsFormat.British: {\n return OddsOperations.createOdds({ numerator: odds.british.numerator, denominator: odds.british.denominator });\n }\n case OddsFormat.American: {\n return OddsOperations.createOdds({ americanOdds: odds.american });\n }\n default:\n return emptyOdds;\n }\n }\n\n static createOdds3(odds: BposOdds | undefined): Odds {\n switch (odds?.oddsFormat) {\n case OddsFormat.European: {\n return OddsOperations.createOdds({ odds: odds.european });\n }\n case OddsFormat.British: {\n return OddsOperations.createOdds({ numerator: odds.british.numerator, denominator: odds.british.denominator });\n }\n case OddsFormat.American: {\n return OddsOperations.createOdds({ americanOdds: odds.american });\n }\n default:\n return emptyOdds;\n }\n }\n\n static isOddsEmpty(odds: Odds | CalculatedOdds): boolean {\n return odds === emptyOdds || odds === emptyCalculatedOdds;\n }\n\n static isOddsValid(odds: Odds | CalculatedOdds): boolean {\n if (OddsOperations.isOddsEmpty(odds)) {\n return false;\n }\n\n return (\n OddsOperations.isDecimalOddsValid(odds.decimals) ||\n OddsOperations.isFractionalOddsValid(odds.fractional) ||\n OddsOperations.isMoneyLineOddsValid(odds.moneyline)\n );\n }\n\n static isDecimalOddsValid(decimals: number | Decimal): boolean {\n return typeof decimals === 'number' ? decimals > 1 : decimals.greaterThan(1);\n }\n\n static isFractionalOddsValid(fractional: { numerator: number; denominator: number } | Fraction): boolean {\n return OddsConverter.fractionToDecimal(Fraction.create(fractional)).greaterThan(1);\n }\n\n static isMoneyLineOddsValid(moneyline: number | Decimal): boolean {\n if (typeof moneyline === 'number') {\n return moneyline >= 100 || (moneyline < -100 && moneyline >= -100000); // I think -100000 is quite smaller number we don't have so small odds\n }\n\n return moneyline.greaterThanOrEqualTo(100) || (moneyline.lessThan(-100) && moneyline.greaterThan(-100000));\n }\n\n static sum(odds: CalculatedOdds[]): CalculatedOdds {\n if (odds.length === 1) {\n return OddsOperations.isOddsEmpty(odds[0]) ? emptyCalculatedOdds : odds[0];\n }\n\n let decimals = new Decimal(0);\n const initialValue = new Fraction(0, 1);\n let fractional = initialValue;\n let moneyline = new Decimal(0);\n for (const odd of odds) {\n if (OddsOperations.isOddsEmpty(odd)) {\n return emptyCalculatedOdds;\n }\n\n decimals = decimals.add(odd.decimals);\n fractional = fractional === initialValue ? odd.fractional : fractional.add(1).add(odd.fractional.add(1)).subtract(1);\n moneyline = moneyline.add(OddsConverter.usToDecimal(odd.moneyline, 10));\n }\n\n return {\n decimals,\n fractional,\n moneyline: OddsConverter.decimalToUS(moneyline),\n };\n }\n\n static getTotalOdds(odds: CalculatedOdds[] | CalculatedOdds, round: boolean): CalculatedOdds {\n return OddsOperations.multiply(isArray(odds) ? odds : [odds, this.OddsOne], round);\n }\n\n static multiply(odds: CalculatedOdds[], round: boolean): CalculatedOdds {\n if (odds.length === 1) {\n return OddsOperations.isOddsEmpty(odds[0]) ? emptyCalculatedOdds : odds[0];\n }\n\n let decimals = new Decimal(1);\n let fractional = new Fraction(0, 1);\n let moneyline = new Decimal(1);\n for (const odd of odds) {\n if (OddsOperations.isOddsEmpty(odd)) {\n return emptyCalculatedOdds;\n }\n\n decimals = decimals.times(odd.decimals);\n fractional = fractional.add(1).multiply(odd.fractional.add(1)).subtract(1);\n moneyline = moneyline.times(OddsConverter.usToDecimal(odd.moneyline, 10));\n }\n\n return {\n decimals: round ? decimals.toDecimalPlaces(2, Decimal.ROUND_HALF_UP) : decimals,\n fractional,\n moneyline: OddsConverter.decimalToUS(moneyline),\n };\n }\n\n static equal(first: Odds, second: Odds, oddsFormat: OddsFormat = OddsFormat.None): boolean {\n switch (oddsFormat) {\n case OddsFormat.British:\n return Fraction.fromJSON(first.fractional).equal(Fraction.fromJSON(second.fractional));\n case OddsFormat.European:\n return first.decimals === second.decimals;\n case OddsFormat.American:\n return first.moneyline === second.moneyline;\n default:\n return (\n first.decimals === second.decimals &&\n Fraction.fromJSON(first.fractional).equal(Fraction.fromJSON(second.fractional)) &&\n first.moneyline === second.moneyline\n );\n }\n }\n\n static equal2(first: CalculatedOdds, second: CalculatedOdds): boolean {\n return first.decimals.equals(second.decimals) && first.fractional.equal(second.fractional) && first.moneyline.equals(second.moneyline);\n }\n\n static toCalculatedOdds(nativeOdds: Odds | undefined): CalculatedOdds {\n if (!nativeOdds) {\n return emptyCalculatedOdds;\n }\n\n const calculatedOdds = {\n decimals: nativeOdds.decimals ? new Decimal(nativeOdds.decimals) : new Decimal(0),\n fractional: nativeOdds.fractional ? Fraction.fromJSON(nativeOdds.fractional) : Fraction.empty(),\n moneyline: nativeOdds.moneyline ? new Decimal(nativeOdds.moneyline) : new Decimal(0),\n };\n\n //Return emptyCalculatedOdds if the calculated odds is equal to it to make future comparison accurate\n //e.g. isOddsEmpty should return true in this case\n if (this.equal2(calculatedOdds, emptyCalculatedOdds)) {\n return emptyCalculatedOdds;\n }\n\n return calculatedOdds;\n }\n\n static toDecimalValue(odds: CalculatedOdds, format?: OddsDisplayFormat): Decimal {\n switch (format) {\n case OddsDisplayFormat.UK:\n return OddsConverter.fractionToDecimal(odds.fractional);\n case OddsDisplayFormat.US:\n return OddsConverter.usToDecimal(odds.moneyline, 10);\n default:\n return odds.decimals;\n }\n }\n\n static fromDecimalValue(decimals: Decimal): CalculatedOdds {\n return {\n decimals,\n fractional: OddsConverter.decimalToFraction(decimals),\n moneyline: OddsConverter.decimalToUS(decimals),\n };\n }\n\n static fromDecimalsToOdds(value: number): Odds {\n return OddsOperations.createOdds({\n odds: value,\n numerator: new Decimal(value).minus(1).toNumber(),\n denominator: 1,\n });\n }\n\n static convertOddsFormat(oddsFormat: OddsFormat): OddsDisplayFormat {\n switch (oddsFormat) {\n case OddsFormat.American:\n return OddsDisplayFormat.US;\n case OddsFormat.British:\n return OddsDisplayFormat.UK;\n case OddsFormat.European:\n return OddsDisplayFormat.EU;\n case OddsFormat.None:\n return OddsDisplayFormat.EU;\n }\n }\n\n static convertToBposOddsFormat(oddsFormat: OddsDisplayFormat = OddsDisplayFormat.EU): OddsFormat {\n switch (oddsFormat) {\n case OddsDisplayFormat.EU:\n return OddsFormat.European;\n case OddsDisplayFormat.UK:\n return OddsFormat.British;\n case OddsDisplayFormat.US:\n return OddsFormat.American;\n }\n }\n\n static toOdds(nativeOdds: CalculatedOdds): Odds {\n return {\n decimals: nativeOdds.decimals ? nativeOdds.decimals.toNumber() : 0,\n\n fractional: nativeOdds.fractional\n ? { numerator: nativeOdds.fractional.numerator.toNumber(), denominator: nativeOdds.fractional.denominator.toNumber() }\n : { numerator: 0, denominator: 0 },\n\n moneyline: nativeOdds.moneyline ? nativeOdds.moneyline.toNumber() : 0,\n };\n }\n\n static lessThan(first: CalculatedOdds, second: CalculatedOdds, oddsFormat: OddsFormat = OddsFormat.None): boolean {\n switch (oddsFormat) {\n case OddsFormat.British:\n return first.fractional.lessThan(second.fractional);\n case OddsFormat.American:\n return first.moneyline.lessThan(second.moneyline);\n default:\n return first.decimals.lessThan(second.decimals);\n }\n }\n\n static greaterThan(first: CalculatedOdds, second: CalculatedOdds, oddsFormat: OddsFormat = OddsFormat.None): boolean {\n switch (oddsFormat) {\n case OddsFormat.British:\n return first.fractional.greaterThan(second.fractional);\n case OddsFormat.American:\n return first.moneyline.greaterThan(second.moneyline);\n default:\n return first.decimals.greaterThan(second.decimals);\n }\n }\n}\n","import { FixtureViewType, TotalsPrefix } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { OddsOperations } from '@frontend/sports/odds/feature';\n\nimport { BetslipGroupInformation } from '../groups/betslip-group-information';\nimport { PickId, pickIdFactory } from './pick-id';\nimport {\n IAcceptedPrice,\n IBetslipPickMarket,\n IBetslipPickStorage,\n IBetslipV2Option,\n IBoostedPrice,\n IPickTracking,\n IPrice,\n PickOddsState,\n PickSubType,\n PriceType,\n ResultStatus,\n} from './pick-models';\nimport { SignedName } from './signed-name.model';\n\nexport abstract class BetslipPick {\n id: PickId;\n\n // is the pick in the betting offer\n isAvailable = true;\n\n /**\n * Pick result status. It can be set to something else after trying to do bet placement and the pick is resulted.\n * When result status is !== of OPEN then pick is treated as closed.\n */\n resultStatus: ResultStatus = ResultStatus.Open;\n\n priceType: PriceType;\n\n /* Accepted odds from the customer, when current price type is Fixed when price is not fixed accepted Odds are undefined. */\n acceptedPrice: IAcceptedPrice;\n\n boostedPriceDetails: IBoostedPrice | undefined;\n\n market: IBetslipPickMarket;\n\n priceHistory: IPrice[];\n\n subscriptionContext: string[] = [];\n\n tracking: IPickTracking;\n\n contextualInfo?: string;\n\n liveAlert?: boolean;\n\n parentLinkedEventId?: string;\n\n siblingOption?: IBetslipV2Option;\n\n /**\n * Indicates that the pick is part of the new customer offer (hidden market)\n */\n isNewCustomerOfferPick: boolean;\n\n highlighted?: boolean;\n\n totalsPrefix?: TotalsPrefix;\n fromHybridFixture?: boolean;\n protected _groupInfo?: BetslipGroupInformation;\n\n get groupInfo() {\n return this._groupInfo;\n }\n\n protected constructor() {\n this.priceHistory = [];\n }\n\n protected abstract isPriceVisible(): boolean;\n\n abstract isMarketVisible(): boolean;\n\n private isVisible(): boolean {\n return this.isAvailable && this.isPriceVisible() && this.isMarketVisible();\n }\n\n protected isOpen(): boolean {\n return this.resultStatus === ResultStatus.Open;\n }\n\n get currentPrice(): IPrice | undefined {\n return this.prices[0];\n }\n\n get oddsState(): PickOddsState {\n if (!this.isOpen()) {\n return PickOddsState.Closed;\n }\n\n if (!this.isVisible()) {\n return PickOddsState.Locked;\n }\n\n return PickOddsState.Open;\n }\n\n abstract get isLive(): boolean;\n\n abstract copy(): BetslipPick;\n\n // abstract updateFromMessage(m: MessageEnvelope): void;\n\n abstract get prices(): IPrice[];\n\n abstract get eventName(): SignedName;\n\n abstract get marketName(): SignedName;\n\n abstract get optionName(): SignedName;\n\n abstract get sportId(): SportConstant;\n\n abstract get isVirtual(): boolean;\n\n abstract get eventDate(): Date;\n\n abstract get regionName(): SignedName;\n\n abstract get competitionName(): SignedName;\n\n abstract get competitionId(): number;\n\n abstract get sportName(): SignedName;\n\n abstract get leagueName(): SignedName;\n\n abstract get partitionId(): number | undefined;\n\n abstract get eventParticipants(): EventParticipant[] | undefined;\n\n abstract get eventViewType(): FixtureViewType | undefined;\n\n betCount(): number {\n return 1;\n }\n\n /**\n * toJSON func should do a deep copy of the object to storage, we need that because when we do copy we get toJSON result and init pick from it.,\n */\n toJSON(): IBetslipPickStorage {\n return {\n id: this.id.toString(),\n priceHistory: this.priceHistory,\n priceType: this.priceType,\n acceptedPrice: this.acceptedPrice,\n isNewCustomerOffer: this.isNewCustomerOfferPick,\n market: this.market\n ? {\n id: this.market.id,\n isVisible: this.market.isVisible,\n isBetBuilderEnabled: this.market.isBetBuilderEnabled,\n }\n : null,\n subscriptionContext: this.subscriptionContext,\n pickSubType: PickSubType.None,\n tracking: this.tracking,\n boostedPriceDetails: this.boostedPriceDetails,\n liveAlert: this.liveAlert,\n groupInfo: this.groupInfo,\n parentLinkedEventId: this.parentLinkedEventId ?? this.id.parentLinkedEventId,\n totalsPrefix: this.totalsPrefix,\n fromHybridFixture: this.fromHybridFixture,\n };\n }\n\n protected initPropertiesFromJSON(value: IBetslipPickStorage): void {\n this.id = pickIdFactory(value.id);\n this.priceHistory = value.priceHistory;\n this.priceType = value.priceType;\n this.acceptedPrice = value.acceptedPrice;\n this.isNewCustomerOfferPick = value.isNewCustomerOffer;\n this.subscriptionContext = value.subscriptionContext;\n if (value.market) {\n this.market = {\n id: value.market.id,\n isVisible: value.market.isVisible,\n isBetBuilderEnabled: value.market.isBetBuilderEnabled,\n };\n }\n this.tracking = value.tracking ?? {};\n this.boostedPriceDetails = value.boostedPriceDetails;\n this.liveAlert = value.liveAlert;\n this._groupInfo = value.groupInfo;\n\n this.parentLinkedEventId = value.parentLinkedEventId;\n this.totalsPrefix = value.totalsPrefix;\n this.fromHybridFixture = value.fromHybridFixture;\n }\n\n getOddsAcceptance(): boolean {\n if (this.currentPrice?.nativeOdds === this.acceptedPrice.price?.nativeOdds) {\n return true;\n } else if (!this.currentPrice?.nativeOdds || !this.acceptedPrice.price?.nativeOdds) {\n return false;\n }\n\n return OddsOperations.equal(this.currentPrice?.nativeOdds, this.acceptedPrice.price?.nativeOdds);\n }\n\n setGroupInfo(groupInfo: BetslipGroupInformation) {\n this._groupInfo = groupInfo;\n }\n}\n","import { getPartition } from '@frontend/sports/betting-offer/feature/model';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\n\nimport { BetslipPick } from './betslip-pick';\nimport { V2PickId } from './pick-id';\nimport { IBetslipV2PickFixture, IBetslipV2PickStorage, PriceType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\nexport abstract class BetslipV2Pick extends BetslipPick {\n override id: V2PickId;\n fixture: IBetslipV2PickFixture;\n\n static isPick(pick: BetslipPick): pick is BetslipV2Pick {\n return pick instanceof BetslipV2Pick;\n }\n\n protected constructor() {\n super();\n this.priceType = PriceType.Fixed;\n }\n\n isMarketVisible(): boolean {\n return this.market.isVisible;\n }\n\n protected isPriceVisible(): boolean {\n return true;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2PickStorage): void {\n super.initPropertiesFromJSON(value);\n this.fixture = {\n ...value.fixture,\n eventDate: new Date(value.fixture.eventDate),\n cutOffDate: new Date(value.fixture.cutOffDate),\n league: value.fixture.league,\n region: value.fixture.region,\n };\n }\n\n get leagueId(): number {\n if (this.fixture.league !== null) {\n return this.fixture.league.id;\n }\n\n return 0;\n }\n\n get leagueName(): SignedName {\n return (\n this.fixture.league?.name || {\n name: '',\n signature: '',\n }\n );\n }\n\n get regionId(): number {\n if (this.fixture.region !== null) {\n return this.fixture.region.id;\n }\n\n return 0;\n }\n\n get regionName(): SignedName {\n return (\n this.fixture.region?.name || {\n name: '',\n signature: '',\n }\n );\n }\n\n override isOpen(): boolean {\n if (!super.isOpen()) {\n return false;\n }\n\n return this.fixture.cutOffDate > new Date();\n }\n\n get eventName(): SignedName {\n return this.fixture.name;\n }\n\n get sportId(): SportConstant {\n return this.fixture.sportId;\n }\n\n get partitionId(): number | undefined {\n return getPartition(this.fixture.fixtureId);\n }\n\n get sportName(): SignedName {\n return this.fixture.sportName;\n }\n\n get eventDate(): Date {\n return this.fixture.eventDate;\n }\n\n get competitionName(): SignedName {\n return this.leagueName;\n }\n\n get competitionId(): number {\n return this.leagueId;\n }\n\n abstract override get isLive(): boolean;\n\n get isVirtual(): boolean {\n return this.fixture.virtual;\n }\n\n override toJSON(): IBetslipV2PickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n fixture: {\n ...this.fixture,\n eventDate: this.fixture.eventDate.toISOString(),\n cutOffDate: this.fixture.cutOffDate.toISOString(),\n league: this.fixture.league && {\n id: this.fixture.league.id,\n name: { ...this.fixture.league.name },\n realCompetitionId: this.fixture.league.realCompetitionId,\n },\n region: this.fixture.region && {\n id: this.fixture.region.id,\n name: { ...this.fixture.region.name },\n },\n },\n };\n }\n\n setMarketInvisible(): void {\n this.market.isVisible = false;\n }\n}\n","import { FixtureStage, FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { cloneDeep } from 'lodash-es';\n\nimport { BetslipPick } from './betslip-pick';\nimport { BetslipV2Pick } from './betslip-v2-pick';\nimport { V2OptionMarketPickId } from './pick-id';\nimport { IBetslipV2Option, IBetslipV2OptionMarket, IBetslipV2OptionMarketPickStorage, IPlaceTerms, IPrice, ParticipantPickType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\n/**\n * General Option Market Pick\n */\nexport abstract class BetslipV2OptionMarketPick extends BetslipV2Pick {\n override market: IBetslipV2OptionMarket;\n option: IBetslipV2Option;\n options: IBetslipV2Option[];\n override id: V2OptionMarketPickId;\n isFromNewCustomerOffer: boolean;\n override siblingOption?: IBetslipV2Option;\n pickType?: ParticipantPickType;\n isFavouritePick?: boolean;\n\n constructor() {\n super();\n }\n\n override get eventParticipants(): EventParticipant[] | undefined {\n return this.fixture.participants;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return this.fixture.viewType;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2OptionMarketPick {\n return pick instanceof BetslipV2OptionMarketPick;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2OptionMarketPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.market = value.market;\n this.isFavouritePick = value.isFavouritePick;\n this.isFromNewCustomerOffer = value.isFromNewCustomerOffer || false;\n\n this.option = {\n ...value.option,\n prices: cloneDeep(value.option.prices),\n isDraw: value.option.isDraw,\n };\n this.pickType = value.pickType;\n this.siblingOption = value.siblingOption;\n }\n\n get optionId(): number {\n return this.option.id;\n }\n\n get optionName(): SignedName {\n return this.option.name;\n }\n\n get marketName(): SignedName {\n return this.market.name;\n }\n\n get isLive(): boolean {\n return this.fixture.stage === FixtureStage.Live;\n }\n\n get isEachWay(): boolean {\n return this.market.isEachWay;\n }\n\n get placeTerms(): IPlaceTerms | null {\n return this.market.placeTerms;\n }\n\n get realCompetitionId(): number | undefined {\n return this.fixture.league?.realCompetitionId;\n }\n\n override isPriceVisible(): boolean {\n return this.option.isVisible && !!this.currentPrice && this.currentPrice.isVisible;\n }\n\n override isMarketVisible(): boolean {\n return this.market.isVisible;\n }\n\n override isOpen(): boolean {\n if (!super.isOpen() || this.market.isClosed) {\n return false;\n }\n\n return this.fixture.cutOffDate > new Date();\n }\n\n override toJSON(): IBetslipV2OptionMarketPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n id: this.id.toString(),\n isFromNewCustomerOffer: this.isFromNewCustomerOffer,\n market: {\n ...this.market,\n },\n isFavouritePick: this.isFavouritePick,\n option: {\n ...this.option,\n },\n pickType: this.pickType,\n siblingOption: this.siblingOption!,\n };\n }\n\n get prices(): IPrice[] {\n return this.option.prices.filter((pr) => pr.marketId === this.market.id);\n }\n\n abstract override copy(): BetslipV2OptionMarketPick;\n}\n","import { FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\n\nimport { BetslipPick } from './betslip-pick';\nimport { BetslipV2OptionMarketPick } from './betslip-v2-option-market-pick';\nimport { BetBuilderPickId } from './pick-id';\nimport { IBetslipBetBuilderPickStorage, IEventData, PickSubType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\nexport interface SportcastOption {\n name: string;\n longId: string;\n}\n\nexport class BetslipBetBuilderPick extends BetslipV2OptionMarketPick {\n override get eventParticipants(): EventParticipant[] | undefined {\n return this.event.event.participants;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return this.event.event.viewType;\n }\n\n override id: BetBuilderPickId;\n eventId: string;\n event: IEventData;\n sportcastOptions: SportcastOption[];\n sportcastId?: number;\n betgeniusId?: number;\n betSlipUid?: string;\n useV2Key?: boolean;\n longIds?: string[];\n\n static override isPick(pick: BetslipPick): pick is BetslipBetBuilderPick {\n return pick instanceof BetslipBetBuilderPick;\n }\n\n static isEntainUiBetBuilderPick(pick: BetslipPick): pick is BetslipBetBuilderPick & boolean {\n return pick instanceof BetslipBetBuilderPick && !!pick.sportcastOptions?.length;\n }\n\n getLegCount(): number {\n return this.sportcastOptions?.length ? this.sportcastOptions.length : this.market.name.name.split(';').length;\n }\n\n static fromJSON(value: IBetslipBetBuilderPickStorage): BetslipBetBuilderPick {\n const pick = new BetslipBetBuilderPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipBetBuilderPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.eventId = value.eventId;\n this.event = value.event && {\n ...value.event,\n event: {\n ...value.event.event,\n date: new Date(value.event.event.date),\n },\n };\n this.sportcastOptions = value.sportcastOptions;\n this.betgeniusId = value.betgeniusId;\n this.sportcastId = value.sportcastId;\n this.betSlipUid = value.betSlipUid;\n this.useV2Key = value.useV2key;\n this.longIds = value.longIds;\n }\n\n getLegs(): string[] {\n return this.market.name.name.split(';');\n }\n\n override betCount(): number {\n return 1;\n }\n\n override toJSON(): IBetslipBetBuilderPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n eventId: this.eventId,\n event: this.event,\n pickSubType: PickSubType.BetBuilderPick,\n sportcastOptions: this.sportcastOptions,\n betgeniusId: this.betgeniusId,\n sportcastId: this.sportcastId,\n betSlipUid: this.betSlipUid,\n useV2key: this.useV2Key,\n longIds: this.longIds,\n };\n }\n\n copy(): BetslipBetBuilderPick {\n const copy = this.toJSON();\n\n return BetslipBetBuilderPick.fromJSON(copy);\n }\n\n override get regionName(): SignedName {\n return this.event.region.name;\n }\n\n override get leagueName(): SignedName {\n return this.event.league.name;\n }\n\n override get eventDate(): Date {\n return this.event.event.date;\n }\n}\n","export enum BetslipPickChangeType {\n OddsChange,\n VisibilityChange,\n LockChange,\n}\n\nexport interface BetslipPickChangeInfo {\n changeType?: BetslipPickChangeType;\n}\n","import { ComboPreventionType } from '@cds/betting-offer';\n\nexport enum CombinationPrevention {\n /// \n /// No value was chosen for ComboPrevention.\n /// \n Default = 0,\n\n /// \n /// This bet can be combined with any other bet.\n /// \n AllCombo = 1,\n\n /// \n /// This bet cannot be combined with any other bet.\n /// \n NoCombo = 2,\n\n /// \n /// This bet cannot be combined with a bet from the same sport.\n /// \n NoSportCombo = 3,\n\n /// \n /// This bet cannot be combined with a bet from the same league.\n /// \n NoLeagueCombo = 4,\n\n /// \n /// This bet cannot be combined with a bet from the same event.\n /// \n NoEventCombo = 6,\n\n /// \n /// This bet can only be combined with a bet from the same league but a different event.\n /// \n OnlySameLeagueDifferentEvent = 7,\n\n /// \n /// This bet can only be combined with live bets\n /// \n OnlyLiveEvents = 8,\n\n /// \n /// This bet can only be combined with live bets from a different event.\n /// \n OnlyDifferentLiveEvents = 9,\n\n /// \n /// This bet cannot be combined with a bet from the same competition.\n /// \n NoCompetitionCombo = 10,\n\n /// \n /// This bet cannot be combined with a bet from the same fixture.\n /// \n NoFixtureCombo = 11,\n\n /// \n /// This bet cannot be combined with a bet from the same competition group.\n /// \n NoGroupCombo = 12,\n}\n\nexport function toComboPrevention(status: ComboPreventionType): CombinationPrevention {\n switch (status) {\n case ComboPreventionType.AllCombo:\n return CombinationPrevention.AllCombo;\n case ComboPreventionType.AllLiveEvents:\n return CombinationPrevention.OnlyLiveEvents;\n case ComboPreventionType.NoCombo:\n return CombinationPrevention.NoCombo;\n case ComboPreventionType.NoEventCombo:\n return CombinationPrevention.NoEventCombo;\n case ComboPreventionType.NoFixtureCombo:\n return CombinationPrevention.NoFixtureCombo;\n case ComboPreventionType.NoEventSameLeagueCombo:\n return CombinationPrevention.OnlySameLeagueDifferentEvent;\n case ComboPreventionType.NoCompetitionCombo:\n return CombinationPrevention.NoCompetitionCombo;\n case ComboPreventionType.NoLeagueCombo:\n return CombinationPrevention.NoLeagueCombo;\n case ComboPreventionType.NoSportCombo:\n return CombinationPrevention.NoSportCombo;\n case ComboPreventionType.OtherLiveEvents:\n return CombinationPrevention.OnlyDifferentLiveEvents;\n case ComboPreventionType.NoGroupCombo:\n return CombinationPrevention.NoGroupCombo;\n }\n}\n","import { ComboPreventionType2 } from '@cds/betting-offer';\n\nexport enum MinimumCombination {\n /// \n /// No value was chosen for MinimumCombo.\n /// \n Default = 0,\n\n /// \n /// There must be at least one bet in the betslip (the current bet counts,\n /// so this effectively says that the current bet can be used on its own).\n /// \n Single = 1,\n\n /// \n /// There must be at least two bets in the betslip.\n /// \n Combo2 = 2,\n\n /// \n /// There must be at least three bets in the betslip.\n /// \n Combo3 = 3,\n\n /// \n /// There must be at least four bets in the betslip.\n /// \n Combo4 = 4,\n\n /// \n /// There must be at least five bets in the betslip.\n /// \n Combo5 = 5,\n\n /// \n /// There must be at least six bets in the betslip.\n /// \n Combo6 = 6,\n}\n\nexport function toMinimumCombo(status: ComboPreventionType2 | number): MinimumCombination {\n switch (status) {\n case ComboPreventionType2.Combo2:\n return MinimumCombination.Combo2;\n case ComboPreventionType2.Combo3:\n return MinimumCombination.Combo3;\n case ComboPreventionType2.Combo4:\n return MinimumCombination.Combo4;\n case ComboPreventionType2.Combo5:\n return MinimumCombination.Combo5;\n case ComboPreventionType2.Combo6:\n return MinimumCombination.Combo6;\n }\n\n return MinimumCombination.Single;\n}\n\nexport function toMinimumComboTV2(status?: number): MinimumCombination {\n if (!status) {\n return MinimumCombination.Single;\n }\n\n switch (status) {\n case 2:\n return MinimumCombination.Combo2;\n case 3:\n return MinimumCombination.Combo3;\n case 4:\n return MinimumCombination.Combo4;\n case 5:\n return MinimumCombination.Combo5;\n case 6:\n return MinimumCombination.Combo6;\n }\n\n return MinimumCombination.Single;\n}\n","import { FixtureViewType, Visibility } from '@cds/betting-offer';\nimport { MessageEnvelope, MessageType } from '@cds/push';\nimport { GameUpdateCommand } from '@cds/push/fixture-commands';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { GameDeleteMessageEnvelope, GameUpdateMessageEnvelope } from '@frontend/sports/content-distribution/feature';\nimport { OddsOperations } from '@frontend/sports/odds/feature';\n\nimport { BetslipPickChangeInfo, BetslipPickChangeType } from '../../modules/validation/picks/betslip-pick-change-info';\nimport { BetslipPick } from './betslip-pick';\nimport { toComboPrevention } from './combo-prevention';\nimport { toMinimumCombo } from './minimum-combination';\nimport { V1PickId } from './pick-id';\nimport {\n BetslipV1PickEvent,\n BetslipV1PickLeague,\n BetslipV1PickMarket,\n BetslipV1PickOption,\n BetslipV1PickRegion,\n BetslipV1PickSport,\n BetslipV1PickTeaserData,\n IBetslipV1PickDto,\n IBetslipV1PickStorage,\n IPrice,\n PickSubType,\n PriceType,\n} from './pick-models';\nimport { SignedName } from './signed-name.model';\n\nfunction isGameDeleteEnvelope(envelope: MessageEnvelope): envelope is GameDeleteMessageEnvelope {\n return envelope.messageType === MessageType.GameDelete;\n}\n\nfunction isGameUpdateEnvelope(envelope: MessageEnvelope): envelope is GameUpdateMessageEnvelope {\n return !!(envelope.messageType === MessageType.GameUpdate && (envelope.payload as GameUpdateCommand).game);\n}\n\nexport class BetslipV1Pick extends BetslipPick implements IBetslipV1PickDto {\n override get eventParticipants(): EventParticipant[] | undefined {\n return this.event.participants;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return this.event.viewType;\n }\n\n override id: V1PickId;\n sport: BetslipV1PickSport;\n league: BetslipV1PickLeague;\n region: BetslipV1PickRegion;\n event: BetslipV1PickEvent;\n override market: BetslipV1PickMarket;\n option: BetslipV1PickOption;\n teaser: BetslipV1PickTeaserData;\n\n static fromJSON(value: IBetslipV1PickStorage): BetslipV1Pick {\n const pick = new BetslipV1Pick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n static isPick(pick: BetslipPick): pick is BetslipV1Pick {\n return pick instanceof BetslipV1Pick;\n }\n\n constructor() {\n super();\n this.priceType = PriceType.Fixed;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV1PickStorage): void {\n super.initPropertiesFromJSON(value);\n this.event = {\n ...value.event,\n eventDate: new Date(value.event.eventDate),\n cutOffDate: new Date(value.event.cutOffDate),\n };\n this.league = value.league;\n this.region = value.region;\n this.sport = value.sport;\n this.market = {\n ...value.market,\n };\n this.option = {\n ...value.option,\n };\n this.teaser = {\n ...value.teaser,\n };\n }\n\n get eventName(): SignedName {\n return this.event.name;\n }\n\n get marketName(): SignedName {\n return this.market.name;\n }\n\n get optionName(): SignedName {\n return this.option.name;\n }\n\n get optionId(): number {\n return this.option.id;\n }\n\n get sportId(): SportConstant {\n return this.sport.id;\n }\n\n get partitionId(): number | undefined {\n return undefined;\n }\n\n get isVirtual(): boolean {\n return false;\n }\n\n get eventDate(): Date {\n return this.event.eventDate;\n }\n\n get regionName(): SignedName {\n return this.region.name;\n }\n\n get competitionName(): SignedName {\n return this.league.name;\n }\n\n get competitionId(): number {\n return this.league.id;\n }\n\n get sportName(): SignedName {\n return this.sport.name;\n }\n\n get leagueName(): SignedName {\n return this.league.name;\n }\n\n isPriceVisible(): boolean {\n return !!this.currentPrice && this.currentPrice.isVisible;\n }\n\n isMarketVisible(): boolean {\n return this.market.isVisible;\n }\n\n setMarketInvisible(): void {\n this.market.isVisible = false;\n }\n\n /**\n * Is pick open.\n * Pick is open when:\n * 1. Is result status is OPEN.\n * 2. Is cutoff date is in future.\n */\n override isOpen(): boolean {\n if (!super.isOpen() || this.market.isClosed) {\n return false;\n }\n\n return this.event.cutOffDate > new Date();\n }\n\n override toJSON(): IBetslipV1PickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n id: this.id.toString(),\n pickSubType: PickSubType.V1Pick,\n event: {\n id: this.event.id,\n name: { ...this.event.name },\n groupId: this.event.groupId,\n isLive: this.event.isLive,\n isPublished: this.event.isPublished,\n eventDate: this.event.eventDate.toISOString(),\n cutOffDate: this.event.cutOffDate.toISOString(),\n participants: this.event.participants,\n viewType: this.event.viewType,\n },\n league: {\n ...this.league,\n },\n region: {\n ...this.region,\n },\n sport: {\n ...this.sport,\n },\n market: {\n ...this.market,\n },\n option: {\n ...this.option,\n },\n teaser: {\n ...this.teaser,\n },\n };\n }\n\n copy(): BetslipV1Pick {\n const storage = this.toJSON();\n\n return BetslipV1Pick.fromJSON(storage);\n }\n\n updateFromMessage(m: MessageEnvelope): BetslipPickChangeInfo {\n const result: BetslipPickChangeInfo = {};\n\n if (isGameDeleteEnvelope(m) && m.payload.gameId === this.market.id) {\n this.market = { ...this.market, isVisible: false, isClosed: true };\n\n return result;\n }\n if (isGameUpdateEnvelope(m) && m.payload.game.id === this.market.id && m.payload.game.results.some((r) => r.id === this.option.id)) {\n const cdsGame = m.payload.game;\n this.market = {\n ...this.market,\n isVisible: cdsGame.visibility === Visibility.Visible,\n isClosed: cdsGame.visibility === Visibility.Hidden,\n comboPrevention: toComboPrevention(cdsGame.combo1),\n minimumCombo: toMinimumCombo(cdsGame.combo2),\n };\n\n const option = cdsGame.results.find((o) => o.id === this.option.id)!;\n const newPrice = {\n ...this.currentPrice!,\n nativeOdds: OddsOperations.createOdds(option),\n isVisible: option.visibility === Visibility.Visible && option.odds > 1,\n };\n if (!OddsOperations.equal(newPrice.nativeOdds, this.currentPrice!.nativeOdds) || newPrice.isVisible !== this.currentPrice!.isVisible) {\n this.priceHistory.push({ ...this.currentPrice! });\n if (!OddsOperations.equal(newPrice.nativeOdds, this.currentPrice!.nativeOdds)) {\n result.changeType = BetslipPickChangeType.OddsChange;\n } else if (newPrice.isVisible !== this.currentPrice!.isVisible) {\n result.changeType = BetslipPickChangeType.VisibilityChange;\n }\n }\n this.option.price = newPrice;\n }\n\n return result;\n }\n\n get isLive(): boolean {\n return this.event.isLive;\n }\n\n get prices(): IPrice[] {\n return [this.option.price];\n }\n}\n","import { BetslipV2OptionMarketPick } from './betslip-v2-option-market-pick';\nimport { IBetslipV2OptionMarketPickStorage, PickSubType } from './pick-models';\n\nexport class BetslipV2StandardPick extends BetslipV2OptionMarketPick {\n static fromJSON(value: IBetslipV2OptionMarketPickStorage): BetslipV2OptionMarketPick {\n const pick = new BetslipV2StandardPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n override toJSON(): IBetslipV2OptionMarketPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n pickSubType: PickSubType.StandardV2Pick,\n };\n }\n\n copy(): BetslipV2OptionMarketPick {\n const storage = this.toJSON();\n\n return BetslipV2StandardPick.fromJSON(storage);\n }\n}\n","import { OptionMarket, ParticipantOption, ParticipantPriceStatus, ParticipantPriceType, Price } from '@cds/betting-offer';\nimport { OddsOperations, emptyOdds } from '@frontend/sports/odds/feature';\n\nimport { IPrice, PriceType } from './picks/pick-models';\n\nexport function participantOptionPriceToBetslipPrice(option: ParticipantOption): IPrice {\n return {\n id: option.price.id,\n isVisible:\n option.participantPriceStatus === ParticipantPriceStatus.Visible &&\n (option.priceType !== ParticipantPriceType.Fixed || OddsOperations.isOddsValid(OddsOperations.createOdds(option.price))),\n marketId: option.marketId,\n nativeOdds: option.priceType === ParticipantPriceType.Fixed ? OddsOperations.createOdds(option.price) : emptyOdds,\n type: PriceType[option.priceType],\n };\n}\n\nexport function optionPriceToBetslipPrice(market: OptionMarket, price: Price): IPrice {\n const option = market.options?.filter((o) => o.price.id === price.id)[0];\n\n return {\n id: price.id,\n isVisible: true,\n marketId: market.id,\n nativeOdds: OddsOperations.createOdds(price),\n type: option?.participantPriceType ? PriceType[option.participantPriceType] : PriceType.Fixed,\n };\n}\n","import { ParticipantMarketStatus, ParticipantOption, ParticipantPriceStatus, ParticipantPriceType, ParticipantStatus } from '@cds/betting-offer';\nimport { OddsOperations, emptyOdds } from '@frontend/sports/odds/feature';\n\nimport { participantOptionPriceToBetslipPrice } from '../price';\nimport { BetslipPick } from './betslip-pick';\nimport { BetslipV2Pick } from './betslip-v2-pick';\nimport { V2ParticipantPickId } from './pick-id';\nimport { IBetslipV2ParticipantPickStorage, IBetslipV2PickParticipant, IBetslipV2PickParticipantMarket, IPrice } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\n/**\n * General Participant pick\n */\nexport abstract class BetslipV2ParticipantPick extends BetslipV2Pick {\n override id: V2ParticipantPickId;\n override market: IBetslipV2PickParticipantMarket;\n participants: IBetslipV2PickParticipant[];\n betType: string;\n betTypeAltTranslation: string;\n\n static override isPick(pick: BetslipPick): pick is BetslipV2ParticipantPick {\n return pick instanceof BetslipV2ParticipantPick;\n }\n\n protected constructor() {\n super();\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2ParticipantPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.market = value.market;\n this.participants = value.participants.map((p) => ({\n ...p,\n prices: p.prices.map((pr) => ({ ...pr })),\n }));\n this.betType = value.betType;\n this.betTypeAltTranslation = value.betTypeAltTranslation;\n }\n\n protected updateFromPrice(thisPrice: IPrice, fixtureOption?: ParticipantOption): void {\n if (!fixtureOption) {\n this.priceHistory.push({ ...thisPrice });\n thisPrice.isVisible = false;\n } else {\n const newPrice = {\n isVisible:\n fixtureOption.marketStatus === ParticipantMarketStatus.Visible &&\n fixtureOption.participantPriceStatus === ParticipantPriceStatus.Visible,\n nativeOdds: emptyOdds,\n };\n if (fixtureOption.priceType === ParticipantPriceType.Fixed) {\n // Set odds only when priceType is fixed.\n newPrice.nativeOdds = OddsOperations.createOdds(fixtureOption.price);\n newPrice.isVisible = newPrice.isVisible && OddsOperations.isOddsValid(newPrice.nativeOdds);\n }\n if (!OddsOperations.equal(newPrice.nativeOdds, thisPrice.nativeOdds) || thisPrice.isVisible !== newPrice.isVisible) {\n this.priceHistory.push({ ...thisPrice });\n }\n thisPrice.isVisible = newPrice.isVisible;\n thisPrice.nativeOdds = newPrice.nativeOdds;\n }\n }\n\n protected addPriceFromOption(participant: IBetslipV2PickParticipant, option: ParticipantOption): void {\n const price = participantOptionPriceToBetslipPrice(option);\n participant.prices.push(price);\n }\n\n protected updateFromParticipantOptions(options: ParticipantOption[]): void {\n const currentMarketOptions = options.filter((o) => o.marketType === this.market.marketType);\n this.market.isVisible =\n !!currentMarketOptions.length && currentMarketOptions.every((o) => o.marketStatus === ParticipantMarketStatus.Visible);\n }\n\n override isPriceVisible(): boolean {\n return !this.participants.some((p) => p.status === ParticipantStatus.Hidden) && !!this.currentPrice && this.currentPrice.isVisible;\n }\n\n override isMarketVisible(): boolean {\n return this.market.isVisible;\n }\n\n /*\tupdateFromMessage(message: MessageEnvelope): void {\n\t\tif (\n\t\t\tisParticipantUpdateEnvelope(message) &&\n\t\t\tmessage.payload.fixtureId === this.fixture.fixtureId &&\n\t\t\tthis.participants.some(p => p.fixtureParticipantId === message.payload.participant.id)\n\t\t) {\n\t\t\tconst command = message.payload;\n\t\t\tconst pickParticipant = this.participants.find(p => p.fixtureParticipantId === message.payload.participant.id)!;\n\t\t\tthis.updateFromParticipant(pickParticipant, command.participant);\n\t\t}\n\t}*/\n\n get isLive(): boolean {\n return false;\n }\n\n override toJSON(): IBetslipV2ParticipantPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n id: this.id.toString(),\n market: {\n id: this.market.id,\n isVisible: this.market.isVisible,\n marketType: this.market.marketType,\n isBetBuilderEnabled: false,\n },\n participants: this.participants.map((p) => ({\n ...p,\n })),\n betType: this.betType,\n betTypeAltTranslation: this.betTypeAltTranslation,\n };\n }\n\n get optionName(): SignedName {\n const optionsName = this.participants\n .sort((a, b) => a.position - b.position)\n .map((p) => p.name.name)\n .join(', ');\n\n return {\n name: optionsName,\n signature: '',\n };\n }\n\n get prices(): IPrice[] {\n return this.participants.flatMap((p) => p.prices.filter((pr) => pr.marketId === this.market.id));\n }\n\n abstract override copy(): BetslipV2ParticipantPick;\n}\n","import { ParticipantMarketStatus, ParticipantOption, ParticipantPriceType, ParticipantType } from '@cds/betting-offer';\n\nimport { BetslipPick } from './betslip-pick';\nimport { BetslipV2ParticipantPick } from './betslip-v2-participant-pick';\nimport { V2WinPickId } from './pick-id';\nimport { IBetslipV2PickParticipant, IBetslipV2PickWinParticipantMarket, IBetslipV2WinParticipantPickStorage, IPrice, PriceType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\n/**\n * General Win market pick\n */\nexport abstract class BetslipV2WinParticipantPick extends BetslipV2ParticipantPick {\n override id: V2WinPickId;\n override market: IBetslipV2PickWinParticipantMarket;\n\n static override isPick(pick: BetslipPick): pick is BetslipV2WinParticipantPick {\n return pick instanceof BetslipV2WinParticipantPick;\n }\n\n protected constructor() {\n super();\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2WinParticipantPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.market = value.market;\n }\n\n protected override updateFromParticipantOptions(markets: ParticipantOption[]): void {\n super.updateFromParticipantOptions(markets);\n if (markets.length) {\n const fixedMarket = markets.find((m) => m.priceType === ParticipantPriceType.Fixed);\n const startingPriceMarket = markets.find((m) => m.priceType === ParticipantPriceType.StartingPrice);\n this.market.isStartingPriceAvailable = !!(startingPriceMarket && startingPriceMarket.marketStatus === ParticipantMarketStatus.Visible);\n this.market.isVisible = !!(fixedMarket && fixedMarket.marketStatus === ParticipantMarketStatus.Visible);\n this.market.isEachWay = fixedMarket?.properties.isEachWay || false;\n this.market.placeTerms = fixedMarket?.properties.placeTerms || null;\n }\n }\n\n override isMarketVisible(): boolean {\n if (!this.currentPrice) {\n return false;\n }\n switch (this.currentPrice.type) {\n case PriceType.Fixed:\n return this.market.isVisible;\n case PriceType.StartingPrice:\n return this.market.isStartingPriceAvailable;\n default:\n // only regular price ans starting price for win market\n return false;\n }\n }\n\n isStartingPriceAvailable(): boolean {\n return this.market.isStartingPriceAvailable && this.prices.some((pr) => pr.type === PriceType.StartingPrice && pr.isVisible);\n }\n\n isFixedPriceAvailable(): boolean {\n return this.market.isVisible && this.prices.some((pr) => pr.type === PriceType.Fixed && pr.isVisible);\n }\n\n override toJSON(): IBetslipV2WinParticipantPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n market: {\n id: this.market.id,\n isVisible: this.market.isVisible,\n isStartingPriceAvailable: this.market.isStartingPriceAvailable,\n isEachWay: this.market.isEachWay,\n marketType: this.market.marketType,\n placeTerms: this.market.placeTerms && { ...this.market.placeTerms },\n isBetBuilderEnabled: false,\n },\n };\n }\n\n get participant(): IBetslipV2PickParticipant {\n return this.participants[0];\n }\n\n get isEachWay(): boolean {\n return this.market.isEachWay && this.participant.type !== ParticipantType.Favourite;\n }\n\n override get optionName(): SignedName {\n return this.participant.name;\n }\n\n override get prices(): IPrice[] {\n // Small optimization over participants pick, not to use flatArray. Here we know that there is only one participant\n return this.participant.prices.filter((pr) => pr.marketId === this.market.id);\n }\n\n override get currentPrice(): IPrice | undefined {\n return this.prices.find((p) => p.type === this.priceType);\n }\n\n abstract override copy(): BetslipV2WinParticipantPick;\n}\n","import { FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\n\nimport { BetslipPick } from '../betslip-pick';\nimport { BetslipV2WinParticipantPick } from '../betslip-v2-win-participant-pick';\nimport { GolfPick, IBetslipV2GolfPickFixture, IBetslipV2GolfWinParticipantPickStorage, IBetslipV2PickFixture, PickSubType } from '../pick-models';\nimport { SignedName } from '../signed-name.model';\n\nexport class BetslipV2GolfWinParticipantPick extends BetslipV2WinParticipantPick implements GolfPick {\n override fixture: IBetslipV2GolfPickFixture;\n override get eventParticipants(): EventParticipant[] | undefined {\n return undefined;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return undefined;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2GolfWinParticipantPick {\n return pick instanceof BetslipV2GolfWinParticipantPick;\n }\n\n constructor() {\n super();\n }\n\n static fromJSON(value: IBetslipV2GolfWinParticipantPickStorage): BetslipV2GolfWinParticipantPick {\n const pick = new BetslipV2GolfWinParticipantPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2GolfWinParticipantPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.fixture = {\n ...(this.fixture as IBetslipV2PickFixture),\n fixtureGroup: value.fixture.fixtureGroup,\n };\n }\n\n override toJSON(): IBetslipV2GolfWinParticipantPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n fixture: {\n ...base.fixture,\n fixtureGroup: {\n id: this.fixture.fixtureGroup.id,\n name: {\n name: this.fixture.fixtureGroup.name.name,\n signature: this.fixture.fixtureGroup.name.signature,\n },\n },\n },\n pickSubType: PickSubType.GolfWinPick,\n };\n }\n\n copy(): BetslipV2GolfWinParticipantPick {\n const storage = this.toJSON();\n\n return BetslipV2GolfWinParticipantPick.fromJSON(storage);\n }\n\n override get eventName(): SignedName {\n return this.fixture.fixtureGroup.name;\n }\n\n get marketName(): SignedName {\n return this.fixture.name;\n }\n}\n","import { FixtureStage, FixtureType, FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { cloneDeep } from 'lodash-es';\n\nimport { BetslipPick } from '../betslip-pick';\nimport { BetslipV2OptionMarketPick } from '../betslip-v2-option-market-pick';\nimport { BetslipV2ParticipantPick } from '../betslip-v2-participant-pick';\nimport { BetslipV2Pick } from '../betslip-v2-pick';\nimport { BetslipV2WinParticipantPick } from '../betslip-v2-win-participant-pick';\nimport { V2OptionMarketXCastPickId } from '../pick-id';\nimport {\n HorseRaceParticipantPick,\n HorseRacePick,\n IBetslipV2HorseRaceOptionMarketPickStorage,\n IBetslipV2HorseRaceOptionMarketXCastPickStorage,\n IBetslipV2HorseRaceParticipantPickStorage,\n IBetslipV2HorseRacePickFixture,\n IBetslipV2HorseRacePickFixtureStorage,\n IBetslipV2HorseRacePickStorage,\n IBetslipV2HorseRaceWinParticipantPickStorage,\n IBetslipV2Option,\n IBetslipV2OptionMarket,\n IBetslipV2OptionMarketPickStorage,\n IBetslipV2ParticipantPickStorage,\n IBetslipV2PickFixture,\n IBetslipV2PickFixtureStorage,\n IBetslipV2PickParticipant,\n IPrice,\n ParticipantPickType,\n PickSubType,\n PriceType,\n} from '../pick-models';\nimport { SignedName } from '../signed-name.model';\n\nexport class RacePickProvider {\n static toJSON(pick: HorseRacePick, baseStorage: IBetslipV2PickFixtureStorage): { fixture: IBetslipV2HorseRacePickFixtureStorage } {\n return {\n fixture: {\n ...baseStorage,\n bestOddsGuarantee: pick.fixture.bestOddsGuarantee,\n isRaceOff: pick.fixture.isRaceOff,\n },\n };\n }\n\n static fromJSON(pick: HorseRacePick, fixture: IBetslipV2PickFixture, storage: { fixture: IBetslipV2HorseRacePickFixtureStorage }): void {\n pick.fixture = {\n ...fixture,\n bestOddsGuarantee: storage.fixture.bestOddsGuarantee,\n isRaceOff: storage.fixture.isRaceOff,\n };\n }\n\n static eventName(pick: HorseRacePick): SignedName {\n if (pick.fixture.fixtureType === FixtureType.DayOfRace) {\n return pick.leagueName;\n }\n\n return pick.fixture.name;\n }\n}\n\n/**\n * Horse racing Win participant pick\n */\nexport class BetslipV2HorseRaceWinParticipantPick extends BetslipV2WinParticipantPick implements HorseRaceParticipantPick {\n override get eventParticipants(): EventParticipant[] | undefined {\n return undefined;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return undefined;\n }\n\n private _marketName: string;\n private _marketNameAltTranslation?: string;\n\n override fixture: IBetslipV2HorseRacePickFixture;\n override participants: IBetslipV2PickParticipant[];\n\n static fromJSON(value: IBetslipV2HorseRaceWinParticipantPickStorage): BetslipV2HorseRaceWinParticipantPick {\n const pick = new BetslipV2HorseRaceWinParticipantPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2HorseRaceWinParticipantPick {\n return pick instanceof BetslipV2HorseRaceWinParticipantPick;\n }\n\n constructor() {\n super();\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2HorseRaceWinParticipantPickStorage): void {\n super.initPropertiesFromJSON(value);\n RacePickProvider.fromJSON(this, this.fixture, value);\n this.fromJSON(this, value);\n }\n\n setMarketName(value: string, altTranslation?: string): void {\n this._marketName = value;\n if (altTranslation) {\n this._marketNameAltTranslation = altTranslation;\n }\n }\n\n override toJSON(): IBetslipV2HorseRaceWinParticipantPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n ...RacePickProvider.toJSON(this, base.fixture),\n ...this.toParticipantsJSON(this),\n pickSubType: PickSubType.HorseWinPick,\n };\n }\n\n private fromJSON(\n pick: HorseRaceParticipantPick,\n json: { participants: IBetslipV2PickParticipant[]; _marketName: string; _marketNameAltTranslation?: string },\n ): void {\n this._marketName = json._marketName;\n pick.participants = json.participants.map((p) => ({\n ...p,\n prices: p.prices,\n }));\n\n if (json._marketNameAltTranslation) {\n this._marketNameAltTranslation = json._marketNameAltTranslation;\n }\n }\n\n private toParticipantsJSON(pick: HorseRaceParticipantPick): {\n participants: IBetslipV2PickParticipant[];\n _marketName: string;\n _marketNameAltTranslation?: string;\n } {\n return {\n participants: pick.participants.map((p) => ({\n ...p,\n prices: p.prices,\n })),\n _marketName: this._marketName,\n ...(this._marketNameAltTranslation && { _marketNameAltTranslation: this._marketNameAltTranslation }),\n };\n }\n\n override setMarketInvisible(): void {\n super.setMarketInvisible();\n this.market.isStartingPriceAvailable = false;\n }\n\n copy(): BetslipV2HorseRaceWinParticipantPick {\n const storage = this.toJSON();\n\n return BetslipV2HorseRaceWinParticipantPick.fromJSON(storage);\n }\n\n override get participant(): IBetslipV2PickParticipant {\n return this.participants[0];\n }\n\n override get eventName(): SignedName {\n return RacePickProvider.eventName(this);\n }\n\n get marketName(): SignedName {\n return {\n name: this._marketName,\n signature: '',\n nameAlternate: this._marketNameAltTranslation,\n };\n }\n}\n\n/**\n * Horse racing XCast (Forecast, Tricast) pick\n */\nexport class BetslipV2HorseRaceXCastPick extends BetslipV2ParticipantPick implements HorseRaceParticipantPick {\n private _marketName: string;\n private _marketNameAltTranslation?: string;\n override fixture: IBetslipV2HorseRacePickFixture;\n override participants: IBetslipV2PickParticipant[];\n\n override get eventParticipants(): EventParticipant[] | undefined {\n return undefined;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return undefined;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2HorseRaceXCastPick {\n return pick instanceof BetslipV2HorseRaceXCastPick;\n }\n\n static fromJSON(value: IBetslipV2HorseRaceParticipantPickStorage): BetslipV2HorseRaceXCastPick {\n const pick = new BetslipV2HorseRaceXCastPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n constructor() {\n super();\n this.priceType = PriceType.NoPrice;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2HorseRaceParticipantPickStorage): void {\n super.initPropertiesFromJSON(value);\n RacePickProvider.fromJSON(this, this.fixture, value);\n this.fromJSON(this, value);\n }\n\n private getPermutations(pos: number): number {\n let res = 1;\n for (let i = this.participants.length; i > this.participants.length - pos; i--) {\n res *= i;\n }\n\n return res;\n }\n\n override betCount(): number {\n switch (this.id.pickType) {\n case ParticipantPickType.CombinationForecast:\n return this.getPermutations(2);\n case ParticipantPickType.CombinationTricast:\n return this.getPermutations(3);\n case ParticipantPickType.Forecast:\n case ParticipantPickType.Tricast:\n return 1;\n default:\n return 1;\n }\n }\n\n setMarketName(value: string, altTranslation?: string): void {\n this._marketName = value;\n if (altTranslation) {\n this._marketNameAltTranslation = altTranslation;\n }\n }\n\n override toJSON(): IBetslipV2HorseRaceParticipantPickStorage {\n const base = super.toJSON() as IBetslipV2ParticipantPickStorage & IBetslipV2HorseRacePickStorage;\n\n return {\n ...base,\n ...RacePickProvider.toJSON(this, base.fixture),\n ...this.toParticipantsJSON(this),\n pickSubType: PickSubType.HorseXCastPick,\n };\n }\n\n copy(): BetslipV2HorseRaceXCastPick {\n const storage = this.toJSON();\n\n return BetslipV2HorseRaceXCastPick.fromJSON(storage);\n }\n\n override get eventName(): SignedName {\n return RacePickProvider.eventName(this);\n }\n\n get marketName(): SignedName {\n return {\n name: this._marketName,\n signature: '',\n nameAlternate: this._marketNameAltTranslation,\n };\n }\n\n private fromJSON(\n pick: HorseRaceParticipantPick,\n json: { participants: IBetslipV2PickParticipant[]; _marketName: string; _marketNameAltTranslation?: string },\n ): void {\n this._marketName = json._marketName;\n pick.participants = json.participants.map((p) => ({\n ...p,\n prices: p.prices,\n }));\n\n if (json._marketNameAltTranslation) {\n this._marketNameAltTranslation = json._marketNameAltTranslation;\n }\n }\n\n private toParticipantsJSON(pick: HorseRaceParticipantPick): {\n participants: IBetslipV2PickParticipant[];\n _marketName: string;\n _marketNameAltTranslation?: string;\n } {\n return {\n participants: pick.participants.map((p) => ({\n ...p,\n prices: p.prices,\n })),\n _marketName: this._marketName,\n ...(this._marketNameAltTranslation && { _marketNameAltTranslation: this._marketNameAltTranslation }),\n };\n }\n}\n\n/**\n * Horse racing Option Market Pick\n */\nexport class BetslipV2HorseRaceOptionMarketPick extends BetslipV2OptionMarketPick implements HorseRacePick {\n override fixture: IBetslipV2HorseRacePickFixture;\n betType: string;\n betTypeAltTranslation: string;\n\n static fromJSON(value: IBetslipV2HorseRaceOptionMarketPickStorage): BetslipV2HorseRaceOptionMarketPick {\n const pick = new BetslipV2HorseRaceOptionMarketPick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n constructor() {\n super();\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2HorseRaceOptionMarketPickStorage): void {\n super.initPropertiesFromJSON(value);\n RacePickProvider.fromJSON(this, this.fixture, value);\n this.betType = value.betType;\n this.betTypeAltTranslation = value.betTypeAltTranslation;\n }\n\n override toJSON(): IBetslipV2HorseRaceOptionMarketPickStorage {\n const base = super.toJSON() as IBetslipV2OptionMarketPickStorage & IBetslipV2HorseRacePickStorage;\n\n return {\n ...base,\n ...RacePickProvider.toJSON(this, base.fixture),\n pickSubType: PickSubType.HorseOptionMarketPick,\n betType: this.betType,\n betTypeAltTranslation: this.betTypeAltTranslation,\n };\n }\n\n copy(): BetslipV2HorseRaceOptionMarketPick {\n const storage = this.toJSON();\n\n return BetslipV2HorseRaceOptionMarketPick.fromJSON(storage);\n }\n\n override get eventName(): SignedName {\n return this.leagueName;\n }\n\n override get competitionName(): SignedName {\n return this.leagueName;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2HorseRaceOptionMarketPick {\n return pick instanceof BetslipV2HorseRaceOptionMarketPick;\n }\n\n isStartingPriceAvailable(): boolean {\n return this.market.isStartingPriceAvailable!;\n }\n\n isFixedPriceAvailable(): boolean {\n return this.market.isVisible && this.market.isFixedPriceAvailable!;\n }\n}\n\nexport class BetslipV2OptionMarketXCastRacePick extends BetslipV2Pick {\n options: IBetslipV2Option[];\n override market: IBetslipV2OptionMarket;\n override id: V2OptionMarketXCastPickId;\n override fixture: IBetslipV2HorseRacePickFixture;\n betType: string;\n betTypeAltTranslation: string;\n override get eventParticipants(): EventParticipant[] | undefined {\n return undefined;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return undefined;\n }\n\n get marketName(): SignedName {\n return this.market.name;\n }\n\n get isLive(): boolean {\n return this.fixture.stage === FixtureStage.Live;\n }\n\n get optionName(): SignedName {\n const optionsName = this.options\n .sort((a, b) => a.position! - b.position!)\n .map((p) => p.name.name)\n .join(', ');\n\n return {\n name: optionsName,\n signature: '',\n };\n }\n\n private getPermutations(pos: number): number {\n let res = 1;\n for (let i = this.options.length; i > this.options.length - pos; i--) {\n res *= i;\n }\n\n return res;\n }\n\n override betCount(): number {\n switch (this.id.pickType) {\n case ParticipantPickType.CombinationForecast:\n return this.getPermutations(2);\n case ParticipantPickType.CombinationTricast:\n return this.getPermutations(3);\n case ParticipantPickType.Forecast:\n case ParticipantPickType.Tricast:\n return 1;\n default:\n return 1;\n }\n }\n\n get selectedOptions(): IBetslipV2Option[] {\n return this.options;\n }\n\n static override isPick(pick: BetslipPick): pick is BetslipV2OptionMarketXCastRacePick {\n return pick instanceof BetslipV2OptionMarketXCastRacePick;\n }\n\n static fromJSON(value: IBetslipV2HorseRaceOptionMarketXCastPickStorage): BetslipV2OptionMarketXCastRacePick {\n const pick = new BetslipV2OptionMarketXCastRacePick();\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n constructor() {\n super();\n this.priceType = PriceType.NoPrice;\n }\n\n protected override initPropertiesFromJSON(value: IBetslipV2HorseRaceOptionMarketXCastPickStorage): void {\n super.initPropertiesFromJSON(value);\n RacePickProvider.fromJSON(this, this.fixture, value);\n this.market = value.market;\n this.betType = value.betType;\n this.betTypeAltTranslation = value.betTypeAltTranslation;\n\n this.options = value.options.map((o) => ({\n ...o,\n prices: cloneDeep(o.prices),\n }));\n }\n\n override toJSON(): IBetslipV2HorseRaceOptionMarketXCastPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n ...RacePickProvider.toJSON(this, base.fixture),\n pickSubType: PickSubType.HorseOptionMarketXCastRacePick,\n options: this.options,\n market: this.market,\n betType: this.betType,\n betTypeAltTranslation: this.betTypeAltTranslation,\n };\n }\n\n copy(): BetslipV2OptionMarketXCastRacePick {\n const storage = this.toJSON();\n\n return BetslipV2OptionMarketXCastRacePick.fromJSON(storage);\n }\n\n override get eventName(): SignedName {\n return this.leagueName;\n }\n\n override get competitionName(): SignedName {\n return this.leagueName;\n }\n\n get prices(): IPrice[] {\n return this.options[0].prices.filter((pr) => pr.marketId === this.market.id);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BetslipBetBuilderPick } from '../../../core/picks/betslip-bet-builder-pick';\nimport { BetslipGroupPick } from '../../../core/picks/betslip-group-pick';\nimport { BetslipPick } from '../../../core/picks/betslip-pick';\nimport { BetslipV1Pick } from '../../../core/picks/betslip-v1-pick';\nimport { BetslipV2StandardPick } from '../../../core/picks/betslip-v2-standard-pick';\nimport {\n BetslipGroupPickStorage,\n IBetslipBetBuilderPickStorage,\n IBetslipPickStorage,\n IBetslipV1PickStorage,\n IBetslipV2GolfWinParticipantPickStorage,\n IBetslipV2HorseRaceOptionMarketPickStorage,\n IBetslipV2HorseRaceOptionMarketXCastPickStorage,\n IBetslipV2HorseRaceParticipantPickStorage,\n IBetslipV2HorseRaceWinParticipantPickStorage,\n IBetslipV2OptionMarketPickStorage,\n PickSubType,\n} from '../../../core/picks/pick-models';\nimport { BetslipV2GolfWinParticipantPick } from '../../../core/picks/sport-specific/betslip-v2-golf-picks';\nimport {\n BetslipV2HorseRaceOptionMarketPick,\n BetslipV2HorseRaceWinParticipantPick,\n BetslipV2HorseRaceXCastPick,\n BetslipV2OptionMarketXCastRacePick,\n} from '../../../core/picks/sport-specific/betslip-v2-horse-race-picks';\n\nexport function loadPickFromJSON(value: IBetslipPickStorage) {\n switch (value.pickSubType) {\n case PickSubType.V1Pick: {\n return BetslipV1Pick.fromJSON(value as IBetslipV1PickStorage);\n }\n case PickSubType.HorseWinPick: {\n return BetslipV2HorseRaceWinParticipantPick.fromJSON(value as IBetslipV2HorseRaceWinParticipantPickStorage);\n }\n case PickSubType.HorseXCastPick: {\n return BetslipV2HorseRaceXCastPick.fromJSON(value as IBetslipV2HorseRaceParticipantPickStorage);\n }\n case PickSubType.HorseOptionMarketPick: {\n return BetslipV2HorseRaceOptionMarketPick.fromJSON(value as IBetslipV2HorseRaceOptionMarketPickStorage);\n }\n case PickSubType.GolfWinPick: {\n return BetslipV2GolfWinParticipantPick.fromJSON(value as IBetslipV2GolfWinParticipantPickStorage);\n }\n case PickSubType.BetBuilderPick: {\n return BetslipBetBuilderPick.fromJSON(value as IBetslipBetBuilderPickStorage);\n }\n case PickSubType.StandardV2Pick: {\n return BetslipV2StandardPick.fromJSON(value as IBetslipV2OptionMarketPickStorage);\n }\n case PickSubType.GroupedPicks: {\n return BetslipGroupPick.fromJSON(value as BetslipGroupPickStorage);\n }\n case PickSubType.HorseOptionMarketXCastRacePick: {\n return BetslipV2OptionMarketXCastRacePick.fromJSON(value as IBetslipV2HorseRaceOptionMarketXCastPickStorage);\n }\n\n default: {\n throw new Error('Unknown pick sub type');\n }\n }\n}\n@Injectable({ providedIn: 'root' })\nexport class BetslipPickStorageLoader {\n loadPick(value: IBetslipPickStorage): BetslipPick {\n return loadPickFromJSON(value);\n }\n}\n","import { BasePrice } from '@cds/betting-offer';\nimport { LegInfo, ResultState, SuspensionState } from '@cds/betting-offer/domain-specific/bet-builder';\nimport { OddsOperations, emptyOdds } from '@frontend/sports/odds/feature';\n\nimport { BetslipPick } from './picks/betslip-pick';\nimport { BetslipV1Pick } from './picks/betslip-v1-pick';\nimport { BetslipV2OptionMarketPick } from './picks/betslip-v2-option-market-pick';\nimport { IPrice, PriceType } from './picks/pick-models';\n\nexport const mapLegInfoToClientLegInfo = (legInformation: LegInfo[]): { clientLegId: string; isVisible: boolean; isClosed: boolean }[] => {\n return legInformation?.map((legInfo) => mapLegVisibility(legInfo)) ?? [];\n};\n\nexport const mapLegVisibility = (legInformation: LegInfo): { clientLegId: string; isVisible: boolean; isClosed: boolean } => ({\n isVisible: !isSuspended(legInformation.suspensionState),\n isClosed: legInformation.resultState !== ResultState.Open,\n clientLegId: legInformation.clientLegId,\n});\n\nexport const isSuspended = (suspensionState?: SuspensionState): boolean => suspensionState !== SuspensionState.MarketUnsuspended;\n\nexport const buildIPriceFromBasePrice = (price: BasePrice): IPrice => {\n try {\n return {\n nativeOdds: OddsOperations.createOdds(price),\n type: PriceType.Fixed,\n id: 1,\n isVisible: true,\n marketId: 1,\n };\n } catch {\n return buildIPriceFromBasePrice(emptyPrice());\n }\n};\n\nexport const emptyPrice = (): BasePrice => {\n return {\n americanOdds: emptyOdds.moneyline,\n odds: emptyOdds.decimals,\n denominator: emptyOdds.fractional.denominator,\n numerator: emptyOdds.fractional.numerator,\n };\n};\n\nexport const emptyIPrice = buildIPriceFromBasePrice(emptyPrice());\n\nexport const resolveClientLegId = (leg: BetslipPick) => {\n if (BetslipV1Pick.isPick(leg)) {\n return `1:${leg.event.id}:${leg.market.id}:${leg.optionId}`;\n }\n if (BetslipV2OptionMarketPick.isPick(leg)) {\n return `${leg.fixture.fixtureId}:${leg.market.id}:${leg.optionId}`;\n }\n\n return '';\n};\n","export interface GroupLegState {\n clientLegId: string;\n isNoncombinable: boolean;\n isClosed: boolean;\n isVisible: boolean;\n}\n\nexport function defaultLegState(): GroupLegState {\n return {\n clientLegId: '',\n isNoncombinable: false,\n isClosed: false,\n isVisible: true,\n };\n}\n","import { FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\n\nimport { loadPickFromJSON } from '../../modules/picks/services/betslip-pick-storage-loader';\nimport { emptyIPrice, resolveClientLegId } from '../group-pick-helpers';\nimport { BetslipGroupInformation } from '../groups/betslip-group-information';\nimport { BetslipPick } from './betslip-pick';\nimport { BetslipV1Pick } from './betslip-v1-pick';\nimport { BetslipV2Pick } from './betslip-v2-pick';\nimport { GroupLegState, defaultLegState } from './group-leg-state';\nimport { GroupPickId, PickId } from './pick-id';\nimport { BetslipGroupPickStorage, IPrice, PickOddsState, PickSubType, PriceType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\ninterface GroupPickInputs {\n sgpId: string;\n price: IPrice | null;\n legsInfo: { clientLegId: string; isVisible: boolean; isClosed: boolean }[];\n isSuspended: boolean;\n}\n\nexport abstract class BaseBetslipGroupPick extends BetslipPick {\n override id: GroupPickId;\n protected legs: BetslipPick[];\n //unique value provided for the group combination by the provider that can be used by clients for subscribing to price updates\n protected _sgpId: string | null;\n protected _legsState: Record = {};\n protected price: IPrice;\n isSuspended: boolean; // the whole combination can be suspended\n protected hasEmptyPrice: boolean;\n\n override get groupInfo(): BetslipGroupInformation {\n return this._groupInfo!;\n }\n\n static isPick(pick: BetslipPick): pick is BaseBetslipGroupPick {\n return pick instanceof BaseBetslipGroupPick;\n }\n\n get sgpId(): string | null {\n return this._sgpId;\n }\n\n getLegs(): BetslipPick[] {\n return this.legs;\n }\n\n get legsState(): Record {\n return this._legsState;\n }\n\n override get eventParticipants(): EventParticipant[] | undefined {\n return this.legs[0].eventParticipants;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return this.legs[0].eventViewType;\n }\n\n hasPick(id: PickId): boolean {\n return this.legs.some((p) => p.id.toString() === id.toString());\n }\n\n legIsNoncombinable(pickId: PickId): boolean {\n const { isNoncombinable } = this._legsState[pickId.toString()];\n\n return isNoncombinable;\n }\n\n getOddsStateForLegId(legId: PickId): PickOddsState {\n const leg = this.legs.find((l) => l.id === legId);\n\n if (!leg) return PickOddsState.Closed;\n\n return this.getOddsStateForLeg(leg);\n }\n\n private getOddsStateForLeg(leg: BetslipPick): PickOddsState {\n const legOddsState = leg.oddsState;\n const { isClosed, isVisible } = this._legsState[leg.id.toString()];\n\n if (isClosed || legOddsState === PickOddsState.Closed) {\n return PickOddsState.Closed;\n }\n\n if (!isVisible || legOddsState === PickOddsState.Locked) {\n return PickOddsState.Locked;\n }\n\n return PickOddsState.Open;\n }\n\n protected hasNonOpenLegs(): boolean {\n return this.legs.some((leg) => this.getOddsStateForLeg(leg) !== PickOddsState.Open);\n }\n\n groupHasUncombinableLeg(): boolean {\n return Object.values(this._legsState).some((t) => t.isNoncombinable);\n }\n\n protected isPriceVisible(): boolean {\n return true;\n }\n\n isMarketVisible(): boolean {\n return true;\n }\n\n get isLive(): boolean {\n return this.legs.some((leg) => leg.isLive);\n }\n\n get prices(): IPrice[] {\n return [this.price];\n }\n\n //Overriding this because we want to show an invalid price in case there are any nonOpen legs in a group.\n //The price returned from the price call can still be a valid one.\n override get currentPrice(): IPrice | undefined {\n return this.hasEmptyPrice ? emptyIPrice : this.prices[0];\n }\n\n //We still want to run our price validators on the 'actual' price\n get actualGroupPrice(): IPrice | undefined {\n return this.prices[0];\n }\n\n get eventName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.eventName;\n }\n\n get marketName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n throw new Error(`Grouped picks market name getter shouldn't be invoked!`);\n }\n\n get optionName(): SignedName {\n throw new Error(`Grouped picks option name getter shouldn't be invoked!`);\n }\n\n get sportId(): SportConstant {\n return this.legs[0]!.sportId;\n }\n\n //Commented this particular code as AngstromSGP is not PROD-ready, It will be enabled,So GroupPick will not be initiated\n // get partitionId(): number | null {\n // //TO CHECK: whether all picks within the group belong to the same event, so it's a safe assumption\n // const fixtureId = this.tryGetFixtureId;\n // if (this.tryGetFixtureId === '') {\n // return null;\n // } else {\n // return getPartition(fixtureId);\n // }\n // }\n\n get partitionId(): number | undefined {\n throw new Error('Method not implemented.');\n }\n\n get isVirtual(): boolean {\n return this.legs.reduce((acc, curr) => acc && curr.isVirtual, true);\n }\n\n get eventDate(): Date {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.eventDate;\n }\n\n get regionName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.regionName;\n }\n\n get competitionName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.competitionName;\n }\n\n get competitionId(): number {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.competitionId;\n }\n\n get sportName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.sportName;\n }\n\n get leagueName(): SignedName {\n //all picks within the group belong to the same event, so it's a safe assumption\n return this.legs[0]!.leagueName;\n }\n\n get tryGetEventId(): string {\n const v1PickWithinTheGroup = this.legs.find((p) => p instanceof BetslipV1Pick);\n if (v1PickWithinTheGroup) {\n return (v1PickWithinTheGroup as BetslipV1Pick).event.id;\n }\n\n return '';\n }\n\n get tryGetFixtureId(): string {\n const v2PickWithinTheGroup = this.legs.find((p) => p instanceof BetslipV2Pick);\n\n if (v2PickWithinTheGroup) {\n return (v2PickWithinTheGroup as BetslipV2Pick).fixture.fixtureId;\n }\n\n return '';\n }\n\n get eventId(): string {\n return this.tryGetEventId || this.tryGetFixtureId;\n }\n\n protected override initPropertiesFromJSON(value: BetslipGroupPickStorage): void {\n super.initPropertiesFromJSON(value);\n this.price = value.price;\n this._sgpId = value.SGPId;\n this._legsState = value.legsState;\n }\n\n protected initLegState(legInfos: { clientLegId: string; isVisible: boolean; isClosed: boolean }[]) {\n this._legsState = this.legs.reduce>((acc, leg) => {\n const clientLegId = resolveClientLegId(leg);\n const legInfo = legInfos.find((li) => li.clientLegId === clientLegId) ?? defaultLegState();\n acc[leg.id.toString()] = {\n clientLegId, // in case the defaultLegState was used we don't have a clientLegId\n isVisible: legInfo.isVisible,\n isClosed: legInfo.isClosed,\n isNoncombinable: !leg.market.isBetBuilderEnabled,\n };\n\n return acc;\n }, {});\n }\n\n legExist(id: PickId): boolean {\n return !!this.legs.find((t) => t.id.toString() === id.toString());\n }\n\n abstract addPick(addPickInput: GroupPickInputs & { pick: BetslipPick }): BaseBetslipGroupPick;\n abstract addPicks(addPicksInput: GroupPickInputs & { picks: BetslipPick[] }): BaseBetslipGroupPick;\n abstract removePicks(removePickInput: GroupPickInputs & { ids: PickId[] }): BetslipPick;\n abstract updatePicks(picks: BetslipPick[]): BaseBetslipGroupPick;\n\n setPrice(price: IPrice): void {\n this.price = price;\n }\n\n override isOpen(): boolean {\n return super.isOpen();\n }\n}\n\nexport class BetslipGroupPick extends BaseBetslipGroupPick {\n constructor(input: GroupPickInputs & { groupInfo: BetslipGroupInformation; picks: BetslipPick[] }) {\n super();\n if (!input.groupInfo?.groupId) {\n throw new Error(`Can't init a group with empty group info!`);\n }\n this.priceType = PriceType.Fixed;\n this.id = new GroupPickId(input.groupInfo);\n this.setGroupInfo(input.groupInfo);\n this._sgpId = input.sgpId;\n this.legs = input.picks;\n if (input.price) {\n this.price = input.price;\n }\n this.acceptedPrice = { price: input.price, isManuallyAccepted: true };\n this.initLegState(input.legsInfo);\n this.subscriptionContext = input.sgpId ? [input.sgpId] : [];\n this.isSuspended = input.isSuspended;\n this.hasEmptyPrice = this.hasNonOpenLegs();\n }\n\n addPick(addPickInput: GroupPickInputs & { pick: BetslipPick }): BaseBetslipGroupPick {\n if (!!addPickInput.pick.groupInfo && addPickInput.pick.groupInfo.groupId !== this.groupInfo.groupId) {\n throw new Error(`Adding pick to a group failed, can't add a pick to a group with different groupId`);\n }\n\n if (this.legExist(addPickInput.pick.id)) {\n throw new Error(`Leg already exists in the group`);\n }\n const group = this.toJSON();\n\n const { sgpId, price, isSuspended, legsInfo } = addPickInput;\n\n return new BetslipGroupPick({\n groupInfo: this._groupInfo!,\n sgpId,\n price,\n isSuspended,\n legsInfo,\n picks: [...group.picks.map((t) => loadPickFromJSON(t)), addPickInput.pick],\n });\n }\n\n addPicks(addPicksInput: GroupPickInputs & { picks: BetslipPick[] }): BaseBetslipGroupPick {\n if (!!addPicksInput.picks[0].groupInfo && addPicksInput.picks[0].groupInfo.groupId !== this.groupInfo.groupId) {\n throw new Error(`Adding pick to a group failed, can't add a pick to a group with different group fixture`);\n }\n\n if (addPicksInput.picks.some((pick) => this.legExist(pick.id))) {\n throw new Error(`Leg already exists in the group`);\n }\n const group = this.toJSON();\n\n const { sgpId, price, isSuspended, legsInfo } = addPicksInput;\n\n return new BetslipGroupPick({\n groupInfo: this._groupInfo!,\n picks: [...group.picks.map((t) => loadPickFromJSON(t)), ...addPicksInput.picks],\n sgpId,\n price,\n legsInfo,\n isSuspended,\n });\n }\n\n removePicks(removePicksInput: GroupPickInputs & { ids: PickId[] }): BetslipPick {\n if (!removePicksInput.ids.every((inputPick) => this.legs.find((p) => p.id.toString() === inputPick.toString()))) {\n throw new Error(`Removing picks failed, at least one pick doesn't belong to the specified group`);\n }\n //if only 1 pick remains in the group, break the group down, and return the remaining pick as a single pick\n if (this.legs.length === removePicksInput.ids.length + 1) {\n const remainingLeg = this.legs.find((l) => !removePicksInput.ids.map((pid) => pid.toString()).includes(l.id.toString()));\n\n if (!remainingLeg) {\n throw new Error(`Removing picks failed, remaining leg was not found`);\n }\n\n return remainingLeg;\n }\n\n const group = this.toJSON();\n group.picks = group.picks.filter((p) => !removePicksInput.ids.some((inputPick) => p.id.toString() === inputPick.toString()));\n const { sgpId, price, isSuspended, legsInfo } = removePicksInput;\n\n return new BetslipGroupPick({\n groupInfo: group.groupInfo!,\n picks: group.picks.map((t) => loadPickFromJSON(t)),\n sgpId,\n price,\n legsInfo,\n isSuspended,\n });\n }\n\n updatePicks(picks: BetslipPick[]): BaseBetslipGroupPick {\n return new BetslipGroupPick({\n groupInfo: this._groupInfo!,\n sgpId: this._sgpId!,\n picks,\n price: this.price,\n legsInfo: Object.values(this._legsState),\n isSuspended: this.isSuspended,\n });\n }\n\n copy(): BetslipGroupPick {\n const copy = this.toJSON();\n\n return BetslipGroupPick.fromJSON(copy);\n }\n\n static fromJSON(value: BetslipGroupPickStorage): BetslipGroupPick {\n if (!value.groupInfo) {\n throw new Error(`Failed instantiating group from storage value, missing group info!`);\n }\n const pick = new BetslipGroupPick({\n groupInfo: value.groupInfo,\n sgpId: value.SGPId,\n picks: value.picks.map((t) => loadPickFromJSON(t)),\n price: value.price,\n legsInfo: Object.values(value.legsState).map((legState) => ({\n clientLegId: legState.clientLegId,\n isVisible: legState.isVisible,\n isClosed: legState.isClosed,\n })),\n isSuspended: value.isSuspended,\n });\n pick.initPropertiesFromJSON(value);\n\n return pick;\n }\n\n override toJSON(): BetslipGroupPickStorage {\n const base = super.toJSON();\n\n return {\n ...base,\n picks: this.legs.map((p) => p.toJSON()),\n price: this.price,\n SGPId: this._sgpId ?? '',\n legsState: this._legsState,\n pickSubType: PickSubType.GroupedPicks,\n isSuspended: this.isSuspended,\n };\n }\n}\n","import { FixtureViewType } from '@cds/betting-offer';\nimport { EventParticipant } from '@frontend/sports/betting-offer/feature/model';\n\nimport { BetslipPick } from './betslip-pick';\nimport { PickId } from './pick-id';\nimport { IPickTracking, IPrice, PriceType } from './pick-models';\nimport { SignedName } from './signed-name.model';\n\nexport class BetslipUnknownPick extends BetslipPick {\n readonly legs: BetslipPick[];\n static isPick(pick: BetslipPick): pick is BetslipUnknownPick {\n return pick instanceof BetslipUnknownPick;\n }\n\n constructor(pickId: PickId, tracking?: IPickTracking, legs?: BetslipPick[]) {\n super();\n this.id = pickId;\n this.market = {\n id: 0,\n isVisible: false,\n isBetBuilderEnabled: false,\n };\n this.priceType = PriceType.NoPrice;\n this.acceptedPrice = {\n price: null,\n isManuallyAccepted: false,\n };\n this.isAvailable = false;\n this.tracking = tracking || { source: '' };\n this.legs = legs ?? [];\n }\n\n // this should not be used, we have the 'legs' field. It exists only because the GroupPicks has a similar function,\n // and it's convenient to combine if statements. IMO GroupPicks should also ditch it and use a readonly field\n getLegs(): BetslipPick[] {\n return this.legs;\n }\n\n override copy(): BetslipUnknownPick {\n const base = super.toJSON();\n\n const pick = new BetslipUnknownPick(PickId.Empty(), void 0, this.legs);\n pick.initPropertiesFromJSON(base);\n\n return pick;\n }\n\n override get eventParticipants(): EventParticipant[] | undefined {\n return undefined;\n }\n\n override get eventViewType(): FixtureViewType | undefined {\n return undefined;\n }\n\n override get eventName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get isLive(): boolean {\n return false;\n }\n\n override isMarketVisible(): boolean {\n return false;\n }\n\n protected override isPriceVisible(): boolean {\n return false;\n }\n\n override get isVirtual(): boolean {\n return false;\n }\n\n override get marketName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get eventDate(): Date {\n return new Date();\n }\n\n override get regionName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get competitionName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get competitionId(): number {\n return 0;\n }\n\n override get leagueName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get optionName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get prices(): IPrice[] {\n return [];\n }\n\n override get sportName(): SignedName {\n return {\n name: '',\n signature: '',\n };\n }\n\n override get partitionId(): number | undefined {\n return undefined;\n }\n\n override get sportId(): number {\n return 0;\n }\n}\n","import { uniqBy } from 'lodash-es';\n\nimport { BetslipBetBuilderPick } from './picks/betslip-bet-builder-pick';\nimport { BaseBetslipGroupPick } from './picks/betslip-group-pick';\nimport { BetslipPick } from './picks/betslip-pick';\nimport { BetslipUnknownPick } from './picks/betslip-unknown-pick';\nimport { BetslipV2OptionMarketPick } from './picks/betslip-v2-option-market-pick';\nimport { BetBuilderPickId, GroupPickId, PickId } from './picks/pick-id';\n\nexport function getPicksCount(picks: BetslipPick[]): number {\n return picks.flatMap((pick) => (BaseBetslipGroupPick.isPick(pick) || isUnknownPickWithLegs(pick) ? pick.getLegs() : pick)).length;\n}\n\nexport function isBetBuilderPick(pick: BetslipPick): pick is BetslipBetBuilderPick | BaseBetslipGroupPick {\n return BetslipBetBuilderPick.isPick(pick) || BaseBetslipGroupPick.isPick(pick);\n}\n\nexport function isBetslipBetBuilderPick(pick: BetslipPick): pick is BetslipBetBuilderPick {\n return BetslipBetBuilderPick.isPick(pick);\n}\n\nexport function isBaseBetslipGroupPick(pick: BetslipPick): pick is BaseBetslipGroupPick {\n return BaseBetslipGroupPick.isPick(pick);\n}\n\nexport function isBetBuilderPickId(pickId: PickId): pickId is BetBuilderPickId | GroupPickId {\n return BetBuilderPickId.isId(pickId) || GroupPickId.isId(pickId);\n}\n\nexport function getOptionNameFromBetslipPick(pick: BetslipPick) {\n return pick.marketName.name + ' - ' + pick.optionName.name;\n}\n\nexport function getLegsCount(picks: BetslipPick[]): number {\n const flattenedPicks = uniqBy(flattenGroupPicksIfAny(picks), (pick) => pick.id.toString());\n\n return flattenedPicks.reduce((acc, curr) => {\n if (BetslipBetBuilderPick.isPick(curr)) {\n return acc + curr.getLegCount();\n }\n\n return acc + 1;\n }, 0);\n}\n\nexport function flattenGroupPicksIfAny(picks: BetslipPick[]): BetslipPick[] {\n return picks.flatMap((p) => (BaseBetslipGroupPick.isPick(p) || isUnknownPickWithLegs(p) ? p.getLegs() : p));\n}\n\n// Expands the legs for group picks. Keeps the groups in the list. Unique check added in case we're calling this method on a list multiple times\nexport function flattenPicks(picks: BetslipPick[]): BetslipPick[] {\n return uniqBy(\n picks.flatMap((p) => (BaseBetslipGroupPick.isPick(p) || isUnknownPickWithLegs(p) ? [p, ...p.getLegs()] : p)),\n (pick) => pick.id.toString(),\n );\n}\n\n// Checks if picks qualify as valid one pick combo. Currently, 2 cases are supported:\n// - Group picks(e.g. Angstrom bet builders)\n// - BetBuilder picks(eg. Sportcast) ONLY in case the feature is enabled\nexport const isValidOnePickCombo = (picks: BetslipPick[], isSportcastAsComboEnabled: boolean) =>\n picks.length === 1 && (BaseBetslipGroupPick.isPick(picks[0]) || (isSportcastAsComboEnabled && BetslipBetBuilderPick.isPick(picks[0])));\n\n// we need the { legs: { 0: BetslipPick } } restriction because if we have only the pick is BetslipUnknownPick\n// then TS will narrow the result type to BetslipUnknownPick, although we expect just a subclass of BetslipUnknownPick\nexport function isUnknownPickWithLegs(pick: BetslipPick): pick is BetslipUnknownPick & { legs: { 0: BetslipPick } } {\n return BetslipUnknownPick.isPick(pick) && pick.legs.length > 0;\n}\n\nexport function getOptionIsDraw(pick: BetslipPick): boolean | undefined {\n return pick instanceof BetslipV2OptionMarketPick ? (pick as BetslipV2OptionMarketPick).option.isDraw : undefined;\n}\n","export enum BetslipType {\n Single = 'SINGLE',\n Combo = 'COMBO',\n Teaser = 'TEASER',\n System = 'SYSTEM',\n EditBet = 'EDIT_MY_BET',\n BetBuilder = 'BET_BUILDER',\n}\n","import { EdsPromoToken, PromoToken } from '@bpos/common/bet-placement';\nimport { Decimal } from 'decimal.js';\n\nimport { BetslipPick } from '../../core/picks/betslip-pick';\nimport { IBasePrice, PickOddsState } from '../../core/picks/pick-models';\nimport { SlipId } from '../../modules/bet-generation/models';\nimport { SlipType } from '../../modules/bet-generation/slip-type';\n\nexport enum OverAskFlowState {\n None, // OverAsk is not active\n Pending, // User is waiting for trader response,\n Review, // User is reviewing trader offer.\n}\n\nexport enum OverAskRejectReason {\n CancelWaiting = 1,\n UserRejectOffer = 2,\n TraderRejectOffer = 3,\n AcceptOfferTimeout = 4,\n BettingOfferNotAvailable = 5,\n PlaceBetFailed = 6,\n TechnicalError = 7,\n ArcUserProfileRestriction = 8,\n}\n\nexport enum OverAskBetslipError {\n OfferExpired = 'ErrorOfferExpired',\n OfferRejected = 'ErrorOfferRejected',\n FlowFailed = 'ErrorFlowFailed',\n PlaceBetFailed = 'ErrorPlaceBetFailed',\n MaximumWinOfBetExceeded = 'ErrorMaximumWinOfBetExceeded',\n}\n\nexport enum OverAskMarketTypeChange {\n Win = 'WIN',\n EachWay = 'EW',\n}\n\nexport interface OverAskPickChanges {\n price?: IBasePrice; // Change in the price\n marketType?: OverAskMarketTypeChange; // Change in market type.\n}\n\nexport interface OverAskBetChange {\n stake?: Decimal; // Change in the bet stake\n}\n\nexport interface OverAskPick {\n index: number;\n pick: BetslipPick;\n isEachWay: boolean;\n isBanker: boolean;\n price: IBasePrice;\n oddsState: PickOddsState;\n changes: OverAskPickChanges;\n}\n\nexport interface OverAskBet {\n slipId: SlipId;\n index: number;\n stake: Decimal;\n type: SlipType;\n isRemoved: boolean;\n picks: OverAskPick[];\n changes: OverAskBetChange;\n promoTokens: PromoToken[];\n edsPromoTokens: EdsPromoToken[];\n betCount?: number;\n}\n\nexport interface IOverAskMessages {\n acceptChanges: string;\n acceptChangesAndPlaceBet: string;\n cancel: string;\n newOdds: string;\n stake: string;\n newStake: string;\n pendingRejectDialogTitle: string;\n pendingBetPlacementStatus: string;\n pendingCheckingYourBet: string;\n reviewInfoMessage: string;\n rejectDialogCancelButton: string;\n pendingRejectDialogContent: string;\n pendingRejectDialogDismissButton: string;\n pendingTitle: string;\n reviewBadgeTitle: string;\n reviewLimitWarning: string;\n reviewInPlayBadgeTitle: string;\n reviewInPlayInfoMessage: string;\n reviewOfferExpires: string;\n reviewRejectDialogTitle: string;\n reviewRejectDialogContent: string;\n reviewRejectDialogDismissButton: string;\n summaryOfferChanges: string;\n removed: string;\n undo: string;\n totalOdds: string;\n totalStake: string;\n possibleWinnings: string;\n possibleWinningsNet: string;\n tax: string;\n maxReturn: string;\n ErrorOfferRejected: string;\n ErrorOfferExpired: string;\n ErrorOfferRejectedTitle: string;\n ErrorOfferExpiredTitle: string;\n ErrorFlowFailed: string;\n ErrorFlowFailedTitle: string;\n ErrorMaximumWinOfBetExceeded: string;\n ErrorOfferZeroStakeHint: string;\n betslipLockedToastMessage: string;\n winMarketAbbr: string;\n eachWayAbbr: string;\n stakeChangeHeader: string;\n stakeChangeMsg: string;\n stakeChangeToggle: string;\n editStakeChangeDesktopUrl: string;\n editStakeChangeMobileUrl: string;\n}\n","/**\n * We should convert picks from instance objects to plain objects and use these helpers instead of methods or properties of the pick.\n * We need to do this, in order to keep plain objects in the betslip state and to apply easily updates and mutate the object as well serializing it.\n */\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { CalculatedOdds, Fraction, OddsConverter, OddsOperations, emptyCalculatedOdds } from '@frontend/sports/odds/feature';\nimport { Decimal } from 'decimal.js';\n\nimport { IBetslipState } from '../../../base/store/state';\nimport { BetslipType } from '../../../core/betslip-type';\nimport { BetslipBetBuilderPick } from '../../../core/picks/betslip-bet-builder-pick';\nimport { BetslipPick } from '../../../core/picks/betslip-pick';\nimport { BetslipV1Pick } from '../../../core/picks/betslip-v1-pick';\nimport { BetslipV2OptionMarketPick } from '../../../core/picks/betslip-v2-option-market-pick';\nimport { BetslipV2ParticipantPick } from '../../../core/picks/betslip-v2-participant-pick';\nimport { BetslipV2Pick } from '../../../core/picks/betslip-v2-pick';\nimport { BetslipV2StandardPick } from '../../../core/picks/betslip-v2-standard-pick';\nimport { BetslipV2WinParticipantPick } from '../../../core/picks/betslip-v2-win-participant-pick';\nimport { PickId } from '../../../core/picks/pick-id';\nimport {\n HorseRaceParticipantPickType,\n HorseRacePickType,\n IBasePrice,\n IPlaceTerms,\n ParticipantPickType,\n PickOddsState,\n PickType,\n PriceType,\n} from '../../../core/picks/pick-models';\nimport {\n BetslipV2HorseRaceOptionMarketPick,\n BetslipV2HorseRaceWinParticipantPick,\n BetslipV2HorseRaceXCastPick,\n BetslipV2OptionMarketXCastRacePick,\n} from '../../../core/picks/sport-specific/betslip-v2-horse-race-picks';\nimport { OverAskFlowState, OverAskMarketTypeChange } from '../../../model/over-ask/over-ask';\n\n/**\n * Check BetslipV2WinParticipantPick::getEachWayOdds\n *\n * @param price\n * @param placeTerms\n */\nexport function getEachWayOdds(price: IBasePrice, placeTerms: IPlaceTerms): CalculatedOdds {\n if (price.type === PriceType.Fixed && OddsOperations.isOddsValid(price.nativeOdds)) {\n const placeTermsFactor = new Fraction(placeTerms.numerator, placeTerms.denominator);\n\n const euOdds = OddsConverter.decimalToEachWay(new Decimal(price.nativeOdds.decimals), placeTermsFactor);\n const ukOdds = OddsConverter.fractionToEachWay(Fraction.fromJSON(price.nativeOdds.fractional), placeTermsFactor);\n const usOdds = OddsConverter.usToEachWay(new Decimal(price.nativeOdds.moneyline), placeTermsFactor);\n\n return {\n decimals: euOdds,\n fractional: ukOdds,\n moneyline: usOdds,\n };\n } else {\n return emptyCalculatedOdds;\n }\n}\n\nexport const isPickEachWayCapable = function (pick: BetslipPick): pick is BetslipV2WinParticipantPick | BetslipV2OptionMarketPick {\n return (BetslipV2WinParticipantPick.isPick(pick) || BetslipV2OptionMarketPick.isPick(pick)) && pick.isEachWay;\n};\n\nconst getPickEachWayTerms = function (pick: BetslipPick): IPlaceTerms | null {\n if (isPickEachWayCapable(pick)) {\n return pick.market.placeTerms;\n }\n\n return null;\n};\n\nexport function getPickEachWayInfo(pick: BetslipPick): { placeTerms: IPlaceTerms } | null {\n const placeTerms = getPickEachWayTerms(pick);\n\n return placeTerms ? { placeTerms } : null;\n}\n\nexport function getPickPrice(pick: BetslipPick): IBasePrice | null {\n if (pick.oddsState !== PickOddsState.Open) {\n return null;\n }\n const currentPrice = pick.currentPrice;\n if (currentPrice) {\n const { type, nativeOdds } = currentPrice;\n\n return { type, nativeOdds: { ...nativeOdds } };\n }\n\n return null;\n}\n\nexport function getPickPriceIds(pick: BetslipPick): number[] {\n if (BetslipV2ParticipantPick.isPick(pick) && pick.participants.length > 1) {\n return pick.prices.map((pr) => pr.id); // When we have pick with multiple participants return their price ids\n }\n const price = pick.currentPrice;\n if (price) {\n return [price.id];\n }\n\n return [];\n}\n\nexport function getSku(pick: BetslipPick): string {\n if (pick instanceof BetslipV2StandardPick) {\n const sportPick = pick;\n\n return [sportPick.sportId, sportPick.leagueId, sportPick.fixture.fixtureId, sportPick.option.id].join('-');\n }\n\n if (pick instanceof BetslipV1Pick) {\n const sportPick = pick;\n\n return [sportPick.sportId, sportPick.league.id, sportPick.event.id, sportPick.option.id].join('-');\n }\n\n if (pick instanceof BetslipBetBuilderPick) {\n const betBuilderPick = pick;\n\n return [betBuilderPick.sportId, betBuilderPick.leagueId, betBuilderPick.eventId, betBuilderPick.option.id].join('-');\n }\n\n if (pick instanceof BetslipV2ParticipantPick) {\n const racePick = pick;\n\n return [\n racePick.sportId,\n racePick.fixture.league ? racePick.leagueId : 0,\n racePick.fixture.fixtureId,\n (racePick.participants && racePick.participants.map((p) => p.fixtureParticipantId).join('_')) || racePick.id,\n ].join('-');\n }\n\n return '-';\n}\n\nexport function isEachWay(pickId: PickId, context: IBetslipState): boolean {\n if (context.overAskState.flowState !== OverAskFlowState.None) {\n const pick = context.overAskState.bets.flatMap((b) => b.picks).find((p) => p.pick.id.isEqual(pickId))!;\n\n if (pick.changes.marketType) {\n return pick.changes.marketType === OverAskMarketTypeChange.EachWay;\n }\n\n return pick.isEachWay;\n }\n\n switch (context.types.base.currentSelectedType) {\n case BetslipType.Single:\n return context.types.singleBet.picks[pickId.toString()].isEachWay;\n case BetslipType.Combo:\n return context.types.comboBet.isEachWay;\n case BetslipType.System:\n return context.types.systemBet.isEachWay;\n case BetslipType.EditBet:\n return false;\n default:\n throw new Error('No betslip type selected');\n }\n}\n\nexport function isSportPick(pick: BetslipPick): boolean {\n if (BetslipBetBuilderPick.isPick(pick)) {\n return false;\n }\n\n if (BetslipV2Pick.isPick(pick)) {\n return !isRacePick(pick);\n }\n\n return true;\n}\n\nexport function isRacePick(pick: BetslipV2Pick): pick is HorseRacePickType {\n return pick.fixture.sportId === SportConstant.Horses || pick.fixture.sportId === SportConstant.Greyhounds;\n}\n\nexport function isBOGRacePick(pick: BetslipV2Pick): pick is HorseRacePickType {\n return (\n (pick.fixture.sportId === SportConstant.Horses && pick instanceof BetslipV2ParticipantPick) ||\n (pick instanceof BetslipV2HorseRaceOptionMarketPick &&\n pick.pickType === ParticipantPickType.Win &&\n (pick.isStartingPriceAvailable() || pick.isFixedPriceAvailable())) ||\n pick.fixture.sportId === SportConstant.Greyhounds\n );\n}\n\nexport function isRaceParticipantPick(pick: BetslipV2Pick): pick is HorseRaceParticipantPickType {\n return pick.fixture.sportId === SportConstant.Horses && pick.id.getPickType() === PickType.V2ParticipantPick;\n}\n\nexport function isXCastPick(pick: BetslipPick) {\n return BetslipV2HorseRaceXCastPick.isPick(pick) || BetslipV2OptionMarketXCastRacePick.isPick(pick);\n}\n\nexport function isStartingPriceSelected(pick: BetslipPick): boolean {\n return (\n (pick instanceof BetslipV2HorseRaceWinParticipantPick || pick instanceof BetslipV2OptionMarketPick) &&\n pick.currentPrice?.type === PriceType.StartingPrice\n );\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { betslipSelector } from '../../base/store/selectors';\nimport { BetBuilderPickId } from '../../core/picks/pick-id';\nimport { flattenPicks, getLegsCount, getPicksCount, isBetBuilderPick } from '../../core/utils';\nimport { isPickEachWayCapable } from './services/betslip-pick-helpers';\n\nexport const betslipPickStateSelector = createSelector(betslipSelector, (state) => state.picks);\nexport const betslipPicksListSelector = createSelector(betslipPickStateSelector, (state) => state.pickList);\nexport const selectBetslipFlattenedPicksList = createSelector(betslipPicksListSelector, (pickList) => flattenPicks(pickList));\nexport const betslipPicksListCountSelector = createSelector(betslipPicksListSelector, (pickList) => getPicksCount(pickList));\nexport const betslipPicksListCountSelectorIncludeBetbuilderLegs = createSelector(betslipPicksListSelector, (pickList) => getLegsCount(pickList));\nexport const betslipPickIdsSelector = createSelector(betslipPickStateSelector, (state) => state.pickList.flatMap((p) => p.id));\nexport const betslipPicksUiSelector = createSelector(betslipPickStateSelector, (state) => state.ui);\n\nexport const pickWithErrorSelector = createSelector(betslipPickStateSelector, (state) => state.lastPickError);\n\nexport const emptyBetslipPicksListSelector = createSelector(betslipPicksListSelector, (state) => !state.length);\nexport const selectHasEachWayPick = createSelector(betslipPicksListSelector, (picks) => picks.some(isPickEachWayCapable));\n\nexport const selectBetBuilderPicksInfo = createSelector(betslipPicksListSelector, betslipPicksListCountSelector, (picks, betslipPicksCount) => {\n const betBuilderPicks = picks.filter((pick) => BetBuilderPickId.isId(pick.id));\n\n return {\n hasOnlyBetBuilderPicks: betslipPicksCount === betBuilderPicks.length,\n betBuilderPicksCount: betBuilderPicks.length,\n nonBetBuilderPicksCount: betslipPicksCount - betBuilderPicks.length,\n picks: betBuilderPicks,\n };\n});\nexport const selectPicksCountInfo = createSelector(betslipPicksListSelector, betslipPicksListCountSelector, (picks, betslipPicksCount) => {\n const betBuilderPicks = picks.filter((pick) => BetBuilderPickId.isId(pick.id));\n\n return {\n hasOnlyBetBuilderPicks: betslipPicksCount === betBuilderPicks.length,\n betBuilderPicksCount: betBuilderPicks.length,\n nonBetBuilderPicksCount: betslipPicksCount - betBuilderPicks.length,\n };\n});\n\nexport const selectNonBetBuilderPicks = createSelector(selectBetslipFlattenedPicksList, (picks) => picks.filter((pick) => !isBetBuilderPick(pick)));\n\nexport const selectBetslipNonBetBuilderPicksCount = createSelector(selectNonBetBuilderPicks, (pickList) => pickList.length);\n","import { createSelector } from '@ngrx/store';\n\nimport { betslipSelector, selectIsLinearBetslip } from '../../base/store/selectors';\nimport { BetslipType } from '../../core/betslip-type';\nimport { PickId } from '../../core/picks/pick-id';\nimport { selectBetBuilderPicksInfo, selectBetslipFlattenedPicksList, selectNonBetBuilderPicks } from '../picks/selectors';\n\nexport const betslipTypeStateSelector = createSelector(betslipSelector, (b) => b.types);\n\nexport const betslipTabsStateSelector = createSelector(\n betslipTypeStateSelector,\n selectBetBuilderPicksInfo,\n (betslipTypeState, betBuilderPicksState) => ({ betslipTypeState, betBuilderPicksState }),\n);\nexport const editBetStateSelector = createSelector(betslipTypeStateSelector, (state) => state.editBet);\nexport const editBetPicksListSelector = createSelector(betslipSelector, (state) => state.types.editBet.picks.pickList);\nexport const editBetPickStateSelector = createSelector(betslipTypeStateSelector, (state) => state.editBet.picks.pickState);\n\nexport const editBetAddedPicksListSelector = createSelector(betslipSelector, (state) => state.types.editBet.addPicksState.pickList);\n\nexport const editBetPickSelectorFactory = (pickId: PickId) =>\n createSelector(editBetPicksListSelector, editBetAddedPicksListSelector, (pickList, pickAddedList) =>\n [...pickList, ...pickAddedList].find((p) => p.id['id'].toString() === pickId.toString()),\n );\n\nexport const betslipSelectedTypeStateSelector = createSelector(betslipTypeStateSelector, (b) => b.base.currentSelectedType);\n\nexport const selectIsSingleBetSelected = createSelector(betslipSelectedTypeStateSelector, (selected) => selected === BetslipType.Single);\nexport const selectSinglePicksState = createSelector(betslipTypeStateSelector, (b) => b.singleBet);\nexport const selectComboPicksState = createSelector(betslipTypeStateSelector, (b) => b.comboBet);\nexport const selectSystemPicksState = createSelector(betslipTypeStateSelector, (b) => b.systemBet);\nexport const selectBetBuilderPicksState = createSelector(betslipTypeStateSelector, (b) => b.betBuilder);\nexport const selectTeaserPicksState = createSelector(betslipTypeStateSelector, (b) => b.teaserBet);\n\nexport const selectSingleBetPicks = createSelector(\n selectSinglePicksState,\n selectBetslipFlattenedPicksList,\n selectNonBetBuilderPicks,\n selectIsLinearBetslip,\n (singleBet, picksList, nonBetBuilderPickList, isLinear) => {\n const picks = isLinear ? nonBetBuilderPickList : picksList;\n\n return picks.filter((pick) => singleBet.picks[pick.id.toString()]);\n },\n);\n\nexport const selectSystemBetPicks = createSelector(\n selectSystemPicksState,\n selectBetslipFlattenedPicksList,\n selectNonBetBuilderPicks,\n selectIsLinearBetslip,\n (systemBet, picksList, nonBetBuilderPickList, isLinear) => {\n const picks = isLinear ? nonBetBuilderPickList : picksList;\n\n return picks.filter((pick) => systemBet.picks[pick.id.toString()]);\n },\n);\n\nexport const selectSinglePicksCount = createSelector(selectSingleBetPicks, (picks) => picks.length);\nexport const selectComboPicksCount = createSelector(selectComboPicksState, (b) => Object.keys(b.picks).length);\nexport const selectSystemPicksCount = createSelector(selectSystemBetPicks, (picks) => picks.length);\nexport const selectBetBuilderPicksCount = createSelector(selectBetBuilderPicksState, (b) => Object.keys(b.picks).length);\nexport const selectTeaserPicksCount = createSelector(selectTeaserPicksState, (b) => Object.keys(b.picks).length);\nexport const selectTypesPickCount = createSelector(\n selectSinglePicksCount,\n selectComboPicksCount,\n selectSystemPicksCount,\n selectBetBuilderPicksCount,\n selectTeaserPicksCount,\n\n (singlePicksCount, comboPicksCount, systemPicksCount, betBuilderPicksCount, teaserPicksCount) => ({\n singlePicksCount,\n comboPicksCount,\n systemPicksCount,\n betBuilderPicksCount,\n teaserPicksCount,\n }),\n);\n\nexport const selectHasBetBuilderStatePicks = createSelector(selectBetBuilderPicksCount, (count) => count > 0);\n","import { BetslipType } from '../../core/betslip-type';\nimport { SlipId } from '../bet-generation/models';\nimport { BetslipError } from './errors/betslip-error';\nimport { ResultError } from './errors/result/result-error';\n\nexport interface IBetslipPickErrors {\n [pickId: string]: ResultError[];\n}\n\nexport type BetslipTypePickErrors = Record;\nexport type BetslipTypeErrors = Record;\nexport type SlipErrors = Record;\n\n// New error state necessary to support linear betslip\n// Try to avoid using the state directly and instead use one of the many selectors or create a new selector\nexport interface IBetslipErrorsState {\n pickErrors: BetslipTypePickErrors;\n slipErrors: SlipErrors;\n betslipTypeErrors: BetslipTypeErrors;\n betslipErrors: BetslipError[];\n}\n\nexport interface IBetslipLegacyErrorsState {\n pickErrors: IBetslipPickErrors;\n betslipErrors: BetslipError[];\n}\n\nexport const defaultErrorState: IBetslipErrorsState = {\n pickErrors: {\n SINGLE: {},\n COMBO: {},\n SYSTEM: {},\n TEASER: {},\n EDIT_MY_BET: {},\n BET_BUILDER: {},\n },\n slipErrors: {},\n betslipTypeErrors: {\n SINGLE: [],\n COMBO: [],\n SYSTEM: [],\n TEASER: [],\n EDIT_MY_BET: [],\n BET_BUILDER: [],\n },\n betslipErrors: [],\n};\n\nexport const emptyPickErrors = (): BetslipTypePickErrors => ({\n SINGLE: {},\n COMBO: {},\n SYSTEM: {},\n TEASER: {},\n EDIT_MY_BET: {},\n BET_BUILDER: {},\n});\n\nexport const emptyBetslipTypeErrors = (): BetslipTypeErrors => ({\n SINGLE: [],\n COMBO: [],\n SYSTEM: [],\n TEASER: [],\n EDIT_MY_BET: [],\n BET_BUILDER: [],\n});\n","import { Injectable } from '@angular/core';\n\nimport { LocalStoreService, NativeAppService, SessionStoreService } from '@frontend/vanilla/core';\n\nimport { ISavedState } from './state-storage.model';\n\n@Injectable({ providedIn: 'root' })\nexport default class StoragePersister {\n private readonly STORE_KEY = 'redux-store-v3';\n\n constructor(\n private session: SessionStoreService,\n private local: LocalStoreService,\n private nativeAppService: NativeAppService,\n ) {}\n\n /**\n * Apply the new saved state over the current saved and save it.\n * This will allow features to save state individually.\n *\n * @param state update on state\n */\n save(state: Partial): void {\n if (!this.nativeAppService.isTerminal) {\n this.local.set(this.STORE_KEY, state);\n\n return;\n }\n this.session.set(this.STORE_KEY, state);\n }\n\n load(): ISavedState | undefined {\n const savedState = !this.nativeAppService.isTerminal\n ? this.local.get(this.STORE_KEY)\n : this.session.get(this.STORE_KEY);\n\n return savedState ? savedState : undefined;\n }\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { OddsAcceptanceMode } from '@bpos';\nimport { OfferSource } from '@cds';\nimport { Fixture } from '@cds/betting-offer';\nimport { PicksView } from '@cds/betting-offer/domain-specific';\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { pprops } from '@frontend/sports/common/core/utils/redux';\nimport { createAction, props } from '@ngrx/store';\nimport { BetBuilderMarket } from 'packages/sports/web/app/src/betbuilder/model/bet-builder.model';\nimport { OptionRequest } from 'packages/sports/web/app/src/navigation-core/pick-uri.model';\n\nimport { EditMyBetPicksPayload } from '../model/edit-mybet/edit-bet-init';\nimport { BetStationFreeBetToken } from '../modules/reward-tokens/reward-tokens.model';\nimport { BetslipType } from './betslip-type';\nimport { BetslipGroupInformation } from './groups/betslip-group-information';\nimport { BetBuilderPickId, PickId, V1PickId, V2OptionMarketPickId, V2OptionMarketXCastPickId, V2ParticipantPickId } from './picks/pick-id';\nimport { IPickTracking } from './picks/pick-models';\n\nexport interface BetBuilderV1EventData {\n event: {\n id: string;\n name: string;\n date: Date;\n isLive?: boolean;\n groupId?: number;\n };\n league: {\n id: number;\n name: string;\n parentLeagueId?: number;\n realCompetitionId?: number;\n };\n region: {\n id: number;\n name: string;\n };\n offerSource: OfferSource;\n betBuilderTradingV2FixtureId?: string;\n}\n\nexport interface PickAddPayload {\n pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId | V2OptionMarketXCastPickId;\n tracking: IPickTracking; // Pick source tracking information\n priceId?: number; // In case when pick can have multiple prices the call can choose which one to be selected ( optional )\n isPriceBoosted?: boolean;\n groupInfo?: BetslipGroupInformation;\n parentLinkedEventId?: string;\n isBetBuilder?: boolean;\n}\nexport interface PickRemovePayload {\n pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId;\n tracking: IPickTracking; // Pick source tracking information\n priceId?: number; // In case when pick can have multiple prices the call can choose which one to be selected ( optional )\n isPriceBoosted?: boolean;\n}\n\nexport interface BABAdditionalInfo {\n sportcastId?: number;\n betgeniusId?: number;\n useV2Key?: boolean;\n longIds?: string[];\n}\n\nexport enum BetslipHost {\n Digital = 'Digital',\n BetStation = 'BetStation',\n}\n\nexport class ExternalBetslipActions {\n static readonly ACTION_SCHEMA = `PICKS`;\n\n private static readonly ADD_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_PICK`;\n private static readonly ADD_GROUP_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_GROUP_PICK`;\n private static readonly ADD_MULTIPLE_PICKS = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_MULTIPLE_PICKS`;\n private static readonly ADD_BET_BUILDER_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_BET_BUILDER_PICK`;\n private static readonly ECHO_ADD_BET_BUILDER_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADDED_BET_BUILDER_PICK`;\n private static readonly ECHO_ADD_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADDED_PICK`;\n private static readonly ADD_ENTAIN_UI_BET_BUILDER_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_ENTAIN_UI_BET_BUILDER_PICK`;\n private static readonly REMOVE_ENTAIN_UI_BET_BUILDER_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVE_ENTAIN_UI_BET_BUILDER_PICK`;\n private static readonly CHECK_PRECREATED_BAB_CONVERSION = `${ExternalBetslipActions.ACTION_SCHEMA}/CHECK_PRECREATED_BAB_CONVERSION`;\n\n private static readonly REMOVE_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVE_PICK`;\n private static readonly ECHO_REMOVE_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVED_PICK`;\n private static readonly REMOVE_MULTIPLE_PICKS = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVE_MULTIPLE_PICKS`;\n private static readonly ECHO_REMOVE_MULTIPLE_PICKS = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVED_MULTIPLE_PICKS`;\n private static readonly REMOVE_PICKS_FROM_GROUP = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVE_PICKS_FROM_GROUP`;\n\n private static readonly REQUEST_BETSLIP_TYPE = `${ExternalBetslipActions.ACTION_SCHEMA}/REQUEST_BETSLIP_TYPE`;\n\n private static readonly REQUEST_ADD_AFFILIATE_PICKS = `${ExternalBetslipActions.ACTION_SCHEMA}/REQUEST_ADD_AFFILIATE_PICKS`;\n private static readonly SHARE_AFFILIATE_PICKS = `${ExternalBetslipActions.ACTION_SCHEMA}/SHARE_AFFILIATE_PICKS`;\n private static readonly START_EDIT_MY_BET = `${ExternalBetslipActions.ACTION_SCHEMA}/START_EDIT_MY_BET`;\n\n private static readonly REQUEST_NOTIFICATION_SETTING_UPDATE = `${ExternalBetslipActions.ACTION_SCHEMA}/REQUEST_NOTIFICATION_SETTING_UPDATE`;\n\n private static readonly ADD_WEB_APP_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/ADD_WEB_APP_PICK`;\n private static readonly REMOVE_WEB_APP_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/REMOVE_WEB_APP_PICK`;\n\n private static readonly SET_REWARD_TOKEN = `${ExternalBetslipActions.ACTION_SCHEMA}/SET_REWARD_TOKEN`;\n private static readonly TOGGLE_WIN_PICK = `${ExternalBetslipActions.ACTION_SCHEMA}/TOGGLE_WIN_PICK`;\n\n /**\n * Action called with request to add v1 or option market pick to betslip,\n * Optionally set stake value when first pick to override the default stake.\n */\n static addPick = createAction(ExternalBetslipActions.ADD_PICK, props());\n\n /**\n * Action called with request to add several v1 or option market picks in a SGP group to betslip\n */\n static addGroupPick = createAction(\n ExternalBetslipActions.ADD_GROUP_PICK,\n props<{ picks: PickAddPayload[]; headerTemplate?: TemplateRef }>(),\n );\n\n /**\n * Action called with request to add v1 or option market pick to betslip\n */\n\n static addMultiplePicks = createAction(ExternalBetslipActions.ADD_MULTIPLE_PICKS, props<{ picks: PickAddPayload[]; stake?: number }>());\n /**\n * Action called with request to add bet builder pick to betslip, when v1\n */\n static addBetBuilderPick = createAction(\n ExternalBetslipActions.ADD_BET_BUILDER_PICK,\n props<{ pickId: BetBuilderPickId; tracking: IPickTracking; eventData: BetBuilderV1EventData | null; additionalInfo?: BABAdditionalInfo }>(),\n );\n\n /**\n * Action called with request to add entain ui bet builder pick to betslip\n */\n static addEntainUiBetBuilderPick = createAction(\n ExternalBetslipActions.ADD_ENTAIN_UI_BET_BUILDER_PICK,\n props<{\n pickId: BetBuilderPickId;\n tracking: IPickTracking;\n eventModel: EventModel;\n betBuilderOptionMarket: BetBuilderMarket;\n eventData: BetBuilderV1EventData;\n longId: string;\n }>(),\n );\n\n /**\n * Action called with request to remove entain ui bet builder pick to betslip\n */\n static removeEntainUiBetBuilderPick = createAction(\n ExternalBetslipActions.REMOVE_ENTAIN_UI_BET_BUILDER_PICK,\n props<{\n pickId: BetBuilderPickId;\n longId: string;\n eventId: string;\n }>(),\n );\n\n /**\n * Action called with request to check if there is already a customized BAB for the event on the betslip\n */\n static checkPrecreatedBABConversion = createAction(\n ExternalBetslipActions.CHECK_PRECREATED_BAB_CONVERSION,\n props<{\n pickId: BetBuilderPickId;\n eventModel: EventModel;\n market: BetBuilderMarket;\n eventData: BetBuilderV1EventData;\n longId: string[];\n headerTemplate: TemplateRef;\n isBetslip?: boolean;\n }>(),\n );\n\n /**\n * Action called when pick is added to betslip\n */\n static echoAddPick = createAction(ExternalBetslipActions.ECHO_ADD_PICK, props());\n\n /**\n * Action called with request to add bet builder pick to betslip on betstation cross screen\n */\n static echoAddBetBuilderPick = createAction(\n ExternalBetslipActions.ECHO_ADD_BET_BUILDER_PICK,\n props<{ pickId: BetBuilderPickId; tracking: IPickTracking; eventData: BetBuilderV1EventData | null; additionalInfo?: BABAdditionalInfo }>(),\n );\n\n /**\n * Action called with request to remove pick from betslip\n */\n static removePick = createAction(ExternalBetslipActions.REMOVE_PICK, props<{ pickId: PickId }>());\n\n /**\n * Action called when pick is removed from betslip\n */\n static echoRemovePick = createAction(ExternalBetslipActions.ECHO_REMOVE_PICK, props<{ pickId: PickId }>());\n\n /**\n * Remove picks from the slip\n */\n static removeMultiplePicks = createAction(ExternalBetslipActions.REMOVE_MULTIPLE_PICKS, props<{ pickIds: PickId[] }>());\n\n /**\n * Action called when pick is removed from betslip\n */\n static echoRemoveMultiplePicks = createAction(ExternalBetslipActions.ECHO_REMOVE_MULTIPLE_PICKS, props<{ pickIds: PickId[] }>());\n\n /**\n * Remove picks from group in the slip\n */\n static removePicksFromGroup = createAction(ExternalBetslipActions.REMOVE_PICKS_FROM_GROUP, props<{ pickIds: PickId[] }>());\n\n /**\n * Action called in order betslip to change its type\n */\n static requestBetslipType = createAction(ExternalBetslipActions.REQUEST_BETSLIP_TYPE, props<{ betslipType: BetslipType }>());\n\n /**\n * Action called when affiliate deep link is found\n */\n static requestAddAffiliatePicks = createAction(\n ExternalBetslipActions.REQUEST_ADD_AFFILIATE_PICKS,\n props<{ request: OptionRequest; picksView: PicksView }>(),\n );\n\n /**\n * Action called to share bet (in course of affiliate deep link)\n */\n static shareBet = createAction(ExternalBetslipActions.SHARE_AFFILIATE_PICKS);\n\n /**\n * Action called when bet editing is started\n */\n static startEditMyBet = createAction(ExternalBetslipActions.START_EDIT_MY_BET, props<{ payload: EditMyBetPicksPayload }>());\n\n /**\n * Action called to update (all - e.g. email or app) notification settings\n */\n static requestNotificationSettingUpdate = createAction(\n ExternalBetslipActions.REQUEST_NOTIFICATION_SETTING_UPDATE,\n props<{ oddsAcceptance?: OddsAcceptanceMode; emailNotify?: boolean; appNotify?: boolean }>(),\n );\n\n /**\n * Action called to add a pick via web bridge service (e.g. used for AB testing)\n */\n static addWebAppPick = createAction(\n ExternalBetslipActions.ADD_WEB_APP_PICK,\n props<{\n fixture: Fixture;\n option: number;\n }>(),\n );\n /**\n \n * Action called to remove a pick via web bridge service (e.g. used for AB testing)\n \n */\n\n static removeWebAppPick = createAction(\n ExternalBetslipActions.REMOVE_WEB_APP_PICK,\n\n props<{\n fixture: Fixture;\n option: number;\n }>(),\n );\n\n /**\n * Action called to set a reward token (e.g. via free-bet.service)\n */\n static setBetstationFreeBetToken = createAction(ExternalBetslipActions.SET_REWARD_TOKEN, pprops());\n\n /**\n * Action called when Toggle Win pick is called\n */\n static toggleWinPick = createAction(\n ExternalBetslipActions.TOGGLE_WIN_PICK,\n props<{ pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId }>(),\n );\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { selectIsLinearBetslip } from '../../../base/store/selectors';\nimport { BetslipType } from '../../../core/betslip-type';\nimport { betslipTypeStateSelector } from '../selectors';\n\nexport const betslipTypesBaseSelector = createSelector(betslipTypeStateSelector, (b) => b.base);\nexport const betslipCurrentTypeSelector = createSelector(betslipTypesBaseSelector, (b) => b.currentSelectedType);\nexport const betslipActiveTypesSelector = createSelector(betslipTypesBaseSelector, (b) => b.activeTypes);\nexport const selectLinearTypes = createSelector(betslipTypesBaseSelector, (b) => b.linearTypes);\n\nexport const selectIsLinearSingleBetBuilder = createSelector(\n selectIsLinearBetslip,\n selectLinearTypes,\n (isLinear, linearTypes) => isLinear && !linearTypes[BetslipType.Combo] && linearTypes[BetslipType.BetBuilder],\n);\n","export enum BetPlacementErrorIcon {\n Warning,\n Error,\n}\n","import { CashoutErrorType } from '@bpos/v1/cashout';\nimport { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetslipType } from '../../../core/betslip-type';\nimport { BetPlacementErrorIcon } from './bet-placement-error-icon';\nimport { ClientErrorType } from './client-error-type';\n\nexport enum ErrorOrigin {\n // Error comes from the server\n BetPlacement = 'BetPlacement',\n // Error is created on the client.\n BetSlip = 'BetSlip',\n}\n\nexport enum CleanStrategy {\n // Is the error is cleaned on every action.\n Always = 'Always',\n // Is the error cleaned on manual action ( Errors from BPS, Some Warnings. )\n Manually = 'Manually',\n}\n\nexport interface BetslipErrorRestrictions {\n betslipType: BetslipType;\n slipTypeKey?: string;\n}\n\nexport interface BetslipErrorSaved {\n // Error type string name of the error.\n type: PlacementErrorType | CashoutErrorType | ClientErrorType;\n // Error icon to display.\n icon: BetPlacementErrorIcon;\n // Priority of the error. Lower is bigger. We display only one error, so errors with lower priority will be displayed first.\n priority: number;\n // The source of the error.\n origin: ErrorOrigin;\n // The strategy to remove the error.\n cleanStrategy: CleanStrategy;\n // Does the error have client validation ?\n hasClientValidation: boolean;\n // Should we display a message to the user for this error.\n isHidden: boolean;\n // The error code of the error.\n code: string;\n // Is this error restricted to a betslip type or slip type?\n restrictions?: BetslipErrorRestrictions;\n}\n\nexport class BetslipError implements BetslipErrorSaved {\n // Error type string name of the error.\n type: PlacementErrorType | CashoutErrorType | ClientErrorType;\n // Error icon to display.\n icon: BetPlacementErrorIcon = BetPlacementErrorIcon.Error;\n // Priority of the error. Lower is bigger. We display only one error, so errors with lower priority will be displayed first.\n priority = 0;\n // The source of the error.\n origin: ErrorOrigin = ErrorOrigin.BetSlip;\n // The strategy to remove the error.\n cleanStrategy: CleanStrategy = CleanStrategy.Always;\n // Does the error have client validation ?\n hasClientValidation = false;\n // Should we display a message to the user for this error.\n isHidden = false;\n // The error code of the error.\n code: string;\n\n slipId: string;\n\n sportId: number | null;\n\n /**\n * Is one error equals to another.\n *\n * @param error\n */\n equals(error: BetslipError): boolean {\n // Return false always.\n return false;\n }\n\n copy(): this {\n return Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n }\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { PosError } from '../../../base/utils/pos-errors';\nimport { BetslipError, BetslipErrorSaved } from './betslip-error';\n\nexport interface BetPlacementErrorSaved extends BetslipErrorSaved {\n type: PlacementErrorType;\n errorMessage: string;\n newStakeHint?: number;\n}\n\nexport class BetPlacementError extends BetslipError implements BetPlacementErrorSaved {\n constructor() {\n super();\n }\n\n override type: PlacementErrorType;\n errorMessage: string;\n platformError: PosError;\n newStakeHint?: number;\n detailedErrorCode?: string;\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementError } from '../bet-placement-error';\n\nexport class UserError extends BetPlacementError {\n constructor() {\n super();\n this.type = PlacementErrorType.UserError;\n }\n}\n","import { UserError } from './user/user-error';\n\nexport class StakeError extends UserError {\n constructor() {\n super();\n }\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { StakeError } from '../stake-error';\n\nexport class UnderMinimumStake extends StakeError {\n constructor() {\n super();\n this.icon = BetPlacementErrorIcon.Warning;\n this.hasClientValidation = true;\n this.type = PlacementErrorType.StakeBelowMinimumLimit;\n }\n}\n","import { BetslipError, CleanStrategy, ErrorOrigin } from '../betslip-error';\n\nexport interface PreCheckErrorMessages {\n AllowedStakes: string;\n ComboPrevention: string;\n ComboPreventionSameEvent: string;\n ForecastSystemBet: string;\n FreeBetAdded: string;\n minComboBetsCount: string;\n MinimumCombo: string;\n MinStakePerBet: string;\n MinStakeTotal: string;\n MinStakeValue: string;\n minSystemBetsCount: string;\n BetbuilderSystemNotAllowed: string;\n MultipleSinglesNotAllowed: string;\n NotEnoughMoney: string;\n NotMultiple: string;\n PickAdded: string;\n PickAlreadyAdded: string;\n PickNotFound: string;\n PickRemoved: string;\n PicksMaximum: string;\n LessStakeAfterTax: string;\n SelectExactRaceSystemBets: string;\n SelectMaxComboBets: string;\n SelectMaxRaceComboBets: string;\n SelectMaxSystemBets: string;\n SelectMinComboBets: string;\n SelectMinComboBetsLinear: string;\n SelectMinSingleBets: string;\n SelectMinSystemBets: string;\n SelectMaxSystemBetsBanker: string;\n SelectMinSystemBetsBanker: string;\n SelectMaxTeaserBets: string;\n MinTeaserBetsCount: string;\n SelectMinTeaserBets: string;\n}\n\n// We initially used the message key directly matching an error to a specific message type, this means we couldn't have specific messages for linear\n// Solution:\n// - New abstraction here (ErrorDetailSpecifier)\n// - Resolve the ErrorDetailSpecifier to a Message Key in a later step\nexport enum ErrorDetailsSpecifier {\n MinComboBetsCount,\n MinSystemBetsCount,\n MinTeaserBetsCount,\n PicksMaximum,\n SelectMaxComboBets,\n SelectMaxRaceComboBets,\n SelectMaxSystemBets,\n SelectMinComboBets,\n SelectMinSingleBets,\n SelectMinSystemBets,\n SelectMaxSystemBetsBanker,\n SelectMinSystemBetsBanker,\n SelectMinTeaserBets,\n SelectMaxTeaserBets,\n ForecastSystemBet,\n}\n\nexport interface IPickPreCheckError {\n pickId: string;\n}\n\ninterface TClassType {\n new (...args: any[]): T;\n prototype: T;\n}\n\nexport function PreCheckErrorMixin = TClassType>(\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n BaseErrorType: TBaseClass,\n): TBaseClass {\n return class extends BaseErrorType {\n constructor(...args: any[]) {\n super(...args);\n this.origin = ErrorOrigin.BetSlip;\n this.cleanStrategy = CleanStrategy.Always;\n this.hasClientValidation = true;\n }\n };\n}\n","import { Decimal } from 'decimal.js';\n\nimport { BetslipType } from '../../../../core/betslip-type';\nimport { UnderMinimumStake } from '../general/under-minimum-stake';\nimport { PreCheckErrorMixin } from './pre-check-error';\nimport { ITypeRestrictedPreCheckError } from './type-restricted-pre-check-error.interface';\n\nexport class UnderMinimumStakePreCheckError extends PreCheckErrorMixin(UnderMinimumStake) {\n constructor(\n readonly minimumStake: Decimal,\n readonly betStake: Decimal,\n readonly numberOfBetsInBet: number,\n readonly pickId: string,\n teaserId: number,\n ) {\n super();\n this.sportId = typeof teaserId === 'undefined' ? null : teaserId;\n }\n\n getMinimumStake = () => this.minimumStake;\n}\n\nexport class BetslipTypeUnderMinimumStakePreCheckError extends UnderMinimumStakePreCheckError implements ITypeRestrictedPreCheckError {\n constructor(\n minimumStake: Decimal,\n betStake: Decimal,\n numberOfBetsInBet: number,\n pickId: string,\n teaserId: number,\n private errorBetslipType: BetslipType,\n private errorSlipTypeKey?: string,\n ) {\n super(minimumStake, betStake, numberOfBetsInBet, pickId, teaserId);\n }\n\n get betslipType(): BetslipType {\n return this.errorBetslipType;\n }\n\n get slipTypeKey(): string | undefined {\n return this.errorSlipTypeKey;\n }\n}\n","import { BetslipType } from '../../core/betslip-type';\nimport { SystemSlipType } from '../bet-generation/slip-type';\nimport { ISingleBetPickState, ISingleBetState } from '../single-bet/state';\nimport { ISystemBetState } from '../system-bet/state';\nimport { IBetslipTypeState } from '../types/state';\nimport { BetslipError } from '../validation/errors/betslip-error';\nimport { UnderMinimumStakePreCheckError } from '../validation/errors/pre-check/under-minimum-stake-pre-check-error';\n\nexport function GetSingleBetStake(singleBet: ISingleBetState, pickId: string): string | null {\n return singleBet.picks[pickId]?.actualStake;\n}\n\nexport function GetSummaryStake(types: IBetslipTypeState): string | null {\n if (types.base.currentSelectedType === BetslipType.Combo) {\n return types.comboBet?.actualStake;\n } else if (types.base.currentSelectedType === BetslipType.System) {\n return types.systemBet?.actualStake;\n } else if (types.base.currentSelectedType === BetslipType.Teaser) {\n return types.teaserBet.actualStake;\n }\n\n return null;\n}\n\nexport function GetStakeForSystemType(systemBetState: ISystemBetState, type: SystemSlipType): string | null {\n const typeStakes = systemBetState.linearTypeStakes ?? {};\n\n return typeStakes[type.key].actualStake ?? null;\n}\n\nconst MAX_POSSIBLE_DIGIT = '9';\n\nconst canPotentialyTypeDigitsToReachMinStake = (stake: string, minimumStake: string) => {\n if (stake.indexOf('.') < 0 && minimumStake.indexOf('.') >= 0) {\n return true;\n }\n let highestPotentialStake = stake;\n const minStakeDecimalPlaces = minimumStake.split('.')[1]?.length || 0;\n const stakeDecimalPlaces = stake.split('.')[1]?.length || 0;\n for (let i = 0; i < minStakeDecimalPlaces - stakeDecimalPlaces; i++) {\n highestPotentialStake += MAX_POSSIBLE_DIGIT;\n }\n if (highestPotentialStake.endsWith('.')) {\n highestPotentialStake = highestPotentialStake.substring(0, highestPotentialStake.length - 1);\n }\n\n return Number(highestPotentialStake) >= Number(minimumStake);\n};\n\nexport const HideMinError = (minimumStake: number, isNumpadOpen: boolean, totalStake: string | null) => {\n if (!totalStake) {\n return true;\n }\n\n const actualStake = Number(totalStake);\n if (isNumpadOpen && actualStake < minimumStake) {\n return canPotentialyTypeDigitsToReachMinStake(totalStake, Number(minimumStake).toString());\n }\n\n return actualStake >= minimumStake;\n};\n\nexport function isSameStakeAppliedToAllSingles(picks: Record): boolean {\n const stakes = Object.values(picks)\n .filter((pick) => pick.isSelected)\n .map((pick) => pick.stake);\n\n return new Set(stakes).size === 1;\n}\n\nexport function validateStake(stakeError: BetslipError | undefined, actualStake: string | null, isNumpadOpen: boolean): BetslipError | null {\n if (!stakeError) {\n return null;\n }\n\n if (!stakeError.hasClientValidation) {\n return null;\n }\n\n if (stakeError instanceof UnderMinimumStakePreCheckError) {\n const shouldHide = HideMinError(stakeError.minimumStake.toNumber(), isNumpadOpen, actualStake);\n if (shouldHide) {\n return null;\n }\n }\n\n return stakeError;\n}\n\nexport function parseStakeFieldStake(stakeString: string | null | undefined): number | null {\n const numberStake = stakeString ? +stakeString : null;\n\n if (numberStake === 0) {\n // 0 stake should count as no stake being entered\n return null;\n }\n\n return numberStake;\n}\n","import { createSelector } from '@ngrx/store';\nimport { pickBy } from 'lodash-es';\n\nimport { PickId } from '../../core/picks/pick-id';\nimport { IStake } from '../stake/models';\nimport { isSameStakeAppliedToAllSingles } from '../stake/utils';\nimport { betslipTypeStateSelector, selectIsSingleBetSelected } from '../types/selectors';\nimport { ISingleBetPickState } from './state';\n\nexport const singleBetStateSelector = createSelector(betslipTypeStateSelector, (typeState) => typeState.singleBet);\nexport const singleBetPicksSelector = createSelector(singleBetStateSelector, (s) => s.picks);\n\nexport const isMultiSingleBetSelector = createSelector(\n singleBetPicksSelector,\n (singleBetState) => Object.values(singleBetState).filter((pick) => pick.isSelected).length > 1,\n);\n\nexport const singleBetPickSelectorFactory = (pickId: PickId) =>\n createSelector(singleBetPicksSelector, (picks): ISingleBetPickState | undefined => {\n return picks[pickId.toString()];\n });\n\nexport const selectSingleBetPickStakeFactory = (pickId: PickId) =>\n createSelector(singleBetPickSelectorFactory(pickId), (pick): IStake | null => {\n return pick ? { actualStake: pick.actualStake, stake: pick.stake } : null;\n });\n\nexport const singleBetSelectedPicksSelector = createSelector(singleBetPicksSelector, (picks) => pickBy(picks, (pick) => pick.isSelected));\n\nexport const singleBetPicksGeneralStakeSelector = createSelector(singleBetPicksSelector, (picks) => {\n const singleStates = Object.values(picks);\n\n if (singleStates.length < 1) {\n return null;\n }\n\n const firstState = singleStates[0];\n\n const stake = firstState.stake;\n\n if (singleStates.every((singleState) => singleState.stake === stake)) {\n return { stake, actualStake: firstState.actualStake };\n }\n\n return { stake: null, actualStake: null };\n});\n\nexport const selectSingleBetAllSameStake = createSelector(selectIsSingleBetSelected, singleBetPicksSelector, (isSingleBet, picks) => {\n return isSingleBet && isSameStakeAppliedToAllSingles(picks);\n});\n\nexport const selectSingleBetSinglePickState = createSelector(singleBetSelectedPicksSelector, (selectedPicks) => {\n const states = Object.values(selectedPicks);\n\n return states.length === 1 ? states[0] : null;\n});\n\nexport const selectSingleBetSinglePickId = createSelector(singleBetSelectedPicksSelector, (selectedPicks) => {\n const states = Object.keys(selectedPicks);\n\n return states.length === 1 ? states[0] : null;\n});\n","/// \n/// System bet type, \n/// \nexport enum SystemType {\n // Singles = N combinations\n SystemSingle = 0,\n // Combo = 1 combination\n SystemCombo = 1,\n\n /// \n /// 3 combo bets 2/3\n /// \n System2Of3 = 2, // Make it equal to 2 so to unify it with BetSlipType\n\n /// \n /// 3 combo bets 2/3 + 1 combo bet 3/3 + 3 single bets\n /// \n SystemPatent,\n\n /// \n /// 3 combo bets 2/3 + 1 combo bet 3/3\n /// \n SystemTrixie,\n\n /// \n /// 6 combo bets 2/4\n /// \n System2Of4,\n\n /// \n /// 4 combo bets 3/4\n /// \n System3Of4,\n\n /// \n /// 6 combo bets 2/4 + 4 combo bets 3/4 + 1 combo bet 4/4\n /// \n SystemYankee,\n\n /// \n /// 6 combo bets 2/4 + 4 combo bets 3/4 + 1 combo bet 4/4 + 4 single bets\n /// \n SystemLucky15,\n\n /// \n /// 10 combo bets 2/5\n /// \n System2Of5,\n\n /// \n /// 10 combo bets 3/5\n /// \n System3Of5,\n\n /// \n /// 5 combo bets 4/5\n /// \n System4Of5,\n\n /// \n /// 10 combo bets 2/5 + 10 combo bets 3/5 + 5 combo bets 4/5 + 1 combo bet 5/5\n /// \n SystemCanadian,\n\n /// \n /// 10 combo bets 2/5 + 10 combo bets 3/5 + 5 combo bets 4/5 + 1 combo bet 5/5 + 5 single bets\n /// \n SystemLucky31,\n\n /// \n /// 15 combo bets 2/6\n /// \n System2Of6,\n\n /// \n /// 20 combo bets 3/6\n /// \n System3Of6,\n\n /// \n /// 15 combo bets 4/6\n /// \n System4Of6,\n\n /// \n /// 6 combo bets 5/6\n /// \n System5Of6,\n\n /// \n /// 15 combo bets 2/6 + 20 combo bets 3/6 + 15 combo bets 4/6 + 6 combo bets 5/6 + 1 combo bet 6/6\n /// \n SystemHeinz,\n\n /// \n /// 15 combo bets 2/6 + 20 combo bets 3/6 + 15 combo bets 4/6 + 6 combo bets 5/6 + 1 combo bet 6/6 + 6 single bets\n /// \n SystemLucky63,\n\n /// \n /// 21 combo bets 2/7\n /// \n System2Of7,\n\n /// \n /// 35 combo bets 3/7\n /// \n System3Of7,\n\n /// \n /// 35 combo bets 4/7\n /// \n System4Of7,\n\n /// \n /// 21 combo bets 5/7\n /// \n System5Of7,\n\n /// \n /// 7 combo bets 6/7\n /// \n System6Of7,\n\n /// \n /// 21 combo bets 2/7 + 35 combo bets 3/7 + 35 combo bets 4/7 + 21 combo bets 5/7 + 7 combo bets 6/7 + 1 combo bet 7/7\n /// \n SystemSuperHeinz,\n\n /// \n /// 28 combo bets 2/8\n /// \n System2Of8,\n\n /// \n /// 56 combo bets 3/8\n /// \n System3Of8,\n\n /// \n /// 70 combo bets 4/8\n /// \n System4Of8,\n\n /// \n /// 56 combo bets 5/8\n /// \n System5Of8,\n\n /// \n /// 28 combo bets 6/8\n /// \n System6Of8,\n\n /// \n /// 8 combo bets 7/8\n /// \n System7Of8,\n\n /// \n /// 28 combo bets 2/8 + 56 combo bets 3/8 + 70 combo bets 4/8 + 56 combo bets 5/8 + 28 combo bets 6/8 + 8 combo bets 7/8 + 1 combo bet 8/8\n /// \n SystemGoliath,\n\n /// \n /// Banker bets + single bets.\n /// \n SystemBankerSingles,\n /// \n /// Multi single bets, used in betstation to place multiple bets as atomic transaction.\n /// \n SystemSingles,\n}\n\nexport enum SlipTypeKeys {\n Single = 'single',\n Combo = 'combo',\n BetBuilder = 'betbuilder',\n}\n","import { SystemSlipType } from '../bet-generation/slip-type';\n\nexport enum SystemKey {\n Patent = 'patent',\n Lucky15 = 'lucky15',\n Lucky31 = 'lucky31',\n Lucky63 = 'lucky63',\n Trixie = 'trixie',\n Yankee = 'yankee',\n Canadian = 'canadian',\n Heinz = 'heinz',\n SuperHeinz = 'superheinz',\n Goliath = 'goliath',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MOfN = 'mofn',\n BankerSingles = 'systembankersingles',\n}\n\nexport enum SystemModesLinearMOfN {\n System2of3 = 'system2of3',\n System2of4 = 'system2of4',\n System2of5 = 'system2of5',\n System2of6 = 'system2of6',\n System2of7 = 'system2of7',\n System2of8 = 'system2of8',\n System3of4 = 'system3of4',\n System3of5 = 'system3of5',\n System3of6 = 'system3of6',\n System3of7 = 'system3of7',\n System3of8 = 'system3of8',\n System4of5 = 'system4of5',\n System4of6 = 'system4of6',\n System4of7 = 'system4of7',\n System4of8 = 'system4of8',\n System5of6 = 'system5of6',\n System5of7 = 'system5of7',\n System5of8 = 'system5of8',\n System6of7 = 'system6of7',\n System6of8 = 'system6of8',\n System7of8 = 'system7of8',\n}\n\nexport interface SystemModes {\n canadian: string;\n goliath: string;\n heinz: string;\n lucky15: string;\n lucky31: string;\n lucky63: string;\n patent: string;\n superheinz: string;\n system2of3: string;\n system2of4: string;\n system2of5: string;\n system2of6: string;\n system2of7: string;\n system2of8: string;\n system3of4: string;\n system3of5: string;\n system3of6: string;\n system3of7: string;\n system3of8: string;\n system4of5: string;\n system4of6: string;\n system4of7: string;\n system4of8: string;\n system5of6: string;\n system5of7: string;\n system5of8: string;\n system6of7: string;\n system6of8: string;\n system7of8: string;\n trixie: string;\n yankee: string;\n}\n\nexport interface ISlipInfo {\n slipType: SystemSlipType;\n betCount: number;\n}\n\nexport enum LinearSystemBetTracking {\n SystemBetPositionEvent = 'Sytem bet expand/collapse',\n HidePickListEventDetails = 'Collapse system bet',\n ViewPickListEventDetails = 'Expand system bet',\n SystemBetPosition = 'system bet',\n}\n\nexport interface ISystemSlipTypeInfo {\n slipType: SystemSlipType;\n betCount: number;\n typeName: string;\n}\n\nexport const LinearSystemBetPositionEvent = 'Linear System Bet Info Popup';\nexport const LinearSystemBetEventDetailsOpened = 'System Bet Info Icon Open';\nexport const LinearSystemBetEventDetailsClosed = 'System Bet Info Icon Closed';\nexport const LinearSystemBetActionEvent = 'Click';\n","import { SystemKey } from '../system-bet/models';\nimport { SlipTypeKeys } from './betslip-system-type';\n\nexport abstract class SlipType {\n private _key: string;\n private _name: string;\n private _basis: number[];\n\n constructor(key: string, name: string, basis: number[]) {\n this._key = key;\n this._name = name;\n this._basis = basis;\n }\n\n get key(): string {\n return this._key;\n }\n\n get name(): string {\n return this._name;\n }\n\n get basis(): number[] {\n return this._basis;\n }\n\n equals(object: SlipType | null | undefined): boolean {\n if (!object) {\n return false;\n }\n\n return this.key === object.key && SlipType.isBasisEqual(this.basis, object.basis);\n }\n\n toJSON(): { key: string; name: string; basis: number[] } {\n return {\n key: this.key,\n name: this.name,\n basis: this.basis,\n };\n }\n\n private static isBasisEqual(thisBasis: number[], otherBasis: number[]): boolean {\n if (thisBasis.length !== otherBasis.length) {\n return false;\n }\n for (let i = 0; i < thisBasis.length; i++) {\n if (thisBasis[i] !== otherBasis[i]) {\n return false;\n }\n }\n\n return true;\n }\n}\n\nexport class SingleSlipType extends SlipType {\n constructor() {\n super(SlipTypeKeys.Single, '', [1]);\n }\n}\n\nexport class ComboSlipType extends SlipType {\n constructor() {\n super(SlipTypeKeys.Combo, '', [-1]);\n }\n}\n\nexport class SystemSlipType extends SlipType {\n constructor(key: string, name: string, basis: number[]) {\n super(key, name, basis);\n }\n}\n\nexport class SystemBankerSinglesSlipType extends SystemSlipType {\n constructor() {\n super(SystemKey.BankerSingles, '', [1]);\n }\n}\n","import { BetslipType } from '../../../core/betslip-type';\nimport { BetslipPick } from '../../../core/picks/betslip-pick';\nimport { PickId } from '../../../core/picks/pick-id';\nimport { SlipTypeKeys } from '../betslip-system-type';\nimport { ISlip, SlipId } from '../models';\nimport { ComboSlipType, SingleSlipType, SystemSlipType } from '../slip-type';\n\nconst SYSTEM_SLIP_ID_PREFIX = 'system__';\nconst BET_BUILDER_SLIP_ID_PREFIX = `${SlipTypeKeys.BetBuilder}__`;\nconst SINGLE_SLIP_ID_PREFIX = `${SlipTypeKeys.Single}__`;\n\nexport function getSlipBetslipType(slip: ISlip): BetslipType | undefined {\n const type = slip.type;\n\n if (type instanceof SingleSlipType) {\n return BetslipType.Single;\n }\n\n if (type instanceof ComboSlipType) {\n return BetslipType.Combo;\n }\n\n if (type instanceof SystemSlipType) {\n return BetslipType.System;\n }\n\n return undefined;\n}\n\nexport function getEditBetSlipId(): string {\n return 'editbet';\n}\n\nexport function getComboSlipId(): string {\n return SlipTypeKeys.Combo;\n}\n\nexport function getSystemSlipId(slipType: SystemSlipType): string {\n return getSystemSlipIdFromString(slipType.key);\n}\n\nexport function getSystemSlipIdFromString(slipKey: string): string {\n return `${SYSTEM_SLIP_ID_PREFIX}${slipKey}`;\n}\n\nexport function isSystemSlipId(slipId: SlipId): boolean {\n return slipId.startsWith(SYSTEM_SLIP_ID_PREFIX);\n}\n\nexport function getSystemTypeKeyFromSlipId(slipId: SlipId): string | undefined {\n if (!isSystemSlipId(slipId)) {\n return undefined;\n }\n\n return slipId.substring(SYSTEM_SLIP_ID_PREFIX.length);\n}\n\nexport function isComboSlipId(slipId: SlipId): boolean {\n return slipId === getComboSlipId();\n}\n\nexport function getSingleSlipId(pickId: PickId): string {\n return pickId ? getSingleSlipIdFromString(pickId.toString()) : '';\n}\n\nexport function getSingleSlipIdFromString(pickId: string): string {\n return `${SINGLE_SLIP_ID_PREFIX}${pickId}`;\n}\n\nexport function getBetBuilderSlipId(pickId: PickId): string {\n return getBetBuilderSlipIdFromString(pickId.toString());\n}\n\nexport function getBetBuilderSlipIdFromString(pickId: string): string {\n return `${BET_BUILDER_SLIP_ID_PREFIX}${pickId}`;\n}\n\nexport function isSingleSlipId(slipId: SlipId): boolean {\n return slipId.startsWith(SINGLE_SLIP_ID_PREFIX);\n}\n\nexport function getTeaserSlipId(): string {\n return 'teaser';\n}\n\nexport function isTeaserSlipId(slipId: SlipId): boolean {\n return slipId === getTeaserSlipId();\n}\n\nexport function isBetBuilderSlipId(slipId: SlipId): boolean {\n return slipId.startsWith(BET_BUILDER_SLIP_ID_PREFIX);\n}\n\nexport function getBetslipTypeFromId(slipId: SlipId): BetslipType | null {\n if (isSingleSlipId(slipId)) {\n return BetslipType.Single;\n }\n\n if (isComboSlipId(slipId)) {\n return BetslipType.Combo;\n }\n\n if (isTeaserSlipId(slipId)) {\n return BetslipType.Teaser;\n }\n\n if (isBetBuilderSlipId(slipId)) {\n return BetslipType.BetBuilder;\n }\n\n if (isSystemSlipId(slipId)) {\n return BetslipType.System;\n }\n\n return null;\n}\n\n/**\n * Returns a unique list of picks accross multiple slips\n */\nexport function getUniqueSlipPicks(slips: ISlip[]): BetslipPick[] {\n const allPicks = slips.flatMap((slip) => Object.values(slip.slipPicks));\n\n return allPicks.reduce(\n (acc, curr, i) => {\n if (acc.some((pick) => pick.id === curr.pick.id)) {\n return acc;\n }\n\n return acc.concat([curr.pick]);\n },\n [],\n );\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { getLegsCount } from '../../core/utils';\nimport { betslipPicksListSelector } from '../picks/selectors';\nimport { betslipTypeStateSelector } from '../types/selectors';\nimport { BetBuilderPick, LinearBetBuilderPickId } from './models';\n\nexport const selectBetBuilderTypeState = createSelector(betslipTypeStateSelector, (betslipTypeState) => betslipTypeState.betBuilder);\n\nexport const selectBetBuilderTypeStatePicks = createSelector(selectBetBuilderTypeState, (betBuilderTypeState) => betBuilderTypeState.picks);\n\nexport const selectBetBuilderPicks = createSelector(\n selectBetBuilderTypeStatePicks,\n betslipPicksListSelector,\n (betBuilderPicks, pickList) => pickList.filter((pick) => !!betBuilderPicks[pick.id.toString()]) as BetBuilderPick[],\n);\n\nexport const selectBetBuilderPickStakeFactory = (pickId: LinearBetBuilderPickId) =>\n createSelector(selectBetBuilderTypeStatePicks, (picks) => {\n const pick = picks[pickId.toString()];\n\n if (!pick) {\n return {\n actualStake: null,\n stake: null,\n };\n }\n\n return {\n actualStake: pick.actualStake,\n stake: pick.stake,\n };\n });\n\nexport const selectBetBuilderPickLegsFactory = (pickId: LinearBetBuilderPickId) =>\n createSelector(betslipPicksListSelector, (pickList) => {\n const pick = pickList.find((p) => p.id.isEqual(pickId));\n\n return pick ? getLegsCount([pick]) : 0;\n });\n","import { createSelector } from '@ngrx/store';\n\nimport { BetslipType } from '../../core/betslip-type';\nimport { SlipId } from '../bet-generation/models';\nimport { getBetBuilderSlipIdFromString, getSingleSlipIdFromString, getSystemSlipIdFromString } from '../bet-generation/services/slip.utils';\nimport { betslipTypeStateSelector } from '../types/selectors';\nimport { IBetslipTypeState } from '../types/state';\n\nexport const selectLinearStakeForSlip = (slipId: SlipId, betslipType: BetslipType) =>\n createSelector(betslipTypeStateSelector, (types: IBetslipTypeState): string | null => {\n switch (betslipType) {\n case BetslipType.Combo:\n return types.comboBet.actualStake;\n\n case BetslipType.Teaser:\n return types.teaserBet.actualStake;\n\n case BetslipType.Single: {\n const pickEntry = Object.entries(types.singleBet.picks).find(([pickId]) => getSingleSlipIdFromString(pickId) === slipId);\n\n if (!pickEntry) {\n return null;\n }\n\n const [, pick] = pickEntry;\n\n return pick.actualStake ?? null;\n }\n\n case BetslipType.System: {\n const type = Object.keys(types.systemBet.linearTypeStakes).find((k) => getSystemSlipIdFromString(k) === slipId);\n\n if (!type) {\n return null;\n }\n\n const typeStake = types.systemBet.linearTypeStakes[type];\n\n return typeStake?.actualStake ?? null;\n }\n\n case BetslipType.EditBet: {\n return types.editBet.addedStake.toString();\n }\n\n case BetslipType.BetBuilder: {\n const pickEntry = Object.entries(types.betBuilder.picks).find(([pickId]) => getBetBuilderSlipIdFromString(pickId) === slipId);\n\n if (!pickEntry) {\n return null;\n }\n\n const [, pick] = pickEntry;\n\n return pick.actualStake ?? null;\n }\n }\n });\n","import { createSelector } from '@ngrx/store';\n\nimport { PickId } from '../../core/picks/pick-id';\nimport { PickOddsState } from '../../core/picks/pick-models';\nimport { betslipTypeStateSelector, selectSystemBetPicks } from '../types/selectors';\nimport { ISystemBetPickState, ISystemBetTypeStake } from './state';\n\nexport const systemBetStateSelector = createSelector(betslipTypeStateSelector, (state) => state.systemBet);\nexport const systemBetPicksSelector = createSelector(systemBetStateSelector, (s) => s.picks);\nexport const systemBetSystemInfoSelector = createSelector(systemBetStateSelector, (s) => s.systemInfo);\nexport const systemBetBankerEnabledSelector = createSelector(systemBetStateSelector, (s) => s.isBankerActive);\nexport const systemBetBankerSelector = createSelector(systemBetStateSelector, (s) => ({\n isBankerActive: s.isBankerActive,\n hasBanker: Object.values(s.picks).some((p) => p.isBanker),\n}));\nexport const systemBetBankerCount = createSelector(systemBetStateSelector, (s) =>\n s.isBankerActive ? Object.values(s.picks).filter((p) => p.isSelected && !p.isLocked && p.isBanker).length : 0,\n);\n\nexport const systemBetBarStateSelector = createSelector(systemBetStateSelector, (systemBetState) => {\n return { isBankerActive: systemBetState.isBankerActive, selectedSlipType: systemBetState.systemInfo?.key };\n});\n\nexport const systemBetPickSelectorFactory = (pickId: PickId) =>\n createSelector(systemBetPicksSelector, (picks) => {\n return picks[pickId.toString()];\n });\n\nexport const systemBetTypeStakeSelectorFactory = (typeKey: string) =>\n createSelector(systemBetStateSelector, (state): ISystemBetTypeStake | null => {\n const typeStakes = state.linearTypeStakes ?? {};\n\n return typeStakes[typeKey] ?? null;\n });\n\nexport const systemBetLinearSlipTypeStakesSelector = createSelector(systemBetStateSelector, (s) => {\n return Object.values(s.linearTypeStakes).map((typeStake) => typeStake);\n});\n\nexport const systemBetPickOddStateSelector = createSelector(systemBetStateSelector, selectSystemBetPicks, (systemBetState, pickList) => {\n const picks: { [pickId: string]: ISystemBetPickState & { isOpen: boolean } } = {};\n\n pickList.forEach((pick) => {\n picks[pick.id.toString()] = {\n ...systemBetState.picks[pick.id.toString()],\n isOpen: pick.oddsState === PickOddsState.Open,\n };\n });\n\n return picks;\n});\n\nexport const systemBetStateSelectorPickOddStateSelector = createSelector(\n systemBetStateSelector,\n systemBetPickOddStateSelector,\n (systemBetState, picks) => {\n return { ...systemBetState, picks };\n },\n);\n\nexport const selectIsSystemBetExpanded = createSelector(systemBetStateSelector, (state) => state.isLinearExpanded);\n","import { BetslipError } from '../betslip-error';\n\nexport class MinSelectionsBetbuilderError extends BetslipError {\n constructor() {\n super();\n this.hasClientValidation = true;\n }\n}\n","import { BetPlacementError, BetPlacementErrorSaved } from '../bet-placement-error';\n\nexport interface ResultErrorSaved extends BetPlacementErrorSaved {\n pickId: string;\n}\n\nexport class ResultError extends BetPlacementError implements ResultErrorSaved {\n constructor(readonly pickId: string) {\n super();\n }\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetslipType } from '../../../../core/betslip-type';\nimport { BetslipPick } from '../../../../core/picks/betslip-pick';\nimport {\n getBetBuilderSlipIdFromString,\n getComboSlipId,\n getEditBetSlipId,\n getSingleSlipId,\n getSingleSlipIdFromString,\n getSystemSlipId,\n getTeaserSlipId,\n} from '../../../bet-generation/services/slip.utils';\nimport { IBetslipTypeState } from '../../../types/state';\nimport { BetslipError, ErrorOrigin } from '../../errors/betslip-error';\nimport { ResultError } from '../../errors/result/result-error';\nimport {\n BetslipTypeErrors,\n BetslipTypePickErrors,\n IBetslipErrorsState,\n IBetslipPickErrors,\n SlipErrors,\n emptyBetslipTypeErrors,\n emptyPickErrors,\n} from '../../state';\n\nexport function updateKeyBasedErrorCollection(\n currentCollection: Record,\n newCollection: Record,\n defaultCollection: Record,\n oldKeys: TKey[],\n newKeys: TKey[],\n): { errors: Record; hasChanged: boolean } {\n let hasChanged = false;\n\n const result = { ...defaultCollection };\n const clientTypeErrors = { ...defaultCollection };\n\n // Iterate through all keys (all slip types) for current errors\n for (const key of oldKeys) {\n const currentErrors = currentCollection[key];\n\n const clientResult = [];\n const serverResult = [];\n\n // Split into client and non-client errors\n for (const error of currentErrors) {\n if (error.hasClientValidation) {\n clientResult.push(error);\n\n hasChanged = hasChanged || !newKeys.includes(key);\n continue;\n }\n\n serverResult.push(error);\n }\n\n if (clientResult.length) {\n // Prepare client errors for comparison\n clientTypeErrors[key] = clientResult;\n }\n\n if (serverResult.length) {\n // Keep all non-client errors\n result[key] = serverResult;\n }\n }\n\n // Iterate through all keys (all slip types) for new errors\n for (const key of newKeys) {\n const clientErrors = clientTypeErrors[key];\n const newErrors = newCollection[key];\n\n // Make sure we keep result errors from before\n const existingResultErrors = result[key];\n\n if (!newErrors.length) {\n result[key] = existingResultErrors ? existingResultErrors : [];\n hasChanged = hasChanged || !oldKeys.includes(key) || !!clientErrors?.length;\n\n continue;\n }\n\n // Check if we have current errors for this key\n if (!clientErrors || !clientErrors.length) {\n // If we don't have current errors, just take the new ones\n result[key] = existingResultErrors ? [...existingResultErrors, ...newErrors] : newErrors;\n hasChanged = true;\n\n continue;\n }\n\n // If we have current errors for this slip, update the errors\n const resultErrors = errorCollectionUpdater(clientErrors, newErrors);\n\n result[key] = existingResultErrors ? [...existingResultErrors, ...resultErrors] : resultErrors;\n\n // If the errors have changed before or the result errors do not equal the current erros, set hasChanged to true\n hasChanged = hasChanged || resultErrors !== clientErrors;\n }\n\n return {\n errors: result,\n hasChanged,\n };\n}\n\n/**\n * A betslip errors reducer helper. Add/Replace/Deletes errors from current errors for which we have a validator\n *\n * @param currentErrors\n * @param newErrors - It is mandatory all new errors to be with hasClientValidation === true.\n */\nexport const errorCollectionUpdater = (currentErrors: TError[], newErrors: TError[]): TError[] => {\n // Get all errors that are not validated on client.\n const result: TError[] = [];\n const clientErrors: TError[] = [];\n for (const error of currentErrors) {\n if (error.hasClientValidation) {\n clientErrors.push(error);\n } else {\n result.push(error);\n }\n }\n\n let hasNewError = false;\n\n // Go foreach of new errors.\n for (const newError of newErrors) {\n // Try to check if already this error exists.\n const sameError = clientErrors.find((be) => be.equals(newError));\n\n // If error is already present do not update it.\n if (sameError) {\n // Take the same error just change the origin.\n const updatedError = sameError.copy();\n updatedError.origin = ErrorOrigin.BetSlip;\n result.push(updatedError);\n } else {\n hasNewError = true;\n result.push(newError);\n }\n }\n if (result.length === currentErrors.length && !hasNewError) {\n return currentErrors;\n }\n\n return result;\n};\n\nexport function extractPickErrors(\n pickErrors: BetslipTypePickErrors,\n betslipTypeErrors: BetslipTypeErrors,\n): [BetslipTypePickErrors, BetslipTypeErrors] {\n const extractedPickErrors: BetslipTypePickErrors = {\n SINGLE: { ...pickErrors[BetslipType.Single] },\n COMBO: { ...pickErrors[BetslipType.Combo] },\n SYSTEM: { ...pickErrors[BetslipType.System] },\n TEASER: { ...pickErrors[BetslipType.Teaser] },\n EDIT_MY_BET: { ...pickErrors[BetslipType.EditBet] },\n BET_BUILDER: { ...pickErrors[BetslipType.BetBuilder] },\n };\n\n const filteredTypeErrors: BetslipTypeErrors = emptyBetslipTypeErrors();\n\n for (const type of [BetslipType.Single, BetslipType.Combo, BetslipType.System, BetslipType.Teaser, BetslipType.EditBet, BetslipType.BetBuilder]) {\n const typeErrors = betslipTypeErrors[type];\n const typePickErrors = extractedPickErrors[type];\n\n for (const error of typeErrors) {\n if (error instanceof ResultError && !!error.pickId) {\n typePickErrors[error.pickId] = typePickErrors[error.pickId] || [];\n\n typePickErrors[error.pickId].push(error);\n continue;\n }\n\n filteredTypeErrors[type].push(error);\n }\n }\n\n return [extractedPickErrors, filteredTypeErrors];\n}\n\nexport const getTypedPickErrors = function (pickErrors: BetslipTypePickErrors): [BetslipType, IBetslipPickErrors][] {\n return Object.entries(pickErrors).map(([key, errors]) => [key as BetslipType, errors]);\n};\n\nconst getTypedBetslipErrors = function (slipErrors: BetslipTypeErrors): [BetslipType, BetslipError[]][] {\n return Object.entries(slipErrors).map(([key, errors]) => [key as BetslipType, errors]);\n};\n\nexport const filterErrorState = (\n state: IBetslipErrorsState,\n betslipErrorsPredicate: (error: BetslipError) => boolean,\n betslipTypeErrorsPredicate: (error: BetslipError) => boolean,\n slipErrorsPredicate: (error: BetslipError) => boolean,\n pickErrorsPredicate: (error: ResultError) => boolean,\n): IBetslipErrorsState => {\n const betslipErrors = state.betslipErrors.filter(betslipErrorsPredicate);\n\n const pickErrors: BetslipTypePickErrors = emptyPickErrors();\n const betslipTypeErrors: BetslipTypeErrors = emptyBetslipTypeErrors();\n const slipErrors: Record = {};\n\n for (const [type, errors] of getTypedPickErrors(state.pickErrors)) {\n const pickIds = Object.keys(errors);\n\n for (const pickId of pickIds) {\n pickErrors[type][pickId] = errors[pickId].filter(pickErrorsPredicate);\n }\n }\n\n for (const [type, errors] of getTypedBetslipErrors(state.betslipTypeErrors)) {\n betslipTypeErrors[type] = errors.filter(betslipTypeErrorsPredicate);\n }\n\n for (const [key, errors] of Object.entries(state.slipErrors)) {\n slipErrors[key] = errors.filter(slipErrorsPredicate);\n }\n\n return {\n pickErrors,\n betslipTypeErrors,\n betslipErrors,\n slipErrors,\n };\n};\n\n// Caution: This modifies the original errors which is fine for reducers since they handle immutability.\n// This should be used with caution elsewhere.\nexport const modifyErrorState = (\n state: IBetslipErrorsState,\n betslipErrorsMap: (error: BetslipError) => [BetslipError, boolean],\n betslipTypeErrorsMap: (error: BetslipError) => [BetslipError, boolean],\n slipErrorsMap: (error: BetslipError) => [BetslipError, boolean],\n pickErrorsMap: (error: ResultError) => [ResultError, boolean],\n): IBetslipErrorsState & { isModified: boolean } => {\n const betslipErrorsMapping = state.betslipErrors.map(betslipErrorsMap);\n\n let isModified = betslipErrorsMapping.some(([_, modified]) => modified);\n\n const betslipErrors = betslipErrorsMapping.map(([e]) => e);\n\n const pickErrors: BetslipTypePickErrors = emptyPickErrors();\n const betslipTypeErrors: BetslipTypeErrors = emptyBetslipTypeErrors();\n const slipErrors: Record = {};\n\n for (const [type, errors] of getTypedPickErrors(state.pickErrors)) {\n const pickIds = Object.keys(errors);\n\n for (const pickId of pickIds) {\n const mappedErrors = errors[pickId].map(pickErrorsMap);\n\n isModified = isModified || mappedErrors.some(([_, modified]) => modified);\n\n pickErrors[type][pickId] = mappedErrors.map(([e]) => e);\n }\n }\n\n for (const [type, errors] of getTypedBetslipErrors(state.betslipTypeErrors)) {\n const mappedErrors = errors.map(betslipTypeErrorsMap);\n\n isModified = isModified || mappedErrors.some(([_, modified]) => modified);\n\n betslipTypeErrors[type] = mappedErrors.map(([e]) => e);\n }\n\n for (const [key, errors] of Object.entries(state.slipErrors)) {\n const mappedErrors = errors.map(slipErrorsMap);\n\n isModified = isModified || mappedErrors.some(([_, modified]) => modified);\n\n slipErrors[key] = mappedErrors.map(([e]) => e);\n }\n\n return {\n pickErrors,\n betslipTypeErrors,\n betslipErrors,\n slipErrors,\n isModified,\n };\n};\n\nexport function getSlipErrorsForType(type: BetslipType, slipErrors: SlipErrors, typesState: IBetslipTypeState, isLinear: boolean): BetslipError[] {\n switch (type) {\n case BetslipType.Combo:\n return slipErrors[getComboSlipId()] ?? [];\n\n case BetslipType.Teaser:\n return slipErrors[getTeaserSlipId()] ?? [];\n\n case BetslipType.System:\n return isLinear\n ? Object.values(typesState.systemBet.linearTypeStakes).flatMap((systemType) => slipErrors[getSystemSlipId(systemType.slipType)] ?? [])\n : typesState.systemBet.systemInfo\n ? (slipErrors[getSystemSlipId(typesState.systemBet.systemInfo)] ?? [])\n : [];\n\n case BetslipType.Single:\n return Object.keys(typesState.singleBet.picks).flatMap((pick) => slipErrors[getSingleSlipIdFromString(pick)] ?? []);\n\n case BetslipType.EditBet:\n return slipErrors[getEditBetSlipId()] ?? [];\n\n case BetslipType.BetBuilder:\n return Object.keys(typesState.betBuilder.picks).flatMap((pick) => slipErrors[getBetBuilderSlipIdFromString(pick)] ?? []);\n }\n}\n\nexport function checkSlipErrorsForSinglePicks(slipErrors: SlipErrors, picks: BetslipPick[], predicate: (error: BetslipError) => boolean): boolean {\n return picks.some((pick) => slipErrors[getSingleSlipId(pick.id)]?.some(predicate));\n}\n\nexport function hasOddsChangedError(pickErrors: BetslipTypePickErrors): boolean {\n return Object.values(pickErrors).some((p) =>\n Object.values(p).some((errors) => errors.some((error) => error.type === PlacementErrorType.OddsChanged)),\n );\n}\n\nexport const getAllPickErrorTypes = function (typePickErrors: BetslipTypePickErrors): Set {\n const types = Object.values(typePickErrors).flatMap((typeErrors) =>\n Object.values(typeErrors).flatMap((errors) => errors.map((error) => error.type)),\n );\n\n return new Set(types);\n};\n\nexport const hasAnyErrors = function (state: IBetslipErrorsState): boolean {\n return (\n state.betslipErrors.length > 0 ||\n Object.values(state.slipErrors).some((s) => s.length > 0) ||\n Object.values(state.betslipTypeErrors).some((s) => s.length > 0) ||\n Object.values(state.pickErrors).some((p) => Object.values(p).some((e) => e.length > 0))\n );\n};\n\nexport const getErrorsAcrossTypesForPicks = function (errors: BetslipTypePickErrors): IBetslipPickErrors {\n return Object.values(errors).reduce((a, c) => {\n const pickErrors = Object.entries(c);\n\n for (const [key, value] of pickErrors) {\n a[key] = a[key] ? [...a[key], ...value] : [...value];\n }\n\n return a;\n }, {} as IBetslipPickErrors);\n};\n","import { BetSlipType, OddsBoostFormula } from '@bpos';\nimport { ReplaceableParameter } from '@bpos/v1/sports-promo/campaigns';\nimport { RewardTargetType } from '@bpos/v1/sports-promo/tokens';\nimport { NumberDictionary, StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\nimport { Odds } from '@frontend/sports/odds/feature';\nimport {\n BetStatus,\n BuildABet,\n PayoutType,\n RewardTokenType,\n RewardTriggerType,\n TokenFilter,\n} from 'packages/sports/web/app/src/tokens-base/token-base.models';\n\nimport { BetslipType } from '../../core/betslip-type';\nimport { PickId } from '../../core/picks/pick-id';\nimport { IRewardTokenEligibility } from './state';\n\nexport const ACCA_BOOST_ID = 'AccaBoost';\n\nexport interface IRewardToken {\n id: string;\n startDate: Date;\n expiryDate: Date;\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 maximumStake?: number;\n selectionLevelMinimumOdds?: TokenOddsData;\n selectionLevelMaximumOdds?: TokenOddsData;\n replaceableParameters?: StringDictionary;\n minimumOdds?: TokenOddsData;\n maximumOdds?: TokenOddsData;\n customDescription?: string;\n isBetBuilder?: boolean;\n isSingleAndComboSelected?: boolean;\n url?: string;\n customMarketTypes?: string;\n rewardTargetType?: RewardTargetType;\n isIncrementalPayout?: boolean;\n incrementalBetAmount?: number;\n incrementalPayoutNoOfTimes?: number;\n isVipExclusive?: boolean;\n}\n\nexport interface OddsBoostToken extends IRewardToken {\n boostFactor: number;\n maxWinningsBoost?: number;\n minimumStake?: number;\n oddsBoostFormula: OddsBoostFormula;\n}\n\nexport interface RiskFreeToken extends IRewardToken {\n maximumPayout: number;\n minimumStake?: number;\n riskFreePercentage: number;\n}\n\nexport interface FreeBetToken extends IRewardToken {\n amount: number;\n}\n\nexport interface BetAndGetToken extends IRewardToken {\n percentagePayout: number | undefined;\n payoutValue: number;\n rewardTriggerType: RewardTriggerType;\n maximumPayout?: number;\n minimumPayout?: number;\n betStatus: BetStatus;\n minimumStake: number;\n subType: string;\n isEarlyPayoutEnabled?: boolean;\n buildABet?: BuildABet;\n}\n\nexport interface TokenOddsData {\n european: number;\n britishNumerator: number;\n britishDenominator: number;\n american: number;\n}\n\nexport interface BetStationFreeBetToken extends IRewardToken {\n amount: number;\n currency: string;\n marketTemplateIds: Array;\n marketParameters: Array;\n}\n\nexport interface AccaBoostToken extends IRewardToken {\n boostLadder: AccaBoostLadderItem[];\n maxReward: number;\n priority: number;\n filter: AccaBoostFilter;\n countryCodes: string[];\n}\nexport interface EdsToken extends IRewardToken {\n priority?: number;\n replaceableParameters: Record;\n filter: EdsFilter;\n}\n\nexport interface AccaBoostLadderItem {\n numberOfLegs: number;\n ratio: number;\n}\nexport interface EdsFilter extends TokenFilter {\n marketIds: Array;\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}\n\nexport interface AccaBoostFilter extends TokenFilter {\n sportsConfigs: Record;\n minOddsPerLeg: AccaBoostTokenMinOdds;\n}\n\nexport interface AccaBoostSportConfig {\n gridGroups: StringDictionary;\n competitions: StringDictionary;\n}\n\nexport interface AccaBoostTokenMinOdds {\n european: number;\n britishNumerator: number;\n britishDenominator: number;\n american: number;\n}\n\nexport interface BestOddsGuaranteedToken extends IRewardToken {\n filter: BestOddsGuaranteedFilter;\n}\n\nexport interface BestOddsGuaranteedFilter extends TokenFilter {\n slipTypes: BetSlipType[];\n sportsFilter: NumberDictionary;\n}\n\nexport interface BestOddsGuaranteedSportsFilter {\n regions: number[];\n competitions: number[];\n meetings: number[];\n}\n\nexport enum AvailableTokensType {\n FreeBet = 'FreeBet',\n RiskFreeBet = 'RiskFreeBet',\n OddsBoost = 'OddsBoost',\n BetAndGet = 'BetAndGet',\n AccaBoost = 'AccaBoost',\n MultipleRewards = 'MultipleRewards',\n}\n\nexport enum CriteriaType {\n Sports = 'Sports',\n Competitions = 'Competitions',\n Meetings = 'Meetings',\n Fixtures = 'Fixtures',\n GameType = 'GameType',\n OptionId = 'OptionId',\n TemplateId = 'TemplateId',\n MarketParameter = 'MarketParameter',\n MarketId = 'MarketId',\n Forbidden = 'Forbidden',\n EachWaySelected = 'EachWaySelected',\n StartDate = 'StartDate',\n ExpiryDate = 'ExpiryDate',\n ParticipantBetSelected = 'ParticipantBetSelected',\n BetBuilderBetSelected = 'BetBuilderBetSelected',\n MinOdds = 'MinOdds',\n MaxOdds = 'MaxOdds',\n SelectionMaxOdds = 'SelectionMaxOdds',\n Market = 'Market',\n // eslint-disable-next-line @typescript-eslint/no-shadow\n SlipType = 'SlipType',\n MinimumLegs = 'MinimumLegs',\n MaximumStake = 'MaximumStake',\n MinimumStake = 'MinimumStake',\n DayOfWeek = 'DayOfWeek',\n TimeOfDay = 'TimeOfDay',\n BestOddsFlag = 'BestOddsFlag',\n MultiSingleBet = 'MultiSingleBet',\n SelectionOdds = 'SelectionOdds',\n TotalOdds = 'TotalOdds',\n SelectionsCount = 'SelectionsCount',\n Stake = 'Stake',\n Currency = 'Currency',\n BetBuilder = 'BetBuilder',\n SystemBet = 'SystemBet',\n TeaserReward = 'TeaserReward',\n EachWay = 'EachWay',\n ComboPrevention = 'ComboPrevention',\n}\n\nexport interface IOnboardingViewData {\n title: string;\n content: string;\n icon: string | undefined;\n isNew: boolean;\n}\n\nexport interface IRewardTokenSelection {\n tokenId: string;\n pickId?: PickId;\n betslipType?: BetslipType;\n trackingSource?: { [key: string]: string };\n}\n\nexport interface IRewardTokenDeSelection {\n rewardTokenType?: RewardTokenType;\n}\n\nexport interface IRewardTokenInfo {\n token: IRewardToken;\n selected: boolean;\n}\n\nexport interface MarketParameter {\n marketType: string;\n period: string;\n happening: string;\n}\n\nexport enum RewardBannerTrackingConstants {\n Load = 'load',\n Expand = 'expand',\n Collapse = 'collapse',\n Click = 'click',\n BetRewardsBanner = 'bet rewards banner',\n RewardsBanner = 'rewards banner',\n RewardDetails = 'reward details',\n PromoHub = 'promo hub',\n}\n\nexport interface BetAndGetEdsToken {\n payoutType: PayoutType;\n triggerType: RewardTriggerType;\n payoutDetails: PayoutDetails;\n maximumPayout?: number;\n rewardTargetType?: RewardTargetType;\n}\n\nexport interface PayoutDetails extends IncrementalPayoutDetails {\n value: number;\n percentage: number | undefined;\n maxValue?: number;\n}\n\nexport interface VIPExclusiveDetails {\n badge: string;\n badgeSize: string;\n badgeTitle: string;\n}\n\nexport interface PromoTokenPlaceBetSignPostingInfo extends IncrementalPayoutDetails {\n rewardTargetType?: RewardTargetType;\n}\n\nexport interface IncrementalPayoutDetails {\n noOfSlabs?: number;\n slabAmount?: number;\n}\n\n// TODO - nx library split - During consolidation of the tokens models we should check if we can take these values directly from the bpos contract\n// TODO: @Andriy explore ways of having this from bpos-v4 typings\nexport enum RewardTokenAdditionalInfoKeys {\n BoostPercentage = 'boostPercentage',\n MaxTokenStake = 'maxTokenStake',\n MaxWinningsBoost = 'maxWinningsBoost',\n UserExpectedWinningsBoost = 'userExpectedWinningsBoost',\n RiskFreeMaxCompensation = 'riskFreeMaxCompensation',\n RiskFreePercentage = 'riskFreePercentage',\n AccaBoostRatio = 'accaBoostRatio',\n AccaBoostFormulaType = 'formulaType',\n EdsCampaignPromotionType = 'edsCampaignPromotionType',\n BetIndex = 'betIndex',\n IsDigitalV2 = 'isDigitalV2',\n OddsBoostFormulaType = 'oddsBoostFormula',\n PlaceBetSignPostingData = 'placeBetSignPostingData',\n PlaceBetSignPostingVersion = 'placeBetSignPostingVersion',\n}\n\nexport interface EdsTokenWithEligiblePicks {\n token: EdsToken;\n eligiblePicksIds: string[];\n}\n\nexport interface BogTokenWithEligibility {\n token: BestOddsGuaranteedToken;\n eligibility: IRewardTokenEligibility | undefined;\n}\n\nexport interface RewardTokenContext {\n betslipType: BetslipType | undefined;\n pickId?: PickId;\n}\n\nexport interface RewardTokenSelectionContext {\n betslipType: BetslipType | undefined;\n pickId?: string;\n}\n\nexport interface SelectedRewardTokenState {\n tokenId: string;\n token: IRewardToken | null;\n tokenEligibility: IRewardTokenEligibility | null;\n}\n\nexport interface AcquisitionContext {\n acquisitionNotificationShown: boolean;\n autoApplyNotificationShown: boolean;\n AddWelcomeOfferNotificationShown: boolean;\n deselectedByUser: boolean;\n rewardAutoApplied: boolean;\n}\n\nexport enum AcquisitionContextType {\n BannerTooltip = 'BannerTooltip',\n AutoApplyTooltip = 'AutoApplyTooltip',\n AutoApply = 'AutoApply',\n DeselectedByUser = 'DeselectedByUser',\n AddWelcomeOffer = 'AddWelcomeOffer',\n}\n","import { EdsPromoTokenType } from '@bpos';\nimport { EdsPromotionToken } from '@bpos/v1/my-bets';\nimport { RewardTargetType } from '@bpos/v1/sports-promo/tokens';\nimport { FixturePricingState } from '@cds/betting-offer/add-ons';\nimport { Nullable, hasValue, isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { CalculatedOdds, Odds, OddsOperations, emptyCalculatedOdds, emptyOdds } from '@frontend/sports/odds/feature';\nimport { Decimal } from 'decimal.js';\nimport { orderBy } from 'lodash-es';\nimport { BestOddsFixtureLikeInput } from 'packages/sports/web/app/src/best-odds-guarantee/models/models';\nimport { BuildABet, IRewardTokenData, PayoutType, RewardTokenType } from 'packages/sports/web/app/src/tokens-base/token-base.models';\n\nimport { BetslipType } from '../../../core/betslip-type';\nimport { BetslipPick } from '../../../core/picks/betslip-pick';\nimport { BetBuilderPickId, GroupPickId } from '../../../core/picks/pick-id';\nimport { PickOddsState, PriceType } from '../../../core/picks/pick-models';\nimport {\n BetslipV2HorseRaceOptionMarketPick,\n BetslipV2HorseRaceWinParticipantPick,\n BetslipV2HorseRaceXCastPick,\n} from '../../../core/picks/sport-specific/betslip-v2-horse-race-picks';\nimport { filterPicksForType } from '../../picks/services/linear-betslip-pick.utils';\nimport { ISlipSummary } from '../../summary/models';\nimport { IBetslipTypeState } from '../../types/state';\nimport { isErrorComboPrevention } from '../../validation/services/utils/betslip-errors-utils';\nimport { BetslipTypePickErrors } from '../../validation/state';\nimport {\n AccaBoostLadderItem,\n AccaBoostToken,\n AvailableTokensType,\n BetAndGetToken,\n CriteriaType,\n FreeBetToken,\n IRewardToken,\n OddsBoostToken,\n RewardTokenContext,\n RiskFreeToken,\n TokenOddsData,\n} from '../reward-tokens.model';\nimport { IRewardTokenEligibility, IRewardTokenEligibilityState, TokensRecord } from '../state';\n\nexport function isFreebetToken(token?: IRewardToken | IRewardTokenData | null): token is FreeBetToken {\n return !!token && token.rewardTokenType === RewardTokenType.FreeBet;\n}\n\nexport function isOddsBoostToken(token: IRewardToken | IRewardTokenData | null): token is OddsBoostToken {\n return !!token && token.rewardTokenType === RewardTokenType.OddsBoost;\n}\n\nexport function isRiskFreeToken(token: IRewardToken | IRewardTokenData | null): token is RiskFreeToken {\n return !!token && token.rewardTokenType === RewardTokenType.RiskFreeBet;\n}\n\nexport function isBetAndGetToken(token: IRewardToken | IRewardTokenData | null): token is BetAndGetToken {\n return !!token && token.rewardTokenType === RewardTokenType.BetAndGet;\n}\n\nexport function isAccaBoostToken(token?: Nullable): token is AccaBoostToken {\n return !!token && token.rewardTokenType === RewardTokenType.AccaBoost;\n}\n\nexport function getAcquisitionRewardToken(tokens: IRewardToken[]): IRewardToken | undefined {\n return tokens.find((token) => isAcquisitionRewardToken(token));\n}\n\nconst isAcquisitionRewardToken = (token: IRewardToken): boolean => token.rewardTargetType === RewardTargetType.WelcomeOffer;\n\nexport function getPayoutExpiryInDays(token: IRewardToken): string {\n if (!token.payoutExpiry) {\n return '1';\n }\n\n const expiry = token.payoutExpiry / 24;\n\n return (expiry <= 1 ? 1 : Math.round(expiry)).toString();\n}\n\nexport function getTokensType(tokens: IRewardToken[]): AvailableTokensType {\n if (tokens.every((token) => isFreebetToken(token))) {\n return AvailableTokensType.FreeBet;\n }\n if (tokens.every((token) => isOddsBoostToken(token))) {\n return AvailableTokensType.OddsBoost;\n }\n if (tokens.every((token) => isRiskFreeToken(token))) {\n return AvailableTokensType.RiskFreeBet;\n }\n if (tokens.every((token) => isAccaBoostToken(token))) {\n return AvailableTokensType.AccaBoost;\n }\n\n if (tokens.every((token) => isBetAndGetToken(token))) {\n return AvailableTokensType.BetAndGet;\n }\n\n return AvailableTokensType.MultipleRewards;\n}\n\nexport function getNonAccaTokens(tokens: IRewardToken[]): IRewardToken[] {\n return tokens.filter((token) => !isAccaBoostToken(token));\n}\n\nexport function getSortedNonAccaTokensWithExpiryDate(tokens: IRewardToken[], isVIPBadgeEnabled: boolean): IRewardToken[] {\n return orderBy(getNonAccaTokens(tokens), [\n (token) => token.rewardTargetType !== RewardTargetType.WelcomeOffer,\n (token) => (isVIPBadgeEnabled ? !token.isVipExclusive && token.expiryDate : false),\n (token) => token.expiryDate,\n ]);\n}\n\nexport function getSortedNonAccaTokens(tokens: IRewardToken[]): IRewardToken[] {\n return orderBy(getNonAccaTokens(tokens), (token) => isAcquisitionRewardToken(token), 'desc');\n}\n\nexport function findAccaBoostLadderItem(token: AccaBoostToken, count: number): AccaBoostLadderItem {\n return token.boostLadder.reduce((previous, current) => {\n return current.numberOfLegs <= count ? current : previous;\n });\n}\n\nexport function getAccaBoostRatio(token: AccaBoostToken, count: number): Decimal {\n return new Decimal(findAccaBoostLadderItem(token, count).ratio);\n}\n\nexport function findMinimumLegsAccaTokens(eligibilityState: IRewardTokenEligibilityState, tokens: TokensRecord): AccaBoostToken[] {\n const accaTokens = Object.values(tokens).filter(isAccaBoostToken);\n\n return accaTokens.sort(byAccaPriority).filter((token) => {\n const eligibility = eligibilityState.comboBet.find((item) => item.tokenId === token.userTokenId);\n\n return !!eligibility && eligibility.invalidHardCriteria === CriteriaType.MinimumLegs;\n });\n}\n\nexport function findMinimumOddsAccaTokens(eligibilityState: IRewardTokenEligibilityState, tokens: TokensRecord): AccaBoostToken | undefined {\n const accaTokens = Object.values(tokens).filter(isAccaBoostToken);\n\n return accaTokens.sort(byAccaPriority).find((token) => {\n const eligibility = eligibilityState.comboBet.find((item) => item.tokenId === token.userTokenId);\n\n return !!eligibility && eligibility.invalidHardCriteria === CriteriaType.MinOdds;\n });\n}\n\nexport const byAccaPriority = (first: AccaBoostToken, second: AccaBoostToken): number => first.priority - second.priority;\n\nexport function isValidAccaBoostCombo(\n typePickErrors: BetslipTypePickErrors,\n pickList: BetslipPick[],\n types: IBetslipTypeState,\n isLinear: boolean,\n): boolean {\n const type = types.base.currentSelectedType;\n\n const isValidTab = (type === BetslipType.Combo && !types.comboBet.isEachWay) || type === BetslipType.Single;\n\n if (!type || !isValidTab) {\n return false;\n }\n\n const selectedPicks = filterPicksForType(types, type, pickList, {\n isLocked: isLinear ? false : undefined,\n isSelected: true,\n });\n\n if (selectedPicks.length < 2) {\n return false;\n }\n\n const allValidPicks = selectedPicks.every(({ oddsState }) => oddsState === PickOddsState.Open);\n\n if (!allValidPicks) {\n return false;\n }\n\n const pickErrors = typePickErrors[type];\n\n return !Object.values(pickErrors)\n .flatMap((errors) => errors)\n .some((e) => isErrorComboPrevention(e));\n}\n\nexport function calcTotalOdds(picks: BetslipPick[], roundPriceValues: boolean = false): CalculatedOdds {\n const totalOdds = picks.reduce(\n (odds: CalculatedOdds, pick: BetslipPick) => {\n if (\n (OddsOperations.isOddsEmpty(odds),\n !pick.currentPrice || pick.priceType !== PriceType.Fixed || OddsOperations.isOddsEmpty(pick.currentPrice.nativeOdds))\n ) {\n odds = emptyCalculatedOdds;\n } else {\n odds = OddsOperations.multiply([odds, OddsOperations.toCalculatedOdds(pick.currentPrice!.nativeOdds)], roundPriceValues);\n }\n\n return odds;\n },\n OddsOperations.fromDecimalValue(new Decimal(1)),\n );\n\n return totalOdds;\n}\n\nexport function calcTotalOddsForOddsBoost(picks: BetslipPick[], roundPriceValues: boolean = false): CalculatedOdds {\n const oddsArray = picks.filter((p) => p.currentPrice?.nativeOdds).map((p) => OddsOperations.toCalculatedOdds(p.currentPrice!.nativeOdds));\n\n return OddsOperations.multiply(oddsArray, roundPriceValues);\n}\n\nexport function calculateWinningsBoost(slipSummary: ISlipSummary): Decimal {\n const boostedWinnings = slipSummary.rewardTokenModifications?.oddsBoost?.boostedWinnings;\n const possibleWinnings = slipSummary.possibleWinnings;\n\n return boostedWinnings && possibleWinnings ? boostedWinnings.minus(possibleWinnings) : new Decimal(0);\n}\n\nexport function convertToBestOddsFixtureLikeInput(\n pick: BetslipV2HorseRaceOptionMarketPick | BetslipV2HorseRaceWinParticipantPick | BetslipV2HorseRaceXCastPick,\n): BestOddsFixtureLikeInput {\n const horseFixture = pick.fixture;\n const fixture: BestOddsFixtureLikeInput = {\n startDate: pick.fixture.eventDate.toISOString(),\n fixtureType: pick.fixture.fixtureType,\n sport: { id: horseFixture.sportId },\n meeting: hasValue(horseFixture.league) ? { id: horseFixture.league.id } : undefined,\n region: hasValue(horseFixture.region) ? { id: horseFixture.region.id } : undefined,\n competition: hasValue(horseFixture.league) ? { id: horseFixture.league.id } : undefined,\n addons: {\n pricingState: FixturePricingState.None,\n isRaceOff: horseFixture.isRaceOff,\n bestOddsGuarantee:\n horseFixture.bestOddsGuarantee && pick.currentPrice?.type !== PriceType.StartingPrice && !BetslipV2HorseRaceXCastPick.isPick(pick),\n },\n };\n\n return fixture;\n}\n\nexport function getAllEligibleTokens(eligibilityState: IRewardTokenEligibilityState, tokens: TokensRecord): IRewardToken[] {\n const ids: string[] = [];\n\n Object.values(eligibilityState.singleBet)\n .flatMap((e) => e)\n .forEach((eligibility) => {\n if (!eligibility.isEligible || ids.includes(eligibility.tokenId)) {\n return;\n }\n\n ids.push(eligibility.tokenId);\n });\n\n Object.values(eligibilityState.betBuilder)\n .flatMap((e) => e)\n .forEach((eligibility) => {\n if (!eligibility.isEligible || ids.includes(eligibility.tokenId)) {\n return;\n }\n\n ids.push(eligibility.tokenId);\n });\n\n eligibilityState.comboBet.forEach((eligibility) => {\n if (!eligibility.isEligible || ids.includes(eligibility.tokenId)) {\n return;\n }\n\n ids.push(eligibility.tokenId);\n });\n\n eligibilityState.teaserBet.forEach((eligibility) => {\n if (!eligibility.isEligible || ids.includes(eligibility.tokenId)) {\n return;\n }\n\n ids.push(eligibility.tokenId);\n });\n\n return ids.map((id) => tokens[id]).filter(isDefined);\n}\n\nexport function isBetBuilderExclusiveToken(token: IRewardToken | BetAndGetToken) {\n return (\n (token.isBetBuilder && !token.filter.betSlipType && !token.isSingleAndComboSelected) ||\n ('buildABet' in token && token.buildABet === BuildABet.Yes)\n );\n}\nexport function isBetBuilderToken(token: IRewardToken | BetAndGetToken) {\n return token.isBetBuilder || ('buildABet' in token && token?.buildABet !== BuildABet.No);\n}\n\n// This is only used for quick-bet-builder-drawer, therefore we do not need\nexport function getTokenContextForBetBuilderPickId(\n pickId: BetBuilderPickId | GroupPickId,\n isSportcastAsComboEnabled: boolean,\n isLinear: boolean,\n): RewardTokenContext {\n if (isLinear) {\n return {\n betslipType: BetslipType.BetBuilder,\n pickId,\n };\n }\n\n const isComboBetContext = GroupPickId.isId(pickId) || isSportcastAsComboEnabled;\n\n return {\n betslipType: isComboBetContext ? BetslipType.Combo : BetslipType.Single,\n pickId: isComboBetContext ? undefined : pickId,\n };\n}\n\nexport function mapOdds(oddsPerLeg: TokenOddsData | undefined): Odds {\n if (!oddsPerLeg) {\n return emptyOdds;\n }\n\n const { european, britishNumerator, britishDenominator, american } = oddsPerLeg;\n\n return OddsOperations.createOdds({\n odds: european,\n numerator: britishNumerator,\n denominator: britishDenominator,\n americanOdds: american,\n });\n}\n\nexport function parseMarketType(token: IRewardToken): string[] {\n const marketTypes = token.customMarketTypes\n ? (token.customMarketTypes.split(',') ?? [])\n : token.filter.marketParameters.map((mt) => mt.marketType);\n\n return marketTypes;\n}\n\nexport function isIncrementalPayoutEligible(token: IRewardToken, stake?: number): boolean {\n return (\n token.payoutType === PayoutType.FreeBet &&\n !!token.isIncrementalPayout &&\n !!token.incrementalBetAmount &&\n !!token.incrementalPayoutNoOfTimes &&\n !!stake &&\n stake >= token.incrementalBetAmount &&\n token.incrementalPayoutNoOfTimes > 1\n );\n}\n\nexport function isEdsPromoTokenBetAndGet(edsPromoTokens: EdsPromotionToken[] | undefined): boolean {\n return edsPromoTokens?.length === 1 && edsPromoTokens[0].tokenType === EdsPromoTokenType.BetAndGet;\n}\n\nexport function isAcquisitionEligible(token: IRewardTokenEligibility, acquisitionUserTokenId: string): boolean {\n return token.isEligible && !!Object.values(token.softCriteriasValidity).every(Boolean) && acquisitionUserTokenId === token.tokenId;\n}\n","export const SYSTEMS = [\n { id: 'systembankersingles', picks: -1, bets: -1, group: 1, basis: [1] },\n { id: 'system2of3', picks: 3, bets: 3, group: 2, basis: [2] },\n { id: 'patent', picks: 3, bets: 7, group: 9, basis: [1, 2, 3] },\n { id: 'trixie', picks: 3, bets: 4, group: 8, basis: [2, 3] },\n { id: 'system3of4', picks: 4, bets: 4, group: 3, basis: [3] },\n { id: 'system2of4', picks: 4, bets: 6, group: 2, basis: [2] },\n { id: 'lucky15', picks: 4, bets: 15, group: 9, basis: [1, 2, 3, 4] },\n { id: 'yankee', picks: 4, bets: 11, group: 8, basis: [2, 3, 4] },\n { id: 'system4of5', picks: 5, bets: 5, group: 4, basis: [4] },\n { id: 'system3of5', picks: 5, bets: 10, group: 3, basis: [3] },\n { id: 'system2of5', picks: 5, bets: 10, group: 2, basis: [2] },\n { id: 'lucky31', picks: 5, bets: 31, group: 9, basis: [1, 2, 3, 4, 5] },\n { id: 'canadian', picks: 5, bets: 26, group: 8, basis: [2, 3, 4, 5] },\n { id: 'system5of6', picks: 6, bets: 6, group: 5, basis: [5] },\n { id: 'system4of6', picks: 6, bets: 15, group: 4, basis: [4] },\n { id: 'system3of6', picks: 6, bets: 20, group: 3, basis: [3] },\n { id: 'system2of6', picks: 6, bets: 15, group: 2, basis: [2] },\n { id: 'lucky63', picks: 6, bets: 63, group: 9, basis: [1, 2, 3, 4, 5, 6] },\n { id: 'heinz', picks: 6, bets: 57, group: 8, basis: [2, 3, 4, 5, 6] },\n { id: 'system6of7', picks: 7, bets: 7, group: 6, basis: [6] },\n { id: 'system5of7', picks: 7, bets: 21, group: 5, basis: [5] },\n { id: 'system4of7', picks: 7, bets: 35, group: 4, basis: [4] },\n { id: 'system3of7', picks: 7, bets: 35, group: 3, basis: [3] },\n { id: 'system2of7', picks: 7, bets: 21, group: 2, basis: [2] },\n { id: 'superheinz', picks: 7, bets: 120, group: 8, basis: [2, 3, 4, 5, 6, 7] },\n { id: 'system7of8', picks: 8, bets: 8, group: 7, basis: [7] },\n { id: 'system6of8', picks: 8, bets: 28, group: 6, basis: [6] },\n { id: 'system5of8', picks: 8, bets: 56, group: 5, basis: [5] },\n { id: 'system4of8', picks: 8, bets: 70, group: 4, basis: [4] },\n { id: 'system3of8', picks: 8, bets: 56, group: 3, basis: [3] },\n { id: 'system2of8', picks: 8, bets: 28, group: 2, basis: [2] },\n { id: 'goliath', picks: 8, bets: 247, group: 8, basis: [2, 3, 4, 5, 6, 7, 8] },\n];\n","import { BetslipType } from '../../../../core/betslip-type';\nimport { IBetBuilderBetState } from '../../../bet-builder/models';\nimport { IComboBetState } from '../../../combo-bet/state';\nimport { isFreebetToken } from '../../../reward-tokens/services/reward-tokens.utils';\nimport { IRewardTokensState } from '../../../reward-tokens/state';\nimport { ISingleBetState } from '../../../single-bet/state';\nimport { SystemKey } from '../../../system-bet/models';\nimport { SYSTEMS } from '../../../system-bet/services/system-bet.constants';\nimport { ISystemBetState } from '../../../system-bet/state';\nimport { ITeaserBetState } from '../../../teaser-bet/state';\nimport { IBetslipTypeState } from '../../../types/state';\n\nexport interface TotalStake {\n stake: number | null;\n freeBetAmount: number | null;\n}\n\nfunction getStakeWithEachWay({ isEachWay, stake }: { isEachWay: boolean; stake: number | null }): number | null {\n if (!stake) {\n return null;\n }\n\n return isEachWay ? stake * 2 : stake;\n}\n\nexport function isFreeBetStake(stakes: TotalStake[]): boolean {\n const valueStakes = stakes.filter((stake) => !!stake.stake || !!stake.freeBetAmount);\n\n return valueStakes.length === 1 && !!valueStakes[0]?.freeBetAmount;\n}\n\nexport function getTotalStakesForCurrentType(typeState: IBetslipTypeState, tokenState: IRewardTokensState): TotalStake[] {\n const { currentSelectedType } = typeState.base;\n switch (currentSelectedType) {\n case BetslipType.Single:\n return getSingleBetStakes(typeState.singleBet, tokenState);\n case BetslipType.Combo:\n return getComboStake(typeState.comboBet, tokenState);\n case BetslipType.System:\n return getSystemStake(typeState.systemBet);\n default:\n return [];\n }\n}\n\nexport function getSingleBetStakes(singleState: ISingleBetState, tokensState: IRewardTokensState, filterLockedPicks: boolean = false): TotalStake[] {\n return Object.values(singleState.picks)\n .filter((p) => p.isSelected && (!p.isLocked || !filterLockedPicks))\n .map((p) => ({\n stake: getStakeWithEachWay(p),\n freeBetAmount: getFreeBetAmount(p.rewardTokenId, tokensState),\n }));\n}\n\nexport function getComboStake(comboState: IComboBetState, tokensState: IRewardTokensState): TotalStake[] {\n return [\n {\n stake: getStakeWithEachWay(comboState),\n freeBetAmount: getFreeBetAmount(comboState.rewardTokenId, tokensState),\n },\n ];\n}\n\nexport function getTeaserStake(teaserState: ITeaserBetState, tokensState: IRewardTokensState): TotalStake[] {\n return [\n {\n stake: teaserState.stake,\n freeBetAmount: getFreeBetAmount(teaserState.rewardTokenId, tokensState),\n },\n ];\n}\n\nexport function getBetBuilderStakes(betBuilderState: IBetBuilderBetState, tokensState: IRewardTokensState): TotalStake[] {\n return Object.values(betBuilderState.picks)\n .filter((p) => p.isSelected)\n .map((p) => ({\n stake: p.stake,\n freeBetAmount: getFreeBetAmount(p.rewardTokenId, tokensState),\n }));\n}\n\nexport function getFreeBetAmount(rewardTokenId: string | null, tokenState: IRewardTokensState) {\n const token = rewardTokenId ? tokenState.tokens[rewardTokenId] : null;\n const freeBetAmount = isFreebetToken(token) ? token.amount : null;\n\n return freeBetAmount;\n}\n\n/**\n * Sums multiple total stakes into a single total stake.\n * If both freebet and regular stake are set for a total stake, only the freebet value will be summed up.\n * This is done to ensure that adding freeBetAmount and stake leads to the correct total stake value that the bets would be placed with.\n * @param stakes The stakes to sum up.\n * @returns The total stake that the current bets will be placed with.\n */\nexport function combineTotalStakes(stakes: TotalStake[]): TotalStake {\n return stakes.reduce(\n (acc, curr) => {\n const freeBetAmount = curr.freeBetAmount === null ? acc.freeBetAmount : (acc.freeBetAmount ?? 0) + curr.freeBetAmount;\n const stake = curr.stake === null || curr.freeBetAmount ? acc.stake : (acc.stake ?? 0) + curr.stake;\n\n return {\n freeBetAmount,\n stake,\n };\n },\n {\n freeBetAmount: null,\n stake: null,\n },\n );\n}\n\nfunction getSystemStake(systemState: ISystemBetState): TotalStake[] {\n const typeKey = systemState.systemInfo?.key;\n\n if (!typeKey) {\n return [];\n }\n\n const stake = systemState.stake;\n\n const betCount =\n typeKey === SystemKey.BankerSingles\n ? Object.values(systemState.picks).filter((p) => p.isSelected && !p.isBanker).length\n : (SYSTEMS.find((s) => s.id === typeKey.toLowerCase())?.bets ?? null);\n\n return [\n {\n stake: betCount && stake ? stake * betCount : null,\n freeBetAmount: null,\n },\n ];\n}\n","import { BetslipType } from '../../../../core/betslip-type';\nimport { IBetBuilderBetState, IBetBuilderPickState } from '../../../bet-builder/models';\nimport { IComboBetState } from '../../../combo-bet/state';\nimport { isFreebetToken } from '../../../reward-tokens/services/reward-tokens.utils';\nimport { IRewardTokensState, TokensRecord } from '../../../reward-tokens/state';\nimport { ISingleBetPickState, ISingleBetState } from '../../../single-bet/state';\nimport { ISystemBetState } from '../../../system-bet/state';\nimport { ITeaserBetState } from '../../../teaser-bet/state';\nimport { IBetslipTypeState } from '../../../types/state';\nimport { TotalStake, getBetBuilderStakes, getComboStake, getSingleBetStakes, getTeaserStake } from './stake-utils';\n\nexport function getStakedTypes(typeState: IBetslipTypeState, tokens: TokensRecord): BetslipType[] {\n const linearTypes = typeState.base.linearTypes;\n\n const types: BetslipType[] = [];\n\n if (linearTypes[BetslipType.Single] && hasSingleBetStake(typeState.singleBet, tokens)) {\n types.push(BetslipType.Single);\n }\n\n if (linearTypes[BetslipType.BetBuilder] && hasBetBuilderBetStake(typeState.betBuilder, tokens)) {\n types.push(BetslipType.BetBuilder);\n }\n\n if (linearTypes[BetslipType.Combo] && hasComboBetStake(typeState.comboBet, tokens)) {\n types.push(BetslipType.Combo);\n }\n\n if (linearTypes[BetslipType.System] && hasSystemBetStake(typeState.systemBet)) {\n types.push(BetslipType.System);\n }\n\n if (linearTypes[BetslipType.Teaser] && hasTeaserBetStake(typeState.teaserBet, tokens)) {\n types.push(BetslipType.Teaser);\n }\n\n return types;\n}\n\nexport function hasSingleBetStake(singleState: ISingleBetState, tokens: TokensRecord): boolean {\n return Object.values(singleState.picks).some((a) => hasSingleBetPickStake(a, tokens));\n}\n\nexport function hasSingleBetPickStake(singleBetPickState: ISingleBetPickState, tokens: TokensRecord): boolean {\n return singleBetPickState.stake !== null || hasFreeBetStake(singleBetPickState.rewardTokenId, tokens);\n}\n\nexport function hasComboBetStake(comboState: IComboBetState, tokens: TokensRecord): boolean {\n return comboState.stake !== null || hasFreeBetStake(comboState.rewardTokenId, tokens);\n}\n\nexport function hasBetBuilderBetStake(betBuilderState: IBetBuilderBetState, tokens: TokensRecord): boolean {\n return Object.values(betBuilderState.picks).some((a) => hasBetBuilderBetPickStake(a, tokens));\n}\n\nexport function hasBetBuilderBetPickStake(betBuilderBetPickState: IBetBuilderPickState, tokens: TokensRecord): boolean {\n return betBuilderBetPickState.stake !== null || hasFreeBetStake(betBuilderBetPickState.rewardTokenId, tokens);\n}\n\nexport function hasTeaserBetStake(teaserState: ITeaserBetState, tokens: TokensRecord): boolean {\n return teaserState.stake != null || hasFreeBetStake(teaserState.rewardTokenId, tokens);\n}\n\nfunction hasFreeBetStake(tokenId: string | null, tokens: TokensRecord): boolean {\n return !!tokenId && isFreebetToken(tokens[tokenId]);\n}\n\nexport function hasSystemBetStake(systemState: ISystemBetState): boolean {\n return Object.values(systemState.linearTypeStakes).some((stake) => stake.stake !== null);\n}\n\nexport function getTotalStakesForAllTypes(typeState: IBetslipTypeState, tokensState: IRewardTokensState): TotalStake[] {\n const linearTypes = typeState.base.linearTypes;\n\n const singleBetStakes = linearTypes[BetslipType.Single] ? getSingleBetStakes(typeState.singleBet, tokensState, true) : [];\n const comboBetStakes = linearTypes[BetslipType.Combo] ? getComboStake(typeState.comboBet, tokensState) : [];\n const systemBetStakes = linearTypes[BetslipType.System] ? getSystemStakesLinear(typeState.systemBet) : [];\n const teaserBetStakes = linearTypes[BetslipType.Teaser] ? getTeaserStake(typeState.teaserBet, tokensState) : [];\n const betBuilderStakes = linearTypes[BetslipType.BetBuilder] ? getBetBuilderStakes(typeState.betBuilder, tokensState) : [];\n\n return [...singleBetStakes, ...comboBetStakes, ...systemBetStakes, ...teaserBetStakes, ...betBuilderStakes];\n}\n\nfunction getSystemStakesLinear(systemState: ISystemBetState) {\n return Object.values(systemState.linearTypeStakes).map((type) => {\n const stake = type.stake && type.stake * type.betCount;\n\n return {\n stake: type.isEachWay && stake ? stake * 2 : stake,\n freeBetAmount: null,\n };\n });\n}\n","import { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { isNil } from 'lodash-es';\n\nimport { BetslipType } from '../../../core/betslip-type';\nimport { BetslipPick } from '../../../core/picks/betslip-pick';\nimport { BetslipUnknownPick } from '../../../core/picks/betslip-unknown-pick';\nimport { PickId } from '../../../core/picks/pick-id';\nimport { PickOddsState } from '../../../core/picks/pick-models';\nimport { flattenPicks } from '../../../core/utils';\nimport {\n hasBetBuilderBetPickStake,\n hasComboBetStake,\n hasSingleBetPickStake,\n hasSystemBetStake,\n hasTeaserBetStake,\n} from '../../betplacement/services/stake/linear-stake-utils';\nimport { TokensRecord } from '../../reward-tokens/state';\nimport { IBetslipTypeState } from '../../types/state';\n\ninterface IPickTypeState {\n isLocked: boolean;\n isSelected: boolean;\n}\n\nexport function getSelectedPlaceablePicks(types: IBetslipTypeState, picksList: BetslipPick[], tokens: TokensRecord): BetslipPick[] {\n let picks: BetslipPick[] = [];\n\n const singleState = types.singleBet;\n const comboState = types.comboBet;\n const systemState = types.systemBet;\n const teaserState = types.teaserBet;\n const betBuilderState = types.betBuilder;\n\n const singlePicks = flattenPicks(picksList).filter((p) => {\n const typePick = singleState.picks[p.id.toString()];\n\n return typePick && hasSingleBetPickStake(typePick, tokens) && typePick.isSelected;\n });\n\n picks = [...singlePicks];\n\n const betBuilderPicks = picksList.filter((p) => {\n const typePick = betBuilderState.picks[p.id.toString()];\n\n return typePick && hasBetBuilderBetPickStake(typePick, tokens) && typePick.isSelected;\n });\n\n picks = [...picks, ...betBuilderPicks];\n\n if (hasComboBetStake(types.comboBet, tokens)) {\n const multiPicks = picksList.filter((p) => {\n const typePick = comboState.picks[p.id.toString()];\n\n return typePick.isSelected && picks.every((s) => !s.id.isEqual(p.id));\n });\n\n picks = [...picks, ...multiPicks];\n }\n\n if (hasSystemBetStake(types.systemBet)) {\n const systemPicks = flattenPicks(picksList).filter((p) => {\n const typePick = systemState.picks[p.id.toString()];\n\n return typePick && typePick.isSelected && picks.every((s) => !s.id.isEqual(p.id));\n });\n\n picks = [...picks, ...systemPicks];\n }\n\n if (hasTeaserBetStake(types.teaserBet, tokens)) {\n const teaserPicks = flattenPicks(picksList).filter((p) => {\n const typePick = teaserState.picks[p.id.toString()];\n\n return typePick?.isSelected && picks.every((s) => !s.id.isEqual(p.id));\n });\n\n picks = [...picks, ...teaserPicks];\n }\n\n return flattenPicks(picks);\n}\n\nexport function getSelectedLockedPicksForAllTypes(types: IBetslipTypeState, picksList: BetslipPick[], isLocked: boolean): BetslipPick[] {\n const flattenedPicksMap = flattenPicks(picksList).reduce<{ [pickId: string]: BetslipPick }>((acc, curr) => {\n acc[curr.id.toString()] = curr;\n\n return acc;\n }, {});\n\n const lockedPicks: { [pickId: string]: BetslipPick } = {};\n const updateLockedPicksForTypeState = (typeState: { [pickId: string]: IPickTypeState }): void => {\n Object.entries(typeState)\n .filter(([, typePick]) => typePick.isSelected && typePick.isLocked === isLocked)\n .forEach(([pickId]) => {\n lockedPicks[pickId] = flattenedPicksMap[pickId];\n });\n };\n\n updateLockedPicksForTypeState(types.singleBet.picks);\n updateLockedPicksForTypeState(types.comboBet.picks);\n updateLockedPicksForTypeState(types.systemBet.picks);\n updateLockedPicksForTypeState(types.betBuilder.picks);\n updateLockedPicksForTypeState(types.teaserBet.picks);\n\n return Object.values(lockedPicks).filter(isDefined);\n}\n\nexport function hasSelectedLockedPick(types: IBetslipTypeState, picksList: BetslipPick[], isLocked: boolean): boolean {\n return picksList.some((pick) => {\n const single = types.singleBet.picks[pick.id.toString()];\n const combo = types.comboBet.picks[pick.id.toString()];\n const system = types.systemBet.picks[pick.id.toString()];\n const teaser = types.teaserBet.picks[pick.id.toString()];\n\n if (!single || !combo || !system) {\n return false;\n }\n\n return (\n (single.isSelected && single.isLocked === isLocked) ||\n (combo.isSelected && combo.isLocked === isLocked) ||\n (system.isSelected && system.isLocked === isLocked) ||\n (teaser?.isSelected && teaser?.isLocked === isLocked)\n );\n });\n}\n\nexport function hasUnacceptedPick(types: IBetslipTypeState, picksList: BetslipPick[]): boolean {\n return picksList.some((pick) => {\n if (BetslipUnknownPick.isPick(pick)) {\n return false;\n }\n\n const single = types.singleBet.picks[pick.id.toString()];\n const combo = types.comboBet.picks[pick.id.toString()];\n const system = types.systemBet.picks[pick.id.toString()];\n\n if (!single || !combo || !system) {\n return false;\n }\n\n switch (pick.oddsState) {\n case PickOddsState.Closed:\n return true;\n\n case PickOddsState.Open:\n return single.isLocked || combo.isLocked || system.isLocked;\n\n case PickOddsState.Locked:\n return !single.isLocked || !combo.isLocked || !system.isLocked;\n }\n });\n}\n\nexport function isPickSelectedLocked(pickId: string, types: IBetslipTypeState, picksList: BetslipPick[], isLocked: boolean): boolean {\n const pick = picksList.find((p) => p.id.toString() === pickId);\n\n if (!pick) {\n return false;\n }\n\n const single = types.singleBet.picks[pickId];\n const combo = types.comboBet.picks[pickId];\n const system = types.systemBet.picks[pickId];\n const teaser = types.teaserBet.picks[pickId];\n\n return (\n (single.isSelected && single.isLocked === isLocked) ||\n (combo.isSelected && combo.isLocked === isLocked) ||\n (system.isSelected && system.isLocked === isLocked) ||\n (teaser?.isSelected && teaser?.isLocked === isLocked)\n );\n}\n\nexport function filterPicksForType(\n types: IBetslipTypeState,\n betslipType: BetslipType,\n picksList: BetslipPick[],\n filter: { isLocked?: boolean; isSelected?: boolean },\n): BetslipPick[] {\n let picks: { [id: string]: IPickTypeState } = {};\n switch (betslipType) {\n case BetslipType.Combo:\n picks = types.comboBet.picks;\n break;\n case BetslipType.System:\n picks = types.systemBet.picks;\n break;\n case BetslipType.Teaser:\n picks = types.teaserBet.picks;\n break;\n case BetslipType.BetBuilder:\n picks = types.betBuilder.picks;\n break;\n default:\n picks = types.singleBet.picks;\n break;\n }\n\n return filterTypePicks(picks, picksList, filter);\n}\n\nexport function filterTypePicks(\n typePicks: { [id: string]: IPickTypeState },\n picksList: BetslipPick[],\n filter: { isLocked?: boolean; isSelected?: boolean },\n): BetslipPick[] {\n return picksList.filter((pick) => {\n const pickState = typePicks[pick.id.toString()];\n if (!pickState) {\n return false;\n }\n\n const lockedFilterMatched = isNil(filter.isLocked) ? true : pickState.isLocked === filter.isLocked;\n const selectedFilterMatched = isNil(filter.isSelected) ? true : pickState.isSelected === filter.isSelected;\n\n return lockedFilterMatched && selectedFilterMatched;\n });\n}\n\nexport function isPickLocked(pickId: PickId, types: IBetslipTypeState): boolean {\n return (\n types.singleBet.picks[pickId.toString()]?.isLocked ||\n types.comboBet.picks[pickId.toString()]?.isLocked ||\n types.systemBet.picks[pickId.toString()]?.isLocked ||\n types.teaserBet.picks[pickId.toString()]?.isLocked\n );\n}\n","export enum ClientErrorType {\n NotLoggedInError = 'NotLoggedInError',\n UndoCashOutFailedError = 'UndoCashOutFailedError',\n RewardTokensMaxStakeError = 'RewardTokensMaxStakeError',\n RewardTokensMinLegsError = 'RewardTokensMinLegsError',\n RewardTokensTradingEntityMismatchError = 'RewardTokensTradingEntityMismatchError',\n RewardTokensForbiddenError = 'RewardTokensForbiddenError',\n RewardTokensGameTypeError = 'RewardTokensGameTypeError',\n RewardTokensSlipTypeError = 'RewardTokensSlipTypeError',\n RewardTokensMinStakeError = 'RewardTokensMinStakeError',\n RewardTokensTotalOddsError = 'RewardTokensTotalOddsError',\n RewardTokensSelectionLevelOddsError = 'RewardTokensSelectionLevelOddsError',\n RewardTokensBetBuilderError = 'RewardTokensBetBuilderError',\n BetBuilderMaxSelectionsPerPickError = 'BetBuilderMaxSelectionsPerPickError',\n RewardTokensMaxTotalOddsError = 'RewardTokensMaxTotalOddsError',\n RewardTokensSelectionMaxOddsError = 'RewardTokensSelectionMaxOddsError',\n}\n","import { IRewardToken } from '../../../../reward-tokens/reward-tokens.model';\nimport { BetPlacementErrorIcon } from '../../bet-placement-error-icon';\nimport { BetslipError } from '../../betslip-error';\nimport { ClientErrorType } from '../../client-error-type';\n\nexport class RewardTokensBetBuilderError extends BetslipError {\n constructor(token: IRewardToken) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensBetBuilderError;\n this.hasClientValidation = true;\n this.token = token;\n }\n\n readonly token: IRewardToken;\n}\n","import { BetPlacementErrorIcon } from '../../bet-placement-error-icon';\nimport { BetslipError } from '../../betslip-error';\nimport { ClientErrorType } from '../../client-error-type';\n\nexport class RewardTokensMinStakeError extends BetslipError {\n constructor(minimumStake: number) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensMinStakeError;\n this.hasClientValidation = true;\n this.minimumStake = minimumStake;\n }\n\n readonly minimumStake: number;\n}\n","import { BetPlacementErrorIcon } from '../../bet-placement-error-icon';\nimport { BetslipError } from '../../betslip-error';\nimport { ClientErrorType } from '../../client-error-type';\n\nexport class RewardTokensSelectionLevelOddsError extends BetslipError {\n constructor(selectionLevelMinimumOdds: string) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensSelectionLevelOddsError;\n this.hasClientValidation = true;\n this.selectionLevelMinimumOdds = selectionLevelMinimumOdds;\n }\n\n readonly selectionLevelMinimumOdds: string;\n}\n","import { BetPlacementErrorIcon } from '../../bet-placement-error-icon';\nimport { BetslipError } from '../../betslip-error';\nimport { ClientErrorType } from '../../client-error-type';\n\nexport class RewardTokensTotalOddsError extends BetslipError {\n constructor(minimumOdds: string) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensTotalOddsError;\n this.hasClientValidation = true;\n this.minimumOdds = minimumOdds;\n }\n\n readonly minimumOdds: string;\n}\n","import { PickId } from '../../../../core/picks/pick-id';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\nimport { ResultError } from '../result/result-error';\n\nexport abstract class GroupPickError extends BetslipError {\n protected constructor() {\n super();\n this.hasClientValidation = true;\n }\n}\n\nexport class GroupLinearPickError extends PreCheckErrorMixin(ResultError) {\n constructor(pickId: string) {\n super(pickId);\n }\n}\nexport class GroupMinSelectionsError extends GroupPickError {\n constructor() {\n super();\n }\n}\n\nexport class GroupMaxSelectionsError extends GroupPickError {\n constructor() {\n super();\n this.type = ClientErrorType.BetBuilderMaxSelectionsPerPickError;\n }\n}\n\nexport class GroupMaxSelectionsPreCheckError extends GroupLinearPickError {\n constructor(pickId: string) {\n super(pickId);\n }\n}\n\nexport class GroupPickHasLiveLegsPreCheckError extends GroupLinearPickError {\n constructor(pickId: string) {\n super(pickId);\n }\n}\n\nexport class GroupMinSelectionsPreCheckError extends GroupLinearPickError {\n constructor(pickId: string) {\n super(pickId);\n }\n}\n\nexport class GroupPickInvalidPricePreCheckError extends GroupLinearPickError {\n constructor(pickId: string) {\n super(pickId);\n }\n}\n\nexport class GroupWithUncombinableLegsError extends GroupPickError {\n constructor(\n public legIds: PickId[],\n public invalidPickIds: PickId[],\n ) {\n super();\n }\n}\n\nexport class GroupWithUncombinableLegsPreCheckError extends GroupLinearPickError {\n constructor(pickId: string) {\n super(pickId);\n }\n}\n\nexport class GroupWithClosedLegsError extends ResultError {\n constructor(\n public override pickId: string,\n public legIds: PickId[],\n ) {\n super(pickId);\n this.hasClientValidation = true;\n this.isHidden = true;\n }\n}\n\nexport class GroupWithSuspendedLegsError extends ResultError {\n constructor(\n public override pickId: string,\n public legIds: PickId[],\n ) {\n super(pickId);\n this.hasClientValidation = true;\n }\n}\n\nexport class GroupPickComboBetInvalidPrice extends GroupPickError {\n constructor(public invalidPickIds: PickId[]) {\n super();\n this.isHidden = true;\n }\n}\n\nexport class GroupPickHasLiveLegsError extends GroupPickError {\n constructor(public invalidPickIds: PickId[]) {\n super();\n }\n}\n","import { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\n\nexport class RewardTokensForbiddenError extends PreCheckErrorMixin(BetslipError) {\n constructor() {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensForbiddenError;\n this.hasClientValidation = true;\n }\n}\n","import { GameType } from '@bpos/v1/sports-promo';\n\nimport { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\n\nexport class RewardTokensGameTypeError extends PreCheckErrorMixin(BetslipError) {\n constructor(gameType: GameType) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensGameTypeError;\n this.hasClientValidation = true;\n this.gameType = gameType;\n }\n\n readonly gameType: GameType;\n}\n","import { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\n\nexport class RewardTokensMaxStakeError extends PreCheckErrorMixin(BetslipError) {\n constructor(maximumStake: number) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensMaxStakeError;\n this.hasClientValidation = true;\n this.maximumStake = maximumStake;\n }\n\n readonly maximumStake: number;\n}\n","import { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\n\nexport class RewardTokensMaxTotalOddsError extends BetslipError {\n readonly maxOdds: string;\n\n constructor(maxOdds: string) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensMaxTotalOddsError;\n this.hasClientValidation = true;\n this.maxOdds = maxOdds;\n }\n}\n","import { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\n\nexport class RewardTokensMinLegsError extends PreCheckErrorMixin(BetslipError) {\n constructor(minimumLegs: number) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensMinLegsError;\n this.hasClientValidation = true;\n this.minimumLegs = minimumLegs;\n }\n\n readonly minimumLegs: number;\n}\n","import { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\n\nexport class RewardTokensSelectionLevelMaxOddsError extends BetslipError {\n readonly selectionLevelMaxOdds: string;\n\n constructor(maxOdds: string) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensSelectionMaxOddsError;\n this.hasClientValidation = true;\n this.selectionLevelMaxOdds = maxOdds;\n }\n}\n","import { BetSlipType } from '@bpos';\n\nimport { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { BetslipError } from '../betslip-error';\nimport { ClientErrorType } from '../client-error-type';\nimport { PreCheckErrorMixin } from '../pre-check/pre-check-error';\n\nexport class RewardTokensSlipTypeError extends PreCheckErrorMixin(BetslipError) {\n constructor(slipType: BetSlipType) {\n super();\n this.icon = BetPlacementErrorIcon.Error;\n this.type = ClientErrorType.RewardTokensSlipTypeError;\n this.hasClientValidation = true;\n this.slipType = slipType;\n }\n\n readonly slipType: BetSlipType;\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementError } from '../bet-placement-error';\nimport { CleanStrategy } from '../betslip-error';\n\nexport class TechnicalError extends BetPlacementError {\n constructor() {\n super();\n this.cleanStrategy = CleanStrategy.Manually;\n this.type = PlacementErrorType.TechnicalError;\n }\n\n reason: string;\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementError } from '../bet-placement-error';\n\nexport class IncorrectBetCount extends BetPlacementError {\n constructor(expected?: number, received?: number) {\n super();\n this.expectedBetCount = typeof expected === 'undefined' ? null : expected;\n this.receivedBetCount = typeof received === 'undefined' ? null : received;\n this.hasClientValidation = true;\n this.type = PlacementErrorType.IncorrectOptionCount;\n }\n\n readonly expectedBetCount: number | null;\n readonly receivedBetCount: number | null;\n}\n","import { IncorrectBetCount } from '../general/incorrect-bet-count';\nimport { ErrorDetailsSpecifier, PreCheckErrorMixin } from './pre-check-error';\n\nexport class IncorrectOptionsCountPreCheckError extends PreCheckErrorMixin(IncorrectBetCount) {\n constructor(\n expected: number,\n received: number,\n public errorDetails: ErrorDetailsSpecifier | null,\n ) {\n super(expected, received);\n }\n\n override readonly expectedBetCount: number;\n override readonly receivedBetCount: number;\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetslipError } from '../betslip-error';\nimport { PreCheckErrorMixin } from './pre-check-error';\n\nexport class NoBetbuilderSystemPreCheckError extends PreCheckErrorMixin(BetslipError) {\n constructor() {\n super();\n this.type = PlacementErrorType.NoBetbuilderSystemAllowed;\n }\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { StakeError } from '../stake-error';\n\nexport class NotEnoughMoney extends StakeError {\n constructor(\n readonly userMoney: number,\n public stake?: number,\n ) {\n super();\n this.icon = BetPlacementErrorIcon.Warning;\n this.priority = 1000; // Not Enough Money last error\n this.type = PlacementErrorType.InsufficientMoney;\n }\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetPlacementErrorIcon } from '../bet-placement-error-icon';\nimport { UserError } from './user-error';\n\nexport class OverallMaxWinPerUser extends UserError {\n constructor(comboWin: number | undefined, maxComboWin: number | undefined) {\n super();\n this.comboWin = comboWin == null ? null : comboWin;\n this.maxComboWin = maxComboWin == null ? null : maxComboWin;\n this.icon = BetPlacementErrorIcon.Warning;\n this.type = PlacementErrorType.OverallMaxWinPerUserExceeded;\n }\n\n comboWin: number | null;\n maxComboWin: number | null;\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\n\nimport { BetslipType } from '../../../../core/betslip-type';\nimport { SlipId } from '../../../bet-generation/models';\nimport { BetPlacementError } from '../../errors/bet-placement-error';\nimport { StakeHintInfo } from '../../models/stake-validation.models';\nimport { BetslipTypePickErrors } from '../../state';\n\nconst ignoreNewStakeHintType = [PlacementErrorType.UnderMinimumOddsBoostReward, PlacementErrorType.UnderMinimumRiskFreeCompensation];\n\nexport function getStakeLimitErrorInfo(errors: { pickErrors: BetslipTypePickErrors; slipErrors: Record }): {\n betslipStakeHintInfo: { newStakeHint: number; type: PlacementErrorType } | null;\n pickStakeHintInfos: { newStakeHint: number; pickId: string; type: PlacementErrorType }[];\n} {\n const betslipStakeLimitExceededError = Object.values(errors.slipErrors)\n .flatMap((e) => e)\n .find((betslipError) => shouldUpdateStake(betslipError));\n\n const pickStakeLimitExceededErrors = Object.values(errors.pickErrors)\n .flatMap((e) => Object.values(e))\n .flatMap((resultErrors) => resultErrors)\n .filter((e) => shouldUpdateStake(e));\n\n if (!betslipStakeLimitExceededError && pickStakeLimitExceededErrors.length === 0) {\n return { betslipStakeHintInfo: null, pickStakeHintInfos: [] };\n }\n\n if (betslipStakeLimitExceededError) {\n return {\n betslipStakeHintInfo: { newStakeHint: betslipStakeLimitExceededError.newStakeHint!, type: betslipStakeLimitExceededError.type },\n pickStakeHintInfos: [],\n };\n }\n\n return {\n betslipStakeHintInfo: null,\n pickStakeHintInfos: pickStakeLimitExceededErrors.map((pickError) => ({\n type: pickError.type,\n pickId: pickError.pickId,\n newStakeHint: pickError.newStakeHint!,\n })),\n };\n}\n\nexport function getStakeHints(errors: { pickErrors: BetslipTypePickErrors; slipErrors: Record }): StakeHintInfo {\n const slipStakeHintInfos = Object.entries(errors.slipErrors).flatMap(([key, slipErrors]) =>\n slipErrors.filter(shouldUpdateStake).map((error) => ({ newStakeHint: error.newStakeHint!, slipId: key, type: error.type })),\n );\n\n // This is only relevant for multi-singles\n const pickStakeHintInfos = Object.entries(errors.pickErrors[BetslipType.Single])\n .flatMap(([pickId, e]) => e.filter((error) => shouldUpdateStake(error)).map((error) => ({ pickId, error })))\n .map(({ pickId, error }) => ({\n type: error.type,\n // we cannot use error.pickId here\n // after bet placement we are also mapping normal betslip errors to ResultError and therefore error.pickId could be undefined\n pickId,\n newStakeHint: error.newStakeHint!,\n }));\n\n return {\n slipStakeHintInfos,\n pickStakeHintInfos,\n };\n}\n\nexport function shouldUpdateStake(error: BetPlacementError): boolean {\n return isNewStakeHintError(error) && !ignoreNewStakeHintType.includes(error.type);\n}\n\nexport function isNewStakeHintError(error: BetPlacementError): boolean {\n return typeof error.newStakeHint === 'number' && error.newStakeHint > 0;\n}\n","import { CashoutErrorType } from '@bpos/v1/cashout';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { PlacementErrorType } from '@frontend/sports/types/betslip';\nimport { orderBy } from 'lodash-es';\n\nimport { BetslipType } from '../../../../core/betslip-type';\nimport { BaseBetslipGroupPick } from '../../../../core/picks/betslip-group-pick';\nimport { BetslipPick } from '../../../../core/picks/betslip-pick';\nimport { GroupEnabledPickIds } from '../../../../core/picks/pick-id';\nimport { PickOddsState } from '../../../../core/picks/pick-models';\nimport { StakeUpdateErrorModel } from '../../../betplacement/models';\nimport { hasUnacceptedPick } from '../../../picks/services/linear-betslip-pick.utils';\nimport { IBetslipTypeState } from '../../../types/state';\nimport { BetPlacementError } from '../../errors/bet-placement-error';\nimport { BetslipError, ErrorOrigin } from '../../errors/betslip-error';\nimport { ClientErrorType } from '../../errors/client-error-type';\nimport { RewardTokensBetBuilderError } from '../../errors/general/betandget/reward-tokens-bet-builder-error';\nimport { RewardTokensMinStakeError } from '../../errors/general/betandget/reward-tokens-min-stake-error';\nimport { RewardTokensSelectionLevelOddsError } from '../../errors/general/betandget/reward-tokens-selection-level-odds-error';\nimport { RewardTokensTotalOddsError } from '../../errors/general/betandget/reward-tokens-total-odds-error';\nimport {\n GroupLinearPickError,\n GroupPickComboBetInvalidPrice,\n GroupPickError,\n GroupPickHasLiveLegsError,\n GroupPickInvalidPricePreCheckError,\n GroupWithClosedLegsError,\n GroupWithSuspendedLegsError,\n GroupWithUncombinableLegsError,\n} from '../../errors/general/group-pick-error';\nimport { RewardTokensForbiddenError } from '../../errors/general/reward-tokens-forbidden-error';\nimport { RewardTokensGameTypeError } from '../../errors/general/reward-tokens-game-type-error';\nimport { RewardTokensMaxStakeError } from '../../errors/general/reward-tokens-max-stake-error';\nimport { RewardTokensMaxTotalOddsError } from '../../errors/general/reward-tokens-max-total-odds-error';\nimport { RewardTokensMinLegsError } from '../../errors/general/reward-tokens-min-legs-error';\nimport { RewardTokensSelectionLevelMaxOddsError } from '../../errors/general/reward-tokens-selection-level-max-odds-error';\nimport { RewardTokensSlipTypeError } from '../../errors/general/reward-tokens-slip-type-error';\nimport { TechnicalError } from '../../errors/general/technical-error';\nimport { NotifyUserError } from '../../errors/notify-user-error';\nimport { IncorrectOptionsCountPreCheckError } from '../../errors/pre-check/incorrect-options-count-pre-check-error';\nimport { NoBetbuilderSystemPreCheckError } from '../../errors/pre-check/no-betbuilder-system-pre-check-error';\nimport { OddsChangedPreCheckError } from '../../errors/pre-check/odds-changed-pre-check-error';\nimport { OverMaximumStakePreCheckError } from '../../errors/pre-check/over-maximum-stake-pre-check-error';\nimport { StakeNotDividablePreCheckError } from '../../errors/pre-check/stake-not-dividable-pre-check-error';\nimport { UnderMinimumStakePreCheckError } from '../../errors/pre-check/under-minimum-stake-pre-check-error';\nimport { UnderMinimumWinningsPreCheckError } from '../../errors/pre-check/under-minimum-winnings-pre-check-error';\nimport { ResultError } from '../../errors/result/result-error';\nimport { NotEnoughMoney } from '../../errors/user/not-enough-money';\nimport { OverallMaxWinPerUser } from '../../errors/user/overall-max-win-per-user';\nimport { BetslipTypePickErrors, IBetslipErrorsState, IBetslipPickErrors, SlipErrors } from '../../state';\nimport { getSlipErrorsForType } from './betslip-errors-state-utils';\nimport { isNewStakeHintError } from './stake-limit-errors-info-utils';\n\nexport const enum OverallMaxWinPerUserHintType {\n Any = 'Any',\n WithHint = 'WithHint',\n WithoutHint = 'WithoutHint',\n}\n\nexport const isPickStatusLocked = function (error: BetslipError): boolean {\n return (\n error.type === PlacementErrorType.OptionInvisible ||\n error.type === CashoutErrorType.ChangedOptionStatus ||\n error.type === PlacementErrorType.CutOffDateReached ||\n error.type === PlacementErrorType.InvalidOption ||\n error.type === PlacementErrorType.MissingInfo ||\n error.type === PlacementErrorType.NotPlayable ||\n error.type === PlacementErrorType.OpenDateNotReached ||\n error.type === PlacementErrorType.OptionError\n );\n};\n\nexport const isPickStatusClosed = function (error: BetslipError): boolean {\n return error.type === PlacementErrorType.CutOffDateReached || error.type === PlacementErrorType.OpenDateNotReached;\n};\n\nexport const isPickStatusOddsChanged = function (error: BetslipError): boolean {\n return error.type === PlacementErrorType.OddsChanged;\n};\n\n/**\n * Is the given error changes pick status and the user should accept changes.\n *\n * @param error\n */\nexport const isPickStatusChangeError = function (error: BetslipError): boolean {\n return isPickStatusLocked(error) || isPickStatusClosed(error) || isPickStatusOddsChanged(error) || isGroupPickOfferChange(error);\n};\n\nexport const isTeaserBetPickStatusChangeError = function (error: BetslipError): boolean {\n return isPickStatusLocked(error) || isPickStatusClosed(error);\n};\n\nexport const isImportantError = function (error: BetslipError): boolean {\n return !(isPickStatusChangeError(error) || isErrorComboPrevention(error));\n};\n\nexport const isBetslipStatusInsufficientMoney = function (error: BetslipError): boolean {\n return error.type === PlacementErrorType.InsufficientMoney;\n};\n\nexport const isNotifyUserChangeError = function (error: BetslipError): error is NotifyUserError {\n return 'userHasBeenNotified' in error;\n};\n\nexport const isPlaceBlockingError = function (error: BetslipError): boolean {\n return (\n isErrorComboPrevention(error) ||\n error.type === PlacementErrorType.BlockedAsInsider ||\n error.type === PlacementErrorType.IncorrectOptionCount ||\n error.type === PlacementErrorType.IncorrectBankerCount ||\n error.type === PlacementErrorType.UnderMinimumCompulsoryOdds ||\n isNotDividableStakeErrorPreCheck(error)\n );\n};\n\nexport const isUnderMinimumStakeErrorPreCheck = (error: BetslipError): error is UnderMinimumStakePreCheckError =>\n error.type === PlacementErrorType.StakeBelowMinimumLimit;\n\nexport const isUnderMinimumWinningsErrorPreCheck = (error: BetslipError): error is UnderMinimumWinningsPreCheckError =>\n error.type === PlacementErrorType.UnderMinimumWinnings;\n\nexport const isOverMaximumStakeError = (error: BetslipError): error is OverMaximumStakePreCheckError =>\n error.type === PlacementErrorType.OverMaxBetLimit;\n\nexport const isNotDividableStakeErrorPreCheck = (error: BetslipError): error is StakeNotDividablePreCheckError =>\n error.type === PlacementErrorType.NotWholeStake;\n\nexport const isPickStatusOddsChangedPreCheck = function (error: BetslipError): error is OddsChangedPreCheckError {\n return error.type === PlacementErrorType.OddsChanged;\n};\n\nexport const isNoBetBuilderSystemPreCheck = function (error: BetslipError): error is NoBetbuilderSystemPreCheckError {\n return error instanceof NoBetbuilderSystemPreCheckError;\n};\n\n/**\n * This function help us to check when we need to show yellow indication that has not compatible picks.\n */\nexport const isErrorComboPrevention = function (error: BetslipError): boolean {\n return error.type === PlacementErrorType.ComboPrevention || error.type === PlacementErrorType.MinimumCombo;\n};\n\nexport const isStakeError = function (error: BetslipError): boolean {\n return (\n error.type === PlacementErrorType.StakeBelowMinimumLimit ||\n error.type === PlacementErrorType.UnderMinimumWinnings ||\n error.type === PlacementErrorType.OverMaxBetLimit ||\n error.type === PlacementErrorType.NotWholeStake ||\n error.type === PlacementErrorType.InsufficientMoney\n );\n};\n\nexport const shouldThisPlacementErrorLockEditBet = (error: BetslipError): boolean => {\n return error.type === PlacementErrorType.TechnicalError;\n};\n\nexport const isIncorrectOptionsCountError = (error: BetslipError): error is IncorrectOptionsCountPreCheckError =>\n error instanceof IncorrectOptionsCountPreCheckError;\n\nexport const isRewardTokensSlipTypeError = (error: BetslipError): error is RewardTokensSlipTypeError => error instanceof RewardTokensSlipTypeError;\n\nexport const isRewardTokensMaxStakeError = (error: BetslipError): error is RewardTokensMaxStakeError => error instanceof RewardTokensMaxStakeError;\n\nexport const isRewardTokensError = (error: BetslipError): boolean =>\n [\n RewardTokensSlipTypeError,\n RewardTokensMaxStakeError,\n RewardTokensMinStakeError,\n RewardTokensMinLegsError,\n RewardTokensSelectionLevelOddsError,\n RewardTokensGameTypeError,\n RewardTokensForbiddenError,\n RewardTokensTotalOddsError,\n RewardTokensBetBuilderError,\n RewardTokensMaxTotalOddsError,\n RewardTokensSelectionLevelMaxOddsError,\n ].some((t) => error instanceof t);\n\nexport const isOverallMaxWinPerUserExceededError = (error: BetslipError, hint: OverallMaxWinPerUserHintType): error is OverallMaxWinPerUser => {\n if (error instanceof OverallMaxWinPerUser) {\n switch (hint) {\n case OverallMaxWinPerUserHintType.Any:\n return true;\n case OverallMaxWinPerUserHintType.WithHint:\n return !!error.newStakeHint && error.newStakeHint > 0;\n case OverallMaxWinPerUserHintType.WithoutHint:\n return error.newStakeHint === 0;\n }\n }\n\n return false;\n};\n\nexport const hasCriticalBetslipAndTypeErrorForType = (errorState: IBetslipErrorsState, type: BetslipType): boolean =>\n errorState.betslipErrors.some(isCriticalError) || errorState.betslipTypeErrors[type].some(isCriticalError);\n\nexport const hasCriticalSlipErrorsForType = (\n errorState: IBetslipErrorsState,\n type: BetslipType,\n types: IBetslipTypeState,\n isLinear: boolean,\n): boolean => getSlipErrorsForType(type, errorState.slipErrors, types, isLinear).some(isCriticalError);\n\nexport const hasCriticalErrorForSlip = (errorState: IBetslipErrorsState, slipId: string): boolean =>\n (errorState.slipErrors[slipId] ?? []).some(isCriticalError);\n\nexport const isCriticalError = (error: BetslipError): boolean => {\n return (\n !isStakeError(error) &&\n !(error.type === PlacementErrorType.NoMultiSinglesAllowed) &&\n !(error instanceof BetPlacementError && isNewStakeHintError(error)) &&\n !(error instanceof TechnicalError)\n );\n};\n\nexport const hasInsufficientMoneyError = (errors: BetslipError[]): boolean => {\n return errors.some(isBetslipStatusInsufficientMoney);\n};\n\nexport const getStakeUpdateErrors = (slipErrors: SlipErrors): StakeUpdateErrorModel[] => {\n return Object.entries(slipErrors).flatMap(([key, errors]) =>\n errors.filter((e) => isUnderMinimumStakeErrorPreCheck(e)).map((e) => ({ error: e as UnderMinimumStakePreCheckError, slipId: key })),\n );\n};\n\n/**\n * Push a new error in the errors collection\n *\n * @param currentErrors\n * @param newError\n */\nexport const errorCollectionPusher = (currentErrors: TError[], newError: TError): TError[] => {\n if (currentErrors.some((e) => newError.equals(e))) {\n // Error already exists.\n return currentErrors;\n }\n\n return currentErrors.filter((e) => e.constructor !== newError.constructor).concat(newError);\n};\n\nexport function getPlacementError(errors: BetslipError[]): BetslipError | null {\n const filteredErrors = filterBetPlacementErrors(errors);\n\n return filteredErrors[0] || null;\n}\n\nexport function getPlacementErrorFromAllErrors(\n betslipErrors: BetslipError[],\n typePickErrors: BetslipTypePickErrors,\n slipErrors: SlipErrors,\n): BetslipError | null {\n const allPickErrors = Object.values(typePickErrors).flatMap((pickErrors) => Object.values(pickErrors).flatMap((errors) => errors));\n\n const allSlipErrors = Object.values(slipErrors).flatMap((errors) => errors);\n\n return getPlacementError([...betslipErrors, ...allPickErrors, ...allSlipErrors]);\n}\n\nfunction filterBetPlacementErrors(errors: BetslipError[]): BetslipError[] {\n const filteredErrors = errors.filter((error) => !error.isHidden && error.origin === ErrorOrigin.BetPlacement);\n\n return orderBy(filteredErrors, (x) => x.priority);\n}\n\nconst exitFreebetErrors: (PlacementErrorType | CashoutErrorType | ClientErrorType)[] = [\n PlacementErrorType.InvalidFreeBet,\n PlacementErrorType.FreeBetExpired,\n PlacementErrorType.FreeBetNotActive,\n];\n\nexport function isExitFreeBetError(error: BetslipError | null): boolean {\n return !!error && exitFreebetErrors.includes(error.type);\n}\n\nexport function isFinishedError(error: BetslipError): boolean {\n return error.code === 'COS' || error.code === 'CODR';\n}\n\nexport function canShowPickErrorAsBetslipError(betslipErrors: BetslipError[], currentSelectedBetslipType: BetslipType | null): boolean {\n // For certain NewStakeHintErrors we receive them per pick from BPOS but in specific situations we need to show them for the entire betslip\n return currentSelectedBetslipType !== BetslipType.Single && betslipErrors.every((error) => isStakeError(error));\n}\n\nexport function isNewStakeHintPlacementError(error: BetslipError): boolean {\n return error instanceof BetPlacementError && error.origin === ErrorOrigin.BetPlacement && typeof error.newStakeHint === 'number';\n}\n\nexport const isNotEnoughMoney = (error: BetslipError): error is NotEnoughMoney => error instanceof NotEnoughMoney;\n\nexport function checkOfferChanged(pickErrors: ResultError[]): boolean {\n return pickErrors.some((e) => isPickStatusChangeError(e));\n}\n\nexport function checkOfferChangedLinear(picks: BetslipPick[], typeState: IBetslipTypeState, pickErrors: ResultError[]): boolean {\n const oddsChanged = pickErrors.some((e) => isPickStatusOddsChanged(e));\n\n return oddsChanged || hasUnacceptedPick(typeState, picks);\n}\n\nexport function isGroupLockedPickError(error: ResultError): boolean {\n return error instanceof GroupWithSuspendedLegsError;\n}\n\nexport function isGroupOfferChangedError(error: BetslipError): boolean {\n return error instanceof ResultError && isGroupLockedPickError(error);\n}\n\nexport function isBetPlacementBlockingError(error: BetslipError): boolean {\n return (\n ![\n PlacementErrorType.TechnicalError,\n PlacementErrorType.OverAskOfferError,\n PlacementErrorType.InsufficientMoney,\n PlacementErrorType.DoubleBetPrevention,\n ].includes(error.type as PlacementErrorType) && !isNewStakeHintError(error as BetPlacementError)\n );\n}\n\nexport function pickErrorsHasBlockingErrors(pickErrors: IBetslipPickErrors): boolean {\n return Object.values(pickErrors).some((errors) => errors.some((err) => err instanceof GroupWithSuspendedLegsError));\n}\n\nexport function getClosedLegIdsWithinValidGroups(picks: BetslipPick[], picksErrors: IBetslipPickErrors) {\n return (\n picks\n .filter(BaseBetslipGroupPick.isPick)\n //ignore closed picks within a group if the group is suspended\n .filter((g) => g.oddsState === PickOddsState.Open)\n .map((g) => picksErrors[g.id.toString()]?.find((error) => error instanceof GroupWithClosedLegsError) as GroupWithClosedLegsError)\n .filter(isDefined)\n .flatMap((g) => g.legIds as GroupEnabledPickIds[])\n );\n}\n\nexport function getSuspendedLegIdsWithinValidGroups(picks: BetslipPick[], picksErrors: IBetslipPickErrors) {\n return (\n picks\n .filter(BaseBetslipGroupPick.isPick)\n //ignore suspended picks within a group if the group is suspended\n .filter((g) => g.oddsState === PickOddsState.Open)\n .map((g) => picksErrors[g.id.toString()]?.find((error) => error instanceof GroupWithSuspendedLegsError) as GroupWithSuspendedLegsError)\n .filter(isDefined)\n .flatMap((g) => g.legIds as GroupEnabledPickIds[])\n );\n}\n\nexport function isGroupPickOfferChange(error: BetslipError): error is GroupWithSuspendedLegsError | GroupWithClosedLegsError {\n return error instanceof GroupWithSuspendedLegsError || error instanceof GroupWithClosedLegsError;\n}\n\n/**\n * Checks if a pick should be displayed on the pick level in the betslip\n * @param error The error to check\n * @returns True if the error should be displayed on the pick level\n */\nexport function isDisplayablePickError(error: ResultError): boolean {\n return (\n !error.isHidden &&\n !(\n error.type === PlacementErrorType.ComboPrevention ||\n error.type === PlacementErrorType.CutOffDateReached ||\n error.type === PlacementErrorType.OptionInvisible ||\n error.type === PlacementErrorType.OddsChanged\n )\n );\n}\n\nexport function isGroupPickError(error: BetslipError): error is GroupPickError {\n return error instanceof GroupPickError || error instanceof GroupLinearPickError;\n}\n\nexport function isGroupPickInvalidPriceError(error: BetslipError): error is GroupPickComboBetInvalidPrice {\n return error instanceof GroupPickComboBetInvalidPrice || error instanceof GroupPickInvalidPricePreCheckError;\n}\n\nexport function isGroupWithUncombinableLegsError(error: BetslipError): error is GroupWithUncombinableLegsError {\n return error instanceof GroupWithUncombinableLegsError;\n}\n\nexport function isDrawerGroupError(\n error: BetslipError,\n): error is GroupWithUncombinableLegsError | GroupPickComboBetInvalidPrice | GroupPickHasLiveLegsError {\n return isGroupWithUncombinableLegsError(error) || isGroupPickInvalidPriceError(error) || isGroupPickHasLiveLegsError(error);\n}\n\nexport function isGroupPickHasLiveLegsError(error: BetslipError): error is GroupPickHasLiveLegsError {\n return error instanceof GroupPickHasLiveLegsError;\n}\n\nexport function groupPickHasWarning(error: BetslipError): error is GroupPickHasLiveLegsError | GroupPickComboBetInvalidPrice {\n return isGroupPickInvalidPriceError(error) || isGroupPickHasLiveLegsError(error);\n}\n","import { PlacementErrorType } from '@frontend/sports/types/betslip';\nimport { createSelector } from '@ngrx/store';\n\nimport { betslipSelector, selectIsLinearBetslip } from '../../base/store/selectors';\nimport { BetslipType } from '../../core/betslip-type';\nimport { PickId } from '../../core/picks/pick-id';\nimport { SlipId } from '../bet-generation/models';\nimport { getBetBuilderSlipId, getSingleSlipId } from '../bet-generation/services/slip.utils';\nimport { LinearBetBuilderPickId } from '../linear-bet-builder/models';\nimport { selectBetBuilderPickStakeFactory } from '../linear-bet-builder/selectors';\nimport { betslipPicksListSelector, selectBetslipFlattenedPicksList } from '../picks/selectors';\nimport { selectSingleBetAllSameStake, selectSingleBetPickStakeFactory, singleBetPicksGeneralStakeSelector } from '../single-bet/selectors';\nimport { selectLinearStakeForSlip } from '../stake/selectors';\nimport { selectIsSystemBetExpanded } from '../system-bet/selectors';\nimport { betslipCurrentTypeSelector } from '../types/base/selectors';\nimport { betslipTypeStateSelector, editBetAddedPicksListSelector, editBetPicksListSelector, selectIsSingleBetSelected } from '../types/selectors';\nimport { BetslipError, ErrorOrigin } from './errors/betslip-error';\nimport { MinSelectionsBetbuilderError } from './errors/general/min-selections-betbuilder-error';\nimport { getSlipErrorsForType } from './services/utils/betslip-errors-state-utils';\nimport {\n canShowPickErrorAsBetslipError,\n checkOfferChanged,\n checkOfferChangedLinear,\n isBetslipStatusInsufficientMoney,\n isDisplayablePickError,\n isDrawerGroupError,\n isErrorComboPrevention,\n isGroupPickError,\n isGroupPickOfferChange,\n isNotEnoughMoney,\n isPickStatusChangeError,\n isRewardTokensError,\n isStakeError,\n} from './services/utils/betslip-errors-utils';\nimport { BetslipTypePickErrors, SlipErrors } from './state';\n\n// State\n\n/** Selects the entire error state */\nexport const selectErrorsState = createSelector(betslipSelector, (state) => state.errors);\n\n/** Selects the state for errors that effect the entire betslip */\nexport const selectBetslipErrors = createSelector(selectErrorsState, (state) => state.betslipErrors);\n\n/** Selects the state for errors that affect individual picks*/\nexport const selectPickErrorsState = createSelector(selectErrorsState, (errorsState) => errorsState.pickErrors);\n\n/** Selects the state for errors that affect individual slips (multi-singles, combo, system) */\nexport const selectSlipErrorsState = createSelector(selectErrorsState, (errorState) => errorState.slipErrors);\n\n/** Selects the state for errors that affect individual betslip types (single, combo, system, teaser) */\nexport const selectTypeErrorsState = createSelector(selectErrorsState, (errorState) => errorState.betslipTypeErrors);\n\n// Slip Errors\n\nexport const selectSlipErrorsFactory = (slipKey: SlipId) =>\n createSelector(selectSlipErrorsState, (slipErrors: SlipErrors): BetslipError[] | undefined => slipErrors[slipKey]);\n\nexport const selectSlipErrorsForTypeFactory = (activeType: BetslipType) =>\n createSelector(selectSlipErrorsState, betslipTypeStateSelector, selectIsLinearBetslip, (state, types, isLinear) => {\n return getSlipErrorsForType(activeType, state, types, isLinear);\n });\n\nexport const selectCurrentSlipErrors = createSelector(\n selectSlipErrorsState,\n betslipTypeStateSelector,\n selectIsLinearBetslip,\n (state, types, isLinear) => {\n const currentType = types.base.currentSelectedType;\n\n return !currentType ? [] : getSlipErrorsForType(currentType, state, types, isLinear);\n },\n);\n\n/**\n * Selects all slip errors for a multi single pick with the given PickId\n */\nexport const selectSingleSlipErrorsFactory = (pickId: PickId) =>\n createSelector(selectSlipErrorsState, (errorState) => errorState[getSingleSlipId(pickId)] ?? []);\n\nexport const selectBetBuilderSlipErrorsFactory = (pickId: PickId) =>\n createSelector(selectSlipErrorsState, (errorState) => errorState[getBetBuilderSlipId(pickId)] ?? []);\n\nexport const selectHasAnySlipErrors = createSelector(selectSlipErrorsState, (state) => Object.values(state).some((p) => p.length > 0));\n\n// Betslip Type Errors\n\nexport const selectBetslipTypeErrorsFactory = (type: BetslipType) => createSelector(selectTypeErrorsState, (state) => state[type] ?? []);\n\nexport const selectCurrentBetslipTypeErrors = createSelector(selectTypeErrorsState, betslipCurrentTypeSelector, (state, type) =>\n type ? state[type] : [],\n);\n\nexport const selectHasAnyTypeErrors = createSelector(selectTypeErrorsState, (state) => Object.values(state).some((p) => p.length > 0));\n\n// Betslip Errors\n\nexport const selectAllBetslipErrorsForType = (type: BetslipType) =>\n createSelector(\n selectBetslipErrors,\n selectBetslipTypeErrorsFactory(type),\n selectSlipErrorsForTypeFactory(type),\n (betslipErrors, typeErrors, slipErrors) => {\n return [...betslipErrors, ...typeErrors, ...slipErrors];\n },\n );\n\nexport const selectAllCurrentBetslipErrors = createSelector(\n selectBetslipErrors,\n selectCurrentBetslipTypeErrors,\n selectCurrentSlipErrors,\n (betslipErrors, typeErrors, slipErrors) => {\n return [...betslipErrors, ...typeErrors, ...slipErrors];\n },\n);\n\nexport const selectAllBetBuilderErrors = createSelector(\n selectBetslipErrors,\n selectSlipErrorsForTypeFactory(BetslipType.BetBuilder),\n selectBetslipTypeErrorsFactory(BetslipType.BetBuilder),\n (betslipErrors, typeErrors, slipErrors) => {\n return [...betslipErrors, ...typeErrors, ...slipErrors];\n },\n);\n\nexport const selectHasAnyBetslipErrors = createSelector(selectBetslipErrors, (errors) => errors.length > 0);\n\n// Pick Errors\n\nexport const selectPickErrorsForTypeFactory = (type: BetslipType) =>\n createSelector(selectErrorsState, (state) => {\n return state.pickErrors[type] ?? {};\n });\n\nexport const selectAllPickErrorsForTypeFactory = (type: BetslipType) =>\n createSelector(selectPickErrorsForTypeFactory(type), (pickErrors) => {\n return Object.values(pickErrors).flatMap((errors) => errors) ?? [];\n });\n\nexport const selectAllPickErrors = createSelector(selectPickErrorsState, (pickErrors) =>\n Object.values(pickErrors).flatMap((errors) => Object.values(errors).flatMap((e) => e)),\n);\n\nexport const selectTypePickErrors = createSelector(selectErrorsState, (state) => {\n return state.pickErrors;\n});\n\n/**\n * Selects all errors for a pick with the given PickId for the currently selected betslip type (tabbed betslip)\n */\nexport const selectCurrentPickErrorsForPickFactory = (pickId: PickId) =>\n createSelector(selectPickErrorsState, betslipCurrentTypeSelector, (pickErrors, type) => {\n if (!type) {\n return [];\n }\n\n return pickErrors[type][pickId.toString()] ?? [];\n });\n\n/** Selects all errors for a pick with the given PickId for the given betslip type */\nexport const selectTypePickErrorsForPickFactory = (pickId: PickId, type: BetslipType) =>\n createSelector(selectPickErrorsState, (pickErrors) => {\n return pickErrors[type][pickId.toString()] ?? [];\n });\n\nexport const selectAllPickErrorsForPickFactory = (pickId: PickId) =>\n createSelector(selectPickErrorsState, (pickErrors) => {\n const pickIdString = pickId.toString();\n\n return Object.values(pickErrors).flatMap((errors) => errors[pickIdString] ?? []);\n });\n\nexport const selectCurrentPicksErrors = createSelector(selectPickErrorsState, betslipCurrentTypeSelector, (pickErrors, type) =>\n type ? pickErrors[type] : {},\n);\n\nexport const selectAllCurrentPickErrors = createSelector(selectCurrentPicksErrors, (currentPicks) =>\n Object.values(currentPicks).flatMap((picks) => picks),\n);\n\nexport const selectCurrentPicksErrorsForAllPicks = createSelector(selectCurrentPicksErrors, (picksErrors) =>\n Object.values(picksErrors).flatMap((p) => p),\n);\n\nexport const selectHasAnyPickErrors = createSelector(selectPickErrorsState, (pickErrors) =>\n Object.values(pickErrors).some((p) => Object.values(p).some((e) => e.length > 0)),\n);\n\nexport const selectPicksWithCurrentErrors = createSelector(betslipPicksListSelector, selectCurrentPicksErrors, (pickList, pickErrors) =>\n pickList.map((pick) => ({\n pick,\n errors: pickErrors[pick.id.toString()] || [],\n })),\n);\n\nexport const selectPicksWithAllErrors = createSelector(selectBetslipFlattenedPicksList, selectPickErrorsState, (pickList, pickErrors) =>\n pickList.map((pick) => ({\n pick,\n errors: Object.values(pickErrors).flatMap((errors) => errors[pick.id.toString()] ?? []),\n })),\n);\n\nexport const selectEditBetPicksWithErrors = createSelector(\n editBetPicksListSelector,\n editBetAddedPicksListSelector,\n selectPickErrorsForTypeFactory(BetslipType.EditBet),\n (pickList, pickAddedList, pickErrors) =>\n [...pickList, ...pickAddedList].map((pick) => ({\n pick,\n errors: pickErrors[pick.id.toString()] || [],\n })),\n);\n\n// Specific selectors\nexport const selectAllSingleBetBetslipErrors = createSelector(selectAllBetslipErrorsForType(BetslipType.Single), (errors) => errors);\n\nexport const selectAllCurrentErrors = createSelector(selectAllCurrentBetslipErrors, selectAllCurrentPickErrors, (betslipErrors, pickErrors) => [\n ...betslipErrors,\n ...pickErrors,\n]);\n\nexport const selectNotEnoughMoneyError = createSelector(selectBetslipErrors, (errors) => errors.find(isNotEnoughMoney));\n\nexport const selectCurrentVisibleBetslipErrorsByPriority = createSelector(selectAllCurrentBetslipErrors, (errors) =>\n errors.filter((e) => !e.isHidden).sort((a, b) => b.priority - a.priority),\n);\n\nexport const selectHasCurrentComboPreventionError = createSelector(selectCurrentPicksErrorsForAllPicks, (errors) =>\n errors.some(isErrorComboPrevention),\n);\n\nexport const selectHasComboPreventionForTypeFactory = (type: BetslipType) =>\n createSelector(selectAllPickErrorsForTypeFactory(type), (errors) => errors.some(isErrorComboPrevention));\n\nexport const selectHasInsufficientMoneyError = createSelector(selectBetslipErrors, (errors) => errors.some(isBetslipStatusInsufficientMoney));\n\nexport const selectHasNonPickErrors = createSelector(\n selectHasAnyBetslipErrors,\n selectHasAnyTypeErrors,\n selectHasAnySlipErrors,\n (hasBetslipErrors, hasTypeErrors, hasSlipErrors) => hasBetslipErrors || hasTypeErrors || hasSlipErrors,\n);\n\nexport const selectHasAnyErrors = createSelector(\n selectHasNonPickErrors,\n selectHasAnyPickErrors,\n (hasNonPickErrors, hasPickErrors) => hasNonPickErrors || hasPickErrors,\n);\n\nexport const selectHasMinSelectionsBetBuilderError = createSelector(selectBetslipErrors, (errors) =>\n errors.some((error) => error instanceof MinSelectionsBetbuilderError),\n);\n\nexport const selectCurrentStakeError = createSelector(\n selectAllCurrentBetslipErrors,\n selectIsSingleBetSelected,\n selectSingleBetAllSameStake,\n (errors, isSingleBet, singleBetAllSameStake) =>\n isSingleBet && !singleBetAllSameStake\n ? errors.find((betslipError) => betslipError.type === PlacementErrorType.InsufficientMoney)\n : errors.find(isStakeError),\n);\n\nexport const selectCanShowPickErrorAsBetslipError = createSelector(selectAllCurrentBetslipErrors, betslipCurrentTypeSelector, (betslipErrors, type) =>\n canShowPickErrorAsBetslipError(betslipErrors, type),\n);\n\nexport const selectHasOfferChanged = createSelector(\n selectAllPickErrors,\n betslipPicksListSelector,\n selectIsLinearBetslip,\n betslipTypeStateSelector,\n (pickErrors, picks, isLinear, types) => (isLinear ? checkOfferChangedLinear(picks, types, pickErrors) : checkOfferChanged(pickErrors)),\n);\n\nexport const selectHasOfferChangedFromBetPlacement = createSelector(selectAllPickErrors, (errors) =>\n errors.some((e) => isPickStatusChangeError(e) && e.origin === ErrorOrigin.BetPlacement),\n);\n\nexport const selectDisplayablePickErrorsFactory = (pickId: PickId, betslipType: BetslipType) =>\n createSelector(selectTypePickErrorsForPickFactory(pickId, betslipType), (errors) => errors.filter((e) => isDisplayablePickError(e)));\n\nexport const selectTabbedPickErrorsFactory = (pickId: PickId, betslipType: BetslipType) =>\n createSelector(selectDisplayablePickErrorsFactory(pickId, betslipType), selectCanShowPickErrorAsBetslipError, (errors, hidePickErrors) =>\n !hidePickErrors ? errors : [],\n );\n\nexport const selectCurrentSummarySlipErrors = createSelector(\n selectSlipErrorsState,\n betslipTypeStateSelector,\n selectIsLinearBetslip,\n (state, types, isLinear) => {\n const currentType = types.base.currentSelectedType;\n\n return !currentType || currentType === BetslipType.Single ? [] : getSlipErrorsForType(currentType, state, types, isLinear);\n },\n);\n\nexport const selectAllCurrentSummaryErrors = createSelector(\n selectBetslipErrors,\n selectCurrentBetslipTypeErrors,\n selectCurrentSummarySlipErrors,\n selectAllCurrentPickErrors,\n selectCanShowPickErrorAsBetslipError,\n (betslipErrors, typeErrors, slipErrors, pickErrors, showPickErrors) => {\n return !showPickErrors ? [...betslipErrors, ...typeErrors, ...slipErrors] : [...betslipErrors, ...typeErrors, ...slipErrors, ...pickErrors];\n },\n);\n\nexport const selectSingleBetPickErrorsFactory = (pickId: PickId) =>\n createSelector(\n selectTypePickErrorsForPickFactory(pickId, BetslipType.Single),\n selectSingleSlipErrorsFactory(pickId),\n (pickErrors, slipErrors) => [...pickErrors, ...slipErrors],\n );\n\nexport const selectSinglePickErrorStateFactory = (pickId: PickId) =>\n createSelector(selectSingleBetPickErrorsFactory(pickId), selectSingleBetPickStakeFactory(pickId), (errors, stake) => ({\n errors,\n stake,\n }));\n\nexport const selectBetBuilderBetPickErrorsFactory = (pickId: PickId) =>\n createSelector(\n selectDisplayablePickErrorsFactory(pickId, BetslipType.BetBuilder),\n selectBetBuilderSlipErrorsFactory(pickId),\n (pickErrors, slipErrors) => [...pickErrors, ...slipErrors],\n );\n\nexport const selectBetBuilderPickErrorStateFactory = (pickId: LinearBetBuilderPickId) =>\n createSelector(selectBetBuilderBetPickErrorsFactory(pickId), selectBetBuilderPickStakeFactory(pickId), (errors, stake) => ({\n errors,\n stake,\n }));\n\nexport const selectSinglePickStakeErrorStateFactory = (pickId: PickId) =>\n createSelector(\n selectSinglePickErrorStateFactory(pickId),\n singleBetPicksGeneralStakeSelector,\n selectHasInsufficientMoneyError,\n (state, generalStake, hasInsufficientFunds) => ({\n stakeError: state.errors.find(isStakeError),\n stake: state.stake,\n showInsufficientFundsError: hasInsufficientFunds && !!state.stake?.actualStake && !generalStake?.actualStake,\n }),\n );\n\nexport const selectLinearSlipErrorStateFactory = (slipId: SlipId, betslipType: BetslipType) =>\n createSelector(\n selectSlipErrorsFactory(slipId),\n selectLinearStakeForSlip(slipId, betslipType),\n // We should not have any slip errors displayed when we have a combo prevention error\n selectHasComboPreventionForTypeFactory(betslipType),\n (errors, stake, hasComboPrevention) => ({ errors: hasComboPrevention ? [] : errors, stake }),\n );\n\nconst selectDrawerGroupErrorFactory = (pickId: PickId) =>\n createSelector(selectGroupErrors, (typeErrors) => {\n return typeErrors\n .filter(isDrawerGroupError)\n .find((invalidPriceError) => invalidPriceError.invalidPickIds.some((invalidid) => invalidid.isEqual(pickId)));\n });\n\nconst selectGroupErrors = createSelector(selectCurrentBetslipTypeErrors, (typeErrors) => {\n return typeErrors.filter(isGroupPickError);\n});\n\nconst selectGroupOfferChangeErrorsFactory = (pickId: PickId) =>\n createSelector(selectAllPickErrorsForPickFactory(pickId), (pickErrors) => {\n return pickErrors.filter(isGroupPickOfferChange);\n });\n\nexport const selectRelevantGroupErrorsForPickFactory = (pickId: PickId) =>\n createSelector(selectDrawerGroupErrorFactory(pickId), selectGroupOfferChangeErrorsFactory(pickId), (groupPickError, groupOfferChange) => ({\n groupPickError,\n groupOfferChange,\n }));\n\nexport const selectAllDisplayablePickErrorsForTypeFactory = (type: BetslipType) =>\n createSelector(selectAllPickErrorsForTypeFactory(type), (pickErrors) => {\n return pickErrors.filter(isDisplayablePickError);\n });\n\nexport const selectTypeErrors = (type: BetslipType) =>\n createSelector(\n selectBetslipTypeErrorsFactory(type),\n selectSlipErrorsForTypeFactory(type),\n selectAllDisplayablePickErrorsForTypeFactory(type),\n (typeErrors, slipErrors, pickErrors) => {\n return [...typeErrors, ...slipErrors, ...pickErrors];\n },\n );\n\nexport const selectSystemContainerErrors = createSelector(\n selectBetslipTypeErrorsFactory(BetslipType.System),\n selectAllDisplayablePickErrorsForTypeFactory(BetslipType.System),\n (typeErrors, pickErrors) => {\n return [...typeErrors, ...pickErrors];\n },\n);\n\nexport const selectContainerErrors = (type: BetslipType) =>\n createSelector(selectIsLinearBetslip, selectSystemContainerErrors, selectTypeErrors(type), (isLinear, systemContainerErrors, typeErrors) => {\n return isLinear && type === BetslipType.System ? systemContainerErrors : typeErrors;\n });\n\nexport const selectComboContainerModuleErrors = createSelector(selectTypeErrors(BetslipType.Combo), (errors) => {\n return errors;\n});\nexport const selectCurrentSlipTokenErrors = createSelector(selectCurrentSlipErrors, (slipErrors) => slipErrors.filter(isRewardTokensError));\nexport const selectBetBuilderDrawerErrors = createSelector(selectCurrentBetslipTypeErrors, selectCurrentSlipTokenErrors, (errors, slipErrors) => [\n ...errors,\n ...slipErrors,\n]);\n\nexport const selectLinearGlobalIndiactorErrorsForPickFactory = (pickId: PickId) =>\n createSelector(selectPickErrorsState, selectIsSystemBetExpanded, (pickErrors, isSystemBetExpanded) => {\n const pickIdString = pickId.toString();\n\n const globalIndicatorErrors: BetslipTypePickErrors = {\n ...pickErrors,\n SYSTEM: isSystemBetExpanded ? pickErrors.SYSTEM : {},\n };\n\n return Object.values(globalIndicatorErrors).flatMap((errors) => errors[pickIdString] ?? []);\n });\n","import { BetslipType } from '../../../core/betslip-type';\nimport { PickId, pickIdFactory } from '../../../core/picks/pick-id';\nimport { IBetBuilderPickState } from '../../bet-builder/models';\nimport { IComboBetState } from '../../combo-bet/state';\nimport { ISingleBetPickState } from '../../single-bet/state';\nimport { ITeaserBetState } from '../../teaser-bet/state';\nimport { IBetslipTypeState } from '../../types/state';\nimport { AccaBoostToken, IRewardToken, RewardTokenContext, SelectedRewardTokenState } from '../reward-tokens.model';\nimport { IRewardTokenEligibility, IRewardTokenEligibilityState, TokensRecord } from '../state';\nimport { byAccaPriority, isAccaBoostToken } from './reward-tokens.utils';\n\nexport type RewardTokenAwareState = IComboBetState | ISingleBetPickState | ITeaserBetState | IBetBuilderPickState;\nexport type TokenAwarePicksState = Record;\n\nexport function getSelectedToken(tokens: TokensRecord, type: RewardTokenAwareState): IRewardToken | null {\n if (!type?.rewardTokenId) {\n return null;\n }\n\n return tokens[type.rewardTokenId] ?? null;\n}\n\nexport function getSelectedTokenForContext(context: RewardTokenContext, tokens: TokensRecord, types: IBetslipTypeState): IRewardToken | null {\n switch (context.betslipType) {\n case BetslipType.Single:\n return getSelectedTokenForPick(context.pickId, tokens, types.singleBet.picks);\n case BetslipType.Combo:\n return getSelectedToken(tokens, types.comboBet);\n case BetslipType.Teaser:\n return getSelectedToken(tokens, types.teaserBet);\n case BetslipType.BetBuilder:\n return getSelectedTokenForPick(context.pickId, tokens, types.betBuilder.picks);\n default:\n return null;\n }\n}\n\nexport function getSelectedTokenAndEligibilityForContext(\n context: RewardTokenContext,\n eligibilityState: IRewardTokenEligibilityState,\n tokens: TokensRecord,\n types: IBetslipTypeState,\n): [IRewardToken | null, IRewardTokenEligibility | null] {\n switch (context.betslipType) {\n case BetslipType.Single: {\n return getSelectedTokenAndEligibilityForPick(context.pickId, tokens, types.singleBet.picks, eligibilityState.singleBet);\n }\n case BetslipType.Combo: {\n return getSelectedTokenAndEligibility(tokens, types.comboBet, eligibilityState.comboBet);\n }\n case BetslipType.Teaser: {\n return getSelectedTokenAndEligibility(tokens, types.teaserBet, eligibilityState.teaserBet);\n }\n case BetslipType.BetBuilder: {\n return getSelectedTokenAndEligibilityForPick(context.pickId, tokens, types.betBuilder.picks, eligibilityState.betBuilder);\n }\n default:\n return [null, null];\n }\n}\n\nexport function getAllAssignedTokens(tokens: TokensRecord, types: IBetslipTypeState): IRewardToken[] {\n return getAllAssignedTokensWithFilter(tokens, types, false);\n}\n\nexport function getAllSelectedTokens(tokens: TokensRecord, types: IBetslipTypeState): IRewardToken[] {\n return getAllAssignedTokensWithFilter(tokens, types, true);\n}\n\nexport function getTokenSelectionContext(tokenId: string, types: IBetslipTypeState): RewardTokenContext | undefined {\n if (types.comboBet.rewardTokenId === tokenId) {\n return {\n betslipType: BetslipType.Combo,\n };\n }\n\n if (types.teaserBet.rewardTokenId === tokenId) {\n return {\n betslipType: BetslipType.Teaser,\n };\n }\n\n const selectedSinglePickId = getPickIdBySelectedToken(tokenId, types.singleBet.picks);\n\n if (selectedSinglePickId) {\n return {\n pickId: selectedSinglePickId,\n betslipType: BetslipType.Single,\n };\n }\n\n const selectedBetBuilderPickId = getPickIdBySelectedToken(tokenId, types.betBuilder.picks);\n\n if (selectedBetBuilderPickId) {\n return {\n pickId: selectedBetBuilderPickId,\n betslipType: BetslipType.BetBuilder,\n };\n }\n\n return undefined;\n}\n\nexport function getSelectedTokenState(\n rewardTokenId: string,\n tokens: Record,\n eligibilityState: IRewardTokenEligibility[],\n): SelectedRewardTokenState {\n const token = tokens[rewardTokenId] ?? null;\n const tokenEligibility = (eligibilityState ?? []).find((e) => rewardTokenId && e.tokenId === rewardTokenId) ?? null;\n\n return {\n tokenId: rewardTokenId,\n token,\n tokenEligibility,\n };\n}\n\nexport function getEligibilityStateForContext(\n context: RewardTokenContext,\n eligibilityState: IRewardTokenEligibilityState,\n): IRewardTokenEligibility[] {\n switch (context.betslipType) {\n case BetslipType.Single: {\n if (!context.pickId) {\n return [];\n }\n\n return eligibilityState.singleBet[context.pickId.toString()] ?? [];\n }\n case BetslipType.Combo:\n return eligibilityState.comboBet;\n case BetslipType.Teaser:\n return eligibilityState.teaserBet;\n case BetslipType.BetBuilder: {\n if (!context.pickId) {\n return [];\n }\n\n return eligibilityState.betBuilder[context.pickId.toString()] ?? [];\n }\n default:\n return [];\n }\n}\n\nexport function getSelectedAndEligibleAccaBoost(\n eligibilityState: IRewardTokenEligibilityState,\n tokens: TokensRecord,\n types: IBetslipTypeState,\n): AccaBoostToken | null {\n // Acca Boost token can only be applied to a combo bet\n const selectedToken = getSelectedTokenForContext({ betslipType: BetslipType.Combo }, tokens, types);\n\n if (!isAccaBoostToken(selectedToken)) {\n return null;\n }\n\n const isEligible = eligibilityState.comboBet.find((e) => e.tokenId === selectedToken.userTokenId)?.isEligible;\n\n return isEligible ? selectedToken : null;\n}\n\nexport function getEligibleAccaBoost(eligibilityState: IRewardTokenEligibilityState, tokens: TokensRecord): AccaBoostToken | null {\n const allEligibleTokens = eligibilityState.comboBet.filter((e) => e.isEligible).map((e) => tokens[e.tokenId]);\n\n return allEligibleTokens.filter(isAccaBoostToken).sort(byAccaPriority)[0] ?? null;\n}\n\nexport function isTokenRecoverable(tokenId: string, tokens: Record, eligibilityState: IRewardTokenEligibility[]): boolean {\n const token = tokens[tokenId];\n\n if (!token) {\n return false;\n }\n\n const eligibility = eligibilityState.find((e) => e.tokenId === tokenId);\n\n return !!eligibility && eligibility.isEligible;\n}\n\n// Helper functions to avoid code duplication\n\nfunction getSelectedTokenForPick(pickId: PickId | undefined, tokens: TokensRecord, awareStates: TokenAwarePicksState): IRewardToken | null {\n if (!pickId) {\n return null;\n }\n const pickState = awareStates[pickId.toString()];\n\n return getSelectedToken(tokens, pickState);\n}\n\nfunction getSelectedTokenAndEligibilityForPick(\n pickId: PickId | undefined,\n tokens: TokensRecord,\n awareStates: TokenAwarePicksState,\n eligibilityStates: Record,\n): [IRewardToken | null, IRewardTokenEligibility | null] {\n if (!pickId) {\n return [null, null];\n }\n\n const pickState = awareStates[pickId.toString()];\n const eligibilities = eligibilityStates[pickId.toString()] ?? [];\n\n return getSelectedTokenAndEligibility(tokens, pickState, eligibilities);\n}\n\nfunction getSelectedTokenAndEligibility(\n tokens: TokensRecord,\n awareState: RewardTokenAwareState,\n eligibilities: IRewardTokenEligibility[],\n): [IRewardToken | null, IRewardTokenEligibility | null] {\n const token = getSelectedToken(tokens, awareState);\n const tokenEligibility = token ? (eligibilities.find((e) => e.tokenId === token.userTokenId) ?? null) : null;\n\n return [token, tokenEligibility];\n}\n\nfunction getAllAssignedTokensWithFilter(tokens: TokensRecord, types: IBetslipTypeState, filterUnselectedPicks: boolean = false): IRewardToken[] {\n const singlePicks = Object.values(types.singleBet.picks);\n const betBuilderPicks = Object.values(types.betBuilder.picks);\n\n const picks = [...singlePicks, ...betBuilderPicks];\n\n const filteredPicks = filterUnselectedPicks ? picks.filter((pick) => pick.isSelected) : picks;\n\n const pickTokenIds = filteredPicks.map((pick) => pick.rewardTokenId);\n\n const tokenIds = [...pickTokenIds, types.comboBet.rewardTokenId, types.teaserBet.rewardTokenId].filter((id) => !!id) as string[];\n\n return tokenIds.map((id) => tokens[id]).filter((token) => !!token);\n}\n\nfunction getPickIdBySelectedToken(selectedTokenId: string, awarePicksState: TokenAwarePicksState): PickId | undefined {\n const pick = Object.entries(awarePicksState).find(([, value]) => value.rewardTokenId === selectedTokenId);\n\n return pick ? pickIdFactory(pick[0]) : undefined;\n}\n","import { Nullable, Optional, isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { BestOddsFixtureLikeInput } from 'packages/sports/web/app/src/best-odds-guarantee/models/models';\nimport { IRewardTokenData, RewardTokenType } from 'packages/sports/web/app/src/tokens-base/token-base.models';\n\nimport { ParticipantPickType } from '../../../core/picks/pick-models';\nimport {\n BetslipV2HorseRaceOptionMarketPick,\n BetslipV2HorseRaceWinParticipantPick,\n BetslipV2HorseRaceXCastPick,\n} from '../../../core/picks/sport-specific/betslip-v2-horse-race-picks';\nimport { IBetslipTypeState } from '../../types/state';\nimport {\n BestOddsGuaranteedToken,\n BetStationFreeBetToken,\n EdsToken,\n EdsTokenWithEligiblePicks,\n IRewardToken,\n RewardTokenContext,\n} from '../reward-tokens.model';\nimport { IBetstationTokenState, IBetstationTokensState, IEdsTokenState, IRewardTokensState, TokensRecord } from '../state';\nimport { getSelectedTokenForContext } from './linear-reward-tokens.utils';\nimport { convertToBestOddsFixtureLikeInput } from './reward-tokens.utils';\nimport { TokenValidationInput } from './validators/criteria-validator-base.service';\n\nexport function isBetStationFreebetToken(token: IRewardToken | IRewardTokenData | null): token is BetStationFreeBetToken {\n return !!token && token.rewardTokenType === RewardTokenType.BetStationFreebet;\n}\n\nexport function isBestOddsGuaranteedToken(token: IRewardToken | IRewardTokenData | null): token is BestOddsGuaranteedToken {\n return !!token && token.rewardTokenType === RewardTokenType.BestOddsGuaranteed;\n}\n\nexport function isEdsToken(token: Optional): token is EdsToken {\n return !!token && token.rewardTokenType === RewardTokenType.Eds;\n}\n\nexport function getBestOddsGuaranteedTokensContext(state: IRewardTokensState): { valid: boolean; token: BestOddsGuaranteedToken | undefined } {\n //It is guaranteed in SPC service that only one BOG token will be returned\n const token = Object.values(state.tokens).find(isBestOddsGuaranteedToken);\n\n const eligibility = state.betstationTokens.bogTokenState.eligibility;\n\n return {\n valid: !!eligibility?.isEligible,\n token,\n };\n}\n\nexport function toBestOddsLikeFixtures(context: TokenValidationInput): Nullable[] {\n const picks = context.allPicks;\n\n return picks.map((pick) => {\n if (\n (BetslipV2HorseRaceOptionMarketPick.isPick(pick) &&\n pick.pickType === ParticipantPickType.Win &&\n (pick.isStartingPriceAvailable() || pick.isFixedPriceAvailable())) ||\n BetslipV2HorseRaceWinParticipantPick.isPick(pick) ||\n BetslipV2HorseRaceXCastPick.isPick(pick)\n ) {\n const fixture = convertToBestOddsFixtureLikeInput(pick);\n\n return { ...fixture, pickId: pick.id.toString() };\n } else {\n return null;\n }\n });\n}\n\nexport function getSelectedBogToken(bogTokenState: IBetstationTokenState, tokens: Record): BestOddsGuaranteedToken | null {\n const token = bogTokenState.selectedTokenId ? tokens[bogTokenState.selectedTokenId] : null;\n\n return isBestOddsGuaranteedToken(token) ? token : null;\n}\n\nexport function getSelectedBetStationFreeBetToken(\n extendedTokens: IBetstationTokensState,\n tokens: Record,\n): BetStationFreeBetToken | null {\n const tokenId = extendedTokens.betStationFreeBet.selectedTokenId;\n\n if (!tokenId) {\n return null;\n }\n\n const token = tokens[tokenId];\n\n return isBetStationFreebetToken(token) ? token : null;\n}\n\nexport function getSelectedBetStationTokenForContext(\n context: RewardTokenContext,\n types: IBetslipTypeState,\n betstationTokensState: IBetstationTokensState,\n tokens: TokensRecord,\n): IRewardToken | null {\n const tokenId = betstationTokensState.betStationFreeBet.selectedTokenId;\n\n if (tokenId) {\n const token = tokens[tokenId];\n\n return isBetStationFreebetToken(token) ? token : null;\n }\n\n return getSelectedTokenForContext(context, tokens, types);\n}\n\nexport function getSelectedEdsTokensWithEligiblePicksIds(state: IEdsTokenState, tokens: Record): EdsTokenWithEligiblePicks[] {\n return state.selectedTokenIds\n ?.map((id) => {\n const token = tokens[id];\n\n return isEdsToken(token)\n ? {\n token,\n eligiblePicksIds: state.eligibilities?.find((e) => e.tokenId === id)?.eligiblePicksIds || [],\n }\n : undefined;\n })\n .filter(isDefined);\n}\n","import { RewardTargetType } from '@bpos/v1/sports-promo/tokens';\nimport { createSelector } from '@ngrx/store';\n\nimport { betslipSelector, selectIsLinearBetslip } from '../../base/store/selectors';\nimport { BetslipType } from '../../core/betslip-type';\nimport { BetslipV2OptionMarketPick } from '../../core/picks/betslip-v2-option-market-pick';\nimport { PickId, pickIdFactory } from '../../core/picks/pick-id';\nimport { betslipPicksListSelector } from '../picks/selectors';\nimport {\n selectSingleBetSinglePickId,\n singleBetPickSelectorFactory,\n singleBetPicksSelector,\n singleBetSelectedPicksSelector,\n} from '../single-bet/selectors';\nimport { betslipCurrentTypeSelector } from '../types/base/selectors';\nimport { betslipTypeStateSelector } from '../types/selectors';\nimport { selectHasComboPreventionForTypeFactory, selectHasMinSelectionsBetBuilderError } from '../validation/selectors';\nimport { RewardTokenContext } from './reward-tokens.model';\nimport {\n getBestOddsGuaranteedTokensContext,\n getSelectedBetStationFreeBetToken,\n getSelectedBogToken,\n} from './services/betstation-reward-tokens.utils';\nimport {\n getAllAssignedTokens,\n getAllSelectedTokens,\n getEligibilityStateForContext,\n getSelectedTokenAndEligibilityForContext,\n getSelectedTokenForContext,\n getTokenSelectionContext,\n} from './services/linear-reward-tokens.utils';\nimport {\n getAcquisitionRewardToken,\n getAllEligibleTokens,\n getNonAccaTokens,\n isAcquisitionEligible,\n isFreebetToken,\n isOddsBoostToken,\n} from './services/reward-tokens.utils';\n\nexport const rewardTokensStateSelector = createSelector(betslipSelector, (state) => state.rewardTokens);\nexport const rewardTokensOnBoardingSelector = createSelector(rewardTokensStateSelector, (state) => state.onboardingState);\n\nexport const selectRewardTokens = createSelector(rewardTokensStateSelector, (state) => state.tokens);\nexport const selectRewardTokensList = createSelector(selectRewardTokens, (tokens) => Object.values(tokens));\n\nexport const selectTokensEligibilityState = createSelector(rewardTokensStateSelector, (state) => state.eligibilityState);\n\nexport const selectHasNewCustomerOfferPick = createSelector(betslipPicksListSelector, (pickList) =>\n pickList.some((pick) => pick.isNewCustomerOfferPick),\n);\n\nexport const selectTokensStateContext = createSelector(\n selectTokensEligibilityState,\n selectRewardTokens,\n betslipTypeStateSelector,\n (eligibilityState, tokens, types) => ({\n eligibilityState,\n tokens,\n types,\n }),\n);\n\nexport const selectAllEligibleTokens = createSelector(selectTokensEligibilityState, selectRewardTokens, (eligibilityState, tokens) =>\n getAllEligibleTokens(eligibilityState, tokens),\n);\n\nexport const selectNonAccaTokens = createSelector(selectRewardTokensList, (tokens) => {\n return getNonAccaTokens(tokens);\n});\n\nexport const selectTokenForContextFactory = (context: RewardTokenContext) => {\n return createSelector(selectTokensStateContext, ({ tokens, types }) => getSelectedTokenForContext(context, tokens, types));\n};\n\nexport const selectTokenAndEligibilityFactory = (context: RewardTokenContext) => {\n return createSelector(selectTokensStateContext, ({ tokens, eligibilityState, types }) =>\n getSelectedTokenAndEligibilityForContext(context, eligibilityState, tokens, types),\n );\n};\n\nexport const selectEligibleTokenFactory = (context: RewardTokenContext) => {\n return createSelector(selectTokenAndEligibilityFactory(context), ([token, eligibility]) => (eligibility?.isEligible ? token : null));\n};\n\nexport const selectFreeBetTokenFactory = (context: RewardTokenContext) => {\n return createSelector(selectEligibleTokenFactory(context), (token) => (isFreebetToken(token) ? token : null));\n};\n\nexport const selectOddsBoostTokenFactory = (context: RewardTokenContext) => {\n return createSelector(selectEligibleTokenFactory(context), (token) => (isOddsBoostToken(token) ? token : null));\n};\n\nexport const selectAllSelectedTokens = createSelector(selectTokensStateContext, ({ tokens, types }) => getAllSelectedTokens(tokens, types));\n\nexport const selectAllAssignedTokens = createSelector(selectTokensStateContext, ({ tokens, types }) => getAllAssignedTokens(tokens, types));\n\nexport const selectEligibilityStateFactory = (context: RewardTokenContext) => {\n return createSelector(selectTokensEligibilityState, (eligibilityState) => getEligibilityStateForContext(context, eligibilityState));\n};\n\nexport const selectAllTokensAndEligibilityStateFactory = (context: RewardTokenContext) => {\n return createSelector(selectRewardTokens, selectEligibilityStateFactory(context), (tokens, eligibilityState) => ({\n tokens,\n eligibilityState,\n }));\n};\n\nexport const selectSelectedTokenForContext = (context: RewardTokenContext) => {\n return createSelector(selectRewardTokens, betslipTypeStateSelector, (tokens, types) => {\n return getSelectedTokenForContext(context, tokens, types);\n });\n};\n\nexport const selectHasVisibleTokensForContext = (context: RewardTokenContext) => {\n return createSelector(\n selectAllSelectedTokens,\n selectTokenForContextFactory(context),\n selectEligibilityStateFactory(context),\n (allSelectedTokens, selectedToken, eligibilityState) => {\n return eligibilityState.some((eligibility) => {\n const currentSelected = selectedToken?.userTokenId === eligibility.tokenId;\n\n // this makes sure that already selected tokens in a different slip don't get shown\n return currentSelected || (eligibility.isEligible && allSelectedTokens.every((token) => token.userTokenId !== eligibility.tokenId));\n });\n },\n );\n};\n\nexport const selectUnselectedSingleBetPickForAcquisitionToken = createSelector(\n singleBetPicksSelector,\n selectRewardTokensList,\n betslipCurrentTypeSelector,\n selectIsLinearBetslip,\n (singleBetPicks, tokens, currentSelectedType, isLinear) => {\n const acquisitionRewardToken = getAcquisitionRewardToken(tokens);\n\n if (!acquisitionRewardToken || (!isLinear && currentSelectedType !== BetslipType.Single)) {\n return;\n }\n\n const unselectedPicks = Object.entries(singleBetPicks)\n .filter(([, pick]) => !pick.isSelected && pick.rewardTokenId === acquisitionRewardToken.userTokenId)\n .map(([k]) => k);\n\n return unselectedPicks.length > 0 ? { pickId: unselectedPicks[0] } : undefined;\n },\n);\n\nexport const selectSingleBetPickForAcquisitionToken = createSelector(\n singleBetSelectedPicksSelector,\n selectRewardTokensList,\n selectTokensEligibilityState,\n betslipCurrentTypeSelector,\n selectIsLinearBetslip,\n selectAllSelectedTokens,\n selectHasMinSelectionsBetBuilderError,\n (selectedPicks, tokens, eligibilityState, currentSelectedType, isLinear, allSelectedTokens, hasMinSelectionsBetBuilderError) => {\n const acquisitionRewardToken = getAcquisitionRewardToken(tokens);\n const isAcquisitionTokenSelected = allSelectedTokens.some((x) => x.rewardTargetType === RewardTargetType.WelcomeOffer);\n\n if (\n !acquisitionRewardToken ||\n (!isLinear && currentSelectedType !== BetslipType.Single) ||\n isAcquisitionTokenSelected ||\n hasMinSelectionsBetBuilderError\n ) {\n return;\n }\n\n const acquisitionEligiblePicks = Object.entries(eligibilityState.singleBet)\n .filter(\n ([pickId, eligibilityTokens]) =>\n selectedPicks[pickId] &&\n !selectedPicks[pickId].rewardTokenId &&\n eligibilityTokens.some((x) => isAcquisitionEligible(x, acquisitionRewardToken.userTokenId)),\n )\n .map(([k]) => k);\n\n return acquisitionEligiblePicks.length > 0 ? { pickId: acquisitionEligiblePicks[0], tokenId: acquisitionRewardToken.userTokenId } : undefined;\n },\n);\n\nexport const selectSingleBetStandardRewardTokensContext = createSelector(singleBetPicksSelector, (singleBetPicks) => {\n const selectedPicks = Object.entries(singleBetPicks)\n .filter(([, p]) => p.isSelected)\n .map(([k]) => k);\n\n return selectedPicks.length > 0\n ? {\n betslipType: BetslipType.Single,\n pickId: pickIdFactory(selectedPicks[0]),\n }\n : undefined;\n});\n\nexport const selectHasEachWayOptionPick = createSelector(\n betslipPicksListSelector,\n betslipTypeStateSelector,\n (pickList, { base, singleBet, comboBet, systemBet }) => {\n if (!pickList.some(BetslipV2OptionMarketPick.isPick)) {\n return false;\n }\n\n switch (base.currentSelectedType) {\n case BetslipType.Single:\n return pickList.filter(BetslipV2OptionMarketPick.isPick).some((pick) => {\n const pickState = singleBet.picks[pick.id.toString()];\n\n return !!pickState && pickState.isEachWay && pickState.isSelected;\n });\n\n case BetslipType.Combo:\n return comboBet.isEachWay;\n case BetslipType.System:\n return systemBet.isEachWay;\n default:\n return false;\n }\n },\n);\n\nexport const selectRewardTokensOnboardingContext = createSelector(\n selectIsLinearBetslip,\n selectSingleBetStandardRewardTokensContext,\n betslipCurrentTypeSelector,\n (isLinear, singleBetRewardTokensContext, currentType) => {\n if (isLinear) {\n return singleBetRewardTokensContext;\n }\n\n switch (currentType) {\n case BetslipType.Combo:\n return {\n betslipType: BetslipType.Combo,\n };\n\n case BetslipType.Single:\n return singleBetRewardTokensContext;\n\n case BetslipType.Teaser:\n return {\n betslipType: BetslipType.Teaser,\n };\n\n default:\n return undefined;\n }\n },\n);\n\nexport const selectRewardTokensOnboardingEligibility = createSelector(\n selectTokensEligibilityState,\n selectRewardTokensOnboardingContext,\n (eligibility, context) => {\n return context ? getEligibilityStateForContext(context, eligibility) : [];\n },\n);\n\nexport const selectRewardTokensOnboardingEligibileTokens = createSelector(\n selectRewardTokensOnboardingEligibility,\n selectRewardTokens,\n (eligibility, tokens) => {\n return eligibility.filter((e) => e.isEligible).map((e) => tokens[e.tokenId]);\n },\n);\n\nexport const selectAcquisitionRewardToken = createSelector(selectRewardTokensList, (tokens) => getAcquisitionRewardToken(tokens));\nexport const selectRewardTokensOnboardingRewardSelectorVisible = createSelector(\n selectHasEachWayOptionPick,\n selectHasNewCustomerOfferPick,\n selectRewardTokensOnboardingEligibileTokens,\n (hasEachWayOption, hasNewCustomerOffer, tokens) => !hasEachWayOption && !hasNewCustomerOffer && tokens.length > 0,\n);\n\nexport const selectRewardTokensOnboardingDisplayState = createSelector(\n rewardTokensOnBoardingSelector,\n selectRewardTokensOnboardingEligibileTokens,\n selectRewardTokensOnboardingRewardSelectorVisible,\n selectAcquisitionRewardToken,\n (onboarding, onboardingTokens, rewardsSelectorVisible, acquisitionRewardToken) => {\n return { isVisible: onboarding.visible && rewardsSelectorVisible && !acquisitionRewardToken, tokens: onboardingTokens };\n },\n);\n\nexport const selectAcquisitionRewardOnboardingDisplayState = createSelector(\n rewardTokensOnBoardingSelector,\n selectRewardTokensOnboardingRewardSelectorVisible,\n (onboarding, rewardsSelectorVisible) => ({\n acquisitionHidden: onboarding.acquisitionHidden && rewardsSelectorVisible,\n }),\n);\n\nexport const selectHasAcquisitionRewardOnboardingForContext = (context: RewardTokenContext) => {\n return createSelector(selectSelectedTokenForContext(context), selectAcquisitionRewardOnboardingDisplayState, (selectedToken, displayState) => {\n return selectedToken?.rewardTargetType === RewardTargetType.WelcomeOffer && !displayState.acquisitionHidden;\n });\n};\n\nexport const selectBetstationTokensState = createSelector(rewardTokensStateSelector, (state) => state.betstationTokens);\nexport const selectEdsTokensState = createSelector(selectBetstationTokensState, (state) => state.edsState);\nexport const selectSelectedEdsTokens = createSelector(selectEdsTokensState, (state) => state.selectedTokenIds);\nexport const selectBogTokensState = createSelector(selectBetstationTokensState, (state) => state.bogTokenState);\n\nexport const selectSelectedBogToken = createSelector(selectBogTokensState, selectRewardTokens, (bogState, tokens) =>\n getSelectedBogToken(bogState, tokens),\n);\n\nexport const selectHasBogTokenSelected = createSelector(selectBogTokensState, (bogState) => !!bogState.selectedTokenId);\n\nexport const selectBogTokenContext = createSelector(rewardTokensStateSelector, (state) => getBestOddsGuaranteedTokensContext(state));\n\nexport const selectHasBetstationFreeBetSelected = createSelector(\n selectBetstationTokensState,\n (extended) => !!extended.betStationFreeBet.selectedTokenId,\n);\n\nexport const selectHasEdsTokenSelected = createSelector(selectEdsTokensState, (edsState) => edsState.selectedTokenIds.length > 0);\n\nexport const selectSelectedBetstationFreeBetToken = createSelector(selectBetstationTokensState, selectRewardTokens, (betstationState, tokens) =>\n getSelectedBetStationFreeBetToken(betstationState, tokens),\n);\n\nexport const selectSingleBetPickRewardTokenFactory = (pickId: PickId) =>\n createSelector(singleBetPickSelectorFactory(pickId), selectRewardTokens, (pick, tokens) => {\n if (!pick) {\n return null;\n }\n\n return pick.rewardTokenId ? tokens[pick.rewardTokenId] : null;\n });\n\nexport const selectSelectedFreeBetTokenForContextFactory = (context: RewardTokenContext) =>\n createSelector(selectTokenForContextFactory(context), (token) => {\n return isFreebetToken(token) ? token : null;\n });\n\nexport const selectHasComboPreventionForContextFactory = (context: RewardTokenContext) => {\n return createSelector(\n selectHasComboPreventionForTypeFactory(context.betslipType!),\n (hasComboPrevention) => hasComboPrevention && context.betslipType !== BetslipType.Single,\n );\n};\n\nexport const selectMultiSingleTokenRewardContext = createSelector(betslipCurrentTypeSelector, singleBetPicksSelector, (type, picks) => {\n if (type !== BetslipType.Single) {\n return undefined;\n }\n\n const selectedPicks = Object.entries(picks).filter(([_, pick]) => pick.isSelected);\n\n const picksWithTokens = selectedPicks.filter(([, pick]) => !!pick.rewardTokenId);\n const singleTokenSelected = picksWithTokens.length === 1;\n\n return singleTokenSelected\n ? {\n betslipType: BetslipType.Single,\n pickId: pickIdFactory(picksWithTokens[0][0]),\n }\n : undefined;\n});\n\nexport const selectRecoverableTokens = createSelector(rewardTokensStateSelector, (tokens) => tokens.tokenRecoveryState);\n\nexport const selectCurrentEligibilityState = createSelector(\n selectTokensEligibilityState,\n betslipCurrentTypeSelector,\n selectSingleBetSinglePickId,\n (eligibilities, currentType, singleBetSinglePickId) => {\n switch (currentType) {\n case BetslipType.Single:\n if (!singleBetSinglePickId) {\n return [];\n }\n\n return eligibilities.singleBet[singleBetSinglePickId] ?? [];\n\n case BetslipType.Combo:\n return eligibilities.comboBet;\n\n case BetslipType.Teaser:\n return eligibilities.teaserBet;\n\n default:\n return [];\n }\n },\n);\n\nexport const selectAcquisitionSelectionTokenContext = createSelector(betslipTypeStateSelector, selectRewardTokensList, (types, tokens) => {\n const acquisitionRewardToken = getAcquisitionRewardToken(tokens);\n if (!acquisitionRewardToken) {\n return;\n }\n const acquisitionSelectionTokenContext = getTokenSelectionContext(acquisitionRewardToken.userTokenId, types);\n\n return { userTokenId: acquisitionRewardToken.userTokenId, ...acquisitionSelectionTokenContext };\n});\n\nexport const selectShowRewardsNotEligibleMessage = createSelector(\n selectIsLinearBetslip,\n betslipCurrentTypeSelector,\n selectNonAccaTokens,\n (isLinear, betslipCurrentType, tokens) => !isLinear && tokens.length > 0 && betslipCurrentType === BetslipType.System,\n);\n\nexport const selectHasEachWayOptionPickForContext = (context: RewardTokenContext) => {\n return createSelector(betslipPicksListSelector, betslipTypeStateSelector, (pickList, { singleBet, comboBet, systemBet }) => {\n if (!pickList.some(BetslipV2OptionMarketPick.isPick)) {\n return false;\n }\n\n switch (context.betslipType) {\n case BetslipType.Single:\n const pickId = context.pickId?.toString();\n\n if (!pickId) {\n return false;\n }\n\n const pick = pickList.find((p) => p.id.toString() === pickId);\n\n const pickState = singleBet.picks[pickId];\n\n if (!pick || !pickState) {\n return false;\n }\n\n return pick && pickState && BetslipV2OptionMarketPick.isPick(pick) && pickState.isEachWay && pickState.isSelected;\n case BetslipType.Combo:\n return comboBet.isEachWay;\n case BetslipType.System:\n return systemBet.isEachWay;\n default:\n return false;\n }\n });\n};\n\nexport const selectIsRewardTokensSelectorVisible = (context: RewardTokenContext) => {\n return createSelector(\n selectHasEachWayOptionPickForContext(context),\n selectHasNewCustomerOfferPick,\n selectHasVisibleTokensForContext(context),\n selectHasComboPreventionForContextFactory(context),\n (eachWayOptionPick, newCustomerOffer, hasVisibleTokens, hasComboPrevention) => {\n return hasVisibleTokens && !newCustomerOffer && !eachWayOptionPick && !hasComboPrevention;\n },\n );\n};\n\nexport const selectRewardsTokensSelectorState = (context: RewardTokenContext) =>\n createSelector(\n selectIsRewardTokensSelectorVisible(context),\n selectTokenAndEligibilityFactory(context),\n selectHasAcquisitionRewardOnboardingForContext(context),\n (isVisible, [selectedToken, eligibility], hasAcquisitionOnboarding) => ({\n isVisible,\n selectedToken,\n isTokenInvalid:\n !eligibility || !!eligibility.invalidHardCriteria || !!Object.values(eligibility.softCriteriasValidity).some((x) => x === false),\n hasAcquisitionOnboarding,\n }),\n );\n","import { createSelector } from '@ngrx/store';\n\nimport { BetslipType } from '../../../../common/betslip/core/betslip-type';\nimport { selectTokensStateContext } from '../../../../common/betslip/modules/reward-tokens/selectors';\nimport { getSelectedAndEligibleAccaBoost } from '../../../../common/betslip/modules/reward-tokens/services/linear-reward-tokens.utils';\nimport { betslipCurrentTypeSelector } from '../../../../common/betslip/modules/types/base/selectors';\n\nexport const accaBoostTokenSelector = createSelector(selectTokensStateContext, ({ eligibilityState, tokens, types }) => {\n return getSelectedAndEligibleAccaBoost(eligibilityState, tokens, types);\n});\n\nexport const accaBoostTokenForCurrentTypeSelector = createSelector(accaBoostTokenSelector, betslipCurrentTypeSelector, (accaBoost, type) => {\n return type && type === BetslipType.Combo ? accaBoost : null;\n});\n\nexport const isAccaBoostTokenSelector = createSelector(accaBoostTokenSelector, (token) => !!token);\n","import { Injectable, inject } from '@angular/core';\n\nimport { BetslipBarConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RouteTag } from '@frontend/sports/common/core/data-access/route';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { SportsProductService } from '@frontend/sports/host-app/sports-product/feature/sports-product-service';\nimport { DslService, HtmlNode } from '@frontend/vanilla/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, map, startWith, tap } from 'rxjs';\n\nimport { betslipPicksListCountSelector } from '../../picks/selectors';\n\n@Injectable({ providedIn: 'root' })\nexport class BetslipBarVisibilityService {\n private readonly visibilitySubject = new BehaviorSubject(true);\n private readonly isSportsActive$ = inject(SportsProductService).isSportsProductActive$;\n\n private readonly BETSLIP_BAR_VISIBLE_CLASS = 'betslip-bar-visible';\n\n private readonly htmlNodeService = inject(HtmlNode);\n private readonly betslipBarConfig = inject(BetslipBarConfig);\n\n private readonly hasPicks$ = inject(Store)\n .select(betslipPicksListCountSelector)\n .pipe(\n startWith(0),\n map((count) => count > 0),\n );\n\n private readonly excludedRoutes$ = inject(RouterEventsService).currentActivationEnd.pipe(\n map((route) => route?.snapshot.data?.tag === RouteTag.MyBets),\n );\n\n readonly enableDsl$ = inject(DslService).evaluateExpression(this.betslipBarConfig.isEnabledDsl);\n\n readonly componentVisible$ = combineLatest([\n this.visibilitySubject,\n this.enableDsl$,\n this.excludedRoutes$,\n this.hasPicks$,\n this.isSportsActive$,\n ]).pipe(\n map(\n ([isVisible, enabled, onExcludedRoute, hasPicks, isSportsActive]) =>\n isSportsActive && enabled && isVisible && !onExcludedRoute && (!this.betslipBarConfig.hideOnEmptyBetslip || hasPicks),\n ),\n tap((visible) => {\n this.htmlNodeService.setCssClass(this.BETSLIP_BAR_VISIBLE_CLASS, visible);\n }),\n );\n\n hideComponent(): void {\n this.visibilitySubject.next(false);\n }\n\n showComponent(): void {\n this.visibilitySubject.next(true);\n }\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { betslipSelector } from '../../base/store/selectors';\n\nexport const hiddenMarketStateSelector = createSelector(betslipSelector, (state) => state.hiddenMarket);\nexport const hasPlacedFirstBetSelector = createSelector(hiddenMarketStateSelector, (state) => state.hasPlacedFirstBet);\n","import { MessageEnvelope } from '@cds/push';\nimport { BetslipDisplayMode } from '@frontend/sports/types/components/bet-placement';\nimport { createAction, props } from '@ngrx/store';\n\nimport { BetslipState } from '../../core/betslip-state';\n\nexport default class BetslipActions {\n static readonly ACTION_SCHEMA = '@betslip';\n\n private static readonly SET_STATE = `${BetslipActions.ACTION_SCHEMA}/SET_STATE`;\n private static readonly EVENT_UPDATE = `${BetslipActions.ACTION_SCHEMA}/EVENT_UPDATE`;\n private static readonly FIXTURE_UPDATE = `${BetslipActions.ACTION_SCHEMA}/FIXTURE_UPDATE`;\n private static readonly TOGGLE_BETSLIP_DISPLAY_MODE = `${BetslipActions.ACTION_SCHEMA}/TOGGLE_BETSLIP_DISPLAY_MODE`;\n\n static setState = createAction(BetslipActions.SET_STATE, props<{ state: BetslipState }>());\n static eventUpdate = createAction(BetslipActions.EVENT_UPDATE, props<{ message: MessageEnvelope }>());\n static fixtureUpdate = createAction(BetslipActions.FIXTURE_UPDATE, props<{ message: MessageEnvelope }>());\n static betBuilderGroupUpdate = createAction(`${BetslipActions.ACTION_SCHEMA}/BETBUILDER_GROUP_UPDATE`, props<{ message: MessageEnvelope }>());\n static toggleBetslipDisplayMode = createAction(BetslipActions.TOGGLE_BETSLIP_DISPLAY_MODE, props<{ mode: BetslipDisplayMode }>());\n}\n","import { OddsAcceptanceMode } from '@bpos';\nimport { createAction, props } from '@ngrx/store';\n\nimport BetslipActions from '../../base/store/actions';\n\nexport default class SettingsActions {\n static readonly ACTION_SCHEMA = `${BetslipActions.ACTION_SCHEMA}/settings`;\n\n private static readonly REQUEST_SET_ODD_ACCEPTANCE = `${SettingsActions.ACTION_SCHEMA}/REQUEST_SET_ODD_ACCEPTANCE`;\n private static readonly SET_ODD_ACCEPTANCE = `${SettingsActions.ACTION_SCHEMA}/SET_ODD_ACCEPTANCE`;\n\n private static readonly REQUEST_SET_APP_NOTIFY = `${SettingsActions.ACTION_SCHEMA}/REQUEST_SET_APP_NOTIFY`;\n private static readonly SET_APP_NOTIFY = `${SettingsActions.ACTION_SCHEMA}/SET_APP_NOTIFY`;\n\n private static readonly REQUEST_SET_EMAIL_NOTIFY = `${SettingsActions.ACTION_SCHEMA}/REQUEST_SET_EMAIL_NOTIFY`;\n private static readonly SET_EMAIL_NOTIFY = `${SettingsActions.ACTION_SCHEMA}/SET_EMAIL_NOTIFY`;\n private static readonly UPDATE_NOTIFICATION_SETTINGS = `${SettingsActions.ACTION_SCHEMA}/UPDATE_NOTIFICATION_SETTINGS`;\n\n /**\n * We can set odds acceptance if user is authenticated if not then we redirect to login.\n */\n static requestSetOddAcceptance = createAction(SettingsActions.REQUEST_SET_ODD_ACCEPTANCE, props<{ acceptance: OddsAcceptanceMode }>());\n static setOddAcceptance = createAction(SettingsActions.SET_ODD_ACCEPTANCE, props<{ acceptance: OddsAcceptanceMode }>());\n\n static requestSetAppNotify = createAction(SettingsActions.REQUEST_SET_APP_NOTIFY, props<{ value: boolean }>());\n static setAppNotify = createAction(SettingsActions.SET_APP_NOTIFY, props<{ value: boolean }>());\n\n static requestSetEmailNotify = createAction(SettingsActions.REQUEST_SET_EMAIL_NOTIFY, props<{ value: boolean }>());\n static setEmailNotify = createAction(SettingsActions.SET_EMAIL_NOTIFY, props<{ value: boolean }>());\n\n static updateNotificationSettings = createAction(\n SettingsActions.UPDATE_NOTIFICATION_SETTINGS,\n props<{ oddsAcceptance?: OddsAcceptanceMode; emailNotify?: boolean; appNotify?: boolean }>(),\n );\n}\n","import { PlaceBetRequest } from '@bpos/v2/bet-placement';\nimport { MessageEnvelope } from '@cds/push';\nimport { Nullable } from '@frontend/sports/common/core/utils/extended-types';\nimport { pprops } from '@frontend/sports/common/core/utils/redux';\nimport { createAction, props } from '@ngrx/store';\nimport { IEarlyPayoutData } from 'packages/sports/web/app/src/my-bets-base/models/early-payout-types';\nimport { IEarlyPayoutResultedPicks, MyBetsBetSlip } from 'packages/sports/web/app/src/my-bets-base/models/my-bets-viewmodels';\nimport { NumpadAction } from 'packages/sports/web/app/src/numpad/model';\n\nimport BetslipActions from '../../base/store/actions';\nimport { IBetslipState } from '../../base/store/state';\nimport { BetslipPick } from '../../core/picks/betslip-pick';\nimport { PickId, V1PickId, V2OptionMarketPickId, V2OptionMarketXCastPickId, V2ParticipantPickId } from '../../core/picks/pick-id';\nimport { ResultStatus } from '../../core/picks/pick-models';\nimport { EditMyBetPicksPayload, IEditMyBetInitPayload } from '../../model/edit-mybet/edit-bet-init';\nimport { IBetPicks } from '../betplacement/models';\nimport { IEditMyBetPickState } from './state';\n\nexport interface IFillEditMyBetPayload {\n pickState: { [pos: number]: { pick: BetslipPick; state: IEditMyBetPickState } };\n sourceBetslip: MyBetsBetSlip;\n}\n\nexport type IEditBetUpdatedEarlyPayout = IEarlyPayoutData & IEarlyPayoutResultedPicks;\n\nexport interface IEditBetUpdatedPayload {\n earlyPayout: Nullable;\n v1FixtureMessages: MessageEnvelope[]; // We can combine them in one collection at some point of time.\n v2FixtureMessages: MessageEnvelope[];\n}\n\nexport interface IPlaceBetPayload {\n requestId: string;\n}\n\nexport interface IPlaceBetResponsePayload {\n guid: string;\n requestPicks: IBetPicks;\n state: IBetslipState;\n timeout: Date;\n placeBetRequest: PlaceBetRequest;\n}\n\nexport interface IEditBetPickResultsPayload {\n pickId: PickId;\n newState: ResultStatus;\n oldState: ResultStatus;\n}\n\nexport interface ISwapPickPayload {\n oldPick: BetslipPick;\n newPick: BetslipPick;\n highlightNewPick: boolean;\n}\n\nexport class EditBetActions {\n static readonly ACTION_SCHEMA = `${BetslipActions.ACTION_SCHEMA}/edit-bet`;\n\n private static readonly INIT = `${EditBetActions.ACTION_SCHEMA}/INIT`;\n private static readonly SET_DEFAULT = `${EditBetActions.ACTION_SCHEMA}/SET_DEFAULT`;\n private static readonly FILL = `${EditBetActions.ACTION_SCHEMA}/FILL`;\n private static readonly SWAP_EDIT_BET_PICK = `${EditBetActions.ACTION_SCHEMA}/SWAP_EDIT_BET_PICK`;\n\n private static readonly START_ADDING_STAKE = `${EditBetActions.ACTION_SCHEMA}/START_ADDING_STAKE`;\n private static readonly CONFIRM_ADDING_STAKE = `${EditBetActions.ACTION_SCHEMA}/CONFIRM_ADDING_STAKE`;\n private static readonly CANCEL_ADDING_STAKE = `${EditBetActions.ACTION_SCHEMA}/CANCEL_ADDING_STAKE`;\n private static readonly SET_ADDED_STAKE = `${EditBetActions.ACTION_SCHEMA}/SET_ADDED_STAKE`;\n\n private static readonly DEPOSIT = `${EditBetActions.ACTION_SCHEMA}/DEPOSIT`;\n private static readonly MAKE_DEPOSIT = `${EditBetActions.ACTION_SCHEMA}/MAKE_DEPOSIT`;\n\n private static readonly ADD_PICK = `${EditBetActions.ACTION_SCHEMA}/ADD_PICK`;\n private static readonly REMOVE_PICK = `${EditBetActions.ACTION_SCHEMA}/REMOVE_PICK`;\n private static readonly DELETE_PICK = `${EditBetActions.ACTION_SCHEMA}/DELETE_PICK`;\n private static readonly UNDO_REMOVE_PICK = `${EditBetActions.ACTION_SCHEMA}/UNDO_REMOVE_PICK`;\n private static readonly START_UNDOING_REMOVE_PICK = `${EditBetActions.ACTION_SCHEMA}/START_UNDOING_REMOVE_PICK`;\n private static readonly REQUEST_DISCARD = `${EditBetActions.ACTION_SCHEMA}/REQUEST_DISCARD`;\n private static readonly CANCEL_DISCARD_REQUEST = `${EditBetActions.ACTION_SCHEMA}/CANCEL_DISCARD_REQUEST`;\n private static readonly EXIT_EDIT_BET = `${EditBetActions.ACTION_SCHEMA}/EXIT_EDIT_BET`;\n private static readonly SWITCH_TO_ADD_SELECTION_MODE = `${EditBetActions.ACTION_SCHEMA}/SWITCH_TO_ADD_SELECTION_MODE`;\n private static readonly TOGGLE_PICKS_CONTAINER = `${EditBetActions.ACTION_SCHEMA}/TOGGLE_PICKS_CONTAINER`;\n private static readonly CANCEL_ADD_SELECTION_MODE = `${EditBetActions.ACTION_SCHEMA}/CANCEL_ADD_SELECTION_MODE`;\n private static readonly CONFIRM_ADD_SELECTION_MODE = `${EditBetActions.ACTION_SCHEMA}/CONFIRM_ADD_SELECTION_MODE`;\n private static readonly START_ADDING_PICK_TO_CONTAINER = `${EditBetActions.ACTION_SCHEMA}/START_ADDING_PICK_TO_CONTAINER`;\n private static readonly ADD_PICK_TO_CONTAINER = `${EditBetActions.ACTION_SCHEMA}/ADD_PICK_TO_CONTAINER`;\n private static readonly REMOVE_PICK_FROM_CONTAINER = `${EditBetActions.ACTION_SCHEMA}/REMOVE_PICK_FROM_CONTAINER`;\n private static readonly SET_FIXED_PRICE = `${EditBetActions.ACTION_SCHEMA}/SET_FIXED_PRICE`;\n private static readonly SET_STARTING_PRICE = `${EditBetActions.ACTION_SCHEMA}/SET_STARTING_PRICE`;\n private static readonly SWITCH_TO_SWAP_SELECTION_MODE = `${EditBetActions.ACTION_SCHEMA}/SWITCH_TO_SWAP_SELECTION_MODE`;\n private static readonly START_ADDING_PICK_TO_SWAP = `${EditBetActions.ACTION_SCHEMA}/START_ADDING_PICK_TO_SWAP`;\n private static readonly ADD_PICK_TO_SWAP = `${EditBetActions.ACTION_SCHEMA}/ADD_PICK_TO_SWAP`;\n private static readonly CANCEL_SWAP_SELECTION_MODE = `${EditBetActions.ACTION_SCHEMA}/CANCEL_SWAP_SELECTION_MODE`;\n private static readonly UPDATE_PICK_TO_SWAP = `${EditBetActions.ACTION_SCHEMA}/UPDATE_PICK_TO_SWAP`;\n private static readonly HANDLE_SWAP_ERROR = `${EditBetActions.ACTION_SCHEMA}/HANDLE_SWAP_ERROR`;\n private static readonly PLACE_BET = `${EditBetActions.ACTION_SCHEMA}/PLACE_BET`;\n private static readonly EARLY_PAYOUT_UPDATED = `${EditBetActions.ACTION_SCHEMA}/EARLY_PAYOUT_UPDATED`;\n private static readonly EDIT_BET_UPDATED = `${EditBetActions.ACTION_SCHEMA}/EDIT_BET_UPDATED`;\n private static readonly GET_PLACE_BET_STATUS = `${EditBetActions.ACTION_SCHEMA}/GET_PLACE_BET_STATUS`;\n private static readonly ACCEPT_CURRENT_EARLY_PAYOUT_VALUE = `${EditBetActions.ACTION_SCHEMA}/ACCEPT_CURRENT_EARLY_PAYOUT_VALUE`;\n private static readonly DISABLE_EARLY_PAYOUT = `${EditBetActions.ACTION_SCHEMA}/DISABLE_EARLY_PAYOUT`;\n private static readonly APPLY_EDIT_BET_PICK_RESULTS = `${EditBetActions.ACTION_SCHEMA}/APPLY_EDIT_BET_PICK_RESULTS`;\n private static readonly START_EDIT_MY_BET = `${EditBetActions.ACTION_SCHEMA}/START_EDIT_MY_BET`;\n private static readonly SUBSCRIBE_TO_EARLY_PAYOUT = `${EditBetActions.ACTION_SCHEMA}/SUBSCRIBE_TO_EARLY_PAYOUT`;\n private static readonly UNSUBSCRIBE_FROM_EARLY_PAYOUT = `${EditBetActions.ACTION_SCHEMA}/UNSUBSCRIBE_FROM_EARLY_PAYOUT`;\n\n /**\n * Init Edit Bet\n */\n static init = createAction(EditBetActions.INIT, pprops());\n\n /**\n * Add new pick to the slip.\n */\n static addPick = createAction(EditBetActions.ADD_PICK, props<{ pick: BetslipPick }>());\n\n /**\n * Fill Edit bet with data\n */\n static fillEditMyBet = createAction(EditBetActions.FILL, pprops());\n\n /**\n * Swap a pick in edit bet.\n */\n static swapPick = createAction(EditBetActions.SWAP_EDIT_BET_PICK, pprops());\n\n /**\n * Start adding top-up stake. Shows the Stake keypad.\n */\n static startAddingStake = createAction(EditBetActions.START_ADDING_STAKE);\n\n /**\n * Notify action when user stopped changing top-up stake. On numpad OK button click.\n * null is canceling of adding stake.\n */\n static confirmAddingStake = createAction(EditBetActions.CONFIRM_ADDING_STAKE, props<{ stake: number }>());\n\n /**\n * Close stake numpad - do nothing.\n */\n static cancelAddingStake = createAction(EditBetActions.CANCEL_ADDING_STAKE);\n\n /**\n * Start adding funds through quick-deposit\n */\n static deposit = createAction(EditBetActions.DEPOSIT);\n\n /**\n * Set current entered stake.\n */\n static setEditMyBetAddedStake = createAction(EditBetActions.SET_ADDED_STAKE, pprops<{ stake: number; action?: NumpadAction }>());\n\n /**\n * Ask for confirmation to leave EMB and redirect to deposit page or open quickDeposit\n */\n static makeDeposit = createAction(EditBetActions.MAKE_DEPOSIT);\n\n /**\n * Removes pick from edit bet (marks it as not used)\n */\n static removePick = createAction(EditBetActions.REMOVE_PICK, props<{ pickId: string }>());\n\n /**\n * Deletes pick from edit bet (marks it as not used)\n */\n static deletePick = createAction(EditBetActions.DELETE_PICK, props<{ pickId: PickId }>());\n\n /**\n * Start process of Undo remove pick. Checks if the betslip is not full.\n */\n static startUndoingRemovePick = createAction(EditBetActions.START_UNDOING_REMOVE_PICK, props<{ pickId: string }>());\n\n /**\n * Undo remove (enable back) the pick in edit bet.\n */\n static undoRemovePick = createAction(EditBetActions.UNDO_REMOVE_PICK, props<{ pickId: string }>());\n\n /**\n * User tries to exit edit bet (Clicks on Cancel button).\n */\n static requestDiscard = createAction(EditBetActions.REQUEST_DISCARD);\n\n /**\n * User cancels his/her request to edit bet. Decides to continue editing\n */\n static cancelDiscardRequest = createAction(EditBetActions.CANCEL_DISCARD_REQUEST);\n\n /**\n * User exits edit bet mode.\n */\n static exitEditBet = createAction(EditBetActions.EXIT_EDIT_BET);\n\n /**\n * Set default edit bet\n */\n static setDefault = createAction(EditBetActions.SET_DEFAULT);\n\n /**\n * User start adding picks to edit bet.\n */\n static switchToAddSelectionMode = createAction(EditBetActions.SWITCH_TO_ADD_SELECTION_MODE);\n\n /**\n * Toggles the visibility of edit bet picks staging area. Show/Hides the pick list.\n */\n static togglePicksContainer = createAction(EditBetActions.TOGGLE_PICKS_CONTAINER);\n\n // /**\n // * Cancel adding new picks to edit bet.\n // */\n // static cancelAddSelectionMode = createAction(EditBetActions.CANCEL_ADD_SELECTION_MODE, pprops());\n /**\n * Cancel adding new picks to edit bet.\n */\n static cancelAddSelectionMode = createAction(EditBetActions.CANCEL_ADD_SELECTION_MODE, pprops());\n\n /**\n * Adds the staging picks to edit bet.\n */\n static confirmAddSelectionMode = createAction(EditBetActions.CONFIRM_ADD_SELECTION_MODE, pprops<{ picks: BetslipPick[] }>());\n\n /**\n * Start adding pick to staging area. Creates request to BCD to resolve pick data.\n */\n static startAddingPickToContainer = createAction(\n EditBetActions.START_ADDING_PICK_TO_CONTAINER,\n props<{ pickId: V1PickId | V2OptionMarketPickId | V2ParticipantPickId | V2OptionMarketXCastPickId }>(),\n );\n\n /**\n * Add pick to edit bet staging area. After we have bcd data.\n */\n static addPickToContainer = createAction(EditBetActions.ADD_PICK_TO_CONTAINER, props<{ pick: BetslipPick }>());\n\n /**\n * Remove pick from staging area.\n */\n static removeFromContainer = createAction(EditBetActions.REMOVE_PICK_FROM_CONTAINER, props<{ pickId: string }>());\n\n /**\n * Set fixed price for pick\n */\n static setFixedPrice = createAction(EditBetActions.SET_FIXED_PRICE, props<{ pickId: PickId }>());\n\n /**\n * Set starting price for pick\n */\n static setStartingPrice = createAction(EditBetActions.SET_STARTING_PRICE, props<{ pickId: PickId }>());\n\n /**\n * Start swapping pick. Shows swap pick dialog.\n */\n static switchToSwapSelectionMode = createAction(EditBetActions.SWITCH_TO_SWAP_SELECTION_MODE, props<{ pick: BetslipPick }>());\n\n /**\n * Cancel swapping pick. Closes the swap pick dialog.\n */\n static cancelSwapSelectionMode = createAction(EditBetActions.CANCEL_SWAP_SELECTION_MODE);\n\n /**\n * Select pick to swap. Creates request to BCD to resolve pick data.\n */\n static startAddingPickToSwap = createAction(EditBetActions.START_ADDING_PICK_TO_SWAP, props<{ pick: BetslipPick }>());\n\n /**\n * Swap temporary pick.\n */\n static addPickToSwap = createAction(EditBetActions.ADD_PICK_TO_SWAP, props<{ pick: BetslipPick }>());\n\n static updatePickToSwap = createAction(EditBetActions.UPDATE_PICK_TO_SWAP, props<{ pick: BetslipPick }>());\n\n static handleSwapError = createAction(EditBetActions.HANDLE_SWAP_ERROR, props<{ error: string; pickId?: PickId }>());\n\n /**\n * Place edit bet.\n */\n static placeBet = createAction(EditBetActions.PLACE_BET, pprops());\n\n /**\n * Get current place edit bet status.\n */\n static getPlaceBetStatus = createAction(EditBetActions.GET_PLACE_BET_STATUS, pprops());\n\n /**\n * Action fired when Early payout is updated. Has push message regarding Early payout\n */\n static earlyPayoutUpdated = createAction(EditBetActions.EARLY_PAYOUT_UPDATED, pprops>());\n\n /**\n * Action that modifies the Edit bet (Changes Odds, Pick visibility, Early payout value)\n */\n static editBetUpdated = createAction(EditBetActions.EDIT_BET_UPDATED, pprops());\n\n /**\n * Accept current early payout value\n */\n static acceptCurrentEarlyPayoutValue = createAction(EditBetActions.ACCEPT_CURRENT_EARLY_PAYOUT_VALUE);\n\n /**\n * Disable early payout because of error\n */\n static disableEarlyPayout = createAction(EditBetActions.DISABLE_EARLY_PAYOUT);\n\n static applyEditBetPickResults = createAction(EditBetActions.APPLY_EDIT_BET_PICK_RESULTS, pprops());\n\n /**\n * Subscribe to Early Payout\n */\n static subscribeToEarlyPayout = createAction(EditBetActions.SUBSCRIBE_TO_EARLY_PAYOUT);\n\n /**\n * Unsubscribe from Early payout.\n */\n static unsubscribeFromEarlyPayout = createAction(EditBetActions.UNSUBSCRIBE_FROM_EARLY_PAYOUT);\n\n /**\n * Action called when bet editing is started\n */\n static startEditMyBet = createAction(EditBetActions.START_EDIT_MY_BET, props<{ payload: EditMyBetPicksPayload }>());\n}\n\n// @ts-ignore\nwindow.editBetAction = EditBetActions;\n","import { InjectionToken } from '@angular/core';\n\nimport { BetslipModuleLoaderService } from './betslip-module-loader.service';\nimport IOddsSettingsService from './services/odds-settings.service';\n\nexport const BETSLIP_MODULE_LOADER_SERVICE = new InjectionToken('Betslip module loader token');\n\n/* Services */\n\nexport const ODDS_SETTINGS_SERVICE = new InjectionToken('BET_STATION_ODDS_SETTINGS_SERVICE');\n\nexport const ODDS_VIEW_MODE = new InjectionToken('ODDS_VIEW_MODE');\n","import { Location } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { OddsAcceptanceMode } from '@bpos';\nimport { DispatcherService } from '@frontend/sports/common/core/utils/dispatcher';\nimport { NonRootToken } from '@frontend/sports/host-app/sports-product/feature/non-root-token';\nimport { filterSports } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { UrlService } from '@frontend/vanilla/core';\nimport { Store, createSelector } from '@ngrx/store';\nimport { isAccaBoostTokenSelector } from 'packages/sports/web/app/src/acca-boost-base/acca-boost-utils';\nimport { AdaptiveLayoutService } from 'packages/sports/web/app/src/layout/adaptive-layout.service';\nimport { MarketUrlParam } from 'packages/sports/web/app/src/navigation-core/url-helper.service';\nimport StoragePersister from 'packages/sports/web/app/src/store-persist/storage-persister';\nimport { Observable, Subject, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, distinctUntilKeyChanged, filter, map, mergeMap, startWith, switchMap, take, tap } from 'rxjs/operators';\n\nimport { IBetslipRootState, IBetslipState, betslipFeatureKey } from '../base/store/state';\nimport { BetslipState } from '../core/betslip-state';\nimport { BetslipType } from '../core/betslip-type';\nimport { BetslipHost, ExternalBetslipActions, PickAddPayload } from '../core/external-betslip-actions';\nimport { BetslipBetBuilderPick } from '../core/picks/betslip-bet-builder-pick';\nimport { BetBuilderPickId, PickId } from '../core/picks/pick-id';\nimport { PickType, PriceType } from '../core/picks/pick-models';\nimport { flattenGroupPicksIfAny } from '../core/utils';\nimport { BetslipBarVisibilityService } from '../modules/betslip-bar/services/betslip-bar-visibility.service';\nimport { hasPlacedFirstBetSelector } from '../modules/hidden-market/hidden-market.selectors';\nimport { IRewardToken } from '../modules/reward-tokens/reward-tokens.model';\nimport { selectRewardTokensList } from '../modules/reward-tokens/selectors';\nimport SettingsActions from '../modules/settings/actions';\nimport { EditBetActions } from './../modules/edit-bet/actions';\nimport { BetslipModule, BetslipModuleLoaderService } from './betslip-module-loader.service';\nimport { BETSLIP_MODULE_LOADER_SERVICE } from './sports-injection-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BetslipIntegrationService {\n private betslipHost?: BetslipHost;\n\n private betslipPickSelectedSelectorFactory = (\n module: BetslipModule,\n pickId: PickId,\n priceType?: PriceType,\n longId?: string,\n siblingPickId?: PickId,\n ) =>\n createSelector(\n module.exported.selectors.betslipTypeCurrentTypeSelector,\n module.exported.selectors.betslipPicksListSelector,\n module.exported.selectors.editBetPicksListSelector,\n module.exported.selectors.editBetAddedPicksListSelector,\n module.exported.selectors.editBetPickStateSelector,\n (type, picks, editBetPicks, editBetAddedPicks, pickstate) => {\n if (type === BetslipType.EditBet) {\n const editBetPick =\n editBetPicks.find((p) => p.id.toString() === pickId.toString() && pickstate[pickId.toString()].isRemoved === false) ||\n editBetAddedPicks.find((p) => p.id.toString() === pickId.toString());\n\n return !!editBetPick && (editBetPick.priceType === priceType || priceType === undefined);\n }\n\n if (pickId.getPickType() === PickType.BetBuilderPick && longId) {\n const bbPickId = pickId as BetBuilderPickId;\n\n return picks.some(\n (p) =>\n BetslipBetBuilderPick.isEntainUiBetBuilderPick(p) &&\n p.eventId === bbPickId.eventId &&\n p.sportcastOptions.map((so) => so.longId).some((id) => id === longId),\n );\n }\n\n const pick = flattenGroupPicksIfAny(picks).find((p) => p.id.isEqual(pickId));\n const siblingPick = siblingPickId && picks.find((t) => t.id.isEqual(siblingPickId));\n\n return (!!pick && (pick.priceType === priceType || priceType === undefined)) || !!siblingPick;\n },\n );\n\n private locationUrl$: Observable;\n\n constructor(\n private store: Store,\n private dispatcher: DispatcherService,\n private storagePersister: StoragePersister,\n private adaptiveLayoutService: AdaptiveLayoutService,\n private urlService: UrlService,\n private location: Location,\n @Inject(NonRootToken(BETSLIP_MODULE_LOADER_SERVICE)) private betslipModuleLoader: BetslipModuleLoaderService,\n private betslipBarVisibility: BetslipBarVisibilityService,\n ) {\n const locationUrl = new Subject();\n\n this.locationUrl$ = locationUrl.pipe(distinctUntilChanged(), filterSports());\n\n this.location.onUrlChange((url) => locationUrl.next(url));\n this.betslipInitialized$().subscribe();\n }\n\n betslipInitialized$(): Observable {\n if (this.betslipHost) {\n return of(this.betslipHost);\n }\n\n return this.dispatcher.on('MODULE_LOADED').pipe(\n filter((value) => value === 'BetslipBetStationModule' || value === 'BetslipDigitalModule'),\n take(1),\n map((value) => (value === 'BetslipDigitalModule' ? BetslipHost.Digital : BetslipHost.BetStation)),\n tap((host) => {\n this.betslipHost = host;\n }),\n );\n }\n\n isEditBetActive$(betslipId: string): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap(() => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) =>\n this.store.select(module.exported.selectors.betslipTypeStateSelector).pipe(\n map((state) => {\n return state.base.currentSelectedType === BetslipType.EditBet && state.editBet.betslipId === betslipId;\n }),\n ),\n ),\n );\n }\n\n isAccaBoostToken$(): Observable {\n return this.store.select(isAccaBoostTokenSelector);\n }\n\n betslipState$(): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap(() => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) => this.store.select(module.exported.selectors.betslipBaseStateSelector)),\n );\n }\n\n /**\n * Indicates whether the user has placed a bet in the current application run.\n * Used to determine whether to show hidden markets.\n */\n hasPlacedFirstBet$(): Observable {\n return this.store.select(hasPlacedFirstBetSelector);\n }\n\n rewardTokens$(): Observable {\n return this.store.select(selectRewardTokensList);\n }\n\n requestExitEditBet(): void {\n this.store.dispatch(EditBetActions.requestDiscard());\n }\n\n /**\n * Define when to show betstation betslip:\n * 1. Not initialized ? Check if we have something in the savedState and if we have picks there load it.\n * 2. Initialized ? Check current betslip count.\n */\n shouldShowBetslipInBetStation$(): Observable {\n const betslipPicksCountWatcher$ = this.betslipPicksCount$().pipe(map((count) => !!count));\n if (!this.betslipHost) {\n // Betslip not loaded, check storage if has some picks then load it.\n const savedState = this.storagePersister.load();\n if (savedState && betslipFeatureKey in savedState) {\n const betslipState = savedState[betslipFeatureKey] as IBetslipState;\n if (betslipState?.picks?.pickList?.length) {\n return betslipPicksCountWatcher$.pipe(startWith(true));\n }\n }\n }\n\n // if betslip is loaded or no picks in the storage then check picks count.\n return betslipPicksCountWatcher$;\n }\n\n /**\n * Define when to show QuickBet:\n * Show Quick Bet if the layout's quick bet active is set to true.\n */\n shouldShowQuickBet$(): Observable {\n return this.adaptiveLayoutService.stateChange$.pipe(\n distinctUntilKeyChanged('quickBetActive'),\n map((t) => t.quickBetActive),\n );\n }\n\n /**\n * Define when to show Betslip returns messages:\n * 1. when bottom navigation is visible and\n * 2. when the user is not in the Bet Builder tab\n */\n shouldShowBetslipReturnsMessage$(): Observable {\n const isInBetBuilderTab$ = this.betslipInitialized$().pipe(\n switchMap(() => {\n return this.locationUrl$.pipe(\n map((url) => url && this.urlService.parse(url).search.get('market') === MarketUrlParam.BetBuilder),\n startWith(this.urlService.current().search.get('market') === MarketUrlParam.BetBuilder),\n );\n }),\n );\n\n const hasBottomNavigation$ = this.adaptiveLayoutService.stateChange$.pipe(map((state) => !!state.bottomNavigation));\n\n return combineLatest([isInBetBuilderTab$, hasBottomNavigation$]).pipe(\n map(([isInBetBuilderTab, hasBottomNavigation]) => hasBottomNavigation && !isInBetBuilderTab),\n distinctUntilChanged(),\n );\n }\n\n /**\n * Define when to show QuickBetBuilder in Entain UI:\n * Show Quick Bet Builder Drawer if the layout's quick bet active is set to true.\n */\n shouldShowQuickBetBuilder$(): Observable {\n return this.adaptiveLayoutService.stateChange$.pipe(\n distinctUntilKeyChanged('quickBetBuilderActive'),\n map((t) => t.quickBetBuilderActive),\n );\n }\n\n betslipPicksCount$(): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap((_) => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) => this.store.select(module.exported.selectors.betslipPickIdsSelector).pipe(map((picks) => picks.length))),\n );\n }\n\n betslipPicksAndLegsCount$(): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap((_) => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) => this.store.select(module.exported.selectors.betslipPicksListCountSelectorIncludeBetbuilderLegs)),\n );\n }\n\n betslipPickIds$(): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap((_) => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) => this.store.select(module.exported.selectors.betslipPickIdsSelector).pipe(map((picks) => picks))),\n );\n }\n\n pickSelected$(pickId: PickId, priceType?: PriceType, longId?: string, siblingPickId?: PickId): Observable {\n return this.betslipInitialized$().pipe(\n mergeMap((_) => this.betslipModuleLoader.loadBetslipModule()),\n mergeMap((module) => this.store.select(this.betslipPickSelectedSelectorFactory(module, pickId, priceType, longId, siblingPickId))),\n );\n }\n\n get betslipBarEnabled(): Observable {\n return this.betslipBarVisibility.enableDsl$;\n }\n\n addMultiplePicks(payload: { picks: PickAddPayload[]; stake?: number }): void {\n this.store.dispatch(ExternalBetslipActions.addMultiplePicks(payload));\n }\n\n addPick(payload: PickAddPayload): void {\n this.store.dispatch(ExternalBetslipActions.addPick(payload));\n }\n\n removeMultiplePicks(payload: { pickIds: PickId[] }): void {\n this.store.dispatch(ExternalBetslipActions.removeMultiplePicks(payload));\n }\n\n setOddsAcceptance(oddsAcceptance: string = OddsAcceptanceMode.No): void {\n if (!this.betslipHost) {\n // If betslip is not initialized, don't do anything when we init betslip we will read what is the current odds acceptance.\n return;\n }\n this.store.dispatch(SettingsActions.setOddAcceptance({ acceptance: oddsAcceptance as OddsAcceptanceMode }));\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","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","isMain","twoThreeWay","Single","getValidTotalsPrefixType","totalsPrefixType","FixtureMarketFactory","_FixtureMarketFactory","FixtureFactory","sportConfig","getOrderedMarkets","deleteOptionGroup","updateOptionGroup","fixtureMarket","updated","virtuals","marketTypeOrder","orderIndex","_FixtureFactory","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","SportsProductService","productService","injector","isSingleDomainApp","isSportsProductActive$","subject$","BehaviorSubject","checkIsSportsProduct","productChanged","distinctUntilChanged","currentInjector","sportsProduct","isRegistered","console","activateSports","setActive","deactivateSports","deactivateProduct","isSingleDomain","sportsProductName","metadata","Injector","_SportsProductService","APP_INJECTOR","setAppInjector","fromSportsLeave","skip","fromSportsEnter","filterSports","withLatestFrom","isSports","filterSportsEmitLast","lastNotSportsValue","subscriber","productSubscription","sourceSubscription","unsubscribe","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","Jt","utils_1","SubscriptionStore","subscription","require_logger","tslib_1","signalr_1","Vt","ot","Xt","optionalParams","require_client_connector","models_1","subscription_store_1","Zt","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","warn","run","cb","pushBufferingDuration","leading","trailing","envelopes","runOutsideAngular","newSubscriptions","existing","topics","subscribe$","existing$","envelope","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","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","GameLauncherSection","gameLauncherResolver","section","lobbyPosition","LocalStorageService","localStore","getItem","storageKey","getItemObject","saveItem","clearStorage","addTimestampToItem","timestamp","sortStorageItemsByTimestamp","clearExpiredItems","expirationDays","storedItems","currentTime","hasItemRemoved","filteredArray","millisecondsInOneDay","_LocalStorageService","RouterEventsService","currentActivationEnd","currentRouteActivationEnd","currentActivationStart","currentRouteActivationStart","currentRoutesRecognized","currentRouteRoutesRecognized","isDirectLink","recognizedRoutes","urlHistory","initCurrentRouteActivationEnd","initCurrentRouteActivationStart","initCurrentRouteRoutesRecognized","ActivationEnd","ActivationStart","GuardsCheckEnd","RoutesRecognized","_RouterEventsService","CompetitionRouteService","routerEvents","parsedRoute","matchers","mappers","getQuery","parsedUrl","getInteger","toInteger","getIntegerArray","getSportRoute","getCommon","subContext","getBettingRoute","getConferencesRoute","conferenceName","getVirtualBettingRoute","virtualCompetitionGroupName","getBettingSportRoute","getCouponRoute","couponName","getTournamentRoute","getStandingsRoute","getStandingsVirtualRoute","getCalendarRoute","getWorldCupHubRoute","worldCupHub","getBetsRoute","marketOffer","getBetsVirtualRoute","sportName","marketTemplate","marketCategory","dynamicOfferCategory","getLiveRoute","getLiveConferenceRoute","getVirtualLiveRoute","getCouponCompetitionRoute","getCouponVirtualCompetitionRoute","regex","couponContext","competitionContext","conferencesContext","conferences","tournamentContext","teampagesContext","betsContext","standingsContext","liveContext","worldCupHubContext","baseOptions","nextRaces","eventContext","baseContext","virtualNode","urlAfterRedirects","decodedPathWithSecondaryOutletsRemoved","matcher","exec","getCompetitionRouteTracking","hasFixtures","groupName","routeContext","capitalize","_CompetitionRouteService","CompetitionListSeoService","getRealCompetitionId","saveRealCompetitionId","storeRealCompetitionId","fixtureList","_CompetitionListSeoService","SeoContentService","competitionRoute","competitionListSeoService","masterDataApiService","lastRequestApiParams","lastResponse","getForEventDetails","performApiRequest","getSeoContent","routeParams","competitionData","routeData","getLeagueId","getSeoFilter","lobby","sportsLobby","highlights","liveHighlights","sportsList","liveVideo","esportsLobby","esportsHighlights","multiSportsLobby","fixtureContext","h1Included","virtualCompetitionInfo","apiParams","contextKey","_SeoContentService","PickSourceProvider","getTracking","contentPosition","isFallbackMarketEnabled","marqueeName","trackingOptions","isInSheetView","baseTracking","additional","isNil","sheetviewSuffix","_PickSourceProvider","ModularConfigAccessorService","setPage","setWidget","setParentWidget","getParentWidget","setLayoutTemplate","layoutTemplate","getLayoutTemplate","_ModularConfigAccessorService","ModularPickSourceService","configAccessor","getBaseTracking","buildPath","templateName","parentWidget","folder","_ModularPickSourceService","QuickBetActionButtonState","QuickBetUiState","defaultQuickBetActionButtonState","isDisabled","isProcessing","Login","hasTaxation","possibleWinnings","winningsBoost","riskFreeAmount","taxationAmount","taxationLiability","possibleWinningsNet","defaultQuickBetStakeState","stake","defaultQuickBetPlaceResultState","slipResults","isSuccessful","errors","warnings","placedNewCustomerOffer","summary","acceptedOdds","boostedOdds","defaultQuickBetHelpState","wasShown","defaultQuickBetDisplayHelper","addedToBetslip","closedByError","hiddenByError","defaultQuickBetState","uiState","keepOpen","pickIds","displayHelper","oddsChangedOnBetPlacement","pickLockedOnBetPlacement","hasClosedPick","hasLockedPick","helpState","stakeState","actionButtonState","betPlacedResult","inOverlay","inEditBetMode","PickType","PickSubType","ParticipantPickType","HorseRacingPreFix","ResultStatus","PriceType","QuickBetPickType","PickOddsState","PickUpdateType","PickId","subscriptionContext","Empty","EmptyPickId","getPickType","copy","V1PickId","asString","ID_PREFIX","isId","PICK_REG_EX","fromString","V1Pick","_V1PickId","V2PickId","V2ParticipantPickId","getPrefix","pickType","Win","Forecast","CombinationForecast","Tricast","CombinationTricast","pm","PICK_PARTICIPANT_REG_EX","V2WinPickId","V2ParticipantPick","_V2ParticipantPickId","V2WIN_PICK_REG_EX","_V2WinPickId","V2OptionMarketPickId","V2OptionMarketPick","_V2OptionMarketPickId","V2OptionMarketXCastPickId","priceIds","optionEntries","priceEntries","prices","PICK_OPTION_REG_EX","pricematch","PICK_PRICE_REG_EX","V2OptionMarketXcastPick","_V2OptionMarketXCastPickId","BetBuilderPickId","BetBuilderPick","_BetBuilderPickId","GroupPickId","groupInfo","GroupedPicks","_GroupPickId","isGroupEnabledPickId","pickId","pickIdFactory","BetslipState","defaultBetslipBaseState","Edit","isBetslipKeypadOpened","linearModeCheckboxesEnabled","isSportcastAsComboEnabled","betslipFeatureKey","betslipSelector","betslipBaseSelector","betslipBaseStateSelector","betslipDisplayModeSelector","selectIsLinearBetslip","selectIsLinearCheckboxesEnabled","Placing","betslipStageSelector","baseState","Fraction","isSimplified","fromJSON","toCommonDenominator","firstNumerator","secondNumerator","resultDenominator","toInt","numberEps","NaN","numberToFraction","intVal","strValue","dotIndex","decimalLength","plus","multiply","eq","lessOrEqualThan","greaterOrEqualThan","_Fraction","emptyOdds","fractional","moneyline","emptyCalculatedOdds","OddsConverter","decimalToFraction","decimalToUS","precision","toDecimalPlaces","fractionToDecimal","fractionOdds","fractionToUS","usToDecimal","usToFraction","decimalToEachWay","fractionToEachWay","usToEachWay","us","convertOdds","targetFormat","sourceFormat","OddsOperations","createOdds","createOdds2","oddsFormat","european","british","createOdds3","isOddsEmpty","isOddsValid","isDecimalOddsValid","isFractionalOddsValid","isMoneyLineOddsValid","initialValue","odd","getTotalOdds","OddsOne","ROUND_HALF_UP","equal2","toCalculatedOdds","nativeOdds","calculatedOdds","toDecimalValue","fromDecimalValue","fromDecimalsToOdds","convertOddsFormat","convertToBposOddsFormat","toOdds","_OddsOperations","BetslipPick","_groupInfo","resultStatus","Open","isPriceVisible","isMarketVisible","isOpen","currentPrice","oddsState","Locked","Closed","betCount","priceType","acceptedPrice","isNewCustomerOffer","isNewCustomerOfferPick","pickSubType","boostedPriceDetails","parentLinkedEventId","fromHybridFixture","initPropertiesFromJSON","getOddsAcceptance","setGroupInfo","BetslipV2Pick","isPick","Fixed","partitionId","competitionName","setMarketInvisible","BetslipV2OptionMarketPick","eventViewType","isFavouritePick","isFromNewCustomerOffer","isDraw","siblingOption","isLive","isClosed","BetslipBetBuilderPick","isEntainUiBetBuilderPick","sportcastOptions","getLegCount","betgeniusId","betSlipUid","useV2Key","useV2key","getLegs","BetslipPickChangeType","CombinationPrevention","toComboPrevention","AllCombo","OnlyLiveEvents","NoCombo","NoEventCombo","NoFixtureCombo","OnlySameLeagueDifferentEvent","NoCompetitionCombo","NoLeagueCombo","NoSportCombo","OnlyDifferentLiveEvents","NoGroupCombo","MinimumCombination","toMinimumCombo","Combo2","Combo3","Combo4","Combo5","Combo6","toMinimumComboTV2","isGameDeleteEnvelope","isGameUpdateEnvelope","BetslipV1Pick","teaser","isPublished","updateFromMessage","cdsGame","minimumCombo","newPrice","changeType","VisibilityChange","OddsChange","BetslipV2StandardPick","StandardV2Pick","participantOptionPriceToBetslipPrice","participantPriceStatus","optionPriceToBetslipPrice","BetslipV2ParticipantPick","betType","betTypeAltTranslation","updateFromPrice","thisPrice","fixtureOption","marketStatus","addPriceFromOption","updateFromParticipantOptions","currentMarketOptions","BetslipV2WinParticipantPick","fixedMarket","startingPriceMarket","StartingPrice","isFixedPriceAvailable","BetslipV2GolfWinParticipantPick","fixtureGroup","GolfWinPick","RacePickProvider","baseStorage","bestOddsGuarantee","isRaceOff","BetslipV2HorseRaceWinParticipantPick","setMarketName","altTranslation","_marketName","_marketNameAltTranslation","toParticipantsJSON","HorseWinPick","json","nameAlternate","BetslipV2HorseRaceXCastPick","NoPrice","getPermutations","pos","HorseXCastPick","BetslipV2HorseRaceOptionMarketPick","HorseOptionMarketPick","BetslipV2OptionMarketXCastRacePick","selectedOptions","HorseOptionMarketXCastRacePick","loadPickFromJSON","BetslipGroupPick","BetslipPickStorageLoader","loadPick","$","_BetslipPickStorageLoader","mapLegInfoToClientLegInfo","legInfo","mapLegVisibility","suspensionState","clientLegId","buildIPriceFromBasePrice","emptyPrice","emptyIPrice","resolveClientLegId","leg","defaultLegState","isNoncombinable","BaseBetslipGroupPick","_legsState","_sgpId","legsState","hasPick","legIsNoncombinable","getOddsStateForLegId","legId","getOddsStateForLeg","legOddsState","hasNonOpenLegs","groupHasUncombinableLeg","hasEmptyPrice","actualGroupPrice","tryGetEventId","v1PickWithinTheGroup","tryGetFixtureId","v2PickWithinTheGroup","SGPId","initLegState","legInfos","li","legExist","setPrice","picks","isManuallyAccepted","legsInfo","addPick","addPickInput","addPicks","addPicksInput","removePicks","removePicksInput","inputPick","remainingLeg","pid","updatePicks","legState","BetslipUnknownPick","getPicksCount","isUnknownPickWithLegs","isBetBuilderPick","isBetslipBetBuilderPick","isBaseBetslipGroupPick","isBetBuilderPickId","getOptionNameFromBetslipPick","getLegsCount","flattenGroupPicksIfAny","flattenPicks","isValidOnePickCombo","getOptionIsDraw","BetslipType","OverAskFlowState","OverAskRejectReason","OverAskBetslipError","OverAskMarketTypeChange","getEachWayOdds","placeTermsFactor","euOdds","ukOdds","isPickEachWayCapable","getPickEachWayTerms","getPickEachWayInfo","getPickPrice","getPickPriceIds","getSku","sportPick","betBuilderPick","racePick","overAskState","flowState","changes","EachWay","currentSelectedType","singleBet","Combo","comboBet","System","systemBet","EditBet","isSportPick","isRacePick","isBOGRacePick","isXCastPick","isStartingPriceSelected","betslipPickStateSelector","betslipPicksListSelector","pickList","selectBetslipFlattenedPicksList","betslipPicksListCountSelector","betslipPicksListCountSelectorIncludeBetbuilderLegs","betslipPickIdsSelector","ui","pickWithErrorSelector","lastPickError","emptyBetslipPicksListSelector","selectHasEachWayPick","selectBetBuilderPicksInfo","betslipPicksCount","betBuilderPicks","hasOnlyBetBuilderPicks","betBuilderPicksCount","nonBetBuilderPicksCount","selectPicksCountInfo","selectNonBetBuilderPicks","selectBetslipNonBetBuilderPicksCount","betslipTypeStateSelector","betslipTabsStateSelector","betslipTypeState","betBuilderPicksState","editBetStateSelector","editBet","editBetPicksListSelector","editBetPickStateSelector","pickState","editBetAddedPicksListSelector","addPicksState","editBetPickSelectorFactory","pickAddedList","betslipSelectedTypeStateSelector","selectIsSingleBetSelected","selected","selectSinglePicksState","selectComboPicksState","selectSystemPicksState","selectBetBuilderPicksState","selectTeaserPicksState","teaserBet","selectSingleBetPicks","picksList","nonBetBuilderPickList","isLinear","selectSystemBetPicks","selectSinglePicksCount","selectComboPicksCount","selectSystemPicksCount","selectBetBuilderPicksCount","selectTeaserPicksCount","selectTypesPickCount","singlePicksCount","comboPicksCount","systemPicksCount","teaserPicksCount","selectHasBetBuilderStatePicks","defaultErrorState","pickErrors","SINGLE","COMBO","SYSTEM","TEASER","EDIT_MY_BET","BET_BUILDER","slipErrors","betslipTypeErrors","betslipErrors","emptyPickErrors","emptyBetslipTypeErrors","StoragePersister","savedState","_StoragePersister","BetslipHost","ExternalBetslipActions","_ExternalBetslipActions","ACTION_SCHEMA","ADD_PICK","ADD_GROUP_PICK","ADD_MULTIPLE_PICKS","ADD_BET_BUILDER_PICK","ECHO_ADD_BET_BUILDER_PICK","ECHO_ADD_PICK","ADD_ENTAIN_UI_BET_BUILDER_PICK","REMOVE_ENTAIN_UI_BET_BUILDER_PICK","CHECK_PRECREATED_BAB_CONVERSION","REMOVE_PICK","ECHO_REMOVE_PICK","REMOVE_MULTIPLE_PICKS","ECHO_REMOVE_MULTIPLE_PICKS","REMOVE_PICKS_FROM_GROUP","REQUEST_BETSLIP_TYPE","REQUEST_ADD_AFFILIATE_PICKS","SHARE_AFFILIATE_PICKS","START_EDIT_MY_BET","REQUEST_NOTIFICATION_SETTING_UPDATE","ADD_WEB_APP_PICK","REMOVE_WEB_APP_PICK","SET_REWARD_TOKEN","TOGGLE_WIN_PICK","addGroupPick","addMultiplePicks","addBetBuilderPick","addEntainUiBetBuilderPick","removeEntainUiBetBuilderPick","checkPrecreatedBABConversion","echoAddPick","echoAddBetBuilderPick","removePick","echoRemovePick","removeMultiplePicks","echoRemoveMultiplePicks","removePicksFromGroup","requestBetslipType","requestAddAffiliatePicks","shareBet","startEditMyBet","requestNotificationSettingUpdate","addWebAppPick","removeWebAppPick","setBetstationFreeBetToken","toggleWinPick","betslipTypesBaseSelector","betslipCurrentTypeSelector","betslipActiveTypesSelector","activeTypes","selectLinearTypes","linearTypes","selectIsLinearSingleBetBuilder","BetPlacementErrorIcon","ErrorOrigin","CleanStrategy","BetslipError","origin","BetSlip","cleanStrategy","Always","hasClientValidation","isHidden","getPrototypeOf","BetPlacementError","UserError","StakeError","UnderMinimumStake","ErrorDetailsSpecifier","PreCheckErrorMixin","BaseErrorType","UnderMinimumStakePreCheckError","minimumStake","betStake","numberOfBetsInBet","teaserId","getMinimumStake","GetSummaryStake","actualStake","Teaser","MAX_POSSIBLE_DIGIT","canPotentialyTypeDigitsToReachMinStake","highestPotentialStake","minStakeDecimalPlaces","stakeDecimalPlaces","endsWith","HideMinError","isNumpadOpen","totalStake","isSameStakeAppliedToAllSingles","stakes","isSelected","validateStake","stakeError","parseStakeFieldStake","stakeString","numberStake","singleBetStateSelector","typeState","singleBetPicksSelector","isMultiSingleBetSelector","singleBetState","singleBetPickSelectorFactory","selectSingleBetPickStakeFactory","singleBetSelectedPicksSelector","singleBetPicksGeneralStakeSelector","singleStates","firstState","singleState","selectSingleBetAllSameStake","isSingleBet","selectedPicks","states","selectSingleBetSinglePickId","SlipTypeKeys","SystemKey","SystemModesLinearMOfN","LinearSystemBetTracking","SlipType","basis","_key","_name","_basis","isBasisEqual","thisBasis","otherBasis","SingleSlipType","ComboSlipType","SystemSlipType","SystemBankerSinglesSlipType","BankerSingles","SYSTEM_SLIP_ID_PREFIX","BET_BUILDER_SLIP_ID_PREFIX","SINGLE_SLIP_ID_PREFIX","getSlipBetslipType","slip","getEditBetSlipId","getComboSlipId","getSystemSlipId","slipType","getSystemSlipIdFromString","slipKey","isSystemSlipId","slipId","getSystemTypeKeyFromSlipId","isComboSlipId","getSingleSlipId","getSingleSlipIdFromString","getBetBuilderSlipId","getBetBuilderSlipIdFromString","isSingleSlipId","getTeaserSlipId","isTeaserSlipId","isBetBuilderSlipId","getBetslipTypeFromId","selectBetBuilderTypeState","selectBetBuilderTypeStatePicks","betBuilderTypeState","selectBetBuilderPicks","selectBetBuilderPickStakeFactory","selectBetBuilderPickLegsFactory","selectLinearStakeForSlip","betslipType","pickEntry","linearTypeStakes","typeStake","addedStake","systemBetStateSelector","systemBetPicksSelector","systemBetSystemInfoSelector","systemInfo","systemBetBankerEnabledSelector","isBankerActive","systemBetBankerSelector","hasBanker","isBanker","systemBetBankerCount","isLocked","systemBetBarStateSelector","systemBetState","selectedSlipType","systemBetTypeStakeSelectorFactory","typeKey","systemBetLinearSlipTypeStakesSelector","systemBetPickOddStateSelector","systemBetStateSelectorPickOddStateSelector","selectIsSystemBetExpanded","isLinearExpanded","MinSelectionsBetbuilderError","ResultError","updateKeyBasedErrorCollection","currentCollection","newCollection","defaultCollection","oldKeys","newKeys","clientTypeErrors","currentErrors","clientResult","serverResult","clientErrors","newErrors","existingResultErrors","resultErrors","errorCollectionUpdater","hasNewError","newError","sameError","be","updatedError","extractPickErrors","extractedPickErrors","filteredTypeErrors","typeErrors","typePickErrors","getTypedPickErrors","getTypedBetslipErrors","filterErrorState","betslipErrorsPredicate","betslipTypeErrorsPredicate","slipErrorsPredicate","pickErrorsPredicate","modifyErrorState","betslipErrorsMap","betslipTypeErrorsMap","slipErrorsMap","pickErrorsMap","betslipErrorsMapping","isModified","modified","mappedErrors","getSlipErrorsForType","typesState","systemType","hasOddsChangedError","getAllPickErrorTypes","hasAnyErrors","getErrorsAcrossTypesForPicks","AvailableTokensType","CriteriaType","RewardBannerTrackingConstants","RewardTokenAdditionalInfoKeys","AcquisitionContextType","isFreebetToken","isOddsBoostToken","isRiskFreeToken","isBetAndGetToken","isAccaBoostToken","AccaBoost","getAcquisitionRewardToken","isAcquisitionRewardToken","getPayoutExpiryInDays","payoutExpiry","expiry","getTokensType","MultipleRewards","getNonAccaTokens","getSortedNonAccaTokensWithExpiryDate","isVIPBadgeEnabled","isVipExclusive","getSortedNonAccaTokens","findAccaBoostLadderItem","boostLadder","previous","numberOfLegs","getAccaBoostRatio","ratio","findMinimumLegsAccaTokens","eligibilityState","byAccaPriority","eligibility","tokenId","userTokenId","invalidHardCriteria","MinimumLegs","findMinimumOddsAccaTokens","MinOdds","isValidAccaBoostCombo","isValidTab","filterPicksForType","isErrorComboPrevention","calcTotalOddsForOddsBoost","roundPriceValues","oddsArray","calculateWinningsBoost","slipSummary","boostedWinnings","rewardTokenModifications","oddsBoost","convertToBestOddsFixtureLikeInput","horseFixture","pricingState","getAllEligibleTokens","isEligible","isBetBuilderExclusiveToken","isSingleAndComboSelected","buildABet","Yes","isBetBuilderToken","No","mapOdds","oddsPerLeg","britishNumerator","britishDenominator","parseMarketType","customMarketTypes","marketParameters","mt","isIncrementalPayoutEligible","payoutType","isIncrementalPayout","incrementalBetAmount","incrementalPayoutNoOfTimes","isEdsPromoTokenBetAndGet","edsPromoTokens","tokenType","isAcquisitionEligible","acquisitionUserTokenId","softCriteriasValidity","SYSTEMS","getStakeWithEachWay","isFreeBetStake","valueStakes","freeBetAmount","getTotalStakesForCurrentType","tokenState","getSingleBetStakes","getComboStake","getSystemStake","tokensState","filterLockedPicks","getFreeBetAmount","rewardTokenId","comboState","getTeaserStake","teaserState","getBetBuilderStakes","betBuilderState","amount","combineTotalStakes","systemState","getStakedTypes","hasSingleBetStake","hasBetBuilderBetStake","hasComboBetStake","hasSystemBetStake","hasTeaserBetStake","hasSingleBetPickStake","singleBetPickState","hasFreeBetStake","hasBetBuilderBetPickStake","betBuilderBetPickState","getTotalStakesForAllTypes","singleBetStakes","comboBetStakes","systemBetStakes","getSystemStakesLinear","teaserBetStakes","betBuilderStakes","getSelectedPlaceablePicks","typePick","multiPicks","systemPicks","teaserPicks","getSelectedLockedPicksForAllTypes","flattenedPicksMap","lockedPicks","updateLockedPicksForTypeState","hasUnacceptedPick","single","system","filterTypePicks","typePicks","lockedFilterMatched","selectedFilterMatched","isPickLocked","ClientErrorType","RewardTokensBetBuilderError","RewardTokensMinStakeError","RewardTokensSelectionLevelOddsError","selectionLevelMinimumOdds","RewardTokensTotalOddsError","minimumOdds","GroupPickError","GroupLinearPickError","GroupMinSelectionsError","GroupMaxSelectionsError","BetBuilderMaxSelectionsPerPickError","GroupMaxSelectionsPreCheckError","GroupPickHasLiveLegsPreCheckError","GroupMinSelectionsPreCheckError","GroupPickInvalidPricePreCheckError","GroupWithUncombinableLegsError","legIds","invalidPickIds","GroupWithUncombinableLegsPreCheckError","GroupWithClosedLegsError","GroupWithSuspendedLegsError","GroupPickComboBetInvalidPrice","GroupPickHasLiveLegsError","RewardTokensForbiddenError","RewardTokensGameTypeError","RewardTokensMaxStakeError","maximumStake","RewardTokensMaxTotalOddsError","maxOdds","RewardTokensMinLegsError","minimumLegs","RewardTokensSelectionLevelMaxOddsError","RewardTokensSelectionMaxOddsError","selectionLevelMaxOdds","RewardTokensSlipTypeError","TechnicalError","Manually","IncorrectBetCount","expected","received","expectedBetCount","receivedBetCount","IncorrectOptionsCountPreCheckError","errorDetails","NoBetbuilderSystemPreCheckError","NotEnoughMoney","userMoney","OverallMaxWinPerUser","comboWin","maxComboWin","ignoreNewStakeHintType","getStakeLimitErrorInfo","betslipStakeLimitExceededError","betslipError","shouldUpdateStake","pickStakeLimitExceededErrors","betslipStakeHintInfo","pickStakeHintInfos","newStakeHint","pickError","getStakeHints","slipStakeHintInfos","isNewStakeHintError","isPickStatusLocked","isPickStatusClosed","isPickStatusOddsChanged","isPickStatusChangeError","isGroupPickOfferChange","isBetslipStatusInsufficientMoney","isNotifyUserChangeError","isPlaceBlockingError","isNotDividableStakeErrorPreCheck","isUnderMinimumStakeErrorPreCheck","isUnderMinimumWinningsErrorPreCheck","isPickStatusOddsChangedPreCheck","isNoBetBuilderSystemPreCheck","isStakeError","shouldThisPlacementErrorLockEditBet","isRewardTokensSlipTypeError","isRewardTokensMaxStakeError","isRewardTokensError","isOverallMaxWinPerUserExceededError","hint","hasCriticalBetslipAndTypeErrorForType","errorState","isCriticalError","hasCriticalSlipErrorsForType","hasCriticalErrorForSlip","hasInsufficientMoneyError","getStakeUpdateErrors","errorCollectionPusher","isFinishedError","canShowPickErrorAsBetslipError","currentSelectedBetslipType","isNotEnoughMoney","checkOfferChanged","checkOfferChangedLinear","isGroupLockedPickError","isGroupOfferChangedError","isBetPlacementBlockingError","pickErrorsHasBlockingErrors","getClosedLegIdsWithinValidGroups","picksErrors","getSuspendedLegIdsWithinValidGroups","isDisplayablePickError","isGroupPickError","isGroupPickInvalidPriceError","isGroupPickHasLiveLegsError","groupPickHasWarning","selectErrorsState","selectBetslipErrors","selectPickErrorsState","errorsState","selectSlipErrorsState","selectTypeErrorsState","selectSlipErrorsFactory","selectSlipErrorsForTypeFactory","activeType","selectCurrentSlipErrors","selectSingleSlipErrorsFactory","selectBetBuilderSlipErrorsFactory","selectHasAnySlipErrors","selectBetslipTypeErrorsFactory","selectCurrentBetslipTypeErrors","selectHasAnyTypeErrors","selectAllBetslipErrorsForType","selectAllCurrentBetslipErrors","selectAllBetBuilderErrors","selectHasAnyBetslipErrors","selectPickErrorsForTypeFactory","selectAllPickErrorsForTypeFactory","selectAllPickErrors","selectTypePickErrors","selectCurrentPickErrorsForPickFactory","selectTypePickErrorsForPickFactory","selectAllPickErrorsForPickFactory","pickIdString","selectCurrentPicksErrors","selectAllCurrentPickErrors","currentPicks","selectCurrentPicksErrorsForAllPicks","selectHasAnyPickErrors","selectPicksWithCurrentErrors","selectPicksWithAllErrors","selectEditBetPicksWithErrors","selectAllSingleBetBetslipErrors","selectAllCurrentErrors","selectNotEnoughMoneyError","selectCurrentVisibleBetslipErrorsByPriority","selectHasCurrentComboPreventionError","selectHasComboPreventionForTypeFactory","selectHasInsufficientMoneyError","selectHasNonPickErrors","hasBetslipErrors","hasTypeErrors","hasSlipErrors","selectHasAnyErrors","hasNonPickErrors","hasPickErrors","selectHasMinSelectionsBetBuilderError","selectCurrentStakeError","singleBetAllSameStake","selectCanShowPickErrorAsBetslipError","selectHasOfferChanged","selectHasOfferChangedFromBetPlacement","BetPlacement","selectDisplayablePickErrorsFactory","selectTabbedPickErrorsFactory","hidePickErrors","selectCurrentSummarySlipErrors","selectAllCurrentSummaryErrors","showPickErrors","selectSingleBetPickErrorsFactory","selectSinglePickErrorStateFactory","selectBetBuilderBetPickErrorsFactory","selectBetBuilderPickErrorStateFactory","selectSinglePickStakeErrorStateFactory","generalStake","hasInsufficientFunds","showInsufficientFundsError","selectLinearSlipErrorStateFactory","hasComboPrevention","selectAllDisplayablePickErrorsForTypeFactory","selectTypeErrors","selectSystemContainerErrors","selectContainerErrors","systemContainerErrors","selectComboContainerModuleErrors","selectCurrentSlipTokenErrors","selectLinearGlobalIndiactorErrorsForPickFactory","isSystemBetExpanded","globalIndicatorErrors","getSelectedToken","getSelectedTokenForContext","getSelectedTokenForPick","getSelectedTokenAndEligibilityForContext","getSelectedTokenAndEligibilityForPick","getSelectedTokenAndEligibility","getAllAssignedTokens","getAllAssignedTokensWithFilter","getAllSelectedTokens","getTokenSelectionContext","selectedSinglePickId","getPickIdBySelectedToken","selectedBetBuilderPickId","getSelectedTokenState","tokenEligibility","getEligibilityStateForContext","getSelectedAndEligibleAccaBoost","selectedToken","getEligibleAccaBoost","isTokenRecoverable","awareStates","eligibilityStates","eligibilities","awareState","filterUnselectedPicks","singlePicks","selectedTokenId","awarePicksState","isBetStationFreebetToken","BetStationFreebet","isBestOddsGuaranteedToken","BestOddsGuaranteed","getBestOddsGuaranteedTokensContext","betstationTokens","bogTokenState","valid","toBestOddsLikeFixtures","allPicks","getSelectedBogToken","getSelectedBetStationFreeBetToken","extendedTokens","betStationFreeBet","getSelectedBetStationTokenForContext","betstationTokensState","rewardTokensStateSelector","rewardTokensOnBoardingSelector","onboardingState","selectRewardTokens","selectRewardTokensList","selectTokensEligibilityState","selectHasNewCustomerOfferPick","selectTokensStateContext","selectAllEligibleTokens","selectNonAccaTokens","selectTokenForContextFactory","selectTokenAndEligibilityFactory","selectEligibleTokenFactory","selectFreeBetTokenFactory","selectOddsBoostTokenFactory","selectAllSelectedTokens","selectAllAssignedTokens","selectEligibilityStateFactory","selectAllTokensAndEligibilityStateFactory","selectSelectedTokenForContext","selectHasVisibleTokensForContext","allSelectedTokens","selectUnselectedSingleBetPickForAcquisitionToken","singleBetPicks","acquisitionRewardToken","unselectedPicks","selectSingleBetPickForAcquisitionToken","hasMinSelectionsBetBuilderError","isAcquisitionTokenSelected","acquisitionEligiblePicks","eligibilityTokens","selectSingleBetStandardRewardTokensContext","selectHasEachWayOptionPick","selectRewardTokensOnboardingContext","singleBetRewardTokensContext","selectRewardTokensOnboardingEligibility","selectRewardTokensOnboardingEligibileTokens","selectAcquisitionRewardToken","selectRewardTokensOnboardingRewardSelectorVisible","hasEachWayOption","hasNewCustomerOffer","selectRewardTokensOnboardingDisplayState","onboarding","onboardingTokens","rewardsSelectorVisible","selectAcquisitionRewardOnboardingDisplayState","acquisitionHidden","selectHasAcquisitionRewardOnboardingForContext","displayState","selectBetstationTokensState","selectEdsTokensState","edsState","selectedTokenIds","selectBogTokensState","bogState","selectBogTokenContext","selectHasBetstationFreeBetSelected","betstationState","selectHasComboPreventionForContextFactory","selectMultiSingleTokenRewardContext","picksWithTokens","selectRecoverableTokens","tokenRecoveryState","selectCurrentEligibilityState","singleBetSinglePickId","selectAcquisitionSelectionTokenContext","acquisitionSelectionTokenContext","selectShowRewardsNotEligibleMessage","betslipCurrentType","selectHasEachWayOptionPickForContext","selectIsRewardTokensSelectorVisible","eachWayOptionPick","newCustomerOffer","hasVisibleTokens","selectRewardsTokensSelectorState","hasAcquisitionOnboarding","isTokenInvalid","accaBoostTokenSelector","accaBoost","isAccaBoostTokenSelector","BetslipBarVisibilityService","visibilitySubject","isSportsActive$","BETSLIP_BAR_VISIBLE_CLASS","htmlNodeService","betslipBarConfig","hasPicks$","excludedRoutes$","MyBets","enableDsl$","DslService","evaluateExpression","isEnabledDsl","componentVisible$","enabled","onExcludedRoute","hasPicks","isSportsActive","hideOnEmptyBetslip","hideComponent","showComponent","_BetslipBarVisibilityService","hiddenMarketStateSelector","hiddenMarket","hasPlacedFirstBetSelector","hasPlacedFirstBet","BetslipActions","_BetslipActions","SET_STATE","EVENT_UPDATE","FIXTURE_UPDATE","TOGGLE_BETSLIP_DISPLAY_MODE","setState","eventUpdate","fixtureUpdate","betBuilderGroupUpdate","toggleBetslipDisplayMode","SettingsActions","_SettingsActions","REQUEST_SET_ODD_ACCEPTANCE","SET_ODD_ACCEPTANCE","REQUEST_SET_APP_NOTIFY","SET_APP_NOTIFY","REQUEST_SET_EMAIL_NOTIFY","SET_EMAIL_NOTIFY","UPDATE_NOTIFICATION_SETTINGS","requestSetOddAcceptance","setOddAcceptance","requestSetAppNotify","setAppNotify","requestSetEmailNotify","setEmailNotify","updateNotificationSettings","EditBetActions","_EditBetActions","SET_DEFAULT","FILL","SWAP_EDIT_BET_PICK","START_ADDING_STAKE","CONFIRM_ADDING_STAKE","CANCEL_ADDING_STAKE","SET_ADDED_STAKE","DEPOSIT","MAKE_DEPOSIT","DELETE_PICK","UNDO_REMOVE_PICK","START_UNDOING_REMOVE_PICK","REQUEST_DISCARD","CANCEL_DISCARD_REQUEST","EXIT_EDIT_BET","SWITCH_TO_ADD_SELECTION_MODE","TOGGLE_PICKS_CONTAINER","CANCEL_ADD_SELECTION_MODE","CONFIRM_ADD_SELECTION_MODE","START_ADDING_PICK_TO_CONTAINER","ADD_PICK_TO_CONTAINER","REMOVE_PICK_FROM_CONTAINER","SET_FIXED_PRICE","SET_STARTING_PRICE","SWITCH_TO_SWAP_SELECTION_MODE","START_ADDING_PICK_TO_SWAP","ADD_PICK_TO_SWAP","CANCEL_SWAP_SELECTION_MODE","UPDATE_PICK_TO_SWAP","HANDLE_SWAP_ERROR","PLACE_BET","EARLY_PAYOUT_UPDATED","EDIT_BET_UPDATED","GET_PLACE_BET_STATUS","ACCEPT_CURRENT_EARLY_PAYOUT_VALUE","DISABLE_EARLY_PAYOUT","APPLY_EDIT_BET_PICK_RESULTS","SUBSCRIBE_TO_EARLY_PAYOUT","UNSUBSCRIBE_FROM_EARLY_PAYOUT","fillEditMyBet","swapPick","startAddingStake","confirmAddingStake","cancelAddingStake","deposit","setEditMyBetAddedStake","makeDeposit","deletePick","startUndoingRemovePick","undoRemovePick","requestDiscard","cancelDiscardRequest","exitEditBet","setDefault","switchToAddSelectionMode","togglePicksContainer","cancelAddSelectionMode","confirmAddSelectionMode","startAddingPickToContainer","addPickToContainer","removeFromContainer","setFixedPrice","setStartingPrice","switchToSwapSelectionMode","cancelSwapSelectionMode","startAddingPickToSwap","addPickToSwap","updatePickToSwap","handleSwapError","placeBet","getPlaceBetStatus","earlyPayoutUpdated","editBetUpdated","acceptCurrentEarlyPayoutValue","disableEarlyPayout","applyEditBetPickResults","subscribeToEarlyPayout","unsubscribeFromEarlyPayout","editBetAction","BETSLIP_MODULE_LOADER_SERVICE","ODDS_SETTINGS_SERVICE","ODDS_VIEW_MODE","BetslipIntegrationService","storagePersister","adaptiveLayoutService","betslipModuleLoader","betslipBarVisibility","betslipPickSelectedSelectorFactory","siblingPickId","exported","betslipTypeCurrentTypeSelector","editBetPicks","editBetAddedPicks","pickstate","editBetPick","isRemoved","bbPickId","so","siblingPick","locationUrl","locationUrl$","onUrlChange","betslipInitialized$","betslipHost","Digital","BetStation","host","isEditBetActive$","betslipId","loadBetslipModule","isAccaBoostToken$","betslipState$","hasPlacedFirstBet$","rewardTokens$","requestExitEditBet","shouldShowBetslipInBetStation$","betslipPicksCountWatcher$","betslipPicksCount$","betslipState","shouldShowQuickBet$","shouldShowBetslipReturnsMessage$","isInBetBuilderTab$","hasBottomNavigation$","isInBetBuilderTab","hasBottomNavigation","shouldShowQuickBetBuilder$","betslipPicksAndLegsCount$","betslipPickIds$","pickSelected$","betslipBarEnabled","setOddsAcceptance","oddsAcceptance","acceptance","_BetslipIntegrationService"],"mappings":"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","x_google_ignoreList":[4,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,100,101,102,113]}