{"version":3,"file":"chunk-kgzekyym.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/perf-cdk/main-content-loaded.service.ts","packages/sports/web/app/src/widget/core/widget-page.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/web/app/src/widget/core/widget-loader.service.ts","packages/sports/web/app/src/perf-cdk/run-after-lcp.service.ts","packages/sports/web/app/src/highlights-marquee/marquee-tile.model.ts","packages/sports/libs/common/core/utils/preloaded-data/src/lib/preloaded-data.decorator.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/betting-offer/feature/model/src/eventid-parser.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/betting-offer/feature/model/src/event.model.ts","packages/sports/libs/content-distribution/feature/src/api-settings.service.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/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/common/core/utils/string/src/lib/string.utils.ts","packages/sports/libs/common/core/utils/extended-types/src/lib/extended-types.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/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/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","node_modules/decimal.js/decimal.mjs","packages/sports/web/app/src/event-model/helpers/option-group.service.ts","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/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/common/core/utils/timer/src/lib/timer.service.ts","packages/sports/libs/host-app/sports-product/feature/sports-product-service/src/sports-product-service.ts","packages/sports/libs/host-app/sports-product/feature/utils/src/app-injector.ts","packages/sports/libs/host-app/sports-product/feature/utils/src/product-context-utils.ts","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/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/libs/common/core/feature/logging/src/lib/base-custom-logger.service.ts","packages/sports/libs/content-distribution/feature/src/cds-push.provider.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/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/banner/game-launcher.resolver.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/host-app/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/deferred/event-switcher-component-loader.service.ts","packages/sports/web/app/src/layout/column-register.service.ts","packages/sports/web/app/src/deferred/my-bets-component-loader.service.ts","packages/sports/web/app/src/my-bets-base/summary-api.service.ts","packages/sports/web/app/src/my-bets-base/my-bets-summary.service.ts","packages/sports/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/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/router-events/src/lib/router-events.service.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","packages/sports/libs/common/core/utils/dispatcher/src/lib/dispatcher.models.ts","packages/vanilla/lib/shared/login/src/workflow.service.ts","packages/vanilla/lib/shared/login/src/login.client-config.ts","packages/vanilla/lib/shared/login/src/login.service.ts","packages/vanilla/lib/shared/crypto/src/crypto-resource.service.ts","packages/vanilla/lib/shared/crypto/src/crypto.service.ts","packages/vanilla/lib/shared/login-providers/src/base-login-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/apple-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/facebook-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/google-provider.service.ts","packages/vanilla/lib/shared/login-providers/src/login-providers.service.ts","packages/sports/web/app/src/navigation-core/navigation-helper.service.ts","packages/sports/web/app/src/navigation-core/redirect-helper.service.ts","packages/sports/libs/common/core/feature/scroll-freeze/src/lib/scroll-freeze.service.ts","packages/sports/libs/common/core/utils/dom/src/lib/mutation-observer.service.ts","packages/sports/libs/automation/core-feature/src/lib/automation.service.ts","packages/sports/libs/automation/core-feature/src/lib/automation.directive.ts","packages/sports/libs/automation/core-feature/src/lib/automation.module.ts","node_modules/hammerjs/hammer.js","packages/sports/libs/common/core/utils/window-event/src/window-event.service.ts","packages/sports/libs/common/core/utils/scroll-container/src/scroll-container.service.ts","packages/sports/libs/common/core/utils/deferred/src/lib/deferred.ts","packages/sports/libs/modal/feature/src/common/modal-ref.ts","node_modules/fastdom/fastdom.js","packages/sports/libs/modal/feature/provider/src/modal-window-config.token.ts","packages/sports/libs/modal/feature/src/dialog/modal-animation-helper.service.ts","packages/sports/libs/modal/feature/src/dialog/opened-modals-storage.service.ts","packages/sports/libs/modal/feature/src/dialog/modal-gesture.service.ts","packages/sports/libs/modal/feature/src/dialog/modal-horizontal-gesture.service.ts","packages/sports/libs/modal/feature/src/common/actions.ts","packages/sports/libs/modal/feature/src/common/modal-dismiss-reasons.ts","packages/sports/libs/modal/feature/src/common/modal-window.html","packages/sports/libs/modal/feature/src/common/modal-window.component.ts","packages/sports/libs/modal/feature/src/dialog/modal-dialog.model.ts","packages/sports/libs/modal/feature/src/common/modal-backdrop.component.ts","packages/sports/libs/modal/feature/src/common/modal-cover.component.ts","packages/sports/libs/modal/feature/src/common/modal-stack.ts","packages/sports/libs/modal/feature/src/common/modal.ts","packages/sports/libs/modal/feature/src/dialog/message-dialog.html","packages/sports/libs/modal/feature/src/dialog/message-dialog.component.ts","packages/sports/libs/modal/feature/src/dialog/modal-dialog.component.ts","packages/sports/libs/modal/feature/src/dialog/modal-dialog.html","packages/sports/libs/modal/feature/src/dialog/modal-event-bridge.service.ts","packages/sports/libs/modal/feature/src/dialog/modal-dialog.service.ts","packages/sports/web/app/src/common/epcot-config.service.ts","packages/vanilla/lib/shared/header/header-search.service.ts","packages/sports/web/app/src/racing/models/events.ts","packages/sports/web/app/src/popup/sensitive-page-tracking.service.ts","packages/sports/web/app/src/popup/popup-manager.service.ts","packages/sports/web/app/src/bottom-nav/bottom-nav-actions.service.ts","packages/sports/libs/common/ui/shared/src/lib/tokens.ts","packages/design-system/ui/shared/src/ds-atoms-token.interface.ts","packages/design-system/ui/notification-bubble/src/notification-bubble.component.ts","packages/sports/libs/common/ui/shared/src/lib/utils.ts","packages/sports/libs/common/ui/sports-themed-notifcation-bubble/src/lib/sports-themed-notification.directive.ts","packages/design-system/ui/tabsgroup/src/tabs.directives.ts","packages/design-system/ui/tabsgroup/src/tab.component.ts","packages/design-system/ui/tabsgroup/src/tabs-arrow.component.ts","packages/design-system/ui/tabsgroup/src/tabs-arrows.ts","packages/design-system/ui/tabsgroup/src/tabs.token.ts","packages/design-system/ui/tabsgroup/src/tabsgroup.component.html","packages/design-system/ui/tabsgroup/src/tabsgroup.component.ts","packages/design-system/ui/tabsgroup/src/index.ts","packages/sports/libs/common/ui/sports-themed-tab-group/src/lib/sports-themed-tabs.directive.ts","packages/sports/libs/common/ui/sports-themed-pills/src/lib/link.directive.ts","packages/vanilla/lib/features/speculative-link/src/util.ts","packages/vanilla/lib/features/speculative-link/src/matcher.service.ts","packages/vanilla/lib/features/speculative-link/src/prefetch-registry.service.ts","packages/vanilla/lib/features/speculative-link/src/speculative-link-preloader.service.ts","packages/vanilla/lib/features/speculative-link/src/speculative-link-observer.service.ts","packages/vanilla/lib/features/speculative-link/src/speculative-link.client-config.ts","packages/vanilla/lib/features/speculative-link/src/speculative-link.directive.ts","packages/design-system/ui/divider/src/divider.component.ts","packages/sports/libs/common/ui/sports-themed-tab-group/src/lib/tab-group-with-counter/tab-group-with-counter.component.html","packages/sports/libs/common/ui/sports-themed-tab-group/src/lib/tab-group-with-counter/tab-group-with-counter.component.ts","packages/vanilla/lib/shared/dark-mode/src/dark-mode.service.ts","packages/sports/libs/competition-logos/feature/src/lib/competition-logos.service.ts","packages/sports/libs/participant-image/feature/provider/src/participant-image-config.token.ts","packages/sports/libs/participant-image/feature/src/participant-image.html","packages/sports/libs/participant-image/feature/src/participant-image.component.ts","packages/sports/libs/competition-logos/feature/src/lib/components/competition-logo.html","packages/sports/libs/competition-logos/feature/src/lib/components/competition-logo.component.ts","packages/sports/libs/common/core/feature/smooth-scroll/src/lib/smoothScroll.service.ts","packages/sports/libs/common/core/utils/css-support/src/lib/css-support.service.ts","packages/sports/libs/common/core/feature/scroll-adapter/src/lib/scroll-speed.model.ts","packages/sports/libs/common/core/feature/browser/src/lib/hammer-gesture.provider.ts","packages/sports/libs/common/core/feature/scroll-adapter/src/lib/scroll-adapter.model.ts","packages/sports/libs/common/core/feature/scroll-adapter/src/lib/scroll-adapter.component.ts","packages/sports/libs/common/core/feature/scroll-adapter/src/lib/scroll-adapter.html","packages/design-system/ui/pill/src/pill.component.ts","packages/sports/web/app/src/widget/common/widget-pill.component.html","packages/sports/web/app/src/widget/common/widget-pill.component.ts","node_modules/immer/dist/immer.esm.mjs","packages/sports/web/app/src/competition-list/competition-list.models.ts","packages/sports/web/app/src/competition-list/competition-route.service.ts","node_modules/@angular/material/fesm2022/button.mjs","node_modules/@angular/material/fesm2022/snack-bar.mjs","packages/sports/libs/toaster/feature/src/toaster.component.ts","packages/sports/libs/toaster/feature/src/toaster.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, 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 { 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\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\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\tshowEditIconInButton: boolean;\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\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\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\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\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\tmarketHelpTextDisplayVersion: string;\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\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\tmarketSwitcherDisplayVersion: string;\n\toverriddenCompetitionLogo: SportCompetitionFormat[];\n\tpageSize: number;\n\tprimaryNavigationType: PrimaryNavigationDisplayType;\n\tshowMarketPillsOnboardingMessage: boolean;\n\tshowMoreRowsThreshold: number;\n\tshowParticipantLogoOrImage: boolean;\n\tshowRedCardsInSoccer: boolean;\n\tsixPackParentToChildMap: {[key: string]: string[];};\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\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\tcombiPlusLeagues: number[];\n\tisMockCombiPlusLeaguesEnabled: boolean;\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\treloadMyBetsTimeInterval: number;\n\tshowAssociatedAccount: boolean;\n\tshowBetTypeAsBadge: boolean;\n\tshowBrowseSportsBook: boolean;\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\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\tcombiPlusLeagues: number[];\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 { 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 { 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","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","import { EventModel, EventOptionGroup } from '@frontend/sports/betting-offer/feature/model';\nimport { NativePrice } from '@frontend/sports/odds/feature/native-price';\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}\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 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","/* 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 // eslint-disable-next-line rxjs/no-ignored-takewhile-value\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","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 // eslint-disable-next-line rxjs/finnish\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","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","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","/* 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 // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line deprecation/deprecation\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 { 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 { 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 // eslint-disable-next-line deprecation/deprecation\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","/* 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 { 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 // eslint-disable-next-line deprecation/deprecation\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","/* 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 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","/* eslint-disable rxjs/finnish */\nimport { 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","/* eslint-disable rxjs/finnish */\nimport { 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","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","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 (marketType.value === MarketTypes.HeadToHead || marketType.value === MarketTypes.TwoWayHandicap) &&\n market.detailedGrouping &&\n !market.sixPackGridGroupId\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","/*!\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 { 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 { 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","/* eslint-disable deprecation/deprecation */\nimport { 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","/* eslint-disable deprecation/deprecation */\nimport { Injectable } from '@angular/core';\n\nimport { OfferSource } from '@cds';\nimport { Game, OptionMarket, OptionMarketStatus, OptionStatus, 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.online = current.status === OptionStatus.Visible && option.nativePrice.greaterThan(1);\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\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 { 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 = {} as FixtureTile;\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\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.marqueeType = sitecoreTile.marqueeType;\n tile.showOnHomeLobby = sitecoreTile.showOnHomeLobby;\n tile.showOnSportsLobby = sitecoreTile.showOnSportsLobby;\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.imageUrl = sitecoreTile.imageUrl;\n tile.imageAlt = sitecoreTile.imageAlt;\n tile.trafficId = sitecoreTile.trafficId;\n tile.badgeAndRibbonVisibilityOption = sitecoreTile.badgeAndRibbonVisibilityOption ?? '';\n tile.noEventSportIds = sitecoreTile.noEventSportIds;\n tile.badgeTitle = sitecoreTile.badgeTitleOverride;\n tile.crmPromotionId = sitecoreTile.crmPromotionId;\n tile.crmPromotionVisibility = this.getVisibilityOnMarquee(sitecoreTile.crmPromotionVisibility);\n tile.marketType = sitecoreTile.marketType;\n tile.fallbackMarketType = sitecoreTile.fallbackMarketType;\n tile.ogpOverlay = sitecoreTile.ogpOverlay;\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 { MarketType, MarqueeTile, MarqueeType } from '@frontend/sports/types/components/content';\nimport { MapMarketToGameTemplateIds } from '@frontend/sports/types/components/highlights-marquee';\n\nimport { MarqueeTileFactory } from './marquee-tile.factory';\nimport { 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 ) {}\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\n tile = this.createTile(\n correspondingFixture.fixture,\n sitecoreTile,\n correspondingFixture.precreatedMarketsInfo,\n correspondingFixture.precreatedOptionGroupInfo,\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) {\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 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","/* eslint-disable @typescript-eslint/no-inferrable-types, no-param-reassign, sonarjs/cognitive-complexity, deprecation/deprecation */\nimport { 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, NgZone, OnDestroy } from '@angular/core';\n\nimport { SimpleCallback } from '@frontend/sports/common/core/utils/extended-types';\nimport { Observable, timer } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimerService implements OnDestroy {\n private timeouts = new Map();\n private intervals = new Map();\n private frames = new Map();\n\n constructor(private ngZone: NgZone) {}\n\n setTimeout(handler: SimpleCallback, time?: number): SimpleCallback {\n return this.setCallback(handler, this.timeouts, (callback) => window.setTimeout(callback, time), window.clearTimeout);\n }\n\n setInterval(handler: SimpleCallback, time: number): SimpleCallback {\n return this.setCallback(handler, this.intervals, (callback) => window.setInterval(callback, time), window.clearInterval, true);\n }\n\n setAnimationFrame(handler: SimpleCallback): SimpleCallback {\n return this.setCallback(handler, this.frames, window.requestAnimationFrame, window.cancelAnimationFrame);\n }\n\n setTimeoutOutsideAngular(handler: SimpleCallback, time?: number): SimpleCallback {\n return this.ngZone.runOutsideAngular(() => {\n return this.setTimeout(handler, time);\n });\n }\n\n setIntervalOutsideAngular(handler: SimpleCallback, time: number): SimpleCallback {\n return this.ngZone.runOutsideAngular(() => {\n return this.setInterval(handler, time);\n });\n }\n\n private setCallback(\n callback: SimpleCallback,\n map: Map,\n scheduler: (callback: SimpleCallback) => number,\n canceller: (handle: number) => void,\n continous = false,\n ): SimpleCallback {\n const val = scheduler(() => {\n callback();\n\n if (!continous) {\n map.delete(val);\n }\n });\n\n const removeCallback = () => {\n canceller(val);\n map.delete(val);\n };\n\n map.set(val, removeCallback);\n\n return removeCallback;\n }\n\n timer(dueTime: number | Date = 0): Observable {\n return timer(dueTime);\n }\n\n removeAll(): void {\n for (const collection of [this.timeouts, this.intervals, this.frames]) {\n for (const destructor of collection.values()) {\n destructor();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.removeAll();\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { IDynamicInjectorProvider } from '@frontend/sports/host-app/sports-product/feature/non-root-token';\nimport { ClientConfigProductName, ProductMetadata, ProductService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable, distinctUntilChanged, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SportsProductService implements IDynamicInjectorProvider {\n readonly isSportsProductActive$: Observable;\n\n constructor(\n private productService: ProductService,\n private injector: Injector,\n ) {\n if (!productService.isSingleDomainApp) {\n this.isSportsProductActive$ = of(true);\n\n return;\n }\n\n const subject$ = new BehaviorSubject(this.checkIsSportsProduct(productService.current));\n\n productService.productChanged.subscribe((data) => {\n subject$.next(this.checkIsSportsProduct(data));\n });\n\n this.isSportsProductActive$ = subject$.asObservable().pipe(distinctUntilChanged());\n }\n\n getDynamicInjector(): Injector {\n if (!this.productService.isSingleDomainApp) {\n return this.injector;\n }\n\n const currentInjector = this.productService.current.injector;\n\n const sportsProduct = this.productService.getMetadata(ClientConfigProductName.SPORTS);\n\n if (!sportsProduct.isRegistered) {\n console.error(`Attempted to use sports product injector but sports product was not registered.`);\n\n return currentInjector;\n }\n\n return sportsProduct.injector;\n }\n\n activateSports(): void {\n this.productService.setActive(ClientConfigProductName.SPORTS);\n }\n\n deactivateSports(): void {\n this.productService.deactivateProduct(ClientConfigProductName.SPORTS);\n }\n\n get isSingleDomain(): boolean {\n return this.productService.isSingleDomainApp;\n }\n\n get sportsProductName(): string {\n return ClientConfigProductName.SPORTS;\n }\n\n private checkIsSportsProduct(metadata: ProductMetadata): boolean {\n return metadata.name === ClientConfigProductName.SPORTS;\n }\n}\n","import { Injector } from '@angular/core';\n\nexport let APP_INJECTOR: Injector;\n\n/**\n * Helper to set the exported {@link AppInjector}, needed as ES6 modules export\n * immutable bindings (see http://2ality.com/2015/07/es6-module-exports.html) for\n * which trying to make changes after using `import {AppInjector}` would throw:\n * \"TS2539: Cannot assign to 'AppInjector' because it is not a variable\" .\n */\nexport function setAppInjector(injector: Injector): void {\n if (!APP_INJECTOR) {\n APP_INJECTOR = injector;\n }\n}\n\nexport function resetAppInjector(): void {\n APP_INJECTOR = undefined as unknown as Injector;\n}\n","import { SportsProductService } from '@frontend/sports/host-app/sports-product/feature/sports-product-service';\nimport { Observable, OperatorFunction } from 'rxjs';\nimport { distinctUntilChanged, filter, map, skip, tap, withLatestFrom } from 'rxjs/operators';\n\nimport { APP_INJECTOR } from './app-injector';\n\nexport function fromSportsLeave(productService?: SportsProductService): Observable {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n return service.isSportsProductActive$.pipe(\n skip(1),\n distinctUntilChanged(),\n filter((x) => !x),\n );\n}\n\nexport function fromSportsEnter(productService?: SportsProductService): Observable {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n return service.isSportsProductActive$.pipe(\n skip(1),\n distinctUntilChanged(),\n filter((x) => x),\n );\n}\n\n/**\n * Emitting items if the current product is SPORTS\n */\nexport function filterSports(productService?: SportsProductService): OperatorFunction {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n\n return (source$: Observable) =>\n source$.pipe(\n withLatestFrom(service.isSportsProductActive$),\n filter(([_, isSports]) => isSports),\n map(([value]) => value),\n );\n}\n\n/**\n * Emitting items if the current product is SPORTS and emits the last non-SPORTS item whenever a SPORTS product is detected.\n */\nexport function filterSportsEmitLast(productService?: SportsProductService): OperatorFunction {\n const service = productService ?? APP_INJECTOR.get(SportsProductService);\n let lastNotSportsValue: T | null = null;\n\n return (source$) =>\n new Observable((subscriber) => {\n const productSubscription = service.isSportsProductActive$.pipe(filter((x) => x)).subscribe(() => {\n if (lastNotSportsValue) {\n subscriber.next(lastNotSportsValue);\n lastNotSportsValue = null;\n }\n });\n\n const sourceSubscription = source$\n .pipe(\n withLatestFrom(service.isSportsProductActive$),\n tap(([value, isSports]) => {\n lastNotSportsValue = isSports ? null : value;\n }),\n filter(([_, isSports]) => isSports),\n map(([value]) => value),\n )\n .subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n },\n });\n\n return () => {\n productSubscription.unsubscribe();\n sourceSubscription.unsubscribe();\n };\n });\n}\n","\"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","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 { 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, 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 { 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 } 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 // eslint-disable-next-line @typescript-eslint/ban-types\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 { 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","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/no-useless-template-literals, @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 // eslint-disable-next-line @typescript-eslint/no-useless-template-literals\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 .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 */\n\n/* eslint-disable rxjs/finnish */\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 // eslint-disable-next-line deprecation/deprecation\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 {\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) => (w.payload as { fixtures: Fixture[] }).fixtures),\n (f) => f.id,\n );\n\n if (payload?.length) {\n this.schemaMarkupService.updateModuleEvents(payload);\n }\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 { StylesLazyLoadingService } from '../host-app/styles/style-loading.service';\nimport ModuleLoaderService from './module-loader.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 ];\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 | undefined }>({\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};\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 { EventDetailsModule } from '../event-details/event-details.module';\nimport { ComponentLoaderService, ComponentProxy } from './component-loader.service';\nimport ModuleLoaderService from './module-loader.service';\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(/* webpackChunkName: \"ms-event-details\" */ '../event-details/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 { MyBetsModule } from '../my-bets/my-bets.module';\nimport { ComponentLoaderService, ComponentProxy } from './component-loader.service';\nimport ModuleLoaderService from './module-loader.service';\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(/* webpackChunkName: \"ms-my-bets\" */ '../my-bets/my-bets.module').then((m) => m.MyBetsModule);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { MyBetsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { ExpiringCache } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { OpenBetsSummary } from '@frontend/sports/types/models/my-bets';\nimport { firstValueFrom, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryApiService {\n private readonly logger: SportsRemoteLogger;\n private mybetsStatsCache: ExpiringCache;\n\n constructor(\n private apiService: ApiService,\n loggerFactory: LoggerFactory,\n private myBetsConfig: MyBetsConfig,\n ) {\n this.logger = loggerFactory.getLogger('MyBetsApiService');\n\n const timeout = (this.myBetsConfig.cacheTimeout || 100) / 1000;\n this.mybetsStatsCache = new ExpiringCache(timeout);\n }\n\n async getOpenBetsCount(): Promise {\n const source = this.apiService.get('mybets/stats').pipe(\n catchError((error) => {\n this.logger.error(error, 'Get OpenBetsCount response failed.');\n\n return of({\n openEvents: {},\n openBetsCount: 0,\n liveBetsCount: 0,\n betNumbers: [],\n isMigrationSummary: false,\n hasError: false,\n });\n }),\n );\n\n return firstValueFrom(this.mybetsStatsCache.getOrCreate(`mybets-stats`, source));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EventModel } from '@frontend/sports/betting-offer/feature/model';\nimport { MyBetsConfig, MyBetsVisualizationTrackingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { DispatcherService } from '@frontend/sports/common/core/utils/dispatcher';\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport { filterSportsEmitLast, fromSportsEnter, fromSportsLeave } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { OpenBetsSummary } from '@frontend/sports/types/models/my-bets';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { sum } from 'lodash-es';\nimport { BehaviorSubject, Subject, firstValueFrom, timer } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SummaryApiService } from './summary-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MyBetsSummaryService {\n private readonly defaultSummary: OpenBetsSummary = {\n openEvents: {},\n liveBetsCount: 0,\n openBetsCount: 0,\n betNumbers: [],\n isMigrationSummary: false,\n hasError: false,\n };\n\n private readonly EARLY_PAYOUT_SUCCESS = 'EARLY_PAYOUT_SUCCESS';\n private readonly BET_PLACE_SUCCESS = 'BET_PLACE_SUCCESS';\n private readonly CASH_OUT_ALREADY_EXECUTED = 'CASH_OUT_ALREADY_EXECUTED';\n\n private _summaryUpdate = new BehaviorSubject | undefined>(undefined);\n readonly summaryUpdate = this._summaryUpdate.pipe(filter(isDefined));\n\n private stopped$: Subject;\n\n constructor(\n private loader: SummaryApiService,\n private dispatcherService: DispatcherService,\n private userService: UserService,\n private mybetsConfig: MyBetsConfig,\n private mybetsVisualizationTrackingConfig: MyBetsVisualizationTrackingConfig,\n ) {\n this.stopped$ = new Subject();\n\n if (this.userService.isAuthenticated) {\n this.start();\n }\n\n this.userService.onUserLogInWithSettings$.pipe(filterSportsEmitLast()).subscribe(() => this.start());\n this.userService.onUserLogout$.pipe(filterSportsEmitLast()).subscribe(() => this.stop());\n fromSportsEnter().subscribe(() => this.userService.isAuthenticated && this.start());\n fromSportsLeave().subscribe(() => () => this.stop());\n }\n\n get summary(): Readonly {\n return this._summaryUpdate.value || this.defaultSummary;\n }\n\n update(summary: OpenBetsSummary): void {\n this._summaryUpdate.next(summary);\n }\n\n getOpenBetsCount(evt: EventModel): number {\n const openEvents = this.summary.openEvents;\n if (Object.keys(openEvents).length !== 0 && this.mybetsVisualizationTrackingConfig?.isEnabled) {\n return openEvents[evt.id]?.openBetsCount;\n }\n const eventIds = [evt.id, ...(evt.splitFixtureIds || []), ...(evt.hybridFixtureData?.fixtureId ? [evt.hybridFixtureData.fixtureId] : [])];\n const eventCounts = eventIds.filter((eid) => openEvents[eid]).map((eid) => openEvents[eid].openBetsCount);\n\n return sum(eventCounts);\n }\n\n private start(): void {\n this.stop();\n this.subscribeBetPlacementActions();\n firstValueFrom(this.mybetsVisualizationTrackingConfig.whenReady);\n if (!this.mybetsConfig.isOpenSummaryLoadingRestricted) {\n timer(0, this.mybetsConfig.myBetsRefreshInMilliseconds || 120000)\n .pipe(takeUntil(this.stopped$))\n .subscribe(() => this.refresh());\n }\n }\n\n async refresh(aggresive: boolean = false): Promise {\n if (aggresive || !this._summaryUpdate.value || this.summary.openBetsCount > 0) {\n let summary: OpenBetsSummary;\n try {\n summary = await this.loader.getOpenBetsCount();\n } catch {\n summary = { ...this.defaultSummary };\n }\n\n this.update(summary);\n }\n }\n\n private stop(): void {\n this.stopped$.next();\n }\n\n private subscribeBetPlacementActions(): void {\n this.dispatcherService.on(this.EARLY_PAYOUT_SUCCESS).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n\n this.dispatcherService.on(this.BET_PLACE_SUCCESS).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n\n this.dispatcherService.on(this.CASH_OUT_ALREADY_EXECUTED).pipe(takeUntil(this.stopped$)).subscribe(this.onBetPlacementAction);\n }\n\n private onBetPlacementAction = () => {\n this.refresh(true);\n };\n}\n","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 { 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.\n// eslint-disable-next-line @typescript-eslint/ban-types\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","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 { 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 deselectedByUser: boolean;\n rewardAutoApplied: boolean;\n}\n\nexport enum AcquisitionContextType {\n BannerTooltip = 'BannerTooltip',\n AutoApplyTooltip = 'AutoApplyTooltip',\n AutoApply = 'AutoApply',\n DeselectedByUser = 'DeselectedByUser',\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","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class DomainEvent {\n constructor(public key: string) {}\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n LoginResponseHandlerService,\n LoginResponseOptions,\n LoginStoreService,\n ProductNavigationService,\n SharedFeaturesApiService,\n UserService,\n WorkflowHandleResponse,\n WorkflowResponse,\n} from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\n\n/**\n * @whatItDoes Provides options to get the user out of workflow mode.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowService {\n constructor(\n private api: SharedFeaturesApiService,\n private loginResponseHandler: LoginResponseHandlerService,\n private loginStore: LoginStoreService,\n private user: UserService,\n private productNavigationService: ProductNavigationService,\n ) {}\n\n /**\n * @whatItDoes Calls POS API `FinalizeWorkflow` method, executes login including redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalize(options?: LoginResponseOptions): Promise {\n return await this.execute(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'finalizeWorkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `SkipWorkflow` method, executes login including redirection.\n *\n * @description\n *\n * Skips the workflow.\n */\n async skip(options?: LoginResponseOptions): Promise {\n return await this.execute(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'skipworkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `workflowdata` and then finalize().\n *\n * @description\n *\n * Finalizes workflow with data.\n */\n async finalizeWithData(data: any, options?: LoginResponseOptions): Promise {\n await firstValueFrom(this.api.post('workflowdata', data));\n\n return await this.finalize(options);\n }\n\n /**\n * @whatItDoes Calls POS API `FinalizeWorkflow` method, executes login without redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalizeHandle(options?: LoginResponseOptions): Promise {\n return await this.executeHandle(this.user.workflowType < 0 ? 'finalizePostLoginWorkflow' : 'finalizeWorkflow', options);\n }\n\n /**\n * @whatItDoes Calls POSAPi `workflowdata`, then `FinalizeWorkflow` method, executes login without redirection.\n *\n * @description\n *\n * It is required to call this to get the user out of the workflow.\n *\n */\n async finalizeWithDataHandle(data: any, options?: LoginResponseOptions): Promise {\n await firstValueFrom(this.api.post('workflowdata', data));\n\n return await this.finalizeHandle(options);\n }\n\n private async execute(action: string, options?: LoginResponseOptions): Promise {\n let response;\n\n try {\n response = await firstValueFrom(this.api.post(action, this.getParameters()));\n } catch (loginError: any) {\n this.productNavigationService.goTo(loginError?.redirectUrl);\n return { loginError: loginError };\n }\n\n await this.loginResponseHandler.handleResponse(response, options);\n\n return {}; // better not to return response here because handleResponse redirects. if they need it they need to use Handle method\n }\n\n private async executeHandle(action: string, options?: LoginResponseOptions): Promise {\n let response;\n\n try {\n response = await firstValueFrom(this.api.post(action, this.getParameters()));\n } catch (error: any) {\n this.productNavigationService.goTo(error?.redirectUrl);\n\n return { loginError: error };\n }\n\n const loginRedirectInfo = await this.loginResponseHandler.handle(response, options);\n\n return { loginResponse: response, loginRedirectInfo: loginRedirectInfo };\n }\n\n private getParameters(): { loginType: string | null } {\n return {\n loginType: this.loginStore.LoginType,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService, MessageType } from '@frontend/vanilla/core';\n\nexport interface ProviderParameters {\n loginUrl: string;\n redirectUrl: string;\n clientId: string;\n appendNonce: boolean;\n welcomeDialog?: boolean;\n sdkUrl?: string;\n sdkVersion?: string;\n sdkCookie?: boolean;\n sdkLogin?: boolean;\n redirectQueryParams?: { [key: string]: string };\n}\n\n@LazyClientConfig({ key: 'vnLogin2', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: loginConfigFactory,\n})\nexport class LoginConfig extends LazyClientConfigBase {\n autoFocusUsername?: boolean;\n closeButtonTextCssClass: string;\n connectCardVersion: number;\n disableLoginOnFormInvalid: boolean;\n disableFeatureDataPrefetch: { [key: string]: string };\n enableLimitsToaster: boolean;\n fastLoginOptionsEnabled: boolean;\n fastLoginToggleEnabled: boolean;\n isDateOfBirthEnabled: boolean;\n isLoginWithMobileEnabled: boolean;\n loginMessages: { urlPattern: string; name: string; type: MessageType }[];\n loginOptions: string[];\n passwordHintsOnNthAttempt: number;\n prefillUsernameToggleEnabled: boolean;\n providers: { [key: string]: ProviderParameters };\n recaptchaEnterpriseEnabled: boolean;\n rememberMeEnabled: boolean;\n resetLoginFormErrorCodes: string[];\n selectedTabEnabled: boolean;\n showCloseButtonAsText: boolean;\n showRegisterButton: boolean;\n signInByEmail: boolean;\n titleCssClass: string;\n useOpenRegistrationEvent: boolean;\n useProviderProfile: boolean;\n v2: boolean;\n version: number;\n showLoginSpinner: boolean;\n}\n\nexport function loginConfigFactory(service: LazyClientConfigService) {\n return service.get(LoginConfig);\n}\n","import { Injectable } from '@angular/core';\n\nimport { DslService, UserEvent, UserLoginEvent, UserService } from '@frontend/vanilla/core';\nimport { first } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { LoginConfig } from './login.client-config';\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginService {\n constructor(\n private userService: UserService,\n private loginConfig: LoginConfig,\n private dslService: DslService,\n ) {}\n\n runAfterLogin(source: string, callback: () => void) {\n this.loginConfig.whenReady.pipe(first()).subscribe(() => {\n if (this.userService.isAuthenticated) {\n this.runCallback(source, callback);\n }\n\n this.userService.events\n .pipe(filter((event: UserEvent) => event instanceof UserLoginEvent))\n .subscribe(() => this.runCallback(source, callback));\n });\n }\n\n private runCallback(source: string, callback: () => void) {\n const featureName =\n Object.keys(this.loginConfig.disableFeatureDataPrefetch).find((name: string) => source.toLowerCase().includes(name.toLowerCase())) || '';\n\n const dsl = this.loginConfig.disableFeatureDataPrefetch[featureName];\n\n if (dsl) {\n this.dslService.evaluateExpression(dsl).subscribe((disabled: boolean) => {\n if (!disabled) {\n callback();\n }\n });\n } else {\n callback();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @experimental\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CryptoResourceService {\n constructor(private api: SharedFeaturesApiService) {}\n\n encrypt(data: string, purpose: string): Observable {\n return this.api.get('crypto/encrypt', { data, purpose }).pipe(map((response: { result: string }) => response?.result));\n }\n\n decrypt(data: string, purpose: string): Observable {\n return this.api.get('crypto/decrypt', { data, purpose }).pipe(map((response: { result: string }) => response?.result));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { CryptoResourceService } from './crypto-resource.service';\n\n/**\n * @description This service provides means to encrypt/decrypt data with the configured secret key for a given purpose.\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108}\n *\n * @howToUse\n * ```\n * const encryptedData = await cryptoService.encrypt(data, purpose);\n * const decryptedData = await cryptoService.decrypt(encryptedData, purpose);\n * ```\n *\n * @experimental\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CryptoService {\n constructor(private cryptoResourceService: CryptoResourceService) {}\n\n /**\n * @param data Value to encrypt.\n * @param purpose Encryption identifier (e.g. `login`).\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108/keys/303112/valuematrix}\n */\n encrypt(data: string, purpose: string): Observable {\n return this.cryptoResourceService.encrypt(data, purpose);\n }\n\n /**\n * @param value Encrypted value.\n * @param purpose Decryption identifier (e.g. `login`).\n * See: {@link https://admin.dynacon.prod.env.works/services/198137/features/303108/keys/303112/valuematrix}\n */\n decrypt(value: string, purpose: string): Observable {\n return this.cryptoResourceService.decrypt(value, purpose);\n }\n}\n","import { DynamicScriptsService, LoginProviderProfile, ScriptOptions, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { AuthOptions, AuthResponse } from './login-providers.models';\n\n/**\n * @protected\n */\nexport abstract class BaseLoginProviderService {\n get loginResponse(): Observable | null> {\n return this.loginResponseSubject;\n }\n\n get profile(): Observable {\n return this.profileSubject;\n }\n\n protected loginResponseSubject = new Subject | null>();\n protected profileSubject = new BehaviorSubject(null);\n\n protected constructor(\n private dynamicScriptsService: DynamicScriptsService,\n private trackingService: TrackingService,\n ) {}\n\n protected async initSdk(typeofSdk: string, config: ProviderParameters, scriptOptions?: ScriptOptions): Promise {\n return new Promise((resolve) => {\n if (typeofSdk === 'undefined' && config.sdkUrl && config.clientId) {\n this.dynamicScriptsService\n .load(config.sdkUrl, {\n async: true,\n defer: true,\n crossorigin: 'anonymous',\n ...scriptOptions,\n })\n .then(() => resolve());\n } else {\n resolve();\n }\n });\n }\n\n protected trackSuccessLoginWithProvider(provider: string) {\n this.trackingService.triggerEvent('Event.Tracking', {\n 'component.LabelEvent': provider,\n 'component.ActionEvent': 'success',\n 'component.PositionEvent': 'not applicable',\n 'component.LocationEvent': 'not applicable',\n 'component.EventDetails': 'direct login',\n 'component.URLClicked': 'not applicable',\n });\n }\n\n protected abstract login(options: AuthOptions): void;\n\n protected abstract initProfile(config?: ProviderParameters): void;\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CookieName,\n CookieService,\n DynamicScriptsService,\n Logger,\n LoginProvider,\n LoginProviderProfile,\n NavigationService,\n TrackingService,\n} from '@frontend/vanilla/core';\nimport { CryptoService } from '@frontend/vanilla/shared/crypto';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions, AuthResponse } from './login-providers.models';\n\nimport SignInResponseI = AppleSignInAPI.SignInResponseI;\nimport UserI = AppleSignInAPI.UserI;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AppleProviderService extends BaseLoginProviderService {\n constructor(\n private cookieService: CookieService,\n private cryptoService: CryptoService,\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth: AuthResponse) => {\n const authorization = auth.response?.authorization;\n const redirectUrl = auth.options.authUrl?.redirectUrl;\n\n if (authorization && redirectUrl) {\n // Authenticate using SDK login\n redirectUrl.search.append('access_token', authorization.id_token);\n redirectUrl.search.append('code', authorization.code);\n\n if (auth.response?.user) {\n const nonce = this.cookieService.get(CookieName.Nonce);\n\n this.cryptoService.encrypt(JSON.stringify(auth.response.user), nonce).subscribe({\n next: (encryptedUserData: string) => this.cookieService.put(CookieName.AppleUser, encryptedUserData),\n complete: () => {\n this.trackSuccessLoginWithProvider(LoginProvider.APPLE);\n this.navigationService.goTo(redirectUrl.absUrl());\n },\n error: () => this.navigationService.goTo(redirectUrl.absUrl()),\n });\n }\n } else {\n this.logger.warn('Filed to login with Apple provider; fallback to login with URI', auth?.response);\n this.navigationService.goTo(auth?.options.authUrl?.url?.absUrl() || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n if (options.providerParameters?.sdkLogin) {\n this.initSdk(typeof AppleID, options.providerParameters, {\n onloadCallback: () =>\n AppleID?.auth.init({\n clientId: options.providerParameters?.clientId,\n redirectURI: options.providerParameters?.redirectUrl,\n }),\n }).then(() => {\n if (typeof AppleID !== 'undefined') {\n AppleID.auth.signIn(options.providerParameters).then(\n (response: SignInResponseI) => {\n this.loginResponseSubject.next({ response, options });\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n });\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Apple profile data from cookies\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile() {\n const encryptedUserData = this.cookieService.get(CookieName.AppleUser);\n const profile: LoginProviderProfile = {\n provider: LoginProvider.APPLE,\n };\n\n if (encryptedUserData) {\n const nonce = this.cookieService.get(CookieName.Nonce);\n\n this.cryptoService.decrypt(encryptedUserData, nonce).subscribe({\n next: (data: string) => {\n const userData: UserI = JSON.parse(data);\n profile.name = `${userData.name.firstName} ${userData.name.lastName}`;\n },\n complete: () => this.profileSubject.next(profile),\n error: () => this.profileSubject.next(profile),\n });\n } else {\n this.profileSubject.next(profile);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DynamicScriptsService, Logger, LoginProvider, LoginProviderProfile, NavigationService, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions, AuthResponse, FacebookProfileData } from './login-providers.models';\n\nimport LoginStatus = facebook.LoginStatus;\nimport StatusResponse = facebook.StatusResponse;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FacebookProviderService extends BaseLoginProviderService {\n get connectionStatus(): Observable {\n return this.connectionStatusSubject;\n }\n\n private connectionStatusSubject = new BehaviorSubject('unknown');\n\n constructor(\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth: AuthResponse) => {\n const authResponse = auth.response?.authResponse;\n const redirectUrl = auth.options.authUrl?.redirectUrl;\n\n if (authResponse?.accessToken && redirectUrl) {\n // Authenticate using SDK login\n redirectUrl.search.append('access_token', authResponse.accessToken);\n if (authResponse.signedRequest) {\n redirectUrl.search.append('code', authResponse.signedRequest);\n }\n redirectUrl.search.append('expires_in', authResponse.expiresIn.toString());\n\n if (authResponse.data_access_expiration_time) {\n redirectUrl.search.append('data_access_expiration_time', authResponse.data_access_expiration_time.toString());\n }\n\n this.trackSuccessLoginWithProvider(LoginProvider.FACEBOOK);\n this.navigationService.goTo(redirectUrl.absUrl());\n } else {\n this.logger.warn('Filed to login with Facebook provider; fallback to login with URI', auth);\n this.navigationService.goTo(auth.options.authUrl.url || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n const config = options.providerParameters;\n\n if (config?.sdkLogin) {\n this.initSdk(typeof FB, config, { onloadCallback: () => this.initFacebookAuth(config) }).then(\n () => {\n if (typeof FB !== 'undefined') {\n FB.login((response: StatusResponse) => {\n this.loginResponseSubject.next({ response, options });\n });\n } else {\n this.loginResponseSubject.next(null);\n }\n },\n (reason: any) => this.loginResponseSubject.next(reason),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Facebook profile data\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile(config?: ProviderParameters) {\n const profile: LoginProviderProfile = {\n provider: LoginProvider.FACEBOOK,\n };\n\n if (config?.sdkLogin) {\n this.initSdk(typeof FB, config, { onloadCallback: () => this.initFacebookAuth(config) }).then(\n () => {\n if (typeof FB !== 'undefined') {\n FB.getLoginStatus((response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n\n FB.api('/me', { fields: 'name,picture{url}' }, (response: FacebookProfileData) => {\n profile.name = response?.name;\n profile.pictureUrl = response?.picture?.data.url;\n\n this.profileSubject.next(profile);\n });\n } else {\n this.profileSubject.next(profile);\n }\n },\n () => this.profileSubject.next(profile),\n );\n } else {\n this.profileSubject.next(profile);\n }\n }\n\n private initFacebookAuth(config: ProviderParameters) {\n FB?.init({\n appId: config.clientId,\n cookie: !!config.sdkCookie,\n xfbml: true,\n version: config.sdkVersion || 'v10.0',\n });\n\n FB?.Event.subscribe('auth.login', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n FB?.Event.subscribe('auth.statusChange', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n FB?.Event.subscribe('auth.authResponseChange', (response: StatusResponse) => this.connectionStatusSubject.next(response.status));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DynamicScriptsService, Logger, LoginProvider, LoginProviderProfile, NavigationService, TrackingService } from '@frontend/vanilla/core';\nimport { ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { filter } from 'rxjs/operators';\n\nimport { BaseLoginProviderService } from './base-login-provider.service';\nimport { AuthOptions } from './login-providers.models';\n\nimport AuthResponse = gapi.auth2.AuthResponse;\nimport GoogleAuth = gapi.auth2.GoogleAuth;\nimport GoogleUser = gapi.auth2.GoogleUser;\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleProviderService extends BaseLoginProviderService {\n constructor(\n private navigationService: NavigationService,\n private logger: Logger,\n dynamicScriptsService: DynamicScriptsService,\n trackingService: TrackingService,\n ) {\n super(dynamicScriptsService, trackingService);\n\n this.loginResponse.pipe(filter(Boolean)).subscribe((auth) => {\n const redirectUrl = auth.options.authUrl.redirectUrl;\n\n if (auth.response && redirectUrl) {\n // Authenticate using SDK login\n\n redirectUrl.search.append('access_token', auth.response.access_token);\n redirectUrl.search.append('code', auth.response.id_token);\n redirectUrl.search.append('expires_in', auth.response.expires_in.toString());\n redirectUrl.search.append('data_access_expiration_time', auth.response.expires_at.toString());\n\n this.trackSuccessLoginWithProvider(LoginProvider.GOOGLE);\n this.navigationService.goTo(redirectUrl.absUrl());\n } else {\n this.logger.warn('Filed to login with Google provider; fallback to login with URI', auth);\n this.navigationService.goTo(auth.options.authUrl.url?.absUrl() || '/');\n }\n });\n }\n\n /** Perform SDK login\n * @param {AuthOptions} options\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n login(options: AuthOptions) {\n if (options.providerParameters?.sdkLogin) {\n this.initAuth(options.providerParameters).then(\n (googleAuth: GoogleAuth | null) => {\n if (googleAuth) {\n googleAuth.signIn(options.signInOptions).then(\n (response: GoogleUser) => {\n this.loginResponseSubject.next({ response: response.getAuthResponse(), options });\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n },\n (error: any) => this.loginResponseSubject.next({ error, options }),\n );\n } else {\n this.loginResponseSubject.next(null);\n }\n }\n\n /** Loads Google profile data\n * Config: {@link https://admin.dynacon.prod.env.works/services/198200/features/133282/keys/252395/valuematrix}\n */\n initProfile(config?: ProviderParameters) {\n const profile: LoginProviderProfile = {\n provider: LoginProvider.GOOGLE,\n };\n\n if (config?.sdkLogin) {\n this.initAuth(config).then(\n (googleAuth: GoogleAuth | null) => {\n const user = googleAuth?.currentUser.get().getBasicProfile();\n\n const googleProfile: LoginProviderProfile = {\n ...profile,\n name: user?.getName() || '',\n pictureUrl: user?.getImageUrl() || '',\n };\n this.profileSubject.next(googleProfile);\n },\n () => this.profileSubject.next(profile),\n );\n } else {\n this.profileSubject.next(profile);\n }\n }\n\n private initAuth(config: ProviderParameters): Promise {\n return new Promise((resolve) => {\n if (typeof gapi === 'undefined') {\n this.initSdk(typeof gapi, config).then(\n () => {\n if (typeof gapi !== 'undefined') {\n gapi.load('auth2', () => {\n resolve(\n gapi.auth2.init({\n client_id: config.clientId,\n }),\n );\n });\n } else {\n resolve(null);\n }\n },\n () => this.loginResponseSubject.next(null),\n );\n } else {\n resolve(\n gapi.auth2.init({\n client_id: config.clientId,\n }),\n );\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CommonMessages,\n CookieName,\n CookieService,\n LoginProvider,\n LoginProviderProfile,\n MessageLifetime,\n MessageQueueService,\n MessageScope,\n MessageType,\n NavigationService,\n ParsedUrl,\n UrlService,\n UtilsService,\n} from '@frontend/vanilla/core';\nimport { LoginConfig, ProviderParameters } from '@frontend/vanilla/shared/login';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\n\nimport { AppleProviderService } from './apple-provider.service';\nimport { FacebookProviderService } from './facebook-provider.service';\nimport { GoogleProviderService } from './google-provider.service';\nimport { AuthUrl, ProviderLoginOptions } from './login-providers.models';\n\nimport SigninOptions = AppleSignInAPI.ClientConfigI;\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginProvidersService {\n readonly providersProfile = new BehaviorSubject(null);\n\n constructor(\n private loginConfig: LoginConfig,\n private commonMessages: CommonMessages,\n private urlService: UrlService,\n private cookieService: CookieService,\n private utilsService: UtilsService,\n private navigationService: NavigationService,\n private messageQueueService: MessageQueueService,\n private appleProviderService: AppleProviderService,\n private googleProviderService: GoogleProviderService,\n private facebookProviderService: FacebookProviderService,\n ) {}\n\n /**\n * Initialize user profiles when available and `sdkLogin` config is enabled.\n **/\n initProvidersProfile() {\n combineLatest([this.appleProviderService.profile, this.googleProviderService.profile, this.facebookProviderService.profile]).subscribe(\n ([appleProfile, googleProfile, facebookProfile]) => {\n if (googleProfile && facebookProfile && appleProfile) {\n this.providersProfile.next([appleProfile, googleProfile, facebookProfile]);\n }\n },\n );\n\n this.appleProviderService.initProfile();\n this.googleProviderService.initProfile(this.loginConfig.providers[LoginProvider.GOOGLE]);\n this.facebookProviderService.initProfile(this.loginConfig.providers[LoginProvider.FACEBOOK]);\n }\n\n /**\n * Invokes login with via URL for a given provider.\n * Appends passed queryParams parameter values to the URL provided via {@link ProviderLoginOptions}.\n **/\n urlAuth(options: ProviderLoginOptions) {\n const providerConfig = this.loginConfig.providers[options.provider];\n\n if (providerConfig?.appendNonce) {\n this.updateNonce();\n }\n\n const authUrl = this.getAuthUrl(options, providerConfig);\n\n if (authUrl?.url?.absUrl()) {\n if (options.provider === LoginProvider.YAHOO) {\n this.appendToUri(authUrl.url, [CookieName.Nonce, CookieName.LoginHint, CookieName.IdTokenHint]);\n }\n\n this.navigationService.goTo(authUrl.url.absUrl());\n } else {\n this.showLoginError();\n }\n }\n\n /** Invokes login with via SDK for a given provider. */\n sdkAuth(options: ProviderLoginOptions) {\n const providerParameters = this.loginConfig.providers[options.provider];\n\n if (providerParameters?.appendNonce) {\n this.updateNonce();\n }\n\n const authUrl = this.getAuthUrl(options, providerParameters);\n\n if (!authUrl?.url && !authUrl?.redirectUrl) {\n this.showLoginError();\n } else if (options.provider === LoginProvider.APPLE) {\n const signInOptions: SigninOptions = {\n ...options.loginOptions,\n clientId: providerParameters?.clientId,\n nonce: authUrl?.url?.search.get(CookieName.Nonce) || undefined,\n };\n this.appleProviderService.login({\n signInOptions,\n providerParameters,\n authUrl,\n });\n } else if (options.provider === LoginProvider.GOOGLE) {\n this.googleProviderService.login({\n signInOptions: options.loginOptions,\n providerParameters,\n authUrl,\n });\n } else if (options.provider === LoginProvider.FACEBOOK) {\n this.facebookProviderService.login({\n signInOptions: options.loginOptions,\n providerParameters,\n authUrl,\n });\n }\n }\n\n private getAuthUrl(options: ProviderLoginOptions, providerConfig?: ProviderParameters): AuthUrl | null {\n if (!providerConfig) {\n return null;\n }\n\n const redirectUrl = this.urlService.parse(providerConfig.redirectUrl);\n\n for (const key in options.redirectQueryParams) {\n const redirectQuery = options.redirectQueryParams[key];\n\n if (redirectQuery) {\n redirectUrl.search.append(key, redirectQuery);\n }\n }\n\n const url = this.urlService.parse(providerConfig.loginUrl);\n url.search.append('client_id', providerConfig.clientId);\n url.search.append('redirect_uri', redirectUrl.absUrl());\n\n for (const key in options.queryParams) {\n const query = options.queryParams[key];\n\n if (query) {\n url.search.append(key, query);\n }\n }\n\n if (providerConfig.appendNonce) {\n url.search.append(CookieName.Nonce, this.cookieService.get(CookieName.Nonce));\n }\n\n return { url, redirectUrl };\n }\n\n /** Appends values of cookies with the listed keys and deletes those cookies. */\n private appendToUri(url: ParsedUrl, cookieKeys: string[] = []) {\n cookieKeys.forEach((cookieName: string) => {\n const value = this.cookieService.get(cookieName);\n\n if (value) {\n url.search.append(cookieName, value);\n this.cookieService.remove(cookieName);\n }\n });\n }\n\n /**\n * Updates the 'nonce' cookie.\n *\n * A unique, single-use string to associate a client session with the user's identity token.\n * This value is also used to prevent replay attacks and allows you to correlate the initial authentication request\n * with the identity token provided in the authorization response.\n **/\n private updateNonce() {\n this.cookieService.remove(CookieName.Nonce);\n\n const guid = this.utilsService.generateGuid();\n this.cookieService.put(CookieName.Nonce, guid);\n }\n\n private showLoginError() {\n this.messageQueueService.clear();\n this.messageQueueService.add({\n scope: MessageScope.Login,\n html: this.commonMessages.LoginError || '',\n type: MessageType.Error,\n lifetime: MessageLifetime.Single,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { filterSports } from '@frontend/sports/host-app/sports-product/feature/utils';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHelper {\n private firstLoadFlag = 2;\n\n constructor(private router: Router) {\n this.router.events.pipe(filterSports(), takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.navigationEnded(event);\n }\n });\n }\n\n private navigationEnded(event: NavigationEnd): void {\n if (this.firstLoadFlag) {\n this.firstLoadFlag--;\n }\n\n const isAddBetsRoute = event && event.url.toLowerCase().indexOf('addbets') > -1;\n\n if (isAddBetsRoute && this.firstLoadFlag) {\n // we're initializing the app on the addBets route and might open the betslip popup\n // don't allow back;\n this.firstLoadFlag = 2;\n }\n\n if (event && event.url.indexOf('labelhost') > -1) {\n this.firstLoadFlag = 2;\n }\n }\n\n forceHomePage(): boolean {\n return this.firstLoadFlag === 1;\n }\n\n allowBack(): boolean {\n return !this.firstLoadFlag;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Params } from '@angular/router';\n\nimport { FixtureBase } from '@cds/betting-offer';\nimport { YahooOpenIdConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { RacingUrlParam } from '@frontend/sports/racing/feature/models';\nimport {\n CookieService,\n GoToOptions,\n LoginProvider,\n MenuAction,\n MenuActionsService,\n NativeAppService,\n NavigationService,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { LoginProvidersService } from '@frontend/vanilla/shared/login-providers';\nimport { Subject, concatMap, distinctUntilKeyChanged, tap, windowTime } from 'rxjs';\n\nimport { NavigationHelper } from './navigation-helper.service';\nimport { FavouritesDashboardUrlParam, LiveUrlParam, MarketUrlParam, MyBetsUrlParam, SportUrlParam, UrlHelperService } from './url-helper.service';\n\nexport enum YahooOpenIdTriggerOption {\n BetSlip = 'betslip',\n}\n\nexport interface GoToLink {\n url: string;\n options: GoToOptions;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RedirectHelperService {\n private readonly navigationSubject$ = new Subject();\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n navigation: NavigationService,\n private navigationHelper: NavigationHelper,\n private urlHelper: UrlHelperService,\n private menuActionsService: MenuActionsService,\n private loginWithProvidersService: LoginProvidersService,\n private cookieService: CookieService,\n private yahooOpenidconfig: YahooOpenIdConfig,\n private nativeAppService: NativeAppService,\n ngZone: NgZone,\n ) {\n ngZone.runOutsideAngular(() =>\n this.navigationSubject$\n .pipe(\n windowTime(300),\n concatMap((obs) => obs.pipe(distinctUntilKeyChanged('url'))),\n tap((redirect: GoToLink) => navigation.goTo(redirect.url, redirect.options)),\n takeUntilDestroyed(),\n )\n .subscribe(),\n );\n }\n\n goToLiveSport(options: { sport: UrlParam; region?: UrlParam; ignoreBrowserHistory?: boolean; isEsport?: boolean }): void {\n this.goToPage(\n this.urlHelper.getLiveSportUrl({ sport: options.sport, region: options.region, isEsport: options.isEsport }),\n options.ignoreBrowserHistory,\n );\n }\n\n goToLive(tab: LiveUrlParam = LiveUrlParam.Highlights, tracking?: string): void {\n this.goToPage(this.urlHelper.getLiveUrl(tab, tracking));\n }\n\n goToSport(sport: UrlParam, context?: SportUrlParam, subContext?: SportUrlParam.Competitions): void;\n goToSport(sport: UrlParam, region?: UrlParam, league?: UrlParam): void;\n goToSport(sport: UrlParam, regionOrContext?: UrlParam | SportUrlParam, leagueOrSubContext?: UrlParam | SportUrlParam.Competitions): void {\n let url: string;\n\n if (!regionOrContext || typeof regionOrContext === 'string') {\n url = this.urlHelper.getSportUrl(sport, regionOrContext as SportUrlParam, leagueOrSubContext as SportUrlParam.Competitions);\n } else {\n url = this.urlHelper.getSportUrl(sport, SportUrlParam.Betting, regionOrContext, leagueOrSubContext as UrlParam);\n }\n\n this.goToPage(url);\n }\n\n goToVirtualSport(sport: UrlParam, competition?: UrlParam, event?: string): void {\n this.goToPage(this.urlHelper.getVirtualSportUrl(sport, competition, event));\n }\n\n goToEvent(event: UrlParam, market?: MarketUrlParam): void {\n this.goToPage(this.urlHelper.getEventUrl(event, market));\n }\n\n goToLogin(options?: {\n forceReload?: boolean;\n appendReferrer?: boolean | string;\n referrerNeedsLoggedInUser?: boolean;\n useYahooLogin?: boolean;\n }): void {\n const returnUrl = typeof options?.appendReferrer === 'string' ? options.appendReferrer : '';\n if (options?.useYahooLogin && this.isYahooOpenIdFlow()) {\n this.loginWithProvidersService.urlAuth({\n provider: LoginProvider.YAHOO,\n redirectQueryParams: { trigger: YahooOpenIdTriggerOption.BetSlip },\n });\n } else {\n this.menuActionsService.invoke(MenuAction.GOTO_LOGIN, '', [undefined, undefined, { returnUrl }]);\n }\n }\n\n goToHorseRacing(page: RacingUrlParam): void;\n goToHorseRacing(meeting: UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void;\n goToHorseRacing(param: RacingUrlParam | UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void {\n if (typeof param === 'string') {\n this.goToPage(this.urlHelper.getRaceUrl(SportConstant.Horses, param));\n } else if (param) {\n this.goToPage(this.urlHelper.getRaceUrl(SportConstant.Horses, param, filterOrRace));\n }\n }\n\n goToFixtureByFixture(fixture: Pick): void {\n this.goToPage(this.urlHelper.getFixtureUrlByFixture(fixture));\n }\n\n goToFixture(sport: UrlParam, fixture: UrlParam, prefix?: string): void {\n this.goToPage(this.urlHelper.getFixtureUrl(sport, fixture, prefix));\n }\n\n goToFavouriteWithUrlParam(urlParam: FavouritesDashboardUrlParam): void {\n this.goToPage(this.urlHelper.getFavouriteUrlByUrlParam(urlParam));\n }\n\n goHome(ignoreBrowserHistory?: boolean, isBackNavigation = false): void {\n this.goToPage(this.urlHelper.getHomeUrl(), ignoreBrowserHistory ?? true, isBackNavigation);\n }\n\n goToMyBets(route?: MyBetsUrlParam, trackingParams?: Params, ignoreBrowserHistory: boolean = true): void {\n this.goToPage(this.urlHelper.getMyBetsUrl(route, trackingParams), ignoreBrowserHistory);\n }\n\n goToPage(url?: string, ignoreBrowserHistory: boolean = false, isBackNavigation = false): void {\n if (!url) {\n return;\n }\n\n this.navigationSubject$.next({ url, options: { replace: ignoreBrowserHistory, isBackNavigation } });\n }\n\n goToRacing(sportId: SportConstant, param: RacingUrlParam | UrlParam, filterOrRace?: RacingUrlParam | UrlParam): void {\n this.goToPage(this.urlHelper.getRaceUrl(sportId, param, filterOrRace));\n }\n\n goBack(url?: string): void {\n if (url) {\n this.goToPage(url, undefined, true);\n\n return;\n }\n\n if (this.navigationHelper.forceHomePage() && !this.userIsComingFromPortalPromotions) {\n this.goToPage('/', undefined, true);\n\n return;\n }\n\n this.#window.history.back();\n }\n\n reloadPage(): void {\n this.#window.location.reload();\n }\n\n private isYahooOpenIdFlow(): boolean {\n const nativeAppValue = this.yahooOpenidconfig.nativeAppCookie || '';\n const loginHint = !!this.cookieService.get('login_hint');\n const idTokenHint = !!this.cookieService.get('id_token_hint');\n\n return this.yahooOpenidconfig.enableOnBetPlacement && this.nativeAppService.applicationName === nativeAppValue && (loginHint || idTokenHint);\n }\n\n private get userIsComingFromPortalPromotions(): boolean {\n const referrer = this._doc.referrer;\n\n return referrer.indexOf('promotions') > -1;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { RouteTag } from '@frontend/sports/common/core/data-access/route';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { filterSports } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { BehaviorSubject, map } from 'rxjs';\n\nexport enum ScrollFreezeServiceTypes {\n All,\n Page,\n CustomScrollbar,\n None,\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollFreezeService {\n private _freezeCountPage = 0;\n private _freezeCountPs = 0;\n private urlWhenScreenWasFrozen!: string;\n\n private currentRouteTag$ = new BehaviorSubject(undefined);\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n private router: Router,\n routerEvent: RouterEventsService,\n ) {\n routerEvent.currentActivationEnd\n .pipe(\n filterSports(),\n map((ae) => {\n return ae?.snapshot?.data?.['tag'] as RouteTag;\n }),\n )\n .subscribe(this.currentRouteTag$);\n }\n\n freezeScroll(type?: ScrollFreezeServiceTypes): void {\n if (type === ScrollFreezeServiceTypes.None) {\n return;\n }\n switch (type) {\n case ScrollFreezeServiceTypes.CustomScrollbar:\n this.freezeCountPs++;\n break;\n case ScrollFreezeServiceTypes.All:\n this.freezeCountPs++;\n this.freezePage();\n break;\n case ScrollFreezeServiceTypes.Page:\n default:\n this.freezePage();\n break;\n }\n }\n\n private freezePage(): void {\n this.freezeCountPage++;\n if (this.freezeCountPage > 1) {\n return;\n }\n\n this.urlWhenScreenWasFrozen = this.router.url;\n\n this.bodyStyle.setProperty('top', `-${this.scrollingElement.scrollTop}px`);\n this.bodyElement.classList.add('noscroll');\n }\n\n forceScroll(x?: number, y?: number): void {\n if (this.isScrollFrozen) {\n this.bodyStyle.setProperty('top', `${-1 * (y || 0)}px`);\n } else {\n this.#window.scroll({ top: y, left: x });\n }\n }\n\n releaseScroll(type?: ScrollFreezeServiceTypes): void {\n if (type === ScrollFreezeServiceTypes.None) {\n return;\n }\n switch (type) {\n case ScrollFreezeServiceTypes.CustomScrollbar:\n this.freezeCountPs--;\n break;\n case ScrollFreezeServiceTypes.All:\n this.freezeCountPs--;\n this.releaseScrollPage();\n break;\n case ScrollFreezeServiceTypes.Page:\n default:\n this.releaseScrollPage();\n break;\n }\n }\n\n releaseScrollPage(): void {\n this.freezeCountPage--;\n if (this.freezeCountPage) {\n return;\n }\n\n // When 'position' css-property is removed (set by .noscroll class) element autoscrolls to top,\n // thus we need to save top position and manually scroll to it\n // PS: Safari returns wrong value so we check style.top first.\n const currentTopStr = this.bodyElement.style.top || this.#window.getComputedStyle(this.bodyElement)['top'] || '';\n\n this.bodyStyle.removeProperty('top');\n this.bodyElement.classList.remove('noscroll');\n\n if (this.shouldSkipResetScroll) {\n return;\n }\n\n const currentTop = Math.abs(parseInt(currentTopStr.replace(/px/gi, ''), 10));\n if (currentTop >= 0) {\n this.scrollingElement.scrollTop = currentTop;\n }\n }\n\n // if only difference is the popup being removed then do the scroll-reset on EDP so it doesnt scroll to top\n private get shouldSkipResetScroll(): boolean {\n if (this.currentRouteTag$.value !== RouteTag.EventDetails) {\n return this.isUrlHasChanged();\n }\n\n const parsedUrl = this.router.parseUrl(this.router.url);\n delete parsedUrl.queryParams?.['popup'];\n\n return this.isUrlHasChanged(parsedUrl.toString());\n }\n\n get isScrollFrozen(): boolean {\n return Boolean(this.bodyElement.classList && this.bodyElement.classList.contains('noscroll')) || this.freezeCountPs > 0;\n }\n\n private get scrollingElement(): Element {\n return this._doc.scrollingElement || this._doc.body;\n }\n\n private get bodyElement(): HTMLElement {\n return this._doc.body;\n }\n\n private get bodyStyle(): CSSStyleDeclaration {\n return this.bodyElement.style;\n }\n\n private get freezeCountPage(): number {\n return this._freezeCountPage;\n }\n\n private set freezeCountPage(value: number) {\n this._freezeCountPage = value < 0 ? 0 : value;\n }\n\n private get freezeCountPs(): number {\n return this._freezeCountPs;\n }\n\n private set freezeCountPs(value: number) {\n this._freezeCountPs = value < 0 ? 0 : value;\n }\n\n private isUrlHasChanged(url?: string): boolean {\n return (url ?? this.router.url) !== this.urlWhenScreenWasFrozen;\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Wrapper around MutationObserver API\n */\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverService {\n private defaultOptions: MutationObserverInit = {\n childList: true,\n subtree: true,\n };\n\n readonly #window = inject(WINDOW);\n\n /*\n * Provides an observable stream of DOM changes for a given element\n * */\n observe(element: HTMLElement, options: MutationObserverInit = this.defaultOptions): Observable {\n return new Observable((observer) => {\n let mutationObserver: MutationObserver | undefined;\n\n if (this.isMutationObserverSupported) {\n mutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n observer.next(mutations);\n });\n\n mutationObserver.observe(element, options);\n }\n\n const unsubscribe = () => {\n if (mutationObserver) {\n mutationObserver.disconnect();\n }\n };\n\n return unsubscribe;\n });\n }\n\n private get isMutationObserverSupported(): boolean {\n return 'MutationObserver' in this.#window;\n }\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { ElementRef, Injectable, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { InternalFeaturesConfig } from '@frontend/sports/common/client-config-data-access';\n\n@Injectable({ providedIn: 'root' })\nexport class AutomationService implements OnDestroy {\n get isActive(): boolean {\n return this.internalFeatureConfig.isAutomationDebugEnabled;\n }\n\n constructor(\n rendererFactory: RendererFactory2,\n private internalFeatureConfig: InternalFeaturesConfig,\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n private readonly attributeName = 'data-automation';\n private renderer: Renderer2;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private destroy = () => {};\n\n private removeAllAttributes(elementRef: ElementRef): void {\n const element = elementRef.nativeElement as Element;\n const attributes = Object.keys(element.attributes)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n .map((key) => {\n const attribute = element.attributes[key as keyof NamedNodeMap] as object;\n if ('name' in attribute) {\n return attribute.name as string;\n }\n return '';\n })\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n .filter((n) => n.startsWith(this.attributeName));\n\n for (const attr of attributes) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.renderer.removeAttribute(element, attr);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addAttr(elementRef: ElementRef, value: string | { [key: string]: any } | null | undefined): void {\n if (!this.isActive) {\n return;\n }\n\n this.removeAllAttributes(elementRef);\n\n if (value == null || typeof value === 'string') {\n // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore No idea why there is a typescript error here.\n this.setSimpleAttribute(elementRef, value);\n } else {\n this.setExtendedAttribute(elementRef, value);\n }\n\n this.destroy = () => this.removeAllAttributes(elementRef);\n }\n\n private setSimpleAttribute(elementRef: ElementRef, value: string | null | undefined): void {\n if (typeof value === 'undefined') {\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, 'undefined');\n\n return;\n }\n\n if (value == null) {\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, 'null');\n\n return;\n }\n\n this.renderer.setAttribute(elementRef.nativeElement, this.attributeName, value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setExtendedAttribute(elementRef: ElementRef, value: { [key: string]: any }): void {\n const keys = Object.keys(value);\n\n for (const key of keys) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.renderer.setAttribute(elementRef.nativeElement, `${this.attributeName}-${key}`, value[key]);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\nimport { AutomationService } from './automation.service';\n\n/**\n * Adds a data-automation-selector attribute to html element.\n * the input data should be passed always through binding.\n * Example:\n *
\n *
\n *
\n */\n@Directive({\n selector: '[msAutomation]',\n})\nexport class AutomationDirective {\n @Input('msAutomation')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set data(value: string | { [key: string]: any }) {\n if (!this.service.isActive) {\n return;\n }\n\n this.service.addAttr(this.elementRef, value);\n }\n\n constructor(\n private service: AutomationService,\n private elementRef: ElementRef,\n ) {\n if (!service.isActive) {\n // Add a safe check is somebody did not used a binding for the data.\n const elm = elementRef.nativeElement as Element;\n const hasAttribute = elm.hasAttribute('msAutomation');\n if (hasAttribute) {\n elm.removeAttribute('msAutomation');\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AutomationDirective } from './automation.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AutomationDirective],\n exports: [AutomationDirective],\n})\nexport class AutomationModule {}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function (window, document, exportName, undefined) {\n 'use strict';\n\n var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\n var TEST_ELEMENT = document.createElement('div');\n var TYPE_FUNCTION = 'function';\n var round = Math.round;\n var abs = Math.abs;\n var now = Date.now;\n\n /**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\n function setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n }\n\n /**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n }\n\n /**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\n function each(obj, iterator, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n }\n\n /**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\n function deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\n var assign;\n if (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n } else {\n assign = Object.assign;\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n var extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n }, 'extend', 'Use `assign`.');\n\n /**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n var merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n }, 'merge', 'Use `assign`.');\n\n /**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n function inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign(childP, properties);\n }\n }\n\n /**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\n function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n }\n\n /**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n function boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n }\n\n /**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\n function ifUndefined(val1, val2) {\n return val1 === undefined ? val2 : val1;\n }\n\n /**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n }\n\n /**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n }\n\n /**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\n function hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\n function inStr(str, find) {\n return str.indexOf(find) > -1;\n }\n\n /**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n function splitStr(str) {\n return str.trim().split(/\\s+/g);\n }\n\n /**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\n function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n i++;\n }\n return -1;\n }\n }\n\n /**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\n function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n }\n\n /**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n function uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n }\n\n /**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n function prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n }\n\n /**\n * get a unique id\n * @returns {number} uniqueId\n */\n var _uniqueId = 1;\n function uniqueId() {\n return _uniqueId++;\n }\n\n /**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\n function getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n }\n var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n var SUPPORT_TOUCH = 'ontouchstart' in window;\n var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\n var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n var INPUT_TYPE_TOUCH = 'touch';\n var INPUT_TYPE_PEN = 'pen';\n var INPUT_TYPE_MOUSE = 'mouse';\n var INPUT_TYPE_KINECT = 'kinect';\n var COMPUTE_INTERVAL = 25;\n var INPUT_START = 1;\n var INPUT_MOVE = 2;\n var INPUT_END = 4;\n var INPUT_CANCEL = 8;\n var DIRECTION_NONE = 1;\n var DIRECTION_LEFT = 2;\n var DIRECTION_RIGHT = 4;\n var DIRECTION_UP = 8;\n var DIRECTION_DOWN = 16;\n var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\n var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\n var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n var PROPS_XY = ['x', 'y'];\n var PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n /**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n this.init();\n }\n Input.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function () {},\n /**\n * bind the events\n */\n init: function () {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n /**\n * unbind the events\n */\n destroy: function () {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n };\n\n /**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n function createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n }\n\n /**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n function inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n }\n\n /**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n function computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n }\n function computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n }\n\n /**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n function computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity,\n velocityX,\n velocityY,\n direction;\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n }\n\n /**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n }\n\n /**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n function getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0,\n y = 0,\n i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n }\n\n /**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\n function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n }\n\n /**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n }\n\n /**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n }\n\n /**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n }\n\n /**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n }\n\n /**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n }\n var MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n };\n var MOUSE_ELEMENT_EVENTS = 'mousedown';\n var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n /**\n * Mouse events input\n * @constructor\n * @extends Input\n */\n function MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n }\n inherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n });\n var POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n };\n\n // in IE10 the pointer types is defined as an enum\n var IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n };\n var POINTER_ELEMENT_EVENTS = 'pointerdown';\n var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n // IE10 has prefixed support, and case-sensitive\n if (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n }\n\n /**\n * Pointer events input\n * @constructor\n * @extends Input\n */\n function PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n Input.apply(this, arguments);\n this.store = this.manager.session.pointerEvents = [];\n }\n inherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType == INPUT_TYPE_TOUCH;\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n });\n var SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\n var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Touch events input\n * @constructor\n * @extends Input\n */\n function SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n Input.apply(this, arguments);\n }\n inherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n return [all, changed];\n }\n var TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n function TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n Input.apply(this, arguments);\n }\n inherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n }\n\n /**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\n var DEDUP_TIMEOUT = 2500;\n var DEDUP_DISTANCE = 25;\n function TouchMouseInput() {\n Input.apply(this, arguments);\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n this.primaryTouch = null;\n this.lastTouches = [];\n }\n inherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType == INPUT_TYPE_TOUCH,\n isMouse = inputData.pointerType == INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n this.callback(manager, inputEvent, inputData);\n },\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n });\n function recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n }\n function setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function () {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n }\n function isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX,\n y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x),\n dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n }\n var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\n var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n // magical touchAction value\n var TOUCH_ACTION_COMPUTE = 'compute';\n var TOUCH_ACTION_AUTO = 'auto';\n var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n var TOUCH_ACTION_NONE = 'none';\n var TOUCH_ACTION_PAN_X = 'pan-x';\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n var TOUCH_ACTION_MAP = getTouchActionProps();\n\n /**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n TouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function (value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n /**\n * just re-set the touchAction value\n */\n update: function () {\n this.set(this.manager.options.touchAction);\n },\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function () {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function (input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n },\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function (srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n };\n\n /**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n }\n function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n }\n\n /**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n var STATE_POSSIBLE = 1;\n var STATE_BEGAN = 2;\n var STATE_CHANGED = 4;\n var STATE_ENDED = 8;\n var STATE_RECOGNIZED = STATE_ENDED;\n var STATE_CANCELLED = 16;\n var STATE_FAILED = 32;\n\n /**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n function Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n this.id = uniqueId();\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n Recognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function (options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function () {\n return this.requireFail.length > 0;\n },\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function (otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function (input) {\n var self = this;\n var state = this.state;\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function (input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function () {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function (inputData) {},\n // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function () {},\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function () {}\n };\n\n /**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\n function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n }\n\n /**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\n function directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n }\n\n /**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\n function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n }\n\n /**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n function AttrRecognizer() {\n Recognizer.apply(this, arguments);\n }\n inherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function (input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function (input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n });\n\n /**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n this.pX = null;\n this.pY = null;\n }\n inherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n getTouchAction: function () {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n directionTest: function (input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n attrTest: function (input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n },\n emit: function (input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n function PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n emit: function (input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n function PressRecognizer() {\n Recognizer.apply(this, arguments);\n this._timer = null;\n this._input = null;\n }\n inherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_AUTO];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function (input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n function RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n });\n\n /**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n getTouchAction: function () {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n attrTest: function (input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return this._super.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n emit: function (input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n }\n });\n\n /**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n function TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n inherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_MANIPULATION];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n failTimeout: function () {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function () {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n }\n\n /**\n * @const {string}\n */\n Hammer.VERSION = '2.0.7';\n\n /**\n * default settings\n * @namespace\n */\n Hammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {\n enable: false\n }], [PinchRecognizer, {\n enable: false\n }, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n }, ['tap']], [PressRecognizer]],\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n };\n var STOP = 1;\n var FORCED_STOP = 2;\n\n /**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n Manager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function (options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function (force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n curRecognizer = session.curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (\n // 1\n !curRecognizer || recognizer == curRecognizer ||\n // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function (recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function (recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n },\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function (recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n return this;\n },\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function (events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function (events, handler) {\n if (events === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function (event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function () {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n };\n\n /**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n function toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n }\n\n /**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n function triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n }\n assign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n });\n\n // this prevents errors when Hammer is loaded in the presence of an AMD\n // style loader but by script tag, not by the loader.\n var freeGlobal = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}; // jshint ignore:line\n freeGlobal.Hammer = Hammer;\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Hammer;\n });\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n } else {\n window[exportName] = Hammer;\n }\n})(window, document, 'Hammer');","import { Injectable, NgZone, inject } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\n\nexport class EventService {\n protected _subject$: Subject | undefined;\n private subscription: Subscription | undefined;\n private _eventAuditTime = 150;\n private get subject(): Subject {\n if (!this._subject$) {\n this.setup();\n return this._subject$;\n } else {\n return this._subject$;\n }\n }\n constructor(\n private zone: NgZone,\n private target: Element | Window,\n private event: string,\n ) {}\n\n subscribe(next?: (target: EventTarget) => void, error?: (error: unknown) => void, complete?: () => void): Subscription {\n return this.subject.subscribe({ next, error, complete });\n }\n\n asObservable(): Observable {\n return this.subject.asObservable();\n }\n\n private listener(): void {\n this.zone.run(() => {\n if (!this._subject$ || !this._subject$.observed) {\n this.subscription?.unsubscribe();\n this._subject$ = undefined;\n } else {\n this._subject$.next(this.target);\n }\n });\n }\n\n private setup(): asserts this is this & { _subject$: Subject } {\n this._subject$ = new Subject();\n\n this.zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this.target, this.event)\n .pipe(auditTime(this._eventAuditTime))\n .subscribe(() => {\n this.listener();\n });\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class WindowEventService {\n readonly #window = inject(WINDOW);\n\n constructor(private zone: NgZone) {}\n\n scroll = new EventService(this.zone, this.#window, 'scroll');\n resize = new EventService(this.zone, this.#window, 'resize');\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error */\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\n\nimport { EventService } from '@frontend/sports/common/core/utils/window-event';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nexport type ScrollElement = Element | Window;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollContainerService {\n target: ScrollElement | undefined;\n eventTarget: ScrollElement | undefined;\n private scrollSubject = new Subject();\n private scrollSubscription: Subscription | undefined;\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n\n constructor(private zone: NgZone) {\n this.setTarget((this._doc.scrollingElement || this.#window) as ScrollElement, this.#window);\n }\n\n get scroll(): Observable {\n return this.scrollSubject.asObservable();\n }\n\n get scrollTop(): number {\n return (this.target as Window).scrollY || (this.target as Element).scrollTop || 0;\n }\n\n get height(): number {\n return (this.target as Window).innerHeight || (this.target as Element).clientHeight;\n }\n\n get container(): HTMLElement {\n //@ts-ignore allow dynamic accessor, please don't use this, instead, use typing.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.target['document'] || this.target;\n }\n\n get scrollHeight(): number {\n return (this.target as Element).scrollHeight;\n }\n\n scrollTo(x?: number, y?: number): void {\n requestAnimationFrame(() => {\n const element = this.target as Element;\n\n if (x !== undefined) {\n element.scrollLeft = -x;\n }\n\n if (y !== undefined) {\n element.scrollTop = -y;\n }\n });\n }\n\n scrollToDelta(x?: number, y?: number): void {\n requestAnimationFrame(() => {\n const element = this.target as Element;\n\n if (x !== undefined) {\n element.scrollLeft = element.scrollLeft + x;\n }\n\n if (y !== undefined) {\n element.scrollTop = element.scrollTop + y;\n }\n });\n }\n\n /**\n * Set the element that will be scrolling.\n *\n * The method has two parameters because on mobile, at least, we can have the following situation:\n * - when calling window.scrollTop the property is 0 even if the page is scrolled\n * - if we use document.scrollingElement then the scrollTop property is correct but the scroll event does not fire on this element\n *\n * So the `target` element is the one that returns the correct `scrollTop` and the `scrollEventTarget` is the element on which the `scroll` event fires.\n *\n * :(\n *\n * @param target - element that returns the correct `scrollTop` value\n * @param [scrollEventTarget] - element on which the `scroll` event fires\n * @memberof ScrollContainerService\n */\n setTarget(target: ScrollElement, scrollEventTarget?: ScrollElement): void {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n\n this.eventTarget = scrollEventTarget || target;\n const scrollService = new EventService(this.zone, this.eventTarget, 'scroll');\n\n this.target = target;\n this.scrollSubscription = scrollService.subscribe(() => {\n this.scrollSubject.next(target);\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/consistent-type-assertions\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n promise: Promise;\n resolve!: (value?: T | PromiseLike) => void;\n reject!: (reason?: any) => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */\nimport { ComponentRef, ViewRef } from '@angular/core';\n\nimport { Deferred } from '@frontend/sports/common/core/utils/deferred';\nimport { isPromise } from '@frontend/sports/common/core/utils/extended-types';\nimport { ReplaySubject } from 'rxjs';\n\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalCoverComponent } from './modal-cover.component';\nimport { ModalWindowComponent, PopupClosingResult } from './modal-window.component';\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef,\n ) {}\n}\n\n/**\n * A reference to an active (currently opened) modal. Instances of this class\n * can be injected into components passed as modal content.\n */\nexport class ActiveModal {\n /**\n * Can be used to close a modal, passing an optional result.\n */\n //lint rule disabled because the function is meant to be overriden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n close(reason?: any): void {}\n\n /**\n * Can be used to dismiss a modal, passing an optional reason.\n */\n //lint rule disabled because the function is meant to be overriden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n dismiss(reason?: any): void {}\n\n /**\n * A promise that is resolved when a modal is closed and rejected when a modal is dismissed.\n */\n result: Promise;\n}\n\n/**\n * A reference to a newly opened modal.\n */\nexport class ModalRef {\n private static readonly SPACE = ' ';\n private updateData$ = new ReplaySubject(1);\n\n readonly newData$ = this.updateData$.asObservable();\n\n /**\n * The instance of component used as modal's content.\n * Undefined when a TemplateRef is used as modal's content.\n */\n get componentInstance(): any {\n if (this._contentRef?.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The instance of componentRef used as modal's content.\n * Undefined when a TemplateRef is used as modal's content.\n */\n get componentRef(): any {\n if (this._contentRef?.componentRef) {\n return this._contentRef.componentRef;\n }\n }\n\n constructor(\n private _windowCmptRef: ComponentRef | null,\n private _contentRef: ContentRef | null,\n private _backdropCmptRef?: ComponentRef | null,\n private _coverCmptRef?: ComponentRef | null,\n private _beforeDismiss?: () => boolean | Promise,\n ) {\n _windowCmptRef?.instance.dismiss.subscribe(this.dismiss.bind(this));\n\n this.deferred = new Deferred();\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.deferred.promise.then(null, () => {});\n }\n\n updateTitle(title: string): void {\n const windowComponentInstance = this._windowCmptRef?.instance;\n\n if (windowComponentInstance) {\n windowComponentInstance.title = title;\n }\n }\n\n updateData(data: object): void {\n this.updateData$.next(data);\n }\n\n private deferred: Deferred;\n\n /**\n * A promise that is resolved when a modal is closed and rejected when a modal is dismissed.\n */\n get result(): Promise {\n return this.deferred.promise;\n }\n\n /**\n * Append a class name to class list.\n *\n * @param currentClasses\n */\n private appendClass(currentClasses: string, newClass: string): string {\n const classList = currentClasses.split(ModalRef.SPACE);\n classList.push(newClass);\n\n return classList.join(ModalRef.SPACE);\n }\n\n /**\n * Add a css class to the modal-window root\n */\n addWindowClass(windowClass: string): this {\n const windowComponentInstance = this._windowCmptRef && this._windowCmptRef.instance;\n if (windowComponentInstance) {\n windowComponentInstance.windowClass = this.appendClass(windowComponentInstance.windowClass, windowClass);\n }\n\n return this;\n }\n\n /**\n * Add a new class to the backdrop element.\n *\n * @param newClass the class to add.\n */\n addBackdropClass(newClass: string): this {\n const backdrop = this._backdropCmptRef && this._backdropCmptRef.instance;\n if (backdrop) {\n backdrop.backdropClass = this.appendClass(backdrop.backdropClass, newClass);\n }\n\n return this;\n }\n\n /**\n * Can be used to close a modal, passing an optional result.\n */\n close(result?: PopupClosingResult): void {\n if (this._windowCmptRef) {\n this.deferred.resolve(result);\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n this.deferred.reject(reason);\n this._removeModalElements();\n }\n\n /**\n * Can be used to dismiss a modal, passing an optional reason.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(\n (result: any) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n );\n //lint rule disabled to explicitly compare to false values, undefined or nulls should still dismiss\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef?.location.nativeElement as HTMLElement;\n windowNativeEl.remove();\n this._windowCmptRef?.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement as HTMLElement;\n backdropNativeEl.remove();\n this._backdropCmptRef.destroy();\n }\n\n if (this._coverCmptRef) {\n const coverNativeEl = this._coverCmptRef.location.nativeElement as HTMLElement;\n coverNativeEl.remove();\n this._coverCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n this._coverCmptRef = null;\n }\n}\n","!function (win) {\n /**\n * FastDom\n *\n * Eliminates layout thrashing\n * by batching DOM read/write\n * interactions.\n *\n * @author Wilson Page \n * @author Kornel Lesinski \n */\n\n 'use strict';\n\n /**\n * Mini logger\n *\n * @return {Function}\n */\n var debug = 0 ? console.log.bind(console, '[fastdom]') : function () {};\n\n /**\n * Normalized rAF\n *\n * @type {Function}\n */\n var raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {\n return setTimeout(cb, 16);\n };\n\n /**\n * Initialize a `FastDom`.\n *\n * @constructor\n */\n function FastDom() {\n var self = this;\n self.reads = [];\n self.writes = [];\n self.raf = raf.bind(win); // test hook\n debug('initialized', self);\n }\n FastDom.prototype = {\n constructor: FastDom,\n /**\n * We run this inside a try catch\n * so that if any jobs error, we\n * are able to recover and continue\n * to flush the batch until it's empty.\n *\n * @param {Array} tasks\n */\n runTasks: function (tasks) {\n debug('run tasks');\n var task;\n while (task = tasks.shift()) task();\n },\n /**\n * Adds a job to the read batch and\n * schedules a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n measure: function (fn, ctx) {\n debug('measure');\n var task = !ctx ? fn : fn.bind(ctx);\n this.reads.push(task);\n scheduleFlush(this);\n return task;\n },\n /**\n * Adds a job to the\n * write batch and schedules\n * a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n mutate: function (fn, ctx) {\n debug('mutate');\n var task = !ctx ? fn : fn.bind(ctx);\n this.writes.push(task);\n scheduleFlush(this);\n return task;\n },\n /**\n * Clears a scheduled 'read' or 'write' task.\n *\n * @param {Object} task\n * @return {Boolean} success\n * @public\n */\n clear: function (task) {\n debug('clear', task);\n return remove(this.reads, task) || remove(this.writes, task);\n },\n /**\n * Extend this FastDom with some\n * custom functionality.\n *\n * Because fastdom must *always* be a\n * singleton, we're actually extending\n * the fastdom instance. This means tasks\n * scheduled by an extension still enter\n * fastdom's global task queue.\n *\n * The 'super' instance can be accessed\n * from `this.fastdom`.\n *\n * @example\n *\n * var myFastdom = fastdom.extend({\n * initialize: function() {\n * // runs on creation\n * },\n *\n * // override a method\n * measure: function(fn) {\n * // do extra stuff ...\n *\n * // then call the original\n * return this.fastdom.measure(fn);\n * },\n *\n * ...\n * });\n *\n * @param {Object} props properties to mixin\n * @return {FastDom}\n */\n extend: function (props) {\n debug('extend', props);\n if (typeof props != 'object') throw new Error('expected object');\n var child = Object.create(this);\n mixin(child, props);\n child.fastdom = this;\n\n // run optional creation hook\n if (child.initialize) child.initialize();\n return child;\n },\n // override this with a function\n // to prevent Errors in console\n // when tasks throw\n catch: null\n };\n\n /**\n * Schedules a new read/write\n * batch if one isn't pending.\n *\n * @private\n */\n function scheduleFlush(fastdom) {\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n fastdom.raf(flush.bind(null, fastdom));\n debug('flush scheduled');\n }\n }\n\n /**\n * Runs queued `read` and `write` tasks.\n *\n * Errors are caught and thrown by default.\n * If a `.catch` function has been defined\n * it is called instead.\n *\n * @private\n */\n function flush(fastdom) {\n debug('flush');\n var writes = fastdom.writes;\n var reads = fastdom.reads;\n var error;\n try {\n debug('flushing reads', reads.length);\n fastdom.runTasks(reads);\n debug('flushing writes', writes.length);\n fastdom.runTasks(writes);\n } catch (e) {\n error = e;\n }\n fastdom.scheduled = false;\n\n // If the batch errored we may still have tasks queued\n if (reads.length || writes.length) scheduleFlush(fastdom);\n if (error) {\n debug('task errored', error.message);\n if (fastdom.catch) fastdom.catch(error);else throw error;\n }\n }\n\n /**\n * Remove an item from an Array.\n *\n * @param {Array} array\n * @param {*} item\n * @return {Boolean}\n */\n function remove(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n /**\n * Mixin own properties of source\n * object into the target.\n *\n * @param {Object} target\n * @param {Object} source\n */\n function mixin(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) target[key] = source[key];\n }\n }\n\n // There should never be more than\n // one instance of `FastDom` in an app\n var exports = win.fastdom = win.fastdom || new FastDom(); // jshint ignore:line\n\n // Expose to CJS & AMD\n if (typeof define == 'function') define(function () {\n return exports;\n });else if (typeof module == 'object') module.exports = exports;\n}(typeof window !== 'undefined' ? window : typeof this != 'undefined' ? this : globalThis);","import { InjectionToken } from '@angular/core';\n\nexport interface ModalWindowConfig {\n animatePopupDismiss?: boolean;\n showCloseIcon?: boolean;\n}\n\nexport const MODAL_WINDOW_CONFIG = new InjectionToken('MODAL_WINDOW_CONFIG');\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\nimport { isDefined } from '@frontend/sports/common/core/utils/extended-types';\nimport fastdom from 'fastdom';\nimport { Observable, first, from, of } from 'rxjs';\n\nimport { OpenedModalsStorageService } from './opened-modals-storage.service';\n\ninterface PanOffset {\n currentY?: number;\n currentX?: number;\n}\n\ninterface BackgroundAnimationOptions {\n duration: number;\n fromScale?: string;\n toScale?: string;\n fromPosition?: number;\n toPosition?: number;\n isEdpBackground?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalAnimationHelperService {\n readonly closingRatioY = 0.2;\n readonly closingRatioX = 0.5;\n readonly minBackgroundScaleValue = 0.9;\n readonly minBackgroundScale = `scale(${this.minBackgroundScaleValue})`;\n readonly maxBackgroundScale = 'scale(1)';\n readonly minCoverElementPosition = 'translateY(-100%)';\n readonly maxCoverElementPosition = 'translateY(0%)';\n readonly animationDurationY = 500;\n readonly animationDurationX = 350;\n readonly maxBackdropOpacity = 0.25;\n readonly maxBackgroundPanValue = Math.round(window.screen.width * 0.33);\n private renderer: Renderer2;\n private _backgroundWindow: HTMLElement | null;\n private readonly _doc = inject(DOCUMENT);\n\n private get slotApp(): HTMLElement | null {\n return this._doc.querySelector('.slot-app');\n }\n\n private get backgroundWindow(): HTMLElement | null {\n return (this._backgroundWindow ??= this._doc.querySelector('.app-root'));\n }\n\n private get modalWindow(): HTMLElement | null {\n const modals = this._doc.querySelectorAll('ms-modal-window');\n return modals[modals.length - 1];\n }\n\n constructor(\n private openedModals: OpenedModalsStorageService,\n private rendererFactory: RendererFactory2,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n addSlideWithScale(): void {\n this.tryHideSlotApp();\n\n this.animateModal(true, { currentY: 0 }, this.animationDurationY).subscribe(() => {\n this.tryShowSlotApp();\n });\n\n fastdom.mutate(() => {\n requestAnimationFrame(() => {\n this.animateCoverElement(this.maxCoverElementPosition, this.minCoverElementPosition, this.animationDurationY);\n this.animateBackdrop(this.maxBackdropOpacity, 0, this.animationDurationY);\n this.animateBackground({\n fromScale: this.minBackgroundScale,\n toScale: this.maxBackgroundScale,\n duration: this.animationDurationY,\n isEdpBackground: this.openedModals.edpModal && this.openedModals.count > 1,\n }).subscribe(() => {\n this.renderer.removeStyle(this.backgroundWindow, 'will-change');\n });\n });\n });\n }\n\n addSlideOutHorizontal(): void {\n this.animateBackdrop(this.maxBackdropOpacity, 0, this.animationDurationX);\n this.animateBackground({ fromPosition: this.maxBackgroundPanValue, toPosition: 0, duration: this.animationDurationX }).subscribe();\n this.animateModal(true, { currentX: 0 }, this.animationDurationX).subscribe();\n }\n\n animateModal(shouldSlideOut: boolean, { currentY, currentX }: PanOffset, duration: number): Observable {\n if (!this.modalWindow || duration === 0) {\n return of();\n }\n\n let keyframes: Keyframe[] = [];\n if (isDefined(currentY)) {\n keyframes = [{ top: `${currentY}px` }, { top: shouldSlideOut ? `${window.screen.height}px` : '0px' }];\n } else if (isDefined(currentX)) {\n this.renderer.setStyle(this.modalWindow, 'min-width', '100vw');\n keyframes = [{ left: `${currentX}px` }, { left: shouldSlideOut ? `${window.screen.width}px` : '0px' }];\n }\n\n return from(this.modalWindow.animate(keyframes, this.animationOptions(duration)).finished).pipe(first());\n }\n\n calculateAnimationTime({ currentY, currentX }: PanOffset): number {\n if (currentY) {\n const timeForDistance = Math.round(this.animationDurationY * (currentY / window.screen.height));\n return currentY < window.screen.height * this.closingRatioY ? timeForDistance : this.animationDurationY - timeForDistance;\n } else if (currentX) {\n const timeForDistance = Math.round(this.animationDurationX * (currentX / window.screen.width));\n return currentX < window.screen.width * this.closingRatioX ? timeForDistance : this.animationDurationX - timeForDistance;\n }\n\n return 0;\n }\n\n animateBackdrop(fromOpacity: number, toOpacity: number, duration: number): void {\n const backdrops = this._doc.querySelectorAll('ms-modal-backdrop');\n const modalBackdrop = backdrops[backdrops.length - 1];\n\n if (this.openedModals.count > 1 || !modalBackdrop || duration === 0) {\n return;\n }\n\n modalBackdrop.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], this.animationOptions(duration));\n }\n\n animateCoverElement(fromPosition: string, toPosition: string, duration: number): void {\n const coverElements = this._doc.querySelectorAll('ms-modal-cover');\n const coverElement = coverElements[coverElements.length - 1];\n\n if (!coverElement || duration === 0) {\n return;\n }\n\n coverElement.animate([{ transform: fromPosition }, { transform: toPosition }], this.animationOptions(duration)).finished.then(() => {\n if (toPosition !== this.minCoverElementPosition) {\n this.renderer.setStyle(coverElement, 'transform', this.minCoverElementPosition);\n }\n });\n }\n\n animateBackground({\n fromScale,\n toScale,\n duration,\n fromPosition,\n toPosition,\n isEdpBackground,\n }: BackgroundAnimationOptions): Observable {\n if (!this.backgroundWindow || duration === 0) {\n return of(undefined);\n }\n\n let backgroundToAnimate = isEdpBackground ? this._doc.querySelector('.event-details-modal') : this.backgroundWindow;\n if (backgroundToAnimate) {\n let keyframes: Keyframe[] = [];\n if (isDefined(fromScale) && isDefined(toScale)) {\n this.renderer.setStyle(backgroundToAnimate, 'will-change', 'transform');\n this.setTransformOriginCoordinates();\n keyframes = [{ transform: fromScale }, { transform: toScale }];\n } else if (isDefined(fromPosition) && isDefined(toPosition)) {\n this.renderer.setStyle(backgroundToAnimate, 'display', 'block');\n this.renderer.setStyle(backgroundToAnimate, 'position', 'relative');\n this.renderer.setStyle(backgroundToAnimate, 'will-change', 'right');\n keyframes = [{ right: `${fromPosition}px` }, { right: `${toPosition}px` }];\n }\n\n return from(backgroundToAnimate.animate(keyframes, this.animationOptions(duration)).finished).pipe(first());\n }\n return of(undefined);\n }\n\n setTransformOriginCoordinates(): void {\n if (!this.backgroundWindow) {\n return;\n }\n\n const scrollY = this.getScrollValueFromBody();\n const viewPortY = window.screen.height / 2;\n const viewPortX = Math.round(window.screen.width / 2);\n this.renderer.setStyle(this.backgroundWindow, 'transform-origin', `${viewPortX}px ${Math.round(scrollY + viewPortY)}px`);\n }\n\n tryShowSlotApp(): void {\n if (this.slotApp && this.openedModals.count <= 1) {\n this.renderer.removeStyle(this.slotApp, 'visibility');\n }\n }\n\n tryHideSlotApp(): void {\n if (this.slotApp && this.openedModals.count <= 1) {\n this.renderer.setStyle(this.slotApp, 'visibility', 'hidden');\n }\n }\n\n private getScrollValueFromBody(): number {\n const scrollValue = Number.parseInt(this._doc.body.style.top.replace(/^\\D+/g, ''), 10);\n if (!isNaN(scrollValue)) {\n return scrollValue;\n }\n return 0;\n }\n\n private animationOptions(duration: number): KeyframeAnimationOptions {\n return {\n duration,\n iterations: 1,\n easing: 'ease',\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { HtmlNode } from '@frontend/vanilla/core';\nimport { remove } from 'lodash-es';\n\nimport { ModalRef } from '../common/modal-ref';\nimport { PopupAction } from '../common/modal-window.component';\nimport { ModalDialogComponent } from './modal-dialog.component';\n\n@Injectable({ providedIn: 'root' })\nexport class OpenedModalsStorageService {\n private openedModals: ModalRef[] = [];\n\n constructor(private htmlNode: HtmlNode) {}\n\n set openedModal(modalRef: ModalRef) {\n this.openedModals.push(modalRef);\n }\n\n get activeModal(): ModalRef | undefined {\n return this.openedModals[this.openedModals.length - 1];\n }\n\n get count(): number {\n return this.openedModals.length;\n }\n\n removeCurrent(modalRef: ModalRef): void {\n remove(this.openedModals, (m) => m === modalRef);\n }\n\n tryCloseSeeAll(isBabPopup: boolean): void {\n if (!isBabPopup) {\n return;\n }\n\n this.openedModals\n .find((m) => (m.componentInstance as ModalDialogComponent)?.dialogSettings.headerSelector === 'ms-option-panel-header')\n ?.close({ closeAction: PopupAction.ManualClose });\n\n this.htmlNode.setCssClass('sheet-view-for-market-for-sgp', false);\n }\n\n get edpModal(): ModalRef | undefined {\n return this.openedModals.find((m) => (m.componentInstance as ModalDialogComponent)?.dialogSettings.headerSelector === 'event-details-modal');\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Inject, Injectable, InjectionToken, Renderer2, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HammerGestureConfig } from '@angular/platform-browser';\n\nimport { AppConfig } from '@frontend/sports/common/client-config-data-access';\nimport { MutationObserverService } from '@frontend/sports/common/core/utils/dom';\nimport { fromSportsLeave } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport fastdom from 'fastdom';\nimport { TouchMouseInput } from 'hammerjs';\nimport { Subscription, animationFrames, exhaustMap, filter, fromEvent, take, tap } from 'rxjs';\n\nimport { GestureOptions, PopupAction } from '../common/modal-window.component';\nimport { ModalAnimationHelperService } from './modal-animation-helper.service';\nimport { OpenedModalsStorageService } from './opened-modals-storage.service';\n\nexport const VERTICAL_GESTURE_CONFIG = new InjectionToken('ModalGestureVerticalConfig');\n\n@Injectable()\nexport class ModalGestureVerticalConfig extends HammerGestureConfig {\n override overrides = {\n pan: {\n direction: Hammer.DIRECTION_VERTICAL,\n },\n };\n\n override options = {\n inputClass: TouchMouseInput,\n touchAction: 'pan-y',\n };\n}\n\n@Injectable()\nexport class ModalGestureService {\n private readonly willChange = 'will-change';\n private isDragging = false;\n private isAnimating = false;\n private currentY = 0;\n private readonly destroyRef = inject(DestroyRef);\n private currentBackgroundScale = this.animationHelper.minBackgroundScaleValue;\n private currentBackdropOpacity = this.animationHelper.maxBackdropOpacity;\n private modalWindow: HTMLElement;\n private backgroundWindow: HTMLElement | null;\n private readonly closingVelocity = 0.5; //velocity expressed in px/ms.\n private readonly coverElementHeight = window.screen.height * 0.05;\n private isEdpModalBackground: boolean;\n private readonly sportsLeaveSub: Subscription;\n private readonly _doc = inject(DOCUMENT);\n private _scrollContainer: HTMLElement | null;\n private _headerHeight?: number;\n private scrollTargetQuerySelector?: string;\n private headerSelector?: string;\n\n private get modalBackdrop(): HTMLElement {\n const backdrops = this._doc.querySelectorAll('ms-modal-backdrop');\n return backdrops[backdrops.length - 1];\n }\n\n private get modalCover(): HTMLElement {\n const covers = this._doc.querySelectorAll('ms-modal-cover');\n return covers[covers.length - 1];\n }\n\n private get edpCoverElement(): HTMLElement | null {\n return this._doc.querySelectorAll('.modal-gestures-cover')[0];\n }\n\n private get slotApp(): HTMLElement | null {\n return this._doc.querySelector('.slot-app');\n }\n\n private get scrollContainer(): HTMLElement | null {\n if (!this.scrollTargetQuerySelector) {\n return null;\n }\n\n return (this._scrollContainer ??= this.modalWindow.querySelector(this.scrollTargetQuerySelector));\n }\n\n private get headerHeight(): number {\n if (!this.headerSelector) {\n return 0;\n }\n\n return (this._headerHeight ??= this.modalWindow.querySelector(this.headerSelector)?.clientHeight ?? 0);\n }\n\n constructor(\n @Inject(VERTICAL_GESTURE_CONFIG) private hammerGestureConfig: HammerGestureConfig,\n private openedModals: OpenedModalsStorageService,\n private appConfig: AppConfig,\n private renderer: Renderer2,\n private animationHelper: ModalAnimationHelperService,\n private mutationObserverService: MutationObserverService,\n ) {\n if (this.appConfig.modalDialogGesturesEnabled) {\n this.destroyRef.onDestroy(() => {\n this.sportsLeaveSub.unsubscribe();\n this.onDestroyCleanup();\n });\n\n this.sportsLeaveSub = fromSportsLeave().subscribe(() => {\n this.onDestroyCleanup();\n });\n }\n }\n\n private onDestroyCleanup(): void {\n if (!this.openedModals.count && this.modalWindow) {\n this.renderer.removeAttribute(this.modalWindow, 'style');\n this.renderer.removeAttribute(this.backgroundWindow, 'style');\n }\n }\n\n addGestures(modalWindow: unknown, { enabled, headerSelector, scrollTargetQuerySelector }: GestureOptions): void {\n if (!this.appConfig.modalDialogGesturesEnabled || !(modalWindow instanceof HTMLElement) || !enabled) {\n return;\n }\n\n this.isEdpModalBackground = !!this.openedModals.edpModal;\n\n this.backgroundWindow = this.isEdpModalBackground\n ? this._doc.querySelector('.event-details-modal')\n : this._doc.querySelector('.app-root');\n\n this.modalWindow = modalWindow;\n this.scrollTargetQuerySelector = scrollTargetQuerySelector;\n this.headerSelector = headerSelector;\n\n this.initCoverElement();\n this.initModalBackdrop();\n this.handlePanEvents(this.modalWindow);\n this.modifyModalHeight();\n }\n\n private initModalBackdrop(): void {\n if (this.openedModals.count <= 1 || this.isEdpModalBackground) {\n fastdom.mutate(() => {\n this.renderer.setStyle(this.backgroundWindow, this.willChange, 'transform');\n requestAnimationFrame(() => {\n this.animationHelper.animateBackdrop(0, this.animationHelper.maxBackdropOpacity, this.animationHelper.animationDurationY);\n // We use the coverElement to hide content above the header.\n this.animationHelper.animateCoverElement(\n this.animationHelper.minCoverElementPosition,\n this.animationHelper.maxCoverElementPosition,\n this.animationHelper.animationDurationY,\n );\n this.renderer.setStyle(this.backgroundWindow, 'display', 'block');\n this.animateBackground(this.animationHelper.minBackgroundScale, this.animationHelper.animationDurationY);\n });\n });\n }\n }\n\n private initCoverElement(): void {\n if (this.openedModals.count > 1 && !this.openedModals.edpModal) {\n return;\n }\n\n if (this.openedModals.edpModal) {\n this.renderer.addClass(this.modalCover, 'event-details-overlay');\n } else {\n this.renderer.setStyle(this.modalCover, 'height', `${this.coverElementHeight}px`);\n }\n }\n\n private handlePanEvents(panElement: HTMLElement): void {\n const hammer = this.hammerGestureConfig.buildHammer(panElement);\n\n fromEvent(hammer, 'panstart')\n .pipe(\n filter((pan) => this.allowedToPan(pan)),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() =>\n fastdom.mutate(() => {\n this.handlePanstart();\n }),\n );\n\n fromEvent(hammer, 'panmove')\n .pipe(\n filter((pan) => this.isDragging && pan.deltaY > 0),\n takeUntilDestroyed(this.destroyRef),\n exhaustMap((pan) =>\n animationFrames().pipe(\n take(1),\n tap(() =>\n fastdom.mutate(() => {\n this.handlePanmove(pan);\n }),\n ),\n ),\n ),\n )\n .subscribe();\n\n fromEvent(hammer, 'panend')\n .pipe(\n filter(() => this.isDragging),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((pan) =>\n fastdom.mutate(() => {\n this.handlePanend(pan.velocity);\n }),\n );\n }\n\n private allowedToPan(pan: HammerInput): boolean {\n const scrolledTop = !!(this.scrollContainer && this.scrollContainer.scrollTop < 10);\n const panOnHeader = this.headerHeight ? Math.round((pan.srcEvent as TouchEvent).touches[0].clientY) <= this.headerHeight : true;\n\n return !this.isDragging && !this.isAnimating && pan.direction === Hammer.DIRECTION_DOWN && (scrolledTop || panOnHeader);\n }\n\n private handlePanstart(): void {\n this.isDragging = true;\n if (this.openedModals.count <= 1) {\n this.renderer.setStyle(this.backgroundWindow, 'display', 'block');\n this.renderer.setStyle(this.backgroundWindow, this.willChange, 'transform');\n this.animationHelper.setTransformOriginCoordinates();\n }\n this.animationHelper.tryHideSlotApp();\n this.renderer.setStyle(this.modalWindow, 'height', '100%');\n this.renderer.setStyle(this.modalWindow, this.willChange, 'top');\n }\n\n private handlePanmove(event: HammerInput): void {\n this.currentY = event.deltaY;\n if (this.currentY <= window.screen.height) {\n this.setBackgroundScaleOnPanMove(this.currentY);\n this.setModalTop(this.currentY);\n } else {\n this.panClose();\n }\n }\n\n private handlePanend(velocity: number): void {\n if (!this.isDragging) {\n return;\n }\n\n this.isDragging = false;\n this.isAnimating = true;\n\n let animationTime = this.animationHelper.calculateAnimationTime({ currentY: this.currentY });\n const shouldClose = this.currentY > window.innerHeight * this.animationHelper.closingRatioY;\n\n if (velocity >= this.closingVelocity) {\n this.closeWithVelocity(shouldClose, velocity, animationTime);\n } else {\n if (shouldClose) {\n this.animateClose(animationTime);\n } else {\n this.animateModal(false, this.currentY, animationTime);\n this.animationHelper.animateBackdrop(\n Number.parseFloat(this.modalBackdrop.style.opacity),\n this.animationHelper.maxBackdropOpacity,\n animationTime,\n );\n this.animateBackground(this.animationHelper.minBackgroundScale, animationTime, this.backgroundWindow?.style.transform);\n }\n }\n }\n\n private closeWithVelocity(shouldClose: boolean, velocity: number, animationTime: number): void {\n const velocityAnimationTime = (window.innerHeight - this.currentY) / velocity;\n\n if (!shouldClose || (velocityAnimationTime > 0 && velocityAnimationTime < animationTime)) {\n this.animateClose(velocityAnimationTime);\n } else {\n this.animateClose(animationTime);\n }\n }\n\n private animateClose(animationTime: number): void {\n this.setModalTop(window.innerHeight);\n this.animateModal(true, this.currentY, animationTime);\n this.animationHelper.animateBackdrop(Number.parseFloat(this.modalBackdrop.style.opacity), 0, animationTime);\n this.animationHelper.animateCoverElement(this.modalCover.style.transform, this.animationHelper.minCoverElementPosition, animationTime);\n this.animateBackground(this.animationHelper.maxBackgroundScale, animationTime, this.backgroundWindow?.style.transform);\n }\n\n private setModalTop(top = 0): void {\n if (top < 0) {\n return;\n }\n if (!this.isAnimating) {\n this.renderer.setStyle(this.modalWindow, 'top', `${top}px`);\n }\n }\n\n private setBackgroundScaleOnPanMove(currentY: number): void {\n if (this.openedModals.count > 1 && !this.isEdpModalBackground) {\n return;\n }\n const currentPanValue = currentY / window.screen.height;\n this.renderer.setStyle(this.modalCover, 'transform', `translateY(-${currentPanValue * 100}%)`);\n this.currentBackdropOpacity =\n this.animationHelper.maxBackdropOpacity - Number((this.animationHelper.maxBackdropOpacity * (currentY / window.screen.width)).toFixed(2));\n this.renderer.setStyle(this.modalBackdrop, 'opacity', `${this.currentBackdropOpacity}`);\n this.currentBackgroundScale = this.animationHelper.minBackgroundScaleValue + currentPanValue * 0.1;\n this.renderer.setStyle(this.backgroundWindow, 'transform', `scale(${this.currentBackgroundScale}`);\n }\n\n private animateBackground(toScale: string, duration: number, fromScale = this.animationHelper.maxBackgroundScale): void {\n this.animationHelper.animateBackground({ fromScale, toScale, duration, isEdpBackground: this.isEdpModalBackground }).subscribe(() => {\n this.renderer.removeStyle(this.backgroundWindow, this.willChange);\n this.renderer.removeStyle(this.backgroundWindow, 'transform');\n this.renderer.removeStyle(this.modalWindow, 'height');\n this.renderer.removeStyle(this.modalWindow, this.willChange);\n this.renderer.removeAttribute(this.modalWindow, 'style');\n\n if (toScale === this.animationHelper.maxBackgroundScale) {\n if (this.openedModals.count === 1 && this.openedModals.edpModal) {\n this.renderer.removeClass(this.edpCoverElement, 'modal-gestures-edp-cover');\n this.renderer.setStyle(this.edpCoverElement, 'height', `${this.coverElementHeight}px`);\n this.renderer.addClass(this.edpCoverElement, 'modal-gestures-cover');\n }\n this.panClose();\n }\n });\n }\n\n private animateModal(shouldSlideOut: boolean, currentY: number, duration: number): void {\n this.animationHelper.animateModal(shouldSlideOut, { currentY }, duration).subscribe(() => {\n this.renderer.removeAttribute(this.modalWindow, 'style');\n this.animationHelper.tryShowSlotApp();\n this.isAnimating = false;\n });\n }\n\n private panClose(): void {\n this.renderer.removeAttribute(this.backgroundWindow, 'style');\n this.openedModals.activeModal?.close({ closeAction: PopupAction.CloseByPan });\n }\n\n private modifyModalHeight(): void {\n this.modalWindow.addEventListener('animationstart', () => this.renderer.setStyle(this.modalWindow, 'height', '100%'));\n\n if (this.slotApp) {\n this.mutationObserverService\n .observe(this.slotApp, { attributes: true, attributeFilter: ['style'] })\n .pipe(\n filter((mutations) => mutations.some((mutation) => !(mutation.target as HTMLElement).getAttribute('style')?.includes('hidden'))),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.renderer.removeStyle(this.modalWindow, 'height');\n });\n }\n }\n}\n","import { DOCUMENT, Location } from '@angular/common';\nimport { DestroyRef, Inject, Injectable, InjectionToken, Renderer2, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HammerGestureConfig } from '@angular/platform-browser';\n\nimport { AppConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { NativeAppService } from '@frontend/vanilla/core';\nimport fastdom from 'fastdom';\nimport { TouchMouseInput } from 'hammerjs';\nimport { animationFrames, exhaustMap, filter, fromEvent, take, tap } from 'rxjs';\n\nimport { GestureOptions, PopupAction } from '../common/modal-window.component';\nimport { ModalAnimationHelperService } from './modal-animation-helper.service';\nimport { OpenedModalsStorageService } from './opened-modals-storage.service';\n\nexport const HORIZONTAL_GESTURE_CONFIG = new InjectionToken('ModalGestureHorizontalConfig');\n\n@Injectable()\nexport class ModalGestureHorizontalConfig extends HammerGestureConfig {\n override overrides = {\n pan: {\n direction: Hammer.DIRECTION_HORIZONTAL,\n },\n };\n\n override options = {\n inputClass: TouchMouseInput,\n touchAction: 'pan-x',\n };\n}\n\n@Injectable()\nexport class ModalHorizontalGestureService {\n private modalWindow: HTMLElement;\n private isDragging = false;\n private isAnimating = false;\n private currentX = 0;\n private readonly closingVelocity = 0.5; //velocity expressed in px/ms.\n private currentBackdropOpacity = this.animationHelper.maxBackdropOpacity;\n private currentBackgroundPanValue = this.animationHelper.maxBackgroundPanValue;\n private backgroundWindow: HTMLElement | null;\n private modalBody: HTMLElement | null;\n private readonly destroyRef = inject(DestroyRef);\n private previousUrl: string | undefined;\n\n private get modalBackdrop(): HTMLElement {\n const backdrops = this.document.querySelectorAll('ms-modal-backdrop');\n return backdrops[backdrops.length - 1];\n }\n\n constructor(\n @Inject(HORIZONTAL_GESTURE_CONFIG) private hammerGestureConfig: HammerGestureConfig,\n @Inject(DOCUMENT) private readonly document: Document,\n private appConfig: AppConfig,\n private openedModals: OpenedModalsStorageService,\n private renderer: Renderer2,\n private animationHelper: ModalAnimationHelperService,\n private location: Location,\n private nativeAppService: NativeAppService,\n private routerEventsService: RouterEventsService,\n ) {\n if (this.appConfig.modalDialogGesturesEnabled) {\n this.backgroundWindow = this.document.querySelector('.app-root');\n }\n }\n\n addGestures(modalWindow: unknown, { enabled }: GestureOptions): void {\n if (!this.appConfig.modalDialogGesturesEnabled || !(modalWindow instanceof HTMLElement) || !enabled) {\n return;\n }\n this.previousUrl = this.trySetPreviousUrl(this.routerEventsService.urlHistory);\n this.modalWindow = modalWindow;\n this.modalBody = this.document.querySelector('.modal-body');\n const duration = 400;\n this.animationHelper.animateBackdrop(0, this.animationHelper.maxBackdropOpacity, duration);\n\n this.animateBackground(0, this.animationHelper.maxBackgroundPanValue, duration);\n this.modalWindow\n .animate([{ transform: 'translateX(100%)' }, { transform: 'translateX(0%)' }], {\n duration,\n iterations: 1,\n easing: 'cubic-bezier(0, 0.2, 0.2, 1)',\n })\n .finished.then(() => {\n this.handlePanEvents(this.modalWindow);\n });\n }\n\n private animateBackground(fromPosition: number, toPosition: number, duration: number): void {\n this.animationHelper.animateBackground({ fromPosition, toPosition, duration }).subscribe(() => {\n this.renderer.removeStyle(this.backgroundWindow, 'will-change');\n this.renderer.removeStyle(this.backgroundWindow, 'position');\n this.renderer.removeStyle(this.backgroundWindow, 'display');\n this.renderer.removeStyle(this.backgroundWindow, 'right');\n this.renderer.removeStyle(this.modalBody, 'overflow-y');\n });\n }\n\n private handlePanEvents(panElement: HTMLElement): void {\n if (!this.nativeAppService.isNativeWrapper) {\n return;\n }\n\n const hammer = this.hammerGestureConfig.buildHammer(panElement);\n fromEvent(hammer, 'panstart')\n .pipe(\n filter(\n (pan) =>\n !this.isDragging &&\n !this.isAnimating &&\n pan.direction === Hammer.DIRECTION_RIGHT &&\n Math.round((pan.srcEvent as TouchEvent).touches[0].clientX) <= 50,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() =>\n fastdom.mutate(() => {\n this.handlePanstart();\n }),\n );\n\n fromEvent(hammer, 'panmove')\n .pipe(\n filter((pan) => this.isDragging && pan.deltaX > 0),\n takeUntilDestroyed(this.destroyRef),\n exhaustMap((pan) =>\n animationFrames().pipe(\n take(1),\n tap(() =>\n fastdom.mutate(() => {\n this.handlePanmove(pan);\n }),\n ),\n ),\n ),\n )\n .subscribe();\n\n fromEvent(hammer, 'panend')\n .pipe(\n filter(() => this.isDragging),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((pan) =>\n fastdom.mutate(() => {\n this.handlePanend(pan.velocity);\n }),\n );\n }\n\n private handlePanstart(): void {\n this.isDragging = true;\n this.renderer.setStyle(this.modalWindow, 'will-change', 'left');\n this.renderer.setStyle(this.modalWindow, 'min-width', '100vw');\n this.renderer.setStyle(this.modalBody, 'overflow-y', 'hidden');\n }\n\n private handlePanend(velocity: number): void {\n if (!this.isDragging) {\n return;\n }\n\n this.isDragging = false;\n this.isAnimating = true;\n const animationTime = this.animationHelper.calculateAnimationTime({ currentX: this.currentX });\n const shouldClose = this.currentX > window.screen.width * this.animationHelper.closingRatioX;\n\n if (velocity >= this.closingVelocity) {\n this.closeWithVelocity(shouldClose, velocity, animationTime);\n } else {\n if (shouldClose) {\n this.animateClose(animationTime);\n this.animateBackground(this.currentBackgroundPanValue, 0, this.animationHelper.animationDurationX);\n } else {\n this.animateModal(false, this.currentX, animationTime);\n this.animateBackground(\n this.currentBackgroundPanValue,\n this.animationHelper.maxBackgroundPanValue,\n this.animationHelper.animationDurationX,\n );\n }\n }\n }\n\n private closeWithVelocity(shouldClose: boolean, velocity: number, animationTime: number): void {\n const velocityAnimationTime = (window.innerWidth - this.currentX) / velocity;\n\n if (!shouldClose || (velocityAnimationTime > 0 && velocityAnimationTime < animationTime)) {\n this.animateClose(velocityAnimationTime);\n this.animateBackground(this.currentBackgroundPanValue, 0, velocityAnimationTime);\n } else {\n this.animateClose(animationTime);\n this.animateBackground(this.currentBackgroundPanValue, 0, animationTime);\n }\n }\n\n private animateClose(animationTime: number): void {\n this.setModalLeft(window.innerWidth);\n this.animateModal(true, this.currentX, animationTime, true);\n }\n\n private animateModal(shouldSlideOut: boolean, currentX: number, duration: number, shouldClose?: boolean): void {\n this.animationHelper.animateModal(shouldSlideOut, { currentX }, duration).subscribe(() => {\n this.renderer.removeAttribute(this.modalWindow, 'style');\n this.isAnimating = false;\n\n if (shouldClose) {\n this.panClose();\n }\n });\n }\n\n private handlePanmove(event: HammerInput): void {\n this.currentX = event.deltaX;\n\n if (this.currentX <= window.screen.width) {\n this.setModalLeft(this.currentX);\n } else {\n this.panClose();\n }\n }\n\n private setModalLeft(left = 0): void {\n if (left < 0) {\n return;\n }\n\n if (!this.isAnimating) {\n this.setBackgroundOffset(left);\n this.renderer.setStyle(this.modalWindow, 'left', `${left}px`);\n }\n }\n\n private panClose(): void {\n this.openedModals.activeModal?.close({ closeAction: PopupAction.CloseByPan });\n if (this.previousUrl) {\n this.location.replaceState(this.previousUrl);\n }\n }\n\n private trySetPreviousUrl(urlHistory?: string[]): string | undefined {\n const nonEdpUrls = urlHistory?.filter((url) => !url.includes('/events'));\n if (nonEdpUrls && nonEdpUrls.length !== 0) {\n return nonEdpUrls[nonEdpUrls.length - 1];\n }\n return undefined;\n }\n\n private setBackgroundOffset(currentX: number): void {\n if (this.openedModals.count > 1) {\n return;\n }\n\n this.currentBackgroundPanValue =\n this.animationHelper.maxBackgroundPanValue - Math.round(this.animationHelper.maxBackgroundPanValue * (currentX / window.screen.width));\n this.renderer.setStyle(this.backgroundWindow, 'display', 'block');\n this.renderer.setStyle(this.backgroundWindow, 'position', 'relative');\n this.renderer.setStyle(this.backgroundWindow, 'right', `${this.currentBackgroundPanValue}px`);\n\n this.currentBackdropOpacity =\n this.animationHelper.maxBackdropOpacity - Number((this.animationHelper.maxBackdropOpacity * (currentX / window.screen.width)).toFixed(2));\n this.renderer.setStyle(this.modalBackdrop, 'opacity', `${this.currentBackdropOpacity}`);\n }\n}\n","import { createAction } from '@ngrx/store';\n\nexport const popupManualClose = createAction('[Modal] manual close');\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc,\n}\n","
\n
\n
\n
\n
\n \n
\n \n \n \n \n \n \n @if (showCloseIcon) {\n \n } @else {\n \n }\n \n \n \n @if (title) {\n
{{ title }}
\n }\n
\n
\n
\n
\n
\n","import { DOCUMENT, NgIf, NgIfContext } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n inject,\n} from '@angular/core';\n\nimport { AutomationModule } from '@frontend/sports/automation/core-feature';\nimport { AppConfig, PopupsConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { MODAL_WINDOW_CONFIG } from '@frontend/sports/modal/feature/provider';\nimport { Store } from '@ngrx/store';\n\nimport { ModalAnimationHelperService } from '../dialog/modal-animation-helper.service';\nimport { ModalGestureService, ModalGestureVerticalConfig, VERTICAL_GESTURE_CONFIG } from '../dialog/modal-gesture.service';\nimport { HORIZONTAL_GESTURE_CONFIG, ModalGestureHorizontalConfig, ModalHorizontalGestureService } from '../dialog/modal-horizontal-gesture.service';\nimport { popupManualClose } from './actions';\nimport { ModalOptions } from './modal';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\nexport enum PopupAction {\n Open = 'open',\n ManualClose = 'manualClose',\n CloseByNavigation = 'closeByNavigation',\n CloseByMybets = 'CloseByMybets',\n CloseByNextPopup = 'CloseByNextPopup',\n CloseByPan = 'CloseByPan',\n}\n\nexport interface PopupClosingResult {\n closeAction: PopupAction;\n}\n\nexport interface GestureOptions {\n enabled?: boolean;\n headerSelector?: string;\n scrollTargetQuerySelector?: string;\n}\n\n@Component({\n selector: 'ms-modal-window',\n templateUrl: 'modal-window.html',\n standalone: true,\n imports: [NgIf, AutomationModule],\n providers: [\n ModalGestureService,\n ModalHorizontalGestureService,\n {\n provide: VERTICAL_GESTURE_CONFIG,\n useClass: ModalGestureVerticalConfig,\n },\n {\n provide: HORIZONTAL_GESTURE_CONFIG,\n useClass: ModalGestureHorizontalConfig,\n },\n ],\n})\nexport class ModalWindowComponent implements OnInit, AfterViewInit, OnDestroy {\n @HostBinding('attr.aria-labelledby')\n @Input()\n ariaLabelledBy: string;\n\n /**\n * Provide a template to be rendered inside the modal-header.\n *\n * @type {TemplateRef}\n * @memberof ModalOptions\n */\n @Input()\n headerTemplate: TemplateRef;\n\n slideOutFromTopToButtom = 'modal-slide-out-to-bottom';\n slideOutToRight = 'modal-slide-out-to-right';\n\n @Input() backdrop: boolean | string = true;\n @Input() centered: string;\n @Input() keyboard = true;\n @Input() size: string;\n @Input() windowClass: string;\n @Input() showDialogHeader?: boolean;\n @Input() title?: string;\n @Input() hideCloseButton?: boolean;\n @Input() showBackNav?: boolean;\n @Input() animatePopupDismiss = false;\n @Input() showCloseIcon = true;\n @Input() closePrevious?: boolean;\n @Input() gestureOptions: GestureOptions;\n\n @Output() dismiss = new EventEmitter<{ closeAction: PopupAction.ManualClose }>();\n\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('attr.tabindex') tabindex = '-1';\n\n @HostBinding()\n get class(): string {\n return 'modal ' + (this.windowClass ? ' ' + this.windowClass : '');\n }\n\n showCloseBtnText?: boolean;\n\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n public sitecore: Sitecore,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private timerService: TimerService,\n private store: Store,\n private modalGestureService: ModalGestureService,\n private modalAnimationHelper: ModalAnimationHelperService,\n private popUpsConfig: PopupsConfig,\n private appConfig: AppConfig,\n private modalHorizontalGestureService: ModalHorizontalGestureService,\n @Optional() @Inject(MODAL_WINDOW_CONFIG) private config: Partial | undefined,\n ) {\n if (this.config) {\n this.animatePopupDismiss = this.config.animatePopupDismiss ?? false;\n this.showCloseIcon = this.popUpsConfig.closeButtonType === 'Icon' || (this.config.showCloseIcon ?? true);\n }\n }\n\n close(): void {\n if (this.gestureOptions.enabled && this.appConfig.modalDialogGesturesEnabled) {\n this.modalAnimationHelper.addSlideWithScale();\n } else {\n this.renderer.addClass(this.elementRef.nativeElement, this.slideOutFromTopToButtom);\n }\n\n this.dismissPopup();\n\n this.store.dispatch(popupManualClose());\n }\n\n goBack(): void {\n this.renderer.addClass(this.elementRef.nativeElement, this.slideOutToRight);\n this.dismissPopup();\n }\n\n private dismissPopup() {\n if (this.animatePopupDismiss) {\n this.timerService.setTimeoutOutsideAngular(() => {\n this.dismiss.emit({ closeAction: PopupAction.ManualClose });\n }, 500);\n } else {\n this.dismiss.emit({ closeAction: PopupAction.ManualClose });\n }\n }\n\n @HostListener('mousedown', ['$event'])\n @HostListener('touch', ['$event'])\n backdropClick(event: Event): void {\n if (this.backdrop === true && this.elementRef.nativeElement === event.target) {\n this.dismissWindow(ModalDismissReasons.BackdropClick);\n }\n }\n\n //Prevent any scroll event within modal container to bubble up to body (preventing unwanted double scroll appearing)\n @HostListener('scroll', ['$event'])\n @HostListener('touchmove', ['$event'])\n preventScrolPropogation(event: Event) {\n event.stopPropagation();\n }\n\n @HostListener('keyup.esc', ['$event'])\n escKey(event: Event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismissWindow(ModalDismissReasons.Esc);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private dismissWindow(reason: any): void {\n if (this.animatePopupDismiss) {\n this.renderer.addClass(this.elementRef.nativeElement, this.slideOutFromTopToButtom);\n this.timerService.setTimeoutOutsideAngular(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.dismiss.emit(reason);\n }, 500);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.dismiss.emit(reason);\n }\n }\n\n ngOnInit(): void {\n this.renderer.addClass(this._doc.body, 'modal-open');\n }\n\n ngAfterViewInit(): void {\n this.timerService.setTimeoutOutsideAngular(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n if (!this.elementRef.nativeElement.contains(this._doc.activeElement)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.elementRef.nativeElement['focus'].apply(this.elementRef.nativeElement, []);\n }\n });\n\n if (this.gestureOptions.headerSelector === 'event-details-modal') {\n this.modalHorizontalGestureService.addGestures(this.elementRef.nativeElement, this.gestureOptions);\n } else {\n this.modalGestureService.addGestures(this.elementRef.nativeElement, this.gestureOptions);\n }\n }\n\n ngOnDestroy(): void {\n this.renderer.removeClass(this._doc.body, 'modal-open');\n }\n}\n","import { InjectionToken, Injector, TemplateRef } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\n\nimport { ScrollFreezeServiceTypes } from '@frontend/sports/common/core/feature/scroll-freeze';\nimport { ElementProvider } from '@frontend/sports/common/core/utils/element-provider';\nimport { TrackingType } from '@frontend/sports/tracking/feature';\nimport { DsButtonKind, DsButtonSize, DsButtonVariant } from '@frontend/ui/button';\n\nexport interface IDialogTracking {\n name: string;\n type: TrackingType;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n}\n\nexport interface ModalDialogOptions {\n data?: T;\n settings?: DialogSettings;\n}\n\nexport interface DialogSettings {\n isModalDialog?: boolean;\n isPopup?: boolean;\n showDialogHeader?: boolean;\n hideCloseButton?: boolean;\n title?: string;\n fit?: boolean;\n cssClass?: string;\n showPageHeader?: boolean;\n showBottomNav?: boolean;\n showBackNav?: boolean;\n animation?: DialogAnimation;\n closeAnimation?: DialogAnimation;\n tracking?: IDialogTracking;\n container?: HTMLElement;\n inColumn?: boolean;\n scrollFreezeType?: ScrollFreezeServiceTypes;\n backdropClass?: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n afterResulted?: Function;\n beforeDismiss?: () => boolean | Promise;\n scrollTargetQuerySelector?: string;\n closeOnChildPopup?: boolean;\n injector?: Injector;\n epcotShowBalance?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n headerTemplate?: TemplateRef;\n showCloseBtnText?: boolean;\n closePrevious?: boolean;\n needsAuthentication?: boolean;\n animatePopupDismiss?: boolean;\n showCloseIcon?: boolean;\n headerSelector?: string;\n gestures?: boolean;\n}\n\nexport enum DialogAnimation {\n SlideInFromBottom = 'SlideInFromBottom',\n SlideInFromRight = 'SlideInFromRight',\n SlideOutFromTop = 'SlideOutFromTop',\n}\n\nexport interface ContentData {\n type?: DialogType;\n title?: string;\n firstParagraph?: string | SafeHtml;\n secondParagraph?: string | SafeHtml;\n buttons?: DialogButton[];\n showCloseLink?: boolean;\n}\n\nexport enum DialogType {\n Warning = 'warning',\n Info = 'info',\n Action = 'action',\n}\n\nexport interface DialogButton {\n text: string;\n type: ButtonType;\n buttonConfig?: {\n kind: DsButtonKind;\n variant: DsButtonVariant;\n size: DsButtonSize;\n };\n cssClass?: string;\n}\n\nexport enum DialogClosedBy {\n Button,\n CloseLink,\n}\n\nexport enum ButtonType {\n Ok,\n Cancel,\n}\n\nexport const MODAL_DIALOG_CONTAINER = new InjectionToken('ms-modal-dialog-container');\nexport const DEFAULT_HEADER_SELECTOR = '#headerWrapper';\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'ms-modal-backdrop',\n template: '',\n standalone: true,\n})\nexport class ModalBackdropComponent {\n @Input() backdropClass: string;\n @HostBinding()\n get class(): string {\n return 'modal-backdrop ' + (this.backdropClass ? ' ' + this.backdropClass : '');\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'ms-modal-cover',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalCoverComponent {\n @HostBinding('class') className = 'modal-gestures-cover';\n}\n","import { ComponentType, OverlayContainer } from '@angular/cdk/overlay';\nimport { ApplicationRef, ComponentRef, EnvironmentInjector, Injectable, Injector, StaticProvider, createComponent } from '@angular/core';\n\nimport { AppConfig } from '@frontend/sports/common/client-config-data-access';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\n\nimport { ModalAnimationHelperService } from '../dialog/modal-animation-helper.service';\nimport { ModalOptions } from './modal';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalCoverComponent } from './modal-cover.component';\nimport { ActiveModal, ContentRef, ModalRef } from './modal-ref';\nimport { ModalWindowComponent } from './modal-window.component';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private attributes: Extract[] = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'size',\n 'windowClass',\n 'showDialogHeader',\n 'title',\n 'hideCloseButton',\n 'epcotShowBalance',\n 'headerTemplate',\n 'showCloseBtnText',\n 'showBackNav',\n 'closePrevious',\n 'animatePopupDismiss',\n 'showCloseIcon',\n 'gestureOptions',\n ];\n\n private backdropAttributes: (keyof ModalOptions)[] = ['backdropClass'];\n\n constructor(\n private timerService: TimerService,\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector,\n private containerService: OverlayContainer,\n private appConfig: AppConfig,\n private modalAnimationHelper: ModalAnimationHelperService,\n ) {}\n\n open(contentInjector: Injector, content: ComponentType, options: ModalOptions): ModalRef {\n const containerEl = options.container ?? this.containerService.getContainerElement();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container?.tagName || 'body'}\" was not found in the DOM.`);\n }\n\n if (options.centerVerticalToViewport) {\n // eslint-disable-next-line no-param-reassign\n options.windowClass = `${options.windowClass ?? ''} modal-vertical-align`;\n }\n\n const activeModal = new ActiveModal();\n const contentRef = this._getContentRef(options.injector || contentInjector, content, activeModal);\n\n const coverCmptRef = options.gestureOptions?.enabled ? this._attachCoverElement(containerEl) : undefined;\n const backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n const windowCmptRef = this._attachWindowComponent(containerEl, contentRef);\n const modalRef = new ModalRef(windowCmptRef, contentRef, backdropCmptRef, coverCmptRef, options.beforeDismiss);\n activeModal.result = modalRef.result;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n activeModal.close = (result?: any) => {\n if (!options.closeAnimation) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n modalRef.close(result);\n return;\n }\n if (\n options.closeAnimation &&\n backdropCmptRef?.instance?.class?.includes('close-animation') &&\n !this.appConfig.modalDialogGesturesEnabled\n ) {\n modalRef.addBackdropClass('hide-backdrop');\n }\n if (this.appConfig.modalDialogGesturesEnabled && windowCmptRef.instance.gestureOptions?.enabled) {\n this.modalAnimationHelper.addSlideWithScale();\n } else {\n windowCmptRef.instance.windowClass += ` ${options.closeAnimation}`;\n }\n this.timerService.setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n modalRef.close(result);\n }, 350);\n };\n activeModal.dismiss = (reason: unknown) => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (options.container && options.container === containerEl && options.centerVerticalToViewport) {\n this._applyVerticalCentering(windowCmptRef, containerEl);\n }\n\n if (backdropCmptRef?.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n }\n\n return modalRef;\n }\n\n private _attachBackdrop(containerEl: HTMLElement): ComponentRef {\n const backdropCmptRef = createComponent(ModalBackdropComponent, { environmentInjector: this.injector });\n this.applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.append(backdropCmptRef.location.nativeElement as HTMLElement);\n\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(containerEl: HTMLElement, contentRef: ContentRef): ComponentRef {\n const windowCmptRef = createComponent(ModalWindowComponent, {\n environmentInjector: this.injector,\n projectableNodes: contentRef.nodes,\n });\n this.applicationRef.attachView(windowCmptRef.hostView);\n containerEl.append(windowCmptRef.location.nativeElement as Node);\n\n return windowCmptRef;\n }\n\n private _attachCoverElement(containerEl: HTMLElement): ComponentRef {\n const coverCmptRef = createComponent(ModalCoverComponent, { environmentInjector: this.injector });\n this.applicationRef.attachView(coverCmptRef.hostView);\n containerEl.append(coverCmptRef.location.nativeElement as HTMLElement);\n\n return coverCmptRef;\n }\n\n private _applyWindowOptions(windowInstance: ModalWindowComponent, options: ModalOptions): void {\n this.attributes.forEach((optionName) => {\n if (Object.prototype.hasOwnProperty.call(options, optionName)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore ignore below accessor\n // eslint-disable-next-line no-param-reassign\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n\n private _applyVerticalCentering(windowCmptRef: ComponentRef, containerEl: HTMLElement): void {\n const domEl = windowCmptRef.location.nativeElement as HTMLElement;\n const windowHeight = window.innerHeight;\n\n let recalculateTimes = 0; // the modal content can be async so let's try a few times to position the modal.\n\n const repositionModal = () => {\n const containerTopOffset = containerEl.getBoundingClientRect().top;\n const newHeight = domEl.clientHeight;\n const newTop = (windowHeight - containerTopOffset) / 2 - newHeight / 2;\n domEl.style.top = `${newTop}px`;\n recalculateTimes++;\n\n if (recalculateTimes >= 3 || newHeight >= 100) {\n // if the height is greater than 100 most likely the content is loaded\n return;\n }\n\n setTimeout(repositionModal, recalculateTimes * 10);\n };\n\n setTimeout(repositionModal, recalculateTimes * 10);\n }\n\n private _applyBackdropOptions(backdropInstance: ModalBackdropComponent, options: ModalOptions): void {\n this.backdropAttributes.forEach((optionName) => {\n if (options[optionName]) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore dynamic accessor\n // eslint-disable-next-line no-param-reassign\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n\n private _getContentRef(contentInjector: Injector, content: ComponentType, context: ActiveModal): ContentRef {\n return this._createFromComponent(contentInjector, content, context);\n }\n\n private _createFromComponent(contentInjector: Injector, content: ComponentType, context: ActiveModal): ContentRef {\n const providers: StaticProvider[] = [{ provide: ActiveModal, useValue: context }];\n\n const modalContentInjector = Injector.create({\n providers,\n parent: contentInjector,\n });\n\n const componentRef = createComponent(content, { environmentInjector: this.injector, elementInjector: modalContentInjector });\n this.applicationRef.attachView(componentRef.hostView);\n\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { NgIfContext } from '@angular/common';\nimport { Injectable, Injector, TemplateRef } from '@angular/core';\n\nimport { ModalRef } from './modal-ref';\nimport { ModalStack } from './modal-stack';\nimport { GestureOptions } from './modal-window.component';\n\n/**\n * Represent options available when opening new modal windows.\n */\nexport interface ModalOptions {\n /**\n * Sets the aria attribute aria-labelledby to a modal window.\n *\n * @since 2.2.0\n */\n ariaLabelledBy?: string;\n\n /**\n * Whether a backdrop element should be created for a given modal (true by default).\n * Alternatively, specify 'static' for a backdrop which does not close the modal on click.\n */\n backdrop?: boolean | 'static';\n\n /**\n * Function called when a modal will be dismissed.\n * If this function returns false, the promise is resolved with false or the promise is rejected, the modal is not\n * dismissed.\n */\n beforeDismiss?: () => boolean | Promise;\n\n /**\n * To center the modal vertically (false by default).\n *\n * @since 1.1.0\n */\n centered?: boolean;\n\n /**\n * An element to which to attach newly opened modal windows.\n */\n container?: HTMLElement;\n\n /**\n * Injector to use for modal content.\n */\n injector?: Injector;\n\n /**\n * Whether to close the modal when escape key is pressed (true by default).\n */\n keyboard?: boolean;\n\n /**\n * Size of a new modal window.\n */\n size?: 'sm' | 'lg';\n\n /**\n * Custom class to append to the modal window\n */\n windowClass?: string;\n\n /**\n * Custom class to append to the modal backdrop\n *\n * @since 1.1.0\n */\n backdropClass?: string;\n\n /**\n * Force the modal window to center vertically relative to the viewport (for scrollable containers).\n * Assumes positon absolute for the modal. Can be used only when `container` is set.\n *\n * @type {boolean}\n * @memberof ModalOptions\n */\n centerVerticalToViewport?: boolean;\n\n showDialogHeader?: boolean;\n\n title?: string;\n\n hideCloseButton?: boolean;\n\n closeAnimation?: string;\n\n epcotShowBalance?: boolean;\n\n showBackNav?: boolean;\n /**\n * Provide a template to be rendered inside the modal-header.\n *\n * @type {TemplateRef}\n * @memberof ModalOptions\n */\n headerTemplate?: TemplateRef;\n\n showCloseBtnText?: boolean;\n /**\n * To close the previosly opened modal window\n */\n closePrevious?: boolean;\n\n /**\n * Used to delay the dismissal of the popup and animate it\n */\n animatePopupDismiss?: boolean;\n\n /**\n * Used to show a close icon instead of close button\n */\n showCloseIcon?: boolean;\n\n /**\n * Provides required options for gestures to work\n */\n gestureOptions?: GestureOptions;\n}\n\n/**\n * A service to open modal windows. Creating a modal is straightforward: create a template and pass it as an argument to\n * the \"open\" method!\n */\n@Injectable({ providedIn: 'root' })\nexport class Modal {\n constructor(\n private _injector: Injector,\n private _modalStack: ModalStack,\n ) {}\n\n /**\n * Opens a new modal window with the specified content and using supplied options. Content can be provided\n * as a TemplateRef or a component type. If you pass a component type as content than instances of those\n * components can be injected with an instance of the ActiveModal class. You can use methods on the\n * ActiveModal class to close / dismiss modals from \"inside\" of a component.\n */\n open(content: ComponentType, options: ModalOptions = {}): ModalRef {\n return this._modalStack.open(this._injector, content, options);\n }\n}\n","
\n @if (shouldCloseLinkBeDisplayed) {\n \n }\n

{{ contentData.title }}

\n\n
\n

\n

\n\n @if (isDesignSystem) {\n
\n @for (button of contentData.buttons; track $index) {\n \n {{ button.text }}\n \n }\n
\n } @else {\n
\n @for (button of contentData.buttons; track $index) {\n \n }\n
\n }\n
\n
\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { DsButton } from '@frontend/ui/button';\n\nimport { ActiveModal } from '../common/modal-ref';\nimport { ButtonType, ContentData, DialogButton } from './modal-dialog.model';\n\n@Component({\n selector: 'ms-message-dialog',\n templateUrl: 'message-dialog.html',\n standalone: true,\n imports: [NgIf, NgFor, DsButton],\n})\nexport class MessageDialogComponent {\n private _contentData: ContentData = {};\n\n get isDesignSystem(): boolean {\n return this._contentData.buttons?.every((b) => b.buttonConfig) ?? false;\n }\n\n constructor(private activeModal: ActiveModal) {}\n\n get contentData(): ContentData {\n return this._contentData;\n }\n\n set contentData(data: ContentData) {\n this._contentData = data;\n }\n\n get shouldCloseLinkBeDisplayed(): boolean {\n return Boolean(this._contentData.showCloseLink);\n }\n\n closeLinkClickHandler(): void {\n this.dismiss();\n }\n\n buttonClickHandler(activatedButton: DialogButton): void {\n this.close(activatedButton.type);\n }\n\n private close(result: ButtonType): void {\n this.activeModal.close(result);\n }\n\n private dismiss(): void {\n this.activeModal.dismiss();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ScrollContainerService } from '@frontend/sports/common/core/utils/scroll-container';\nimport { TrackingService, TrackingType, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { ReplaySubject, combineLatest, isObservable } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { ModalRef } from '../common/modal-ref';\nimport { DialogSettings } from './modal-dialog.model';\nimport { OpenedModalsStorageService } from './opened-modals-storage.service';\n\n@Component({\n selector: 'ms-modal-dialog',\n templateUrl: 'modal-dialog.html',\n providers: [ScrollContainerService],\n standalone: true,\n})\nexport class ModalDialogComponent implements AfterViewInit, OnDestroy {\n private destroyRef = inject(DestroyRef);\n\n @ViewChild('componentHost', { read: ViewContainerRef }) componentHost: ViewContainerRef;\n dialogSettings: DialogSettings = {};\n\n contentComponent: Type;\n inputs: any;\n modalRef: ModalRef;\n\n private componentLoaded$ = new ReplaySubject>(1);\n\n constructor(\n private trackingService: TrackingService,\n private scrollContainer: ScrollContainerService,\n private _elRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private openedModalsStorage: OpenedModalsStorageService,\n ) {}\n\n ngAfterViewInit(): void {\n this.mountComponent();\n if (this.modalRef) {\n combineLatest([this.componentLoaded$, this.modalRef.newData$])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([componentRef, data]) => {\n for (const [key, value] of Object.entries(data)) {\n componentRef.setInput(key, value);\n }\n this.cdr.detectChanges();\n });\n }\n if (this.dialogSettings.tracking) {\n switch (this.dialogSettings.tracking.type) {\n case TrackingType.PageName:\n this.trackingService.track(this.dialogSettings.tracking.name, this.dialogSettings.tracking.data || {});\n break;\n case TrackingType.Referring:\n this.trackingService.update({ [trackingConstants.PAGE_REFERRING_ACTION]: this.dialogSettings.tracking.name });\n break;\n }\n }\n\n this.componentLoaded$.pipe(first()).subscribe(() => {\n if (this.dialogSettings.scrollTargetQuerySelector) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.scrollContainer.setTarget(this._elRef.nativeElement.querySelector(this.dialogSettings.scrollTargetQuerySelector));\n }\n this.openedModalsStorage.openedModal = this.modalRef;\n });\n }\n\n private mountComponent = () => {\n this.componentHost.clear();\n const componentRef = this.componentHost.createComponent(this.contentComponent);\n if (this.inputs) {\n Object.keys(this.inputs).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n componentRef.setInput(key, this.inputs[key]);\n });\n componentRef.changeDetectorRef.detectChanges();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (componentRef.instance.componentLoaded && isObservable(componentRef.instance.componentLoaded)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n componentRef.instance.componentLoaded.pipe(first()).subscribe(() => this.componentLoaded$.next(componentRef));\n } else {\n this.componentLoaded$.next(componentRef);\n }\n };\n\n ngOnDestroy(): void {\n this.openedModalsStorage.removeCurrent(this.modalRef);\n }\n}\n","
\n","import { Injectable } from '@angular/core';\n\nimport { NativeAppService } from '@frontend/vanilla/core';\n\nexport interface SensitivePage {\n isSensitiveForPushNotifications: string;\n isSensitiveForSliderGames: string;\n action: string;\n id: string;\n type: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalEventBridgeService {\n private _eventName = 'SensitivePage';\n constructor(private nativeApp: NativeAppService) {}\n\n notifyOpenOverlay(): void {\n this.notifySensitivePage({\n isSensitiveForPushNotifications: 'false',\n isSensitiveForSliderGames: 'false',\n action: 'open',\n id: '',\n type: 'overlay',\n });\n }\n\n notifyCloseOverlay(): void {\n this.notifySensitivePage({\n isSensitiveForPushNotifications: 'false',\n isSensitiveForSliderGames: 'false',\n action: 'close',\n id: '',\n type: 'overlay',\n });\n }\n\n notifySensitivePage(page: SensitivePage): void {\n this.nativeApp.sendToNative({\n eventName: this._eventName,\n parameters: page,\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { Injectable, Type, inject } from '@angular/core';\n\nimport { ScrollFreezeService, ScrollFreezeServiceTypes } from '@frontend/sports/common/core/feature/scroll-freeze';\nimport { DeviceService, SessionStoreService } from '@frontend/vanilla/core';\nimport { extend } from 'lodash-es';\n\nimport { Modal } from '../common/modal';\nimport { ModalRef } from '../common/modal-ref';\nimport { MessageDialogComponent } from './message-dialog.component';\nimport { ModalDialogComponent } from './modal-dialog.component';\nimport { ContentData, DialogAnimation, DialogSettings, ModalDialogOptions } from './modal-dialog.model';\nimport { ModalEventBridgeService } from './modal-event-bridge.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalDialogService {\n static get DefaultSettings(): DialogSettings {\n return {\n isModalDialog: true,\n showDialogHeader: false,\n showPageHeader: false,\n fit: true,\n hideCloseButton: false,\n };\n }\n\n private openModalsCountKey = 'openedSportsModalDialogsCount';\n private animationClasses: Record = {\n [DialogAnimation.SlideInFromBottom]: 'modal-slide-from-bottom',\n [DialogAnimation.SlideInFromRight]: 'modal-slide-from-right',\n [DialogAnimation.SlideOutFromTop]: 'modal-slide-out-to-bottom',\n };\n\n private modal: Modal = inject(Modal);\n private scrollFreeze: ScrollFreezeService = inject(ScrollFreezeService);\n private eventBridge: ModalEventBridgeService = inject(ModalEventBridgeService);\n private deviceService: DeviceService = inject(DeviceService);\n private sessionStorage: SessionStoreService = inject(SessionStoreService);\n\n private get openedModalsCount(): number {\n return this.sessionStorage.get(this.openModalsCountKey) ?? 0;\n }\n\n private increaseModalsCount(): void {\n this.sessionStorage.set(this.openModalsCountKey, this.openedModalsCount + 1);\n }\n\n private decreaseModalsCount(): void {\n this.sessionStorage.set(this.openModalsCountKey, this.openedModalsCount - 1);\n }\n\n isModalDialogOpen(): boolean {\n return this.openedModalsCount > 0;\n }\n\n openPopup(component: Type, optionsParam?: ModalDialogOptions>): ModalRef {\n let options = optionsParam ?? {};\n options.settings = options.settings ?? {};\n options.settings.isPopup = true;\n\n return this.openDialog(component, options);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n openDialog(component: Type, optionsParam?: ModalDialogOptions | void>): ModalRef {\n let options = optionsParam ?? {};\n const defaultSettings = extend({}, ModalDialogService.DefaultSettings, { fit: !options.settings?.isPopup });\n const modalRef = this.openModal(ModalDialogComponent, defaultSettings, options.settings);\n\n const dialogInstance = modalRef.componentInstance as ModalDialogComponent;\n dialogInstance.contentComponent = component;\n dialogInstance.inputs = options.data;\n dialogInstance.modalRef = modalRef;\n dialogInstance.dialogSettings = extend({}, ModalDialogService.DefaultSettings, options.settings);\n\n return modalRef;\n }\n\n openMessage(contentData: ContentData, settings?: DialogSettings): ModalRef {\n const defaultSettings = extend({}, ModalDialogService.DefaultSettings, { showDialogHeader: false });\n const modalRef = this.openModal(MessageDialogComponent, defaultSettings, settings);\n\n const dialogInstance = modalRef.componentInstance as MessageDialogComponent;\n dialogInstance.contentData = contentData;\n\n return modalRef;\n }\n\n // eslint-disable-next-line max-lines-per-function\n private openModal>(\n component: TComponent,\n defaultSettings: DialogSettings,\n settings?: DialogSettings,\n ): ModalRef {\n const copySettings = extend({}, defaultSettings, settings);\n const modalCss = this.buildModalCss(copySettings, settings?.isPopup);\n const modalBackdropCss = this.buildModalBackdropCss(copySettings, settings?.isPopup);\n\n if (copySettings.closeAnimation) {\n copySettings.closeAnimation = this.animationClasses[copySettings.closeAnimation] as DialogAnimation;\n }\n\n const modalRef = this.modal.open(component, {\n windowClass: modalCss,\n backdropClass: modalBackdropCss,\n backdrop: copySettings.isModalDialog ? 'static' : true,\n keyboard: !copySettings.isModalDialog,\n container: copySettings.container,\n centerVerticalToViewport: !!copySettings.container,\n beforeDismiss: copySettings.beforeDismiss,\n showDialogHeader: copySettings.showDialogHeader,\n hideCloseButton: copySettings.hideCloseButton,\n title: copySettings.title,\n closeAnimation: copySettings.closeAnimation,\n injector: copySettings.injector,\n epcotShowBalance: copySettings.epcotShowBalance,\n headerTemplate: copySettings.headerTemplate,\n showCloseBtnText: copySettings.showCloseBtnText,\n showBackNav: copySettings.showBackNav,\n closePrevious: copySettings.closePrevious,\n ...(copySettings.animatePopupDismiss === undefined ? {} : { animatePopupDismiss: copySettings.animatePopupDismiss }),\n ...(copySettings.showCloseIcon === undefined ? {} : { showCloseIcon: copySettings.showCloseIcon }),\n gestureOptions: {\n enabled: copySettings.gestures,\n headerSelector: copySettings.headerSelector,\n scrollTargetQuerySelector: copySettings.scrollTargetQuerySelector,\n },\n });\n\n if (!this.openedModalsCount) {\n this.eventBridge.notifyOpenOverlay();\n }\n this.increaseModalsCount();\n if (copySettings.scrollFreezeType !== ScrollFreezeServiceTypes.None && this.deviceService.isMobile) {\n this.scrollFreeze.freezeScroll(copySettings.scrollFreezeType);\n }\n modalRef.result.finally(() => {\n if (copySettings.scrollFreezeType !== ScrollFreezeServiceTypes.None && this.deviceService.isMobile) {\n this.scrollFreeze.releaseScroll(copySettings.scrollFreezeType);\n }\n this.decreaseModalsCount();\n if (!this.openedModalsCount) {\n this.eventBridge.notifyCloseOverlay();\n }\n\n copySettings.afterResulted?.();\n });\n\n return modalRef;\n }\n\n private buildModalBackdropCss(settings: DialogSettings, isPopup?: boolean): string {\n const cssClasses = [];\n\n if (!isPopup) {\n cssClasses.push('modal-dialog-backdrop');\n }\n\n if (settings.showPageHeader) {\n cssClasses.push('modal-under-header');\n }\n\n if (settings.showBottomNav) {\n cssClasses.push('modal-above-footer');\n }\n\n if (settings.inColumn) {\n cssClasses.push('modal-dialog-backdrop-in-column');\n }\n\n if (settings.closeAnimation) {\n cssClasses.push('close-animation');\n }\n\n if (settings.backdropClass) {\n cssClasses.push(settings.backdropClass);\n }\n\n return cssClasses.filter(Boolean).join(' ');\n }\n\n private buildModalCss(settings: DialogSettings, isPopup?: boolean): string {\n const cssClasses = [settings.cssClass];\n\n if (!isPopup) {\n cssClasses.push('modal-dialog-wrapper');\n }\n\n if (settings.fit) {\n cssClasses.push('modal-fit');\n }\n\n if (settings.showPageHeader) {\n cssClasses.push('modal-under-header');\n }\n\n if (settings.showBottomNav) {\n cssClasses.push('modal-above-footer');\n }\n\n if (settings.animation) {\n cssClasses.push(this.animationClasses[settings.animation]);\n }\n\n if (settings.inColumn) {\n cssClasses.push('modal-dialog-in-column');\n }\n\n return cssClasses.filter(Boolean).join(' ');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EpcotConfig } from '@frontend/sports/common/client-config-data-access';\n\n/**\n * @deprecated This service is deprecated. Please use {@link EpcotConfig} directly instead.\n */\n@Injectable({ providedIn: 'root' })\nexport class EpcotConfigService {\n constructor(private epcotConfig: EpcotConfig) {}\n\n /**\n * @deprecated This method is deprecated. Epcot modules are not used in production anymore. Please use {@link EpcotConfig.isEnabled} directly instead.\n */\n isEnabled(module?: EpcotModule): boolean {\n return this.epcotConfig.isEnabled && (!module || this.epcotConfig.modules.includes(module));\n }\n\n get isShowMyBetsPopup(): boolean {\n return this.isEnabled(EpcotModule.MyBetsBetSlip);\n }\n}\n\nexport enum EpcotModule {\n QuickBet = 'quickbet',\n OptionPanel = 'optionpanel',\n Scoreboard = 'scoreboard',\n Betslip = 'betslip',\n MyBetsBetSlip = 'mybetsbetslip',\n Search = 'search',\n Teampages = 'teampages',\n Rewards = 'rewards',\n Statsindicator = 'statsindicator',\n Favorites = 'favorites',\n Errors = 'errors',\n TopEvents = 'topevents',\n BetGenerator = 'parlaygenerator',\n Grid = 'grid',\n EventDetails = 'eventdetails',\n PopularBets = 'popularbets',\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/** @stable */\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderSearchService {\n private events: Subject = new Subject();\n\n /** Observable of when the header search input is clicked. */\n get clickEvent(): Observable {\n return this.events.pipe();\n }\n\n click() {\n this.events.next();\n }\n}\n","import { FixturePage } from '@cds/betting-offer';\nimport { DayOfRaceDate, TimeGroupedMeetings } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { Meeting } from '@cds/betting-offer/tags';\nimport { DomainEvent } from '@frontend/sports/common/core/utils/dispatcher';\n\n/* eslint-disable @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match */\nexport class Events {\n static Grid = class {\n static EventsAddedToGrid = new DomainEvent('EVENTS_ADDED_TO_GRID');\n };\n\n static Slideshow = class {\n static SlideInit = new DomainEvent('SLIDE_INIT');\n static SlideSet = new DomainEvent('SLIDE_SET');\n };\n\n static EventPush = class {\n static EventUpdated = new DomainEvent('EVENT_UPDATED');\n static MarketUpdated = new DomainEvent('MARKET_UPDATED');\n static EventLastUpdated = new DomainEvent('EVENT_LASTUPDATED');\n };\n\n static PageRequiresNoAnimation = new DomainEvent('PAGE_REQUIRES_NO_ANIMATION');\n static ClaimsChanged = new DomainEvent('CLAIMS_CHANGED');\n\n static HorseRacing = class {\n static OpenMeetingSelector = new DomainEvent<{\n meetings: TimeGroupedMeetings;\n dayOfRace: DayOfRaceDate;\n meeting: Meeting;\n futureMeetings: FixturePage;\n }>('OPEN_HORSE_MEETING_SELECTOR');\n\n static CloseMeetingSelector = new DomainEvent('CLOSE_HORSE_MEETING_SELECTOR');\n static MeetingSelected = new DomainEvent<{ meeting: Meeting; dayOfRaceDate: DayOfRaceDate }>('MEETING_SELECTED');\n static FixtureSelectTopTwo = new DomainEvent('FIXTURE_SELECT_TOPTWO');\n static FixtureSelectTopThree = new DomainEvent('FIXTURE_SELECT_TOPTHREE');\n };\n\n // static BetFinder = class {\n // static FieldFocus = new DomainEvent('ON_BETFINDER_FIELD_FOCUS');\n // static FieldBlur = new DomainEvent('ON_BETFINDER_FIELD_BLUR');\n // };\n\n static BetslipPluginStateChanged = new DomainEvent('BETSLIP_PLUGIN_STATE_CHANGED');\n static ClosePluginSwitcher = new DomainEvent('CLOSE_PLUGIN_SWITCHER');\n\n static Favourites = class {\n static FavouritesChanged = new DomainEvent('FAVOURITES_CHANGED');\n };\n\n static Popup = class {\n static PopupClosed = new DomainEvent('POPUP_CLOSED');\n static BeforePopupDisplayed = new DomainEvent('BEFORE_POPUP_DISPLAYED');\n };\n\n static UnauthenticatedCallEarlyPayoutSubscription = new DomainEvent('UNAUTHENTICATED_EARLY_PAYOUT');\n static EarlyPayoutSuccess = new DomainEvent('EARLY_PAYOUT_SUCCESS');\n static OverlayToggle = new DomainEvent('OVERLAY_TOGGLE');\n static LeagueHeaderToggle = new DomainEvent('LEAGUE_HEADER_TOGGLE');\n\n static RightSwipe = new DomainEvent('RIGHT_SWIPE');\n static M2UserClaimsChanged = new DomainEvent('m2-user-claimsChanged');\n static PageVisibilityChange = new DomainEvent('PAGE_VISIBILITY_CHANGE');\n static OrientationChanged = new DomainEvent('ORIENTATION_CHANGED');\n}\n/* eslint-enable @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match */\n","import { Injectable } from '@angular/core';\n\nimport { ModalEventBridgeService } from '@frontend/sports/modal/feature';\n\nenum PopupAction {\n Open = 'open',\n Close = 'close',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SensitivePageTrackerService {\n constructor(private eventBridgeService: ModalEventBridgeService) {}\n\n dispatchSensitivePagesEvent(currentPopup: string | null, oldPopup?: string): void {\n if (oldPopup) {\n this.popupClosedNotification(oldPopup);\n }\n if (currentPopup) {\n this.popupOpenedNotification(currentPopup);\n }\n }\n\n private popupClosedNotification(popupName: string): void {\n this.popupNotification(this.isPopupSensitive(popupName, PopupAction.Close), PopupAction.Close, popupName);\n }\n\n private popupOpenedNotification(popupName: string): void {\n this.popupNotification(this.isPopupSensitive(popupName, PopupAction.Open), PopupAction.Open, popupName);\n }\n\n private isPopupSensitive(popupName: string, action: PopupAction): string {\n return (popupName === 'betslip' && action === PopupAction.Open).toString();\n }\n\n private popupNotification(popupSensitivity: string, popupAction: PopupAction, popupId: string): void {\n this.eventBridgeService.notifySensitivePage({\n isSensitiveForPushNotifications: popupSensitivity,\n isSensitiveForSliderGames: popupSensitivity,\n action: popupAction,\n id: popupId,\n type: 'popup',\n });\n }\n}\n","import { DOCUMENT, Location } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Router, RouterEvent } from '@angular/router';\n\nimport { AppConfig, EventDetailsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { DispatcherService } from '@frontend/sports/common/core/utils/dispatcher';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { filterSports, filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport {\n DialogAnimation,\n ModalAnimationHelperService,\n ModalDialogOptions,\n ModalDialogService,\n ModalDismissReasons,\n ModalRef,\n OpenedModalsStorageService,\n PopupAction,\n PopupClosingResult,\n} from '@frontend/sports/modal/feature';\nimport { TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { UserService } from '@frontend/sports/user/feature';\nimport {\n HtmlNode,\n LocationChangeEvent,\n MediaQueryService,\n MenuAction,\n MenuActionsService,\n NavigationService,\n UrlService,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { HeaderSearchService } from '@frontend/vanilla/shared/header';\nimport { extend, isFunction } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilKeyChanged, filter, map } from 'rxjs/operators';\n\nimport { EpcotConfigService } from '../common/epcot-config.service';\nimport { NavigationHelper } from '../navigation-core/navigation-helper.service';\nimport { RedirectHelperService } from '../navigation-core/redirect-helper.service';\nimport { ModelPopupTypes, UrlHelperService } from '../navigation-core/url-helper.service';\nimport { Events as RacingEvents } from '../racing/models/events';\nimport { SensitivePageTrackerService } from './sensitive-page-tracking.service';\n\nexport type PopupTypes =\n | 'betfinder'\n | 'betslip'\n | 'update-mobile-number'\n | 'my-bets'\n | 'sports'\n | 'grouped-sports'\n | 'archived-bets'\n | 'bet-generator'\n | 'transaction-bets'\n | 'bet-builder-overlay'\n | 'hr-help-overlay'\n | 'hr-info-overlay'\n | 'gr-help-overlay'\n | 'gr-info-overlay'\n | 'event-switcher'\n | 'ngrx-reports'\n | 'odds-change-preference';\n\ninterface PopupStack {\n name: PopupTypes;\n handle: ModalRef;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PopupManager {\n currentPopup: PopupTypes | null = null;\n fullReloadRequired: boolean;\n private popupStack: PopupStack[] = [];\n private largeScreen = false;\n private popups: { [key: string]: { component: any; options: ModalDialogOptions } } = {};\n private _setLastActiveItem = new Subject();\n private opening: boolean;\n\n private readonly _doc = inject(DOCUMENT);\n\n constructor(\n private dialogService: ModalDialogService,\n private sensitivePageTracker: SensitivePageTrackerService,\n private htmlNode: HtmlNode,\n private tracker: TrackingService,\n private dispatcher: DispatcherService,\n private navigationService: NavigationService,\n private location: Location,\n private router: Router,\n private routerEventsService: RouterEventsService,\n private urlService: UrlService,\n private urlHelperService: UrlHelperService,\n private mediaService: MediaQueryService,\n private timerService: TimerService,\n private headerSearchService: HeaderSearchService,\n private epcotConfigService: EpcotConfigService,\n private redirectHelper: RedirectHelperService,\n private userService: UserService,\n private menuActionsService: MenuActionsService,\n private navigationHelper: NavigationHelper,\n private appConfig: AppConfig,\n private modalAnimationHelper: ModalAnimationHelperService,\n private openedModalsStorage: OpenedModalsStorageService,\n private eventDetailsConfig: EventDetailsConfig,\n ) {\n this.navigationService.locationChange.pipe(filterSports()).subscribe((e: LocationChangeEvent) => this.locationChangeHandler(e));\n\n // adding a reference to the layout module is creating a circular dependency\n this.mediaService\n .observe()\n .pipe(\n filterSportsEmitLast(),\n map(() => ({ large: this.mediaService.isActive('gt-md') })),\n distinctUntilKeyChanged('large'),\n )\n .subscribe(this.screenSizeChanged);\n\n if (this.epcotConfigService.isEnabled()) {\n this.headerSearchService.clickEvent.pipe(filterSports()).subscribe((_) => {\n this.open('betfinder');\n });\n }\n\n this.router.events\n .pipe(\n filterSports(),\n filter((event) => event instanceof RouterEvent),\n )\n .subscribe((event) => {\n if (!(event instanceof RouterEvent)) {\n return;\n }\n const { search } = this.urlService.parse(event.url);\n if (search.has('popup')) {\n const requestedPopup = search.get('popup') as PopupTypes;\n for (let i = this.popupStack.length - 1; i >= 0; i--) {\n if (this.popupStack[i].name === requestedPopup) {\n break;\n }\n this.close(PopupAction.CloseByNavigation);\n }\n\n return;\n }\n\n if (this.isOpen()) {\n this.closeAll();\n }\n });\n }\n\n get setLastActiveItem(): Observable {\n return this._setLastActiveItem.asObservable();\n }\n\n setFullReloadRequired(): void {\n this.fullReloadRequired = true;\n }\n\n configure(name: PopupTypes, component: any, options: ModalDialogOptions): void {\n if (this.popups[name]) {\n throw new Error(`Popup '${name}' has already been configured`);\n }\n\n this.popups[name] = {\n component,\n options,\n };\n }\n\n updateDialogAnimation(\n name: PopupTypes,\n animationType?: DialogAnimation,\n showBackNav: boolean = false,\n closePreviousModalWindow: boolean = false,\n ): void {\n const popupConfig = this.popups[name];\n if (popupConfig?.options?.settings) {\n popupConfig.options.settings.animation = animationType;\n popupConfig.options.settings.showBackNav = showBackNav;\n popupConfig.options.settings.closePrevious = closePreviousModalWindow;\n }\n }\n\n updateDialogTitle(name: PopupTypes, title: string): void {\n this.popupStack.find((p) => p.name === name)?.handle.updateTitle(title);\n }\n\n open(name: PopupTypes, animationType?: DialogAnimation, options?: ModalDialogOptions): void {\n try {\n if (this.opening) {\n return;\n }\n this.opening = true;\n if (!this.popups[name]) {\n throw new Error(`Popup '${name}' cannot be opened as it has not been configured`);\n }\n\n const popupAlreadyOpened = this.popupStack.some((ps) => ps.name === name);\n if (popupAlreadyOpened) {\n this.opening = false;\n\n return;\n }\n\n if (this.popups[name].options.settings?.needsAuthentication) {\n if (!this.userService.isAuthenticated) {\n this.handlePopupUnauth(name);\n this.opening = false;\n\n return;\n }\n }\n\n const parentPopupCloseDelay = 50;\n\n if (this.currentPopup) {\n const popupConfig = this.popups[this.currentPopup];\n const closePrevious = this.popups[name]?.options?.settings?.closePrevious;\n if (popupConfig.options.settings?.closeOnChildPopup || closePrevious) {\n this.close(PopupAction.CloseByNextPopup);\n }\n if (name === ModelPopupTypes.MyBets && animationType && popupConfig.options.settings) {\n popupConfig.options.settings.animation = animationType;\n }\n }\n this.currentPopup = name;\n\n if (options) {\n this.popups[this.currentPopup].options = {\n data: { ...this.popups[this.currentPopup].options.data, ...options.data },\n settings: { ...this.popups[this.currentPopup].options.settings, ...options.settings },\n };\n }\n\n this.timerService.setTimeout(async () => {\n await this.openHandler();\n this.opening = false;\n }, parentPopupCloseDelay);\n } catch (e) {\n this.opening = false;\n throw e;\n }\n }\n\n close(action: PopupAction = PopupAction.ManualClose, index: number = -1): void {\n const popupHandle = index >= 0 ? this.popupStack[index] : this.popupStack[this.popupStack.length - 1];\n\n if (!popupHandle) {\n return;\n }\n\n this.dispatcher.dispatch(RacingEvents.Popup.PopupClosed);\n const isBabPopup = popupHandle.name === 'bet-builder-overlay';\n\n if (isBabPopup && this.appConfig.modalDialogGesturesEnabled) {\n this.modalAnimationHelper.addSlideWithScale();\n this.timerService.setTimeoutOutsideAngular(() => {\n popupHandle.handle.close({ closeAction: action });\n }, 350);\n } else {\n popupHandle.handle.close({ closeAction: action });\n }\n\n this.openedModalsStorage.tryCloseSeeAll(isBabPopup);\n this.currentPopup = null;\n }\n\n dismissPreviousPopup(popupName: PopupTypes, action: PopupAction = PopupAction.ManualClose, windowClass: string = ''): void {\n const popupHandle = this.popupStack?.find((p) => p.name === popupName);\n\n if (!popupHandle || popupHandle.name !== popupName) {\n return;\n }\n\n this.dispatcher.dispatch(RacingEvents.Popup.PopupClosed, popupName);\n if (windowClass) {\n if (this.appConfig.modalDialogGesturesEnabled) {\n this.modalAnimationHelper.addSlideWithScale();\n } else {\n popupHandle.handle.addWindowClass(windowClass);\n }\n\n this.timerService.setTimeoutOutsideAngular(\n () => {\n popupHandle.handle.dismiss({ closeAction: action });\n },\n this.appConfig.modalDialogGesturesEnabled ? 350 : 500,\n );\n } else {\n popupHandle.handle.dismiss({ closeAction: action });\n }\n\n this.currentPopup = null;\n }\n\n closeAll(): void {\n for (let index = this.popupStack.length - 1; index >= 0; index--) {\n this.close(PopupAction.ManualClose, index);\n }\n\n this.popupStack = [];\n }\n\n toggle(name: PopupTypes): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open(name);\n }\n }\n\n isOpen(): boolean {\n return !!this.popupStack.length;\n }\n\n openBetslip(fromBottomNav?: boolean): void {\n if (fromBottomNav) {\n this.tracker.track(trackingConstants.EVENT_PAGE_VIEW, {\n [trackingConstants.PAGE_NAME]: 'M2_slip_open_bottomBubble',\n [trackingConstants.PAGE_URL]: 'in11288',\n });\n } else {\n this.tracker.track(trackingConstants.EVENT_PAGE_VIEW, {\n [trackingConstants.PAGE_NAME]: 'M2_slip_open_topRightButton',\n [trackingConstants.PAGE_URL]: 'in11246',\n });\n }\n\n this.open(ModelPopupTypes.Betslip);\n }\n\n isPopupOpen(popupName: string): boolean {\n return popupName === this.currentPopup;\n }\n\n isPopupInStack(popupName: string): boolean {\n return this.popupStack.some((popup) => popup.name === popupName);\n }\n\n private screenSizeChanged = (screen: { large: boolean }): void => {\n this.largeScreen = screen.large;\n if (screen.large) {\n if (this.currentPopup === ModelPopupTypes.Betslip) {\n this.close(PopupAction.ManualClose);\n }\n }\n };\n\n private async openInternal(name: PopupTypes | null): Promise {\n if (!name) {\n throw new Error(`Trying to open popup with no name`);\n }\n\n if (!this.popups[name]) {\n throw new Error(`Popup '${name}' cannot be opened as it has not been configured`);\n }\n\n this.dispatcher.dispatch(RacingEvents.Popup.BeforePopupDisplayed, name);\n\n const popupConfig = this.popups[name];\n popupConfig.options.settings = extend({}, popupConfig.options.settings, {\n beforeDismiss: () => {\n this.dispatcher.dispatch(RacingEvents.Popup.PopupClosed, name);\n\n return true;\n },\n });\n if (this.currentPopup === 'sports') {\n popupConfig.options.settings.container = this._doc.querySelector('.az-menu-container') || undefined;\n }\n const component = isFunction(popupConfig.component) ? await popupConfig.component() : popupConfig.component;\n const handle = this.dialogService.openPopup(component, popupConfig.options);\n let currentUrl = this.navigationService.location.path();\n if (currentUrl === this.urlHelperService.getAtoZUrl()) {\n currentUrl = this.urlHelperService.getHomeUrl();\n }\n const currentQueryParams = this.navigationService.location.absUrl().split('?')[1];\n const queryParams = `popup=${name}`;\n if (currentQueryParams !== queryParams) {\n this.location.go(currentUrl, queryParams);\n }\n this.popupStack.push({ name, handle });\n this.show();\n\n handle.result.then((r) => this.onClosing(r, name)).catch((e) => this.onClosing(e, name));\n }\n\n private locationChangeHandler(e: LocationChangeEvent): void {\n if (e.nextUrl) {\n const nextUrl = this.urlService.parse(e.nextUrl);\n if (nextUrl.search.has('popup')) {\n const requestedPopup = nextUrl.search.get('popup') as PopupTypes;\n if (this.shouldSkipLocationChange(requestedPopup)) {\n return;\n }\n const popupInStack = this.popupStack.some((ps) => ps.name === requestedPopup);\n\n if (!popupInStack && (!this.largeScreen || this.allowedInLargeScreen(requestedPopup))) {\n this.open(requestedPopup);\n }\n\n return;\n }\n }\n this.closeAll();\n\n const previousUrl = this.urlService.parse(e.previousUrl);\n if (previousUrl.search.has('popup') && previousUrl.search.get('popup') === 'sports') {\n this._setLastActiveItem.next();\n }\n }\n\n private handlePopupUnauth(name: string): void {\n const returnUrl = `?popup=${name}`;\n /* \n Switching to the home URL as the reference for popup navigation. \n This is necessary because if the popup URL remains unchanged after login, the locationChangeHandler won't detect it to trigger popup opening. \n */\n this.navigationService.goTo(this.urlHelperService.getHomeUrl(), { replace: true });\n\n // On successful login url locationchanger can handle the popup as the url changes\n this.menuActionsService.invoke(MenuAction.GOTO_LOGIN, '', [undefined, undefined, { returnUrl }]);\n }\n\n private shouldSkipLocationChange(popup: PopupTypes): boolean {\n return ['sports', 'bet-builder-overlay', 'event-switcher'].indexOf(popup) > -1;\n }\n\n private allowedInLargeScreen(popup: PopupTypes): boolean {\n return (\n [\n 'betfinder',\n 'sports',\n 'grouped-sports',\n 'bet-radar',\n 'archived-bets',\n 'bet-builder-overlay',\n 'hr-help-overlay',\n 'gr-help-overlay',\n 'ngrx-reports',\n ].indexOf(popup) > -1\n );\n }\n\n private openHandler = async (): Promise => {\n const oldPopup = this.popupStack.length > 0 ? this.popupStack[this.popupStack.length - 1].name : '';\n await this.openInternal(this.currentPopup);\n this.sensitivePageTracker.dispatchSensitivePagesEvent(this.currentPopup, oldPopup);\n };\n\n private onClosing = (result: PopupClosingResult | ModalDismissReasons, name: PopupTypes) => {\n const previousPopUp = this.popupStack[0];\n this.popupStack = this.popupStack.filter((p) => p.name !== name);\n\n this.dispatcher.dispatch('ON_POPUP_CLOSED', name);\n\n if ((result as PopupClosingResult).closeAction === PopupAction.CloseByPan) {\n this.navigateOnClose();\n }\n\n if (!this.popupStack.length) {\n // last popup was closed\n this.hide();\n }\n\n if (!this.isClosedManually(result)) {\n // navigation occurred so we do nothing\n return;\n }\n\n if (this.isFirstLoadAndClosingBetslipPopup(previousPopUp.name)) {\n const oldPopup = this.popupStack.length > 0 ? this.popupStack[this.popupStack.length - 1].name : null;\n\n this.router.navigate([this.navigationService.location.path()], {\n queryParams: { popup: oldPopup },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n\n return;\n }\n\n if (!(previousPopUp.name === 'betfinder' && this.currentPopup === 'betslip')) {\n if (previousPopUp.name === 'my-bets' && this.epcotConfigService.isShowMyBetsPopup && this.#window.history.length <= 2) {\n this.redirectHelper.goHome(undefined, true);\n } else {\n this.navigateOnClose();\n }\n }\n };\n\n private navigateOnClose(): void {\n if (this.eventDetailsConfig.showInOverlay && this.currentPopup === 'event-switcher') {\n this.timerService.setTimeoutOutsideAngular(() => {\n const url = this.routerEventsService.urlHistory?.[this.routerEventsService.urlHistory.length - 1];\n this.location.replaceState(url);\n });\n } else {\n this.location.back();\n }\n }\n\n private isFirstLoadAndClosingBetslipPopup(closingPopup: string): boolean {\n return !this.navigationHelper.allowBack() && closingPopup === 'betslip';\n }\n\n private isClosedManually(result: PopupClosingResult | ModalDismissReasons): boolean {\n if (this.isPopupActionResult(result)) {\n if (result.closeAction === PopupAction.ManualClose) {\n return true;\n }\n } else {\n if (result === ModalDismissReasons.BackdropClick || result === ModalDismissReasons.Esc) {\n return true;\n }\n }\n\n return false;\n }\n\n private hide(): void {\n this.htmlNode.setCssClass('popup-on', false);\n }\n\n private show(): void {\n if (this.currentPopup === 'sports') {\n this.htmlNode.setCssClass('popup-on az-menu-desktop', true);\n\n return;\n }\n this.htmlNode.setCssClass('popup-on', true);\n }\n\n private isPopupActionResult(result: any): result is PopupClosingResult {\n return !!result?.closeAction;\n }\n\n readonly #window = inject(WINDOW);\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\n\nimport { AccaBoostConfig, LayoutNavigationConfig, MyBetsConfig } from '@frontend/sports/common/client-config-data-access';\nimport { filterSportsEmitLast } from '@frontend/sports/host-app/sports-product/feature/utils';\nimport { DialogAnimation, ModalDialogOptions } from '@frontend/sports/modal/feature';\nimport { TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { OpenBetsSummary } from '@frontend/sports/types/models/my-bets';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { BottomNavService, MenuAction, MenuActionsService, NavigationService } from '@frontend/vanilla/core';\nimport { BetslipIntegrationService } from 'packages/sports/common/betslip/integration/betslip-integration.service';\nimport { combineLatest, switchMap } from 'rxjs';\n\nimport { EpcotConfigService } from '../common/epcot-config.service';\nimport { MyBetsSummaryService } from '../my-bets-base/my-bets-summary.service';\nimport { RedirectHelperService } from '../navigation-core/redirect-helper.service';\nimport { ModelPopupTypes, UrlHelperService } from '../navigation-core/url-helper.service';\nimport { PopupManager } from '../popup/popup-manager.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BottomNavActionsService {\n private static readonly betslipBadgeClass: string = 'badge-primary';\n private static readonly extraIconBadgeClass: string = 'badge-extra-bubble-icon';\n private static readonly myBetsBadgeClass: string = 'badge-primary theme-spot-filled';\n\n private openBetsCount: number;\n private hasLiveOpenBets = false;\n\n constructor(\n private vanillaNavigation: NavigationService,\n private popupManager: PopupManager,\n private trackingService: TrackingService,\n private redirectHelper: RedirectHelperService,\n private location: Location,\n private myBetsSummary: MyBetsSummaryService,\n private userService: UserService,\n private urlHelper: UrlHelperService,\n private betslipIntegrationService: BetslipIntegrationService,\n private bottomNavService: BottomNavService,\n private menuActionsService: MenuActionsService,\n private accaBoostConfig: AccaBoostConfig,\n private layoutNavigationConfig: LayoutNavigationConfig,\n private epcotConfigService: EpcotConfigService,\n private mybetsConfig: MyBetsConfig,\n ) {}\n\n betslipToggled(): void {\n if (this.popupManager.isOpen()) {\n this.trackingService.track(trackingConstants.EVENT_PAGE_VIEW, { [trackingConstants.PAGE_NAME]: 'M2_slip_action_ClosePopup' });\n }\n this.popupManager.open('betslip', undefined);\n }\n\n myBetsToggled(): void {\n const myBetsUrl = this.urlHelper.getMyBetsUrl();\n if (this.location.path() === myBetsUrl) {\n this.redirectHelper.goBack();\n this.myBetsTracking(false);\n } else {\n if (this.userService.isAuthenticated) {\n if (this.epcotConfigService.isShowMyBetsPopup) {\n this.popupManager.updateDialogAnimation(ModelPopupTypes.MyBets, DialogAnimation.SlideInFromBottom);\n const options: ModalDialogOptions = {\n settings: {\n closeAnimation: DialogAnimation.SlideOutFromTop,\n },\n };\n this.popupManager.open(ModelPopupTypes.MyBets, undefined, options);\n } else {\n this.vanillaNavigation.goTo(myBetsUrl);\n }\n } else {\n const returnUrl = this.epcotConfigService.isShowMyBetsPopup ? this.urlHelper.getMyBetPopupUrl() : myBetsUrl;\n this.menuActionsService.invoke(MenuAction.GOTO_LOGIN, '', [undefined, undefined, { returnUrl }]);\n }\n this.myBetsTracking(true);\n }\n }\n\n private myBetsTracking(isOpen: boolean): void {\n if (!isOpen) {\n return;\n }\n\n let pageName: string;\n if (this.hasLiveOpenBets) {\n pageName = 'HIconON_Live';\n } else if (this.openBetsCount > 0) {\n pageName = 'HIcon_Open';\n } else {\n pageName = 'HIcon_Settled';\n }\n this.trackingService.update({ [trackingConstants.PAGE_REFERRING_ACTION]: pageName });\n }\n\n init(): void {\n if (!this.mybetsConfig.isOpenSummaryLoadingRestricted) {\n this.myBetsSummary.summaryUpdate.pipe(filterSportsEmitLast()).subscribe((stats: OpenBetsSummary) => {\n this.hasLiveOpenBets = stats.liveBetsCount > 0;\n this.openBetsCount = stats.openBetsCount;\n\n let betsCount: number | string = 0;\n let badgeClass = BottomNavActionsService.myBetsBadgeClass;\n if (this.mybetsConfig.isShowOpenBetsCount) {\n if (stats.openBetsCount > 99) {\n betsCount = '99+';\n badgeClass = badgeClass.replace('theme-spot-filled', 'open-bets bets-99-plus');\n } else {\n betsCount = stats.openBetsCount;\n badgeClass = badgeClass.replace('theme-spot-filled', 'open-bets');\n }\n } else betsCount = stats.liveBetsCount;\n const myBetsItem = this.layoutNavigationConfig?.bottomNavItemsMapping['mybets'] || 'mybets';\n\n this.bottomNavService.setItemCounter(myBetsItem, betsCount || null, badgeClass);\n });\n }\n\n this.betslipIntegrationService\n .betslipInitialized$()\n .pipe(\n filterSportsEmitLast(),\n switchMap(() =>\n combineLatest([this.betslipIntegrationService.betslipPicksCount$(), this.betslipIntegrationService.isAccaBoostToken$()]),\n ),\n )\n .subscribe(([count, isAccaBoost]) => this.setBetslipCounter(count, isAccaBoost));\n }\n\n private setBetslipCounter(count: number, isAccaBoost: boolean): void {\n this.bottomNavService.setItemCounter(\n 'betslip',\n count || null,\n isAccaBoost ? this.accaBoostBadgeClass : BottomNavActionsService.betslipBadgeClass,\n );\n }\n\n menuToggled(): void {\n this.vanillaNavigation.goTo('/menu');\n }\n\n private get accaBoostBadgeClass(): string {\n return `${BottomNavActionsService.betslipBadgeClass} ${BottomNavActionsService.extraIconBadgeClass} ${this.accaBoostConfig.icon}`;\n }\n}\n","import { InjectionToken, inject } from '@angular/core';\n\nimport { NonRootToken } from '@frontend/sports/host-app/sports-product/feature/non-root-token';\n\nimport { SportsTheme } from './themes';\n\nexport const CURRENT_THEME_TOKEN = new InjectionToken('CURRENT_THEME');\nexport const IS_ROBOT_TOKEN = new InjectionToken('IS_ROBOT_TOKEN');\n\nexport const injectCurrentTheme = () => inject(NonRootToken(CURRENT_THEME_TOKEN));\nexport const injectIsRobot = () => inject(NonRootToken(IS_ROBOT_TOKEN));\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Unique identifier used for retrieving instances of `DsAtoms` from Angular's dependency injection framework.\n */\nexport const DS_ATOMS = new InjectionToken('ds-atoms');\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation, booleanAttribute } from '@angular/core';\n\nimport { DS_ATOMS } from '@frontend/ui/shared';\n\nexport const DS_NOTIFICATION_BUBBLE_VARIANT_ARRAY = ['primary', 'utility', 'live', 'neutral', 'live-dot', 'utility-dot'] as const;\nexport type DsNotificationBubbleVariant = (typeof DS_NOTIFICATION_BUBBLE_VARIANT_ARRAY)[number];\n\nexport const DS_NOTIFICATION_BUBBLE_SIZE_ARRAY = ['small', 'medium', 'large'] as const;\nexport type DsNotificationBubbleSize = (typeof DS_NOTIFICATION_BUBBLE_SIZE_ARRAY)[number];\n\n@Component({\n selector: 'ds-notification-bubble',\n template: `\n @if (variant === 'live-dot' || variant === 'utility-dot') {\n
\n } @else {\n \n }\n `,\n host: {\n 'class': 'ds-notification-bubble',\n '[class]': `hostClass`,\n '[class.ds-notification-bubble-disabled]': 'disabled ? true : null',\n '[class.ds-notification-bubble-inverse]': 'inverse',\n '[attr.aria-label]': `getAriaLabel()`,\n '[attr.role]': `'status'`,\n },\n\n styleUrl: 'notification-bubble.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DS_ATOMS,\n useFactory: () => 'ds-notification-bubble',\n },\n ],\n})\nexport class DsNotificationBubble {\n @Input() size: DsNotificationBubbleSize = 'medium';\n @Input() variant: DsNotificationBubbleVariant = 'primary';\n @Input({ transform: booleanAttribute }) disabled? = false;\n @Input({ transform: booleanAttribute }) inverse? = false;\n\n get hostClass() {\n return `ds-notification-bubble-${this.size} ds-notification-bubble-${this.variant}`;\n }\n constructor(public elementRef: ElementRef) {}\n\n public getAriaLabel(): string {\n if (this.variant.includes('dot')) {\n return this.variant === 'live-dot' ? 'Live notification indicator' : 'Utility notification indicator';\n }\n\n // const content = this.elementRef.nativeElement.textContent?.trim();\n let content = '';\n if (this.elementRef.nativeElement.textContent) {\n content = `Notification ${this.elementRef.nativeElement.textContent.trim()}`;\n }\n\n if (this.disabled) {\n return `Disabled notification ${content}`;\n }\n\n return content;\n }\n}\n","import { ThemeOptionsWithDefault } from './types';\n\nexport function getByThemeOrDefault(obj: ThemeOptionsWithDefault, key: keyof ThemeOptionsWithDefault) {\n return obj[key] ?? obj.default;\n}\n","import { ChangeDetectorRef, Directive, Input, OnChanges, OnInit, inject } from '@angular/core';\n\nimport { ThemeInverse, getByThemeOrDefault, injectCurrentTheme } from '@frontend/sports/common/ui/shared';\nimport { DsNotificationBubble, DsNotificationBubbleVariant } from '@frontend/ui/notification-bubble';\n\nimport { ThemeNotificationSize, ThemeNotificationVariant } from './types';\n\n@Directive({\n selector: '[msThemedNotification]',\n standalone: true,\n})\nexport class SportsThemedNotificationDirective implements OnInit, OnChanges {\n @Input() themedSize?: ThemeNotificationSize;\n @Input() themedVariant?: ThemeNotificationVariant;\n @Input() themeInverse?: ThemeInverse;\n @Input() selectedVariant?: ThemeNotificationVariant;\n @Input() isSelected = false;\n currentTheme = injectCurrentTheme();\n changeRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n notification: DsNotificationBubble = inject(DsNotificationBubble, {\n self: true,\n });\n\n ngOnInit(): void {\n const size = this.themedSize?.[this.currentTheme];\n if (size) {\n this.notification.size = size;\n }\n\n const themeInverse = this.themeInverse?.[this.currentTheme];\n if (themeInverse) {\n this.notification.inverse = themeInverse.isInverse;\n }\n }\n\n ngOnChanges() {\n const variant = this.themeVariant;\n if (variant) {\n this.notification.variant = variant;\n }\n }\n\n get themeVariant(): DsNotificationBubbleVariant | undefined {\n return this.isSelected && this.selectedVariant\n ? getByThemeOrDefault(this.selectedVariant, this.currentTheme)\n : this.themedVariant\n ? getByThemeOrDefault(this.themedVariant, this.currentTheme)\n : undefined;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { DsTabContext } from './tabs-context';\n\n@Directive({\n selector: 'ng-template[dsTabHeader]',\n standalone: true,\n})\nexport class DsTabHeader {\n static ngTemplateContextGuard(directive: DsTabHeader, context: unknown): context is DsTabContext {\n return true;\n }\n}\n\n@Directive({\n selector: 'ng-template[dsTabContent]',\n standalone: true,\n})\nexport class DsTabContent {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { DsTabContext } from './tabs-context';\nimport { DsTabContent, DsTabHeader } from './tabs.directives';\n\nlet _tabNameIndex = 0;\n/** Generates a random name for a tab. */\nfunction getRandomName() {\n ++_tabNameIndex; // increment the index for each tab name\n return `tab-${_tabNameIndex}`;\n}\n\n// eslint-disable-next-line @nx/workspace-component-tests-present, @nx/workspace-component-default-story\n@Component({\n selector: 'ds-tab',\n template: `\n @if (selected() && lazyContent) {\n \n }\n\n
\n \n
\n `,\n imports: [NgTemplateOutlet],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DsTab implements OnDestroy {\n /**\n * The name of the tab. Must be unique within the tab.\n * If not provided, a random name is generated.\n * It will be used as the id of the tab, and can be used to select the tab.\n *\n * NOTE: This is different from the `title` property, which is the text that is displayed in the tab header.\n */\n name = input(getRandomName());\n\n /**\n * The title of the tab.\n * The title is displayed in the tab header.\n */\n title = input();\n\n /**\n * Whether the tab is disabled.\n * If the tab is disabled, it cannot be selected.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * `TemplateRef` for the tab header.\n *\n * @example\n * ```html\n * \n *
Tab header
\n *
\n * ```\n * or\n * ```html\n * \n * \n * \t
Tab header
\n *
\n *
\n * ```\n */\n @ContentChild(DsTabHeader, { read: TemplateRef })\n customHeader?: TemplateRef | null = null;\n\n /**\n * `TemplateRef` for the tab content.\n *\n * @example\n\n * ```html\n * \n *
Tab content
\n *
\n * ```\n * or\n * ```html\n * \n * \n * \t
Tab content
\n *
\n *
\n * ```\n */\n @ContentChild(DsTabContent, { read: TemplateRef }) lazyContent?: TemplateRef | null = null;\n\n selected = signal(false);\n\n public focused = signal(false);\n\n private _focusMonitor = inject(FocusMonitor);\n private _elementRef = inject(ElementRef);\n\n setFocused(focused: boolean) {\n this.focused.set(focused);\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n// eslint-disable-next-line @nx/workspace-component-default-story, @nx/workspace-component-tests-present\n@Component({\n selector: 'ds-tabs-arrow',\n standalone: true,\n template: `\n \n \n \n `,\n host: {\n '[class.ds-left-arrow]': \"direction() === 'left'\",\n },\n styles: [\n `\n :host {\n display: inline-flex;\n justify-items: center;\n align-items: center;\n height: 100%;\n max-width: 100%;\n\n &.ds-left-arrow {\n transform: rotate(180deg);\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DsTabsScrollArrow {\n direction = input<'right' | 'left'>('right');\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { AfterContentInit, DestroyRef, Directive, ElementRef, Injector, Signal, computed, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, auditTime, debounceTime, map, of, switchMap } from 'rxjs';\n\nimport { DsTab } from './tab.component';\n\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst INITIAL_SCROLL_DELAY = 650; // ms\n\n/**\n * For selected tab item the font weight is more text than the default state and there by in some cases\n * the right arrow is showing even when we scroll to last tab items due to increase of tab items width\n *\n * A small threshold (10px in this case) is introduced to detect minor changes\n * in the maxScrollLeft value. If the change is small enough (between 1px and 10px),\n * we assume that any last tab item is selected and there by we return true to hide right arrow.\n */\nconst SCROLL_THRESHOLD = 10;\n\n@Directive()\nexport abstract class DsTabsArrows implements AfterContentInit {\n protected _injector = inject(Injector);\n protected _destroyRef = inject(DestroyRef);\n protected _breakpointObserver = inject(BreakpointObserver);\n\n abstract _id: number;\n\n abstract _scrollable: Signal;\n abstract _activeTab: Signal;\n\n protected abstract _tabs: Signal;\n abstract _tabHeaderItemsContainer: ElementRef;\n abstract _tabHeaderItemsList: ElementRef;\n\n isSmallScreen = toSignal(\n this._breakpointObserver\n .observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.HandsetLandscape, Breakpoints.TabletPortrait])\n .pipe(map((res) => res.matches)),\n );\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistanceToLeft = signal(0);\n abstract _scrollDistance: Signal;\n abstract _scrollSpeed: Signal;\n\n private _containerWidth = signal(0);\n private _listScrollWidth = signal(0);\n\n _maxScrollDistance = computed(() => this._listScrollWidth() - this._containerWidth() || 0);\n\n // Whether the tab list can be scrolled to the left.\n showNavigationArrows = computed(() => {\n if (!this._scrollable()) {\n return false;\n }\n if (this.isSmallScreen()) {\n return false;\n }\n if (this._containerWidth() === 0) {\n return false;\n }\n if (!this.initialScrollHappened()) {\n return false; // don't show arrows until the initial scroll is fired\n }\n return this._listScrollWidth() > this._containerWidth();\n });\n\n addMobileNavScrollClass = computed(() => {\n if (!this._scrollable()) {\n return false;\n }\n return this.isSmallScreen();\n });\n\n // If the header is at the beginning of the list (scroll distance is equal to 0) then disable the prev button.\n prevBtnHidden = computed(() => this._scrollDistanceToLeft() === 0);\n\n // If the header is at the end of the list (scroll distance is equal to the maximum distance we can scroll),\n // then disable the after button.\n nextBtnHidden = computed(() => {\n if (Math.abs(this._scrollDistanceToLeft() - this._maxScrollDistance()) <= SCROLL_THRESHOLD) {\n return true;\n }\n return Math.ceil(this._scrollDistanceToLeft()) === Math.ceil(this._maxScrollDistance());\n });\n\n initialScrollHappened = signal(false);\n\n ngAfterContentInit() {\n toObservable(this._activeTab, { injector: this._injector })\n .pipe(\n switchMap((activeTab) => {\n if (this.initialScrollHappened()) {\n return of(activeTab);\n }\n return of(activeTab).pipe(auditTime(INITIAL_SCROLL_DELAY));\n }),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((activeTab) => {\n this.initialScrollHappened.set(true);\n this._updateScrollDistanceBasedOnName(activeTab);\n });\n\n const containerWidthSub = listenToResizeObserver([this._tabHeaderItemsContainer.nativeElement], this._injector).subscribe((res) => {\n this._containerWidth.set(res.length > 0 ? res[0].contentRect.width : 0);\n });\n\n const listItemsWidthSub = listenToResizeObserver([this._tabHeaderItemsList.nativeElement], this._injector).subscribe((res) => {\n if (this._scrollable()) {\n this._listScrollWidth.set(res.length > 0 ? res[0].contentRect.width : 0);\n } else {\n this._listScrollWidth.set(0);\n }\n });\n\n this._destroyRef.onDestroy(() => {\n containerWidthSub.unsubscribe();\n listItemsWidthSub.unsubscribe();\n });\n }\n\n /**\n * Handles click events on the tab list. Moves the header to the clicked tab.\n * @param event\n * @param direction\n */\n handleArrowClick(event: MouseEvent, direction: 'prev' | 'next') {\n const scrollAmount = (direction === 'prev' ? -1 : 1) * this._scrollDistance();\n\n return this._scrollTo(this._scrollDistanceToLeft() + scrollAmount);\n }\n\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n private _scrollTo(position: number) {\n const distance = Math.max(0, Math.min(this._maxScrollDistance(), position));\n this._scrollDistanceToLeft.set(distance);\n this._updateTabScrollPosition(distance);\n }\n\n /**\n * Updates the scroll distance of the tab list based on the selected name.\n * @param name\n */\n _updateScrollDistanceBasedOnName(name: string) {\n if (!this._scrollable()) {\n return;\n }\n\n const tabs = this._tabs();\n\n const selectedTab = tabs.find((x) => x.name() === name);\n\n if (tabs.length === 0 || !selectedTab) {\n return;\n }\n\n const tabHeaderItem = this._getTabElementByName(name);\n\n if (!tabHeaderItem) {\n return;\n }\n // calculate the scroll distance\n const scrollDistance = _calculateScrollDistance(this._tabHeaderItemsContainer.nativeElement, tabHeaderItem);\n if (this.showNavigationArrows()) {\n if (name === tabs[0].name()) {\n this._scrollTo(0);\n return;\n }\n\n // eslint-disable-next-line unicorn/prefer-at\n if (tabs[tabs.length - 1].name() === name) {\n this._scrollTo(this._maxScrollDistance());\n return;\n }\n\n if (tabHeaderItem && scrollDistance) {\n this._scrollTo(scrollDistance);\n }\n } else if (tabHeaderItem && this._tabHeaderItemsContainer.nativeElement.scrollTo) {\n /**\n * offsetRectLeft: This gives the left position of the tabElement relative to the viewport\n */\n const { left: offsetRectLeft } = tabHeaderItem.getBoundingClientRect();\n\n /**\n * This gets the position of the container (the scrollable area where the tabs are displayed) from the left side of the viewport.\n * Example: If the container is 30px from the left side of the viewport, this would be 30.\n */\n const { left: containerOffsetRectLeft } = this._tabHeaderItemsContainer.nativeElement.getBoundingClientRect();\n\n /**\n * _tabHeaderItemsContainer scrollLeft: This gets the current horizontal scroll position of the container.\n * It helps to ensure that we calculate the new scroll position relative to the current one.\n * Example: If the container has been scrolled 100px to the right, container.scrollLeft would return 100.\n */\n const containerScrollLeft = this._tabHeaderItemsContainer.nativeElement.scrollLeft;\n\n /**\n * container.clientWidth gives the total width of the container's visible area.\n * tabElement.clientWidth gives the width of the tab element.\n * The difference between the two (container.clientWidth - tabElement.clientWidth) gives the remaining space on either side of the tab. Dividing this by 2 distributes the extra space equally on both sides to center the tab.\n * Example: If the container's width is 600px and the tab's width is 100px, the result is (600 - 100) / 2 = 250px.\n * This value ensures the tab is positioned in the center of the container.\n */\n const targetScroll =\n containerScrollLeft +\n offsetRectLeft -\n containerOffsetRectLeft -\n (this._tabHeaderItemsContainer.nativeElement.clientWidth - tabHeaderItem.clientWidth) / 2;\n\n // Scroll into view centered\n this._tabHeaderItemsContainer.nativeElement.scrollTo({ left: targetScroll, behavior: 'smooth' });\n }\n }\n\n _getTabElementByName(name: string): HTMLElement | null {\n // [id]=\"'ds-tab-id-' + id + '-' + $name\"\n const id = `#ds-tab-id-${this._id}-${name}`;\n return this._tabHeaderItemsList.nativeElement.querySelector(id);\n }\n\n /**\n * Updates the tab list scroll position to move the active tab into view.\n * @param scrollDistance\n */\n _updateTabScrollPosition(scrollDistance: number) {\n let distance = 0;\n\n if (this.showNavigationArrows()) {\n if (!this._tabHeaderItemsContainer || !this._tabHeaderItemsList) {\n return;\n }\n distance = -scrollDistance;\n } else {\n distance = 0;\n }\n\n // if we show the navigation arrows we want to scroll it based on the distance provided otherwise keep it at 0;\n this._tabHeaderItemsList.nativeElement.style.transform = `translateX(${Math.round(distance)}px)`;\n }\n}\n\n/**\n * Calculates the scroll distance based on a selected element.\n */\nfunction _calculateScrollDistance(containerElement: HTMLElement, tabHeaderItem: HTMLElement): number | undefined {\n const { left: offsetRectLeft, right: offsetRectRight } = tabHeaderItem.getBoundingClientRect();\n // TODO: Make this faster, cache containerElement.getBoundingClientRect()\n const { left: containerOffsetRectLeft, right: containerOffsetRectRight } = containerElement.getBoundingClientRect();\n const { offsetLeft, offsetWidth } = tabHeaderItem;\n const { offsetLeft: containerOffsetLeft, offsetWidth: containerWidth } = containerElement;\n\n let containerCenterPosition;\n // calculate target center position\n const targetCenterPosition = offsetLeft + offsetWidth / 2;\n // arrowSize size is taken by addition of arrow button width and max 8px padding to right and left\n const arrowSize = 32;\n if (offsetRectLeft < containerOffsetRectLeft + arrowSize || offsetRectRight > containerOffsetRectRight - arrowSize) {\n // calculate center of the container viewport\n return (containerCenterPosition = targetCenterPosition - (containerOffsetLeft + containerWidth / 2));\n }\n return containerCenterPosition;\n}\n\n/**\n * Listen to resize observer on a list of elements\n * @param elements\n * @param injector\n */\nfunction listenToResizeObserver(elements: HTMLElement[], injector: Injector): Observable {\n const destroyRef = injector.get(DestroyRef);\n\n const resizeObservable = new Observable((observer) => {\n const resizeObserver = new ResizeObserver((res) => {\n observer.next(res);\n });\n\n for (const el of elements) {\n resizeObserver.observe(el);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n });\n\n // We need to debounce resize events because the alignment logic is expensive.\n // If someone animates the width of tabs, we don't want to realign on every animation frame.\n // Once we haven't seen any more resize events in the last 32ms (~2 animation frames) we can\n // re-align.\n return resizeObservable.pipe(debounceTime(32), takeUntilDestroyed(destroyRef));\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport type TabsOptions = {\n /*\n * Whether the tabs should take up the full width of the container.\n */\n fullWidthTabs: boolean;\n defaultScrollDistance: number;\n defaultScrollSpeed: string;\n};\n\nconst scrollDistance = 200;\n\nconst DEFAULT_TAB_OPTIONS: TabsOptions = {\n fullWidthTabs: false,\n defaultScrollDistance: scrollDistance,\n defaultScrollSpeed: 'faster',\n};\n\nexport const DS_TAB_OPTIONS = new InjectionToken('TAB_OPTIONS', {\n providedIn: 'root',\n factory: () => DEFAULT_TAB_OPTIONS,\n});\n\nexport const provideTabOptions = (options: Partial) =>\n ({\n provide: DS_TAB_OPTIONS,\n useValue: { ...DEFAULT_TAB_OPTIONS, ...options },\n }) satisfies Provider;\n","
\n \n
    \n @for (tab of _tabs(); track tab.name()) {\n \n
    \n @if (tab.customHeader) {\n \n } @else if (tab.title()) {\n {{ tab.title() }}\n }\n
    \n \n }\n
\n
\n\n \n\n @if (showNavigationArrows()) {\n \n @if (dsTabsLeftArrowTpl) {\n \n } @else {\n \n }\n \n \n @if (dsTabsRightArrowTpl) {\n \n } @else {\n \n }\n \n }\n\n\n
\n \n
\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DsTab } from './tab.component';\nimport { DsTabsScrollArrow } from './tabs-arrow.component';\nimport { DsTabsArrows } from './tabs-arrows';\nimport { DS_TAB_OPTIONS } from './tabs.token';\nimport { TabsGroupIndicatorType, TabsGroupSizesType, TabsGroupVariantsType } from './tabsgroup.types';\n\n// eslint-disable-next-line functional/no-let\nlet uniqueTabId = 0;\nfunction getTabId() {\n return ++uniqueTabId;\n}\n\n@Component({\n selector: 'ds-tabs-group',\n templateUrl: 'tabsgroup.component.html',\n host: {\n '[class]': `hostClass`,\n '[class.ds-tabs-inverse]': 'inverse',\n },\n imports: [NgTemplateOutlet, DsTabsScrollArrow],\n styleUrl: './tabsgroup.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DsTabsGroup extends DsTabsArrows implements AfterViewInit, AfterContentInit, OnDestroy {\n private tabOptions = inject(DS_TAB_OPTIONS);\n private _focusMonitor = inject(FocusMonitor);\n\n // Define scrollDistance as signal inputs with default values\n _scrollDistance = signal(this.tabOptions.defaultScrollDistance);\n\n // Default scroll speed, can be adjusted as needed\n _scrollSpeed = signal(this.tabOptions.defaultScrollSpeed);\n\n @Input() set scrollDistance(value: number) {\n this._scrollDistance.set(value);\n }\n\n @Input() set scrollSpeed(value: string) {\n this._scrollSpeed.set(value);\n }\n\n /**\n * The active tab.\n * This is the tab that is currently selected.\n * We use a signal to make sure that the active tab is updated when the tab is selected.\n *\n * @internal\n */\n _activeTab = signal('');\n\n /**\n * The name of the active tab.\n * If not provided, the first tab will be selected.\n *\n * This will be the name of the tab that is selected.\n */\n @Input() set activeTab(value: string | number) {\n // TODO: convert to signal inputs when available on Storybook\n this._activeTab.set(value.toString());\n this.selectTab(value.toString());\n }\n\n /**\n * Event emitted when the active tab is changed.\n * The event payload is the name of the active tab.\n */\n @Output() activeTabChanged = new EventEmitter();\n\n /**\n * Event emitted when a tab is clicked.\n * The event payload is an object with the name of the tab and the event that triggered the click.\n */\n @Output() tabChanged = new EventEmitter<{ name: string; event: MouseEvent }>();\n\n /** The size of the tabs. (small or large) */\n @Input() size: TabsGroupSizesType = 'large';\n\n /** The variant of the tabs. (vertical or horizontal) */\n @Input() variant: TabsGroupVariantsType = 'vertical';\n\n /** The indicator of the tabs. (underline or fill) */\n @Input() indicator: TabsGroupIndicatorType = 'underline';\n\n /**\n * Use inverse style for tabs when set to true.\n */\n @Input({ transform: booleanAttribute }) inverse = false;\n\n /**\n * The aria label for the previous navigation arrow.\n * This is used by screen readers to announce the navigation arrow.\n */\n @Input() ariaLabelNavigationArrowPrev = 'prev';\n\n /**\n * The aria label for the next navigation arrow.\n * This is used by screen readers to announce the navigation arrow.\n */\n @Input() ariaLabelNavigationArrowNext = 'next';\n\n /**\n * The id of the tabs group.\n * This is used to generate unique ids for the tabs.\n *\n * @internal\n */\n _id = getTabId();\n\n /**\n * Whether the tabs should be scrollable.\n * This is used to enable or disable the navigation arrows.\n * @internal\n */\n _scrollable = signal(true);\n\n /*\n * We want to have navigation arrows enabled by default, and disable them only when needed.\n */\n @Input({ transform: booleanAttribute }) set scrollable(value: boolean) {\n // TODO: convert to signal inputs when available on Storybook\n this._scrollable.set(value);\n }\n\n /*\n * Whether the tabs should take up the full width of the container.\n *\n * The default value is based on the tab options which can be configured using the `provideTabOptions` function.\n */\n @Input({ transform: booleanAttribute }) fullWidthTabs: boolean = this.tabOptions.fullWidthTabs;\n\n /**\n * The tabs.\n * This is a list of tabs that are used to render the tabs.\n * Each tab is a `DsTab` component.\n * Example:\n * ```html\n * \n * Tab 1\n * Tab 2\n * \n * ```\n */\n @ContentChildren(DsTab) tabs: QueryList | undefined;\n\n protected _tabs = signal([]);\n\n /**\n * `TemplateRef` for the left arrow.\n *\n * @example\n * ```html\n * \n * ...\n * <- \n * \n * ```\n */\n @ContentChild('dsTabsLeftArrow') dsTabsLeftArrowTpl?: TemplateRef;\n\n /**\n * `TemplateRef` for the right arrow.\n *\n * @example\n * ```html\n * \n * ...\n * -> \n * \n * ```\n */\n @ContentChild('dsTabsRightArrow') dsTabsRightArrowTpl?: TemplateRef;\n\n /**\n * The tab header items container.\n * This is the container that holds the tab header list.\n *\n * @internal\n */\n @ViewChild('tabHeaderItemsContainer', { static: true })\n _tabHeaderItemsContainer!: ElementRef;\n\n /**\n * The tab header items list.\n * This is the list that holds the tab header items.\n *\n * @internal\n */\n @ViewChild('tabHeaderItemsList', { static: true })\n _tabHeaderItemsList!: ElementRef;\n\n @ViewChildren('tabItem') tabItems?: QueryList;\n\n ngAfterViewInit(): void {\n if (this.tabItems) {\n this.tabItems.forEach((option, index) => {\n this._focusMonitor.monitor(option.nativeElement, true).subscribe((focusOrigin) => {\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._tabs()[index].setFocused(true);\n } else if (!focusOrigin) {\n this._tabs()[index].setFocused(false);\n }\n });\n });\n }\n }\n\n override ngAfterContentInit() {\n if (this.tabs) {\n this.tabs.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const tabs = this.tabs?.toArray() ?? [];\n this._tabs.set(tabs);\n\n // if there are no tabs, do nothing\n if (tabs.length === 0) {\n return;\n }\n\n // check if the selected tab still exists\n const selectedTab = this.selectedTab();\n if (!selectedTab) {\n // try to select the previously selected tab name if it exists\n if (this._activeTab()) {\n this.selectTab(this._activeTab());\n } else {\n // select the first tab if the selected tab does not exist\n this.selectTab(tabs[0].name());\n }\n }\n });\n\n this._tabs.set(this.tabs.toArray() ?? []);\n\n this.selectTab(this._activeTab() || this.tabs.first.name());\n\n super.ngAfterContentInit();\n }\n }\n\n /**\n * Selects a tab by name.\n * This will set the `selected` property of the tab to `true` and emit the `activeTabChanged` event.\n *\n * @param name - The name of the tab to select.\n * @param event - The event that triggered the selection.\n */\n selectTab(name: string, event?: MouseEvent) {\n this._activeTab.set(name);\n\n this.tabs?.forEach((tab) => {\n tab.selected.set(tab.name() === name);\n });\n\n this.activeTabChanged.emit(name);\n\n if (event) {\n this.tabChanged.emit({ name, event });\n }\n }\n\n /**\n * Returns the selected tab.\n * This will return the first tab that is selected.\n *\n * @returns The selected tab.\n * @internal\n */\n private selectedTab(): DsTab | undefined {\n return this.tabs?.find((tab) => tab.selected());\n }\n\n /**\n * Returns the host class based on the size and indicator.\n *\n * @returns The host class.\n * @internal\n */\n get hostClass() {\n const sizeClass = this.size === 'small' ? 'ds-tabs-small' : 'ds-tabs-large';\n const indicatorClass = this.indicator === 'underline' ? 'ds-tab-underline' : 'ds-tab-fill';\n\n return `ds-tabs-group ${sizeClass} ${indicatorClass}`;\n }\n\n get tabHeaderItemsClass() {\n return `ds-tab-header-items ds-tab-items-scroll-speed-${this._scrollSpeed()}`;\n }\n\n focusOption(tab: DsTab, index: number) {\n const focusOption = this.tabItems?.get(index);\n if (focusOption) {\n this._tabs().forEach((tabOptionObj) => {\n tabOptionObj.setFocused(false);\n });\n tab.setFocused(true);\n this._focusMonitor.focusVia(focusOption.nativeElement, 'keyboard');\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n const { key } = event;\n const tabsList = this._tabs();\n const currentIndex = tabsList.findIndex((tab) => tab.focused());\n let newIndex: number | undefined;\n const nextFocusTabIndex = this.getNextFocusTabIndex(key, currentIndex);\n if (key === 'ArrowRight') {\n newIndex = (currentIndex + nextFocusTabIndex) % tabsList.length;\n } else if (key === 'ArrowLeft') {\n newIndex = (currentIndex - nextFocusTabIndex + tabsList.length) % tabsList.length;\n } else if ((key === ' ' || key === 'Enter') && currentIndex !== -1) {\n this.selectTab(tabsList[currentIndex].name());\n }\n\n if (newIndex !== undefined) {\n event.preventDefault();\n const newTab = tabsList[newIndex];\n if (newTab) {\n this.focusOption(newTab, newIndex);\n }\n }\n }\n\n getNextFocusTabIndex(key: string, currentIndex: number): number {\n if (key === 'ArrowRight' && this._tabs()[currentIndex + 1]) {\n return this._tabs()[currentIndex + 1].disabled() ? 2 : 1;\n } else if (key === 'ArrowLeft' && this._tabs()[currentIndex - 1]) {\n return this._tabs()[currentIndex - 1].disabled() ? 2 : 1;\n }\n return 1;\n }\n\n ngOnDestroy() {\n if (this.tabItems) {\n this.tabItems.forEach((option) => this._focusMonitor.stopMonitoring(option));\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { DsTab } from './tab.component';\nimport { DsTabsScrollArrow } from './tabs-arrow.component';\nimport { DsTabContent, DsTabHeader } from './tabs.directives';\nimport { DsTabsGroup } from './tabsgroup.component';\n\nexport { DsTabsGroup } from './tabsgroup.component';\nexport { DsTab } from './tab.component';\n\nexport { DsTabsScrollArrow } from './tabs-arrow.component';\n\nexport { DsTabContent, DsTabHeader } from './tabs.directives';\nexport { DS_TAB_OPTIONS, TabsOptions, provideTabOptions } from './tabs.token';\n\nexport * from './tabsgroup.types';\n\n@NgModule({\n imports: [DsTab, DsTabsGroup, DsTabContent, DsTabHeader, DsTabsScrollArrow],\n exports: [DsTab, DsTabsGroup, DsTabContent, DsTabHeader, DsTabsScrollArrow],\n})\nexport class DsTabsModule {}\n","import { Directive, Input, OnInit, inject } from '@angular/core';\n\nimport { ThemeInverse, injectCurrentTheme } from '@frontend/sports/common/ui/shared';\nimport { DsTabsGroup } from '@frontend/ui/tabsgroup';\n\nimport { ThemeIndicator, ThemeSize, ThemeVariant } from './types';\n\n@Directive({\n selector: '[msThemedTabs]',\n standalone: true,\n})\nexport class SportsThemedTabsDirective implements OnInit {\n @Input() themedIndicator?: ThemeIndicator;\n @Input() themedSize?: ThemeSize;\n @Input() themedVariant?: ThemeVariant;\n @Input() themedInverse?: ThemeInverse;\n currentTheme = injectCurrentTheme();\n tabGroup: DsTabsGroup = inject(DsTabsGroup, {\n self: true,\n });\n\n ngOnInit(): void {\n const indicator = this.themedIndicator?.[this.currentTheme];\n if (indicator) {\n this.tabGroup.indicator = indicator;\n }\n\n const variant = this.themedVariant?.[this.currentTheme];\n if (variant) {\n this.tabGroup.variant = variant;\n }\n\n const size = this.themedSize?.[this.currentTheme];\n if (size) {\n this.tabGroup.size = size;\n }\n\n const inverse = this.themedInverse?.[this.currentTheme];\n if (inverse) {\n this.tabGroup.inverse = inverse.isInverse;\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnInit, Renderer2, booleanAttribute, inject } from '@angular/core';\n\nimport { injectIsRobot } from '@frontend/sports/common/ui/shared';\n\nexport type NavigationData = { url: string };\n\n@Directive({\n selector: '[msLink]',\n standalone: true,\n})\nexport class LinkDirective implements OnInit, OnChanges {\n @Input({ required: true }) msLink!: NavigationData | null;\n @Input({ transform: booleanAttribute }) disabled = false;\n\n readonly renderer = inject(Renderer2);\n readonly element = inject(ElementRef);\n private readonly isRobot = injectIsRobot();\n nativeElement = this.element.nativeElement as HTMLElement | null;\n\n ngOnInit(): void {\n const tagName = this.nativeElement?.tagName.toLowerCase();\n if (tagName !== 'a') {\n throw new Error('[msLink] can only be used with an anchor tag');\n }\n }\n\n ngOnChanges() {\n this.updateAnchorLink();\n }\n\n @HostListener('click')\n onClick(event: Event) {\n if (this.disabled) {\n return false;\n }\n\n if (this.isRobot) {\n event.stopPropagation();\n return true;\n }\n return false;\n }\n\n updateAnchorLink() {\n if (!this.isRobot) {\n return;\n }\n if (this.msLink) {\n this.renderer.setAttribute(this.nativeElement, 'href', this.msLink.url);\n } else {\n this.renderer.removeAttribute(this.nativeElement, 'href');\n }\n }\n}\n","import { PRIMARY_OUTLET, Route, Routes } from '@angular/router';\n\nexport const PATTERN_ALIAS = '__MatcherPlaceholder__';\n\nexport type PathDetails = { url: string; matcherRoutes: Routes };\n\n// copy-paste of ngx-quicklink\nexport const findPathDetails = (config: Routes, route: Route): PathDetails => {\n config = config.slice();\n const parent = new Map();\n const visited = new Set();\n while (config.length) {\n const el = config.shift();\n if (!el) {\n continue;\n }\n visited.add(el);\n if (el === route) break;\n\n let children = el.children ?? (el as any)._loadedRoutes ?? [];\n\n const lazyChildren = (el as any)._loadedRoutes || [];\n\n for (const lazyChild of lazyChildren) {\n if (lazyChild && lazyChild.children) {\n children = children.concat(lazyChild.children);\n }\n }\n children.forEach((r: Route) => {\n if (visited.has(r)) return;\n parent.set(r, el);\n config.push(r);\n });\n }\n let path = '';\n let current: Route | undefined = route;\n let matcherRoutes: Routes = [];\n\n while (current) {\n const currentPath = current.matcher ? PATTERN_ALIAS : current.path;\n if (current.matcher) {\n matcherRoutes.unshift(current);\n }\n if (isPrimaryRoute(current)) {\n path = `/${currentPath}${path}`;\n } else {\n path = `/(${current.outlet}:${currentPath}${path})`;\n }\n current = parent.get(current);\n }\n /**\n * Remove duplicate slashes\n * - If route contains multiple / it will transform them only\n * example url -> ///section///sub-section/// = /section/sub-section/\n */\n const url = path.replace(/\\/+/g, '/').replace(/\\/$/, '');\n return { url, matcherRoutes };\n};\n\nexport function getPreResolveRoutes(route: Route) {\n const preResolveRoutes = [];\n if (route.data?.preResolve) {\n preResolveRoutes.push(route);\n }\n\n // Angular internal method for lazy loaded routes\n const loadedRoutes = (route)['_loadedRoutes'];\n const children: Routes = route.children ?? loadedRoutes;\n if (children?.length) {\n children.forEach((child) => {\n preResolveRoutes.push(...getPreResolveRoutes(child));\n });\n }\n return preResolveRoutes;\n}\n\nfunction isPrimaryRoute(route: Route) {\n return route.outlet === PRIMARY_OUTLET || !route.outlet;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { PRIMARY_OUTLET, Params, Route, Router, Routes, UrlMatchResult, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\n\nimport { PATTERN_ALIAS, findPathDetails } from './util';\n\ninterface UrlSegmentWithRoute extends UrlSegment {\n route: Route;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MatcherService {\n readonly #router = inject(Router);\n\n getMatches(routeTree: UrlTree, tree: UrlTree): Params | null {\n const matchingSegments = matchingSegmentGroups(tree.root, routeTree.root, routeTree.root.segments);\n\n if (matchingSegments) {\n return matchResultToParams(matchingSegments);\n }\n\n return null;\n }\n\n getExtendedTree(route: Route) {\n const { url, matcherRoutes } = findPathDetails(this.#router.config, route);\n\n return extendTreeWithMatcherRoutes(this.#router.parseUrl(url), matcherRoutes);\n }\n}\n\nfunction matchResultToParams(matches: boolean | UrlMatchResult[]): Params {\n if (typeof matches === 'boolean') return {};\n return Object.fromEntries(matches.flatMap(({ posParams }) => Object.entries(posParams || {})).map(([key, value]) => [key, value.path]));\n}\n\nfunction matchingSegmentGroups(container: UrlSegmentGroup, containee: UrlSegmentGroup, containeePaths: UrlSegment[]): boolean | UrlMatchResult[] {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n return !containee.hasChildren() && matchesSegmentGroup(current, container, containeePaths);\n }\n if (container.segments.length !== containeePaths.length) {\n const current = containeePaths.slice(0, container.segments.length);\n const matchResults = matchesSegmentGroup(container.segments, container, current);\n if (!matchResults || !container.children[PRIMARY_OUTLET]) return false;\n const next = containeePaths.slice(container.segments.length);\n const matchedChildren = matchingSegmentGroups(container.children[PRIMARY_OUTLET], containee, next); //@TODO needs to concat results\n if (matchedChildren) {\n if (matchResults === true) {\n return matchedChildren;\n }\n if (matchedChildren === true) {\n return matchedChildren;\n }\n return matchResults.concat(matchedChildren);\n }\n }\n const matchResults = matchesSegmentGroup(container.segments, container, containeePaths);\n if (!matchResults) return false;\n if (!containee.hasChildren()) return matchResults;\n\n const results: UrlMatchResult[] = typeof matchResults === 'boolean' ? [] : matchResults;\n let result = false;\n for (const c in containee.children) {\n if (!container.children[c]) break;\n const matchedChildren = matchingSegmentGroups(container.children[c], containee.children[c]!, containee.children[c]!.segments);\n if (typeof matchedChildren !== 'boolean') {\n results.push(...matchedChildren);\n } else if (matchedChildren) {\n result = matchedChildren;\n }\n }\n if (results.length > 0) {\n return results;\n }\n return result;\n}\n\nfunction matchesSegmentGroup(\n registered: UrlSegment[],\n registeredGroup: UrlSegmentGroup,\n current: (UrlSegment | UrlSegmentWithRoute)[],\n): boolean | UrlMatchResult[] {\n if (registered.length !== current.length) return false;\n\n return registered.reduce((accumulator, registeredItem, index) => {\n if (accumulator === false) return false;\n\n const currentItem = current[index]!;\n\n if (registeredItem.path === currentItem.path) return accumulator;\n\n if (currentItem.path.startsWith(':') || registeredItem.path.startsWith(':')) {\n const urlMatch: UrlMatchResult = {\n consumed: [registeredItem],\n posParams: { [currentItem.path.replace(':', '')]: registeredItem },\n };\n if (typeof accumulator === 'boolean') {\n return [urlMatch];\n }\n accumulator.push(urlMatch);\n return accumulator;\n }\n\n if (currentItem.path !== PATTERN_ALIAS) return false;\n\n const urlMatch: UrlMatchResult | null = (currentItem)['route'].matcher!(\n [registeredItem],\n registeredGroup,\n (currentItem)['route'],\n );\n\n if (!urlMatch) return false;\n\n return accumulator === true ? [urlMatch] : [...accumulator, urlMatch];\n }, true);\n}\n\nfunction extendTreeWithMatcherRoutes(tree: UrlTree, matcherRoutes: Routes) {\n if (!matcherRoutes.length) return tree;\n\n extendUrlSegmentGroup(tree.root, matcherRoutes);\n\n return tree;\n}\n\nfunction extendUrlSegmentGroup(group: UrlSegmentGroup, matcherRoutes: Routes, currentMatcher = 0) {\n for (const segment of group.segments) {\n if (segment.path === PATTERN_ALIAS) {\n (segment)['route'] = matcherRoutes[currentMatcher];\n currentMatcher++;\n }\n }\n if (group.hasChildren()) {\n Object.values(group.children).forEach((child) => extendUrlSegmentGroup(child, matcherRoutes, currentMatcher));\n }\n}\n","import { Injectable, Injector, NgZone, inject, runInInjectionContext } from '@angular/core';\nimport { PRIMARY_OUTLET, Params, Route, Router, Routes, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\n\nimport { TimerService } from '@frontend/vanilla/core';\nimport { remove, uniqBy } from 'lodash-es';\n\nimport { MatcherService } from './matcher.service';\nimport { PATTERN_ALIAS, PathDetails, findPathDetails, getPreResolveRoutes } from './util';\n\n@Injectable({ providedIn: 'root' })\nexport class PrefetchRegistry {\n readonly #router = inject(Router);\n readonly #injector = inject(Injector);\n readonly #ngZone = inject(NgZone);\n\n readonly #timerService = inject(TimerService);\n readonly #matcherService = inject(MatcherService);\n\n readonly #trees: UrlTree[] = [];\n readonly #routeToPreResolve = new Map void)[]>();\n readonly #preResolveRoutes: Route[] = [];\n readonly #preResolveExec = new WeakMap<() => void, number>();\n readonly #preResolveParams = new Map void>>();\n readonly #THROTTLE_TIME = 15_000;\n\n add(tree: UrlTree) {\n this.#trees.push(tree);\n this.#setLinkPreResolver(tree);\n }\n\n has(tree: UrlTree) {\n return this.#trees.some((t) => t === tree);\n }\n\n remove(tree: UrlTree) {\n remove(this.#trees, (registeredTree) => registeredTree === tree);\n }\n\n registerRoutes(route: Route): void {\n const preResolveRoutes = getPreResolveRoutes(route);\n this.#preResolveRoutes.push(...preResolveRoutes);\n\n if (this.shouldPrefetch(route)) {\n const urls = new Map void)[]>();\n preResolveRoutes.forEach((route) => {\n const matches = this.#getMatches(route);\n matches.forEach(({ url, params }) => {\n // The data passed to the preResolve fn is a basic mock of activated route\n const preResolve = this.#getPreResolverFn(route, url, params);\n if (urls.has(url)) {\n urls.get(url)!.push(preResolve);\n } else {\n urls.set(url, [preResolve]);\n }\n });\n });\n for (const [url, preResolvers] of urls) {\n if (!this.#routeToPreResolve.has(url)) {\n this.#routeToPreResolve.set(url, preResolvers);\n }\n this.preResolve(url);\n }\n }\n }\n\n shouldPrefetch(route: Route) {\n if (this.#trees.length === 0) return false; // Do not check if in prefetch trees if is empty\n const { url, matcherRoutes } = findPathDetails(this.#router.config, route);\n const tree = this.#router.parseUrl(url);\n (tree)['matchers'] = matcherRoutes;\n return this.#trees.some(containsTree.bind(null, tree));\n }\n\n preResolve(treeOrUrl: UrlTree | string) {\n const url = typeof treeOrUrl === 'string' ? treeOrUrl : this.#router.serializeUrl(treeOrUrl);\n if (this.#routeToPreResolve.has(url)) {\n const preResolvers = this.#routeToPreResolve.get(url) ?? [];\n preResolvers.forEach((preResolve) => {\n const exec = this.#preResolveExec.get(preResolve);\n if (!exec || new Date().getTime() - exec > this.#THROTTLE_TIME) {\n this.#preResolveExec.set(preResolve, new Date().getTime());\n this.#timerService.scheduleIdleCallback(() => {\n runInInjectionContext(this.#injector, () => {\n this.#ngZone.runOutsideAngular(() => {\n preResolve();\n });\n });\n });\n }\n });\n }\n }\n\n #getPreResolverFn(route: Route, url: string, params: Params): () => void {\n const paramsKey = JSON.stringify(params);\n if (!this.#preResolveParams.has(route)) {\n this.#preResolveParams.set(route, new Map());\n }\n if (!this.#preResolveParams.get(route)!.has(paramsKey)) {\n const fn = () => route.data!.preResolve({ data: route.data, preResolverUrl: url, params });\n this.#preResolveParams.get(route)!.set(paramsKey, fn);\n }\n return this.#preResolveParams.get(route)!.get(paramsKey)!;\n }\n\n #setLinkPreResolver(tree: UrlTree) {\n const preResolverUrl = this.#router.serializeUrl(tree);\n const preResolveFns: (() => void)[] = [];\n for (const route of this.#preResolveRoutes) {\n const preResolveRouteTree = this.#matcherService.getExtendedTree(route);\n const params = this.#matcherService.getMatches(preResolveRouteTree, tree);\n if (params) {\n preResolveFns.push(() => route.data!.preResolve({ data: route.data, preResolverUrl, params }));\n }\n }\n\n if (preResolveFns.length) {\n this.#routeToPreResolve.set(preResolverUrl, preResolveFns);\n this.preResolve(preResolverUrl);\n }\n }\n\n #getMatches(route: Route, trees = this.#trees): { url: string; params: Params }[] {\n const routeTree = this.#matcherService.getExtendedTree(route);\n\n return uniqBy(\n trees.map((registeredTree) => ({\n url: this.#router.serializeUrl(registeredTree),\n registeredTree: registeredTree,\n })),\n 'url',\n )\n .map(({ url, registeredTree }) => {\n const params = this.#matcherService.getMatches(routeTree, registeredTree);\n if (params) {\n return { url, params };\n }\n return null;\n })\n .filter((match): match is { url: string; params: Params } => match !== null);\n }\n}\n\nfunction containsQueryParams(container: Params, containee: Params): boolean {\n // TODO: This does not handle array params correctly.\n return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every((key) => containee[key] === container[key]);\n}\n\nfunction containsTree(containee: UrlTree, container: UrlTree): boolean {\n return (\n containsQueryParams(container.queryParams, containee.queryParams) &&\n containsSegmentGroup(container.root, containee.root, containee.root.segments, (containee)['matchers'])\n );\n}\n\ntype TreeWithRoutes = UrlTree & { matchers: Routes };\n\nfunction containsSegmentGroup(\n container: UrlSegmentGroup,\n containee: UrlSegmentGroup,\n containeePaths: UrlSegment[],\n matchers: PathDetails['matcherRoutes'],\n): boolean {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths, matchers)) return false;\n return !containee.hasChildren();\n } else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths, matchers)) return false;\n if (!containee.hasChildren()) return true;\n\n for (const c in containee.children) {\n if (!container.children[c]) break;\n if (containsSegmentGroup(container.children[c], containee.children[c]!, containee.children[c]!.segments, matchers)) return true;\n }\n return false;\n } else {\n const current = containeePaths.slice(0, container.segments.length);\n const next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current, matchers)) return false;\n if (!container.children[PRIMARY_OUTLET]) return false;\n return containsSegmentGroup(container.children[PRIMARY_OUTLET], containee, next, matchers);\n }\n}\n\nfunction equalPath(as: UrlSegment[], bs: UrlSegment[], matchers: PathDetails['matcherRoutes']): boolean {\n if (as.length !== bs.length) return false;\n return as.every((a, i) => a.path === bs[i]!.path || a.path.startsWith(':') || bs[i]!.path.startsWith(':') || matchesMatcher(a, bs, i, matchers));\n}\n\nfunction matchesMatcher(a: UrlSegment, bs: UrlSegment[], i: number, matchers?: PathDetails['matcherRoutes']): boolean {\n if (matchers && matchers.length && matchers[0]!.matcher && bs[i]!.path === PATTERN_ALIAS) {\n // @TODO: This does not remove the matcher so it does not work properly if route contains multiple URL matchers\n return !!matchers[0]!.matcher([a], [] as any, matchers[0]!);\n }\n return false;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { PreloadingStrategy, Route, RouteConfigLoadEnd, Router } from '@angular/router';\n\nimport { TimerService } from '@frontend/vanilla/core';\nimport { EMPTY, Observable, filter, tap } from 'rxjs';\n\nimport { PrefetchRegistry } from './prefetch-registry.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeculativeLinkPreloader implements PreloadingStrategy {\n #loading = new Set();\n #registry = inject(PrefetchRegistry);\n #timerService = inject(TimerService);\n\n constructor(router: Router) {\n router.events\n .pipe(\n filter((event): event is RouteConfigLoadEnd => event instanceof RouteConfigLoadEnd),\n tap((event) => {\n /**\n * The idleCallback is necessary because routes have loaded but not yet processed, the fields we\n * access to load the preResolvers and the required data like _loadRoutes are only present after\n * it's done processing.\n */\n this.#timerService.scheduleIdleCallback(() => {\n this.#registry.registerRoutes(event.route);\n });\n }),\n )\n .subscribe();\n }\n\n preload(route: Route, load: () => Observable): any {\n if (this.#loading.has(route)) {\n // Don't preload the same route twice\n return EMPTY;\n }\n const conn = typeof navigator !== 'undefined' ? (navigator as any).connection : undefined;\n if (conn) {\n // Don't preload if the user is on 2G. or if Save-Data is enabled.\n if ((conn.effectiveType || '').includes('2g') || conn.saveData) return EMPTY;\n }\n // Prevent from preloading\n if (route.data && route.data['preload'] === false) {\n return EMPTY;\n }\n\n if (this.#registry.shouldPrefetch(route)) {\n this.#loading.add(route);\n return load();\n }\n\n return EMPTY;\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { RouterPreloader } from '@angular/router';\n\nimport { TimerService } from '@frontend/vanilla/core';\n\nimport { PrefetchRegistry } from './prefetch-registry.service';\nimport type { SpeculativeLinkDirective } from './speculative-link.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeculativeLinkObserver {\n #loader = inject(RouterPreloader);\n #registry = inject(PrefetchRegistry);\n #ngZone = inject(NgZone);\n #timerService = inject(TimerService);\n\n #elementLink = new Map();\n\n #intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const link = entry.target as HTMLAnchorElement;\n\n const urlTree = this.#elementLink.get(link)?.urlTree();\n if (!urlTree) {\n return;\n }\n if (this.#registry.has(urlTree)) {\n this.#registry.preResolve(urlTree);\n } else {\n this.#registry.add(urlTree);\n // Idle callback is here to not block the main thread as recommended in the docs\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n this.#timerService.scheduleIdleCallback(() => {\n this.#loader.preload().subscribe(() => void 0);\n });\n }\n }\n });\n },\n {\n threshold: 0.1,\n },\n );\n\n register(el: SpeculativeLinkDirective) {\n this.#elementLink.set(el.element, el);\n this.#ngZone.runOutsideAngular(() => {\n this.#intersectionObserver.observe(el.element);\n });\n }\n\n unregister(el: SpeculativeLinkDirective) {\n if (el.registeredTree) {\n this.#registry.remove(el.registeredTree);\n }\n if (this.#elementLink.has(el.element)) {\n this.#intersectionObserver.unobserve(el.element);\n this.#elementLink.delete(el.element);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\n@LazyClientConfig({ key: 'vnSpeculativeLink', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: speculativeLinkConfigFactory,\n})\nexport class SpeculativeLinkConfig extends LazyClientConfigBase {\n isEnabled: boolean;\n}\n\nexport function speculativeLinkConfigFactory(service: LazyClientConfigService): SpeculativeLinkConfig {\n return service.get(SpeculativeLinkConfig);\n}\n","import { Directive, ElementRef, OnDestroy, computed, effect, inject, input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Router, UrlTree } from '@angular/router';\n\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { PageVisibilityService } from '@frontend/vanilla/features/page-visibility';\nimport { map } from 'rxjs';\n\nimport { SpeculativeLinkObserver } from './speculative-link-observer.service';\nimport { SpeculativeLinkConfig } from './speculative-link.client-config';\n\n/**\n *\n * Inspired by the [Speculation Rules API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API}\n *\n * @whatItDoes When the link is observed in the viewport it will preload its route and execute its preResolvers.\n *\n */\n\n@Directive({ selector: '[vnSpeculativeLink]', standalone: true })\nexport class SpeculativeLinkDirective implements OnDestroy {\n path = input.required({ alias: 'vnSpeculativeLink' });\n\n readonly #router = inject(Router);\n readonly #window = inject(WINDOW);\n\n readonly #pageVisibilityService = inject(PageVisibilityService);\n readonly #observer = inject(SpeculativeLinkObserver);\n\n readonly #configService = inject(SpeculativeLinkConfig);\n\n registeredTree: UrlTree | null = null;\n\n readonly #isPageVisible = toSignal(this.#pageVisibilityService.visibilityChange().pipe(map(({ isVisible }) => isVisible)));\n readonly #isEnabled = toSignal(this.#configService.whenReady.pipe(map(() => this.#configService.isEnabled)));\n urlTree = computed(() => {\n // If the config has loaded and the feature is not enabled we do not register the signals in the effect\n if (this.#configService.isConfigReady && !this.#configService.isEnabled) {\n return null;\n }\n\n const path = this.path();\n const isEnabled = this.#isEnabled();\n\n if (!isEnabled || !path) {\n return null;\n }\n\n return this.parseUrl(path);\n });\n\n private parseUrl(path: string): UrlTree | null {\n if (!path.includes('http')) {\n return this.#router.parseUrl(path);\n }\n const url = new URL(path);\n if (this.#window.location.hostname !== url.hostname) {\n return null;\n }\n return this.#router.parseUrl(url.pathname);\n }\n\n element = inject>(ElementRef).nativeElement;\n\n #register = effect(() => {\n this.#observer.unregister(this);\n if (this.urlTree() && this.#isPageVisible()) {\n this.#observer.register(this);\n }\n this.registeredTree = this.urlTree();\n });\n\n ngOnDestroy() {\n this.#observer.unregister(this);\n this.#register.destroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, booleanAttribute } from '@angular/core';\n\nexport const DS_DIVIDER_VARIANT_ARRAY = ['on-surface', 'on-surface-lowest', 'on-surface-low', 'on-surface-high', 'on-surface-highest'] as const;\nexport type DsDividerVariant = (typeof DS_DIVIDER_VARIANT_ARRAY)[number];\n\n// eslint-disable-next-line @nx/workspace-component-tests-present\n@Component({\n selector: 'ds-divider',\n standalone: true,\n template: ``,\n host: {\n 'class': 'ds-divider',\n '[class]': `[ variant]`,\n '[class.ds-divider-vertical]': 'vertical',\n '[class.ds-divider-inverse]': 'inverse',\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./divider.component.scss'],\n})\nexport class DsDivider {\n @Input({ transform: booleanAttribute }) vertical? = false;\n @Input() variant: DsDividerVariant = 'on-surface-lowest';\n @Input({ transform: booleanAttribute }) inverse = false;\n}\n","\n @for (tab of tabs; track tab.id) {\n \n \n @if (!!tab.url) {\n \n \n \n } @else {\n \n }\n \n \n }\n @if (!showBorder) {\n \n }\n\n\n\n \n {{ tab.title }}\n @if (!!tab.counter) {\n \n {{ tab.counter }}\n }\n \n\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ThemeInverse } from '@frontend/sports/common/ui/shared';\nimport { SportsThemedNotificationDirective, ThemeNotificationVariant } from '@frontend/sports/common/ui/sports-themed-notifcation-bubble';\nimport { LinkDirective } from '@frontend/sports/common/ui/sports-themed-pills';\nimport { DsDivider } from '@frontend/ui/divider';\nimport { DsNotificationBubble } from '@frontend/ui/notification-bubble';\nimport { DsTabsModule, TabsGroupIndicatorType, TabsGroupSizesType } from '@frontend/ui/tabsgroup';\nimport { SpeculativeLinkDirective } from '@frontend/vanilla/features/speculative-link';\n\nimport { SportsThemedTabsDirective } from '../sports-themed-tabs.directive';\nimport { ThemeSize } from '../types';\nimport { SelectedTabItem, TabItemUiViewModel } from './tab-item-view.model';\n\n@Component({\n selector: 'ms-tab-group-counter',\n standalone: true,\n imports: [\n DsTabsModule,\n DsNotificationBubble,\n SportsThemedNotificationDirective,\n DsDivider,\n SpeculativeLinkDirective,\n LinkDirective,\n NgTemplateOutlet,\n SportsThemedTabsDirective,\n ],\n templateUrl: './tab-group-with-counter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabGroupWithCounterComponent {\n @Input({ required: true }) tabs: TabItemUiViewModel[] = [];\n @Input({ required: true }) indicator: TabsGroupIndicatorType = 'underline';\n @Input({ required: true }) size: TabsGroupSizesType = 'small';\n @Input({ required: false }) themeInverseIndicator?: ThemeInverse;\n @Input({ required: false }) showBorder?: boolean;\n tabSize: ThemeSize;\n counterVariant: ThemeNotificationVariant = {\n 'default': 'neutral',\n 'mgm-4': 'utility',\n 'sports-interaction': 'utility',\n };\n\n activeCounterVariant: ThemeNotificationVariant = {\n 'default': 'primary',\n 'mgm-4': 'utility',\n 'sports-interaction': 'utility',\n };\n\n constructor() {\n this.tabSize = {\n 'betboo-br': 'small',\n 'sportingbet-br': 'small',\n };\n }\n\n get active(): TabItemUiViewModel {\n return (this.tabs && this.tabs.filter((tab) => tab.active).pop()) ?? this.tabs[0];\n }\n\n @Output() readonly tabSelected = new EventEmitter();\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { CookieName, CookieService, PERMANENT_COOKIE_EXPIRATION, WINDOW } from '@frontend/vanilla/core';\n\nconst DisabledCookieValue: string = '0';\nconst EnabledCookieValueOldDesktop: string = '1';\nconst EnabledCookieValue: string = '2';\n\n/**\n * @whatItDoes Allows toggling of dark mode and check if feature is enabled.\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DarkModeService {\n private _isEnabled = this.getIsEnabled();\n\n get isEnabled(): boolean {\n return this._isEnabled;\n }\n readonly #window = inject(WINDOW);\n\n constructor(private cookieService: CookieService) {}\n\n toggle() {\n this.writeCookie(this._isEnabled ? DisabledCookieValue : EnabledCookieValue);\n this._isEnabled = this.getIsEnabled();\n this.#window.location.reload();\n }\n\n private writeCookie(value: string) {\n this.cookieService.putRaw(CookieName.DarkMode, value, { expires: PERMANENT_COOKIE_EXPIRATION });\n }\n\n private getIsEnabled(): boolean {\n const value = this.cookieService.get(CookieName.DarkMode);\n\n return value === EnabledCookieValue || value === EnabledCookieValueOldDesktop;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ImageProfile } from '@cds/betting-offer';\nimport { GridConfig, ImagesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { UtilsService } from '@frontend/vanilla/core';\nimport { DarkModeService } from '@frontend/vanilla/shared/dark-mode';\nimport { keyBy } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class CompetitionLogosService {\n private competitionLogos = keyBy(this.imagesConfig.competitionLogos, (l) => l.sportId);\n private overriddenCompetitionLogo = keyBy(this.gridConfig.overriddenCompetitionLogo, (l) => l.sportId);\n\n constructor(\n private imagesConfig: ImagesConfig,\n private gridConfig: GridConfig,\n private utilsService: UtilsService,\n private darkModeService: DarkModeService,\n ) {}\n\n getLogoUrl(sportId?: number, leagueId?: number, isLogoOverrideEnabled?: boolean, imageRootPath?: string): string {\n let competitionImageName;\n const overridenCompetitionImageName = this.getCompetitionImageName(sportId, leagueId, isLogoOverrideEnabled);\n if (isLogoOverrideEnabled && overridenCompetitionImageName !== '') {\n //for few competitions need to display overridden icon instead of logo for lgv/composable\n competitionImageName = overridenCompetitionImageName;\n } else {\n competitionImageName = this.getCompetitionImageName(sportId, leagueId);\n }\n\n return competitionImageName\n ? this.utilsService.format(this.imagesConfig.competitionLogoUrl, imageRootPath, sportId, competitionImageName)\n : '';\n }\n\n getImageProfileLogoUrl(sportId?: number, imageProfile?: ImageProfile, imageRootPath?: string) {\n return imageProfile?.logo\n ? this.utilsService.format(this.imagesConfig.competitionLogoUrl, imageRootPath, sportId, imageProfile?.logo?.split('.')[0])\n : '';\n }\n\n hasLogo(sportId?: number, leagueId?: number): boolean {\n return !!this.getCompetitionImageName(sportId, leagueId);\n }\n\n private getCompetitionImageName(sportId?: number, leagueId?: number, isLogoOverrideEnabled?: boolean): string {\n if (!sportId || !leagueId) {\n return '';\n }\n\n const sport = isLogoOverrideEnabled ? this.overriddenCompetitionLogo[sportId] : this.competitionLogos[sportId];\n\n if (!sport) {\n return '';\n }\n\n const league = sport.leagues.find((l) => l.ids.indexOf(leagueId) > -1);\n\n if (league?.imageDark && this.darkModeService.isEnabled) {\n return league.imageDark;\n }\n\n if (league?.image) {\n return league.image;\n }\n\n return '';\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport enum FallbackImage {\n Default = 'fallback',\n EpcotDefault = 'epcot_fallback',\n}\n\nexport interface ParticipantImageConfig {\n fallbackImage: FallbackImage;\n}\n\nexport const PARTICIPANT_IMAGE_CONFIG = new InjectionToken('PARTICIPANT_IMAGE_CONFIG');\n","\n \n\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnChanges, Optional, Output } from '@angular/core';\n\nimport { EventParticipantImage } from '@frontend/sports/betting-offer/feature/model';\nimport { ImagesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { hasValue } from '@frontend/sports/common/core/utils/extended-types';\nimport { FallbackImage, PARTICIPANT_IMAGE_CONFIG, ParticipantImageConfig } from '@frontend/sports/participant-image/feature/provider';\nimport { UtilsService } from '@frontend/vanilla/core';\n\nconst sportsToReversePlayer2Image: number[] = [SportConstant.Icehockey, SportConstant.AmericanFootball, SportConstant.Baseball];\n\nexport enum ImageType {\n Logo = 'Logo',\n Jersey = 'Jersey',\n Headshot = 'Headshot',\n Fallback = 'Fallback',\n}\n\nexport enum ImageRootPath {\n Live = 'live',\n Prod = 'prod',\n}\n\nexport interface Image {\n type: ImageType;\n url: string;\n}\n\nexport enum ParticipantType {\n Player = 'Player',\n Team = 'Team',\n}\n\n@Component({\n selector: 'ms-participant-image',\n styleUrl: 'participant-image.scss',\n templateUrl: 'participant-image.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgIf],\n standalone: true,\n})\nexport class ParticipantImageComponent implements OnChanges {\n private readonly participantImageUrl: string;\n private readonly participantLogoUrl: string;\n private readonly fallbackImage: FallbackImage;\n\n @Input() participantImage?: EventParticipantImage;\n @Input() sportId: number;\n @Input() shouldRotate = false;\n @Input() showFallback = true;\n @Input() showLogoColor = false;\n @Input() participantType: ParticipantType;\n @Output() logoLoaded = new EventEmitter();\n\n loaded = false;\n imageType = ImageType;\n imageClass = '';\n image?: Image;\n rotateImage = false;\n fallbackColor = false;\n backgroundColor?: string;\n showBackgroundCircle = false;\n\n private images: Image[];\n\n constructor(\n private imagesConfig: ImagesConfig,\n private utilsService: UtilsService,\n @Optional() @Inject(PARTICIPANT_IMAGE_CONFIG) private config: Partial | undefined,\n ) {\n this.participantImageUrl = this.imagesConfig.participantImageUrl;\n this.participantLogoUrl = this.imagesConfig.participantLogoUrl;\n this.fallbackImage = this.config?.fallbackImage ?? FallbackImage.Default;\n }\n\n ngOnChanges(): void {\n this.settingImage();\n this.showBackgroundCircle = this.showLogoColor && this.imagesConfig.isLogoBackgroundEnabled;\n this.fallbackColor = this.getFallbackColor();\n this.backgroundColor = this.getBackgroundColor();\n }\n\n private settingImage() {\n this.loaded = false;\n\n this.images = [];\n\n this.setHeadshotImage();\n this.images.push({ type: ImageType.Logo, url: this.getImageUrl(ImageType.Logo) });\n this.images.push({ type: ImageType.Jersey, url: this.getImageUrl(ImageType.Jersey) });\n\n if (this.showFallback) {\n this.images.push({ type: ImageType.Fallback, url: this.getImageUrl(ImageType.Fallback) });\n }\n\n this.images = this.images.filter((image) => hasValue(image.url));\n\n this.image = this.images.shift();\n\n this.rotateImage = this.shouldRotate && sportsToReversePlayer2Image.some((s) => s === this.sportId) && this.image?.type !== ImageType.Logo;\n }\n\n onImageFailedLoaded(): void {\n if (this.isPlayer) {\n this.image = this.images.at(-1);\n return;\n }\n\n this.image = this.images.shift();\n this.logoLoaded.emit(false);\n }\n\n get isPlayer(): boolean {\n return this.participantType === ParticipantType.Player;\n }\n\n private setHeadshotImage() {\n if (this.isPlayer) {\n if (this.participantImage?.headshot) {\n this.images.push({ type: ImageType.Headshot, url: this.getImageUrl(ImageType.Headshot) });\n } else {\n this.images.push({ type: ImageType.Fallback, url: this.getImageUrl(ImageType.Fallback) });\n }\n }\n }\n\n private getImageUrl(imageType: ImageType): string {\n let participantImageName;\n let participantUrl = this.participantImageUrl;\n\n switch (imageType) {\n case ImageType.Headshot:\n participantImageName = this.participantImage?.headshot;\n const headshotExtension = this.participantImage?.headshot?.split('.').pop();\n participantUrl =\n [this.participantLogoUrl, this.participantImageUrl].find((url) => {\n const ext = url.split('.').pop();\n return ext === headshotExtension;\n }) ?? this.participantImageUrl;\n break;\n case ImageType.Logo:\n participantImageName = this.participantImage && this.participantImage.logo;\n participantUrl = this.participantLogoUrl;\n break;\n case ImageType.Jersey:\n participantImageName = this.participantImage && this.participantImage.jersey;\n break;\n case ImageType.Fallback:\n if (this.isPlayer) {\n participantImageName = FallbackImage.EpcotDefault;\n } else {\n participantImageName = this.showFallback ? this.fallbackImage : '';\n }\n break;\n }\n\n const rootpath = this.getRootPath();\n const participantImageProfileName = participantImageName?.split('.')[0];\n\n return participantImageName ? this.utilsService.format(participantUrl, rootpath, this.sportId, participantImageProfileName) : '';\n }\n\n private getRootPath(): string {\n let rootpath;\n if (this.isPlayer && !this.participantImage?.isParticipantProfile) {\n rootpath = ImageRootPath.Prod;\n } else {\n rootpath = this.participantImage?.isParticipantProfile ? ImageRootPath.Prod : ImageRootPath.Live;\n }\n return rootpath;\n }\n\n private getBackgroundColor(): string | undefined {\n const logoColor = this.participantImage?.logoColor ? `#${this.participantImage.logoColor}` : undefined;\n if (this.isPlayer) {\n return logoColor;\n }\n if (this.showBackgroundCircle && this.participantImage?.isParticipantProfile) {\n return logoColor;\n }\n return undefined;\n }\n\n private getFallbackColor(): boolean {\n if (this.isPlayer) {\n return !this.participantImage?.logoColor;\n }\n return !!(this.showBackgroundCircle && this.participantImage?.isParticipantProfile && !this.participantImage?.logoColor);\n }\n}\n","\n\n \n\n","/* eslint-disable deprecation/deprecation */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ImageProfile } from '@cds/betting-offer';\nimport { ImagesConfig } from '@frontend/sports/common/client-config-data-access';\nimport { ISimpleChanges } from '@frontend/sports/common/core/utils/simple-change';\nimport { ImageRootPath } from '@frontend/sports/participant-image/feature';\n\nimport { CompetitionLogosService } from '../competition-logos.service';\n\n@Component({\n standalone: true,\n selector: 'ms-competition-logo',\n templateUrl: './competition-logo.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class CompetitionLogoComponent implements OnChanges {\n @Input() sportId: number;\n @Input() leagueId: number | string;\n @Input() fallbackIcon?: string;\n @Input() isWithRightImage?: boolean;\n @Input() isLogoOverrideEnabled?: boolean;\n @Input() imageProfile?: ImageProfile;\n @Input() showLogoCircle = false;\n\n @HostBinding('class') get hostImage(): string {\n const cls = ['competition-logo-container'];\n if (this.isWithRightImage) {\n cls.push('right-image');\n }\n\n return cls.join(' ');\n }\n\n competitionLogoUrl: string;\n logoLoaded = false;\n loadingError = false;\n showBackgroundCircle = false;\n fallbackColor = false;\n logoColor?: string;\n\n constructor(\n private competitionLogosService: CompetitionLogosService,\n private changeDetectorRef: ChangeDetectorRef,\n private imagesConfig: ImagesConfig,\n ) {}\n\n ngOnChanges(changes: ISimpleChanges): void {\n this.showBackgroundCircle =\n this.showLogoCircle && !!this.imageProfile && this.imagesConfig.isLogoBackgroundEnabled && this.imagesConfig.isCompetitionImageProfile;\n const { sportId, leagueId, imageProfile } = changes;\n if (\n (sportId && sportId.currentValue !== sportId.previousValue) ||\n (leagueId && leagueId.currentValue !== leagueId.previousValue) ||\n (imageProfile && imageProfile.currentValue !== imageProfile.previousValue)\n ) {\n this.updateCompetitionLogoUrl(this.imageProfile);\n this.changeDetectorRef.markForCheck();\n }\n this.fallbackColor = this.getFallbackColor();\n this.logoColor = this.getLogoColor();\n }\n\n loadLogo(): void {\n this.logoLoaded = true;\n this.changeDetectorRef.detectChanges();\n }\n\n private updateCompetitionLogoUrl(imageProfile?: ImageProfile): void {\n const updatedLogoUrl =\n imageProfile && this.imagesConfig.isCompetitionImageProfile\n ? this.competitionLogosService.getImageProfileLogoUrl(this.sportId, this.imageProfile, ImageRootPath.Prod)\n : this.competitionLogosService.getLogoUrl(this.sportId, +this.leagueId, this.isLogoOverrideEnabled, ImageRootPath.Live);\n if (updatedLogoUrl !== this.competitionLogoUrl) {\n this.logoLoaded = false;\n this.competitionLogoUrl = updatedLogoUrl;\n }\n }\n\n private getLogoColor(): string | undefined {\n return this.showBackgroundCircle ? (this.imageProfile?.logoColor ? '#' + this.imageProfile?.logoColor : undefined) : undefined;\n }\n\n private getFallbackColor(): boolean {\n return !!(this.showBackgroundCircle && !this.imageProfile?.logoColor);\n }\n\n onLoadingError() {\n this.loadingError = true;\n this.changeDetectorRef.detectChanges();\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\n\nimport { WINDOW } from '@frontend/vanilla/core';\n\nenum ScrollDirection {\n Left = 'Left',\n Right = 'Right',\n Top = 'Top',\n Bottom = 'Bottom',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SmoothScroll {\n private readonly _doc = inject(DOCUMENT);\n readonly #window = inject(WINDOW);\n\n constructor(private zone: NgZone) {}\n\n private requestAnimationFrameFn: (callback: FrameRequestCallback) => void =\n (this.#window.requestAnimationFrame?.bind(this.#window) as (callback: FrameRequestCallback) => void) || this.fallbackFn;\n\n private fallbackFn(callback: FrameRequestCallback): void {\n callback(0);\n }\n\n scrollLeftTo(el: HTMLElement, target: number, duration: number, forceDuration = false): void {\n this.smoothScrollTo(el, target, duration, ScrollDirection.Left, forceDuration);\n }\n\n scrollTopTo(el: HTMLElement, target: number, duration: number, forceDuration = false): void {\n this.smoothScrollTo(el, target, duration, ScrollDirection.Top, forceDuration);\n }\n\n private smoothScrollTo(element: Element, target: number, duration: number, direction: ScrollDirection, forceDuration: boolean): void {\n if ('scrollBehavior' in this._doc.documentElement.style && !forceDuration) {\n const scrollToOptions: ScrollToOptions = {\n behavior: 'smooth',\n };\n //TODO any index issue, probably a defect, please investigate\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n scrollToOptions[direction.toLowerCase()] = target;\n element.scroll(scrollToOptions);\n } else {\n this.doStepScrolling(element, target, duration, direction);\n }\n }\n\n /* istanbul ignore next */\n private doStepScrolling(element: Element, target: number, duration: number, direction: ScrollDirection): void {\n const scrollElement = element;\n const roundedTarget = Math.round(target);\n const roundedDuration = Math.round(duration);\n const scrollDirection = `scroll${direction}`;\n\n if (duration < 0) {\n return;\n }\n if (duration === 0) {\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n scrollElement[scrollDirection] = roundedTarget;\n return;\n }\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!scrollElement || isNaN(scrollElement[scrollDirection])) {\n return;\n }\n\n const startTime = Date.now();\n const endTime = startTime + roundedDuration;\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n const startPos = scrollElement[scrollDirection] as number;\n const previousPos = startPos;\n const distance = roundedTarget - startPos;\n\n // boostrap the animation process\n this.runRafOutsideZone(() => this.scrollFrame(true, startTime, endTime, startPos, previousPos, scrollElement, distance, scrollDirection));\n }\n\n // This is like a think function from a game loop\n private scrollFrame(\n firstRun: boolean,\n startTime: number,\n endTime: number,\n startPos: number,\n previousPos: number,\n element: Element,\n distance: number,\n scrollDirection: string,\n ): void {\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n if (!firstRun && element && element[scrollDirection] !== previousPos) {\n return;\n }\n\n // firstRun = false;\n // set the scroll value for this frame\n const now = Date.now();\n const point = this.smoothStep(startTime, endTime, now);\n const frameTop = Math.round(startPos + distance * point);\n const scrollElement = element;\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n scrollElement[scrollDirection] = frameTop;\n\n // check if we're done!\n if (now >= endTime) {\n return;\n }\n\n // If we were supposed to scroll but didn't, then we\n // probably hit the limit, so consider it done\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n if (scrollElement[scrollDirection] === previousPos && scrollElement[scrollDirection] !== frameTop) {\n // return;\n }\n //@ts-expect-error allow dynamic accessor, please don't use this, instead, use typing.\n const currentPreviousPos = scrollElement[scrollDirection] as number;\n\n // schedule next frame for execution\n this.runRafOutsideZone(() =>\n this.scrollFrame(false, startTime, endTime, startPos, currentPreviousPos, scrollElement, distance, scrollDirection),\n );\n }\n\n // based on http://en.wikipedia.org/wiki/Smoothstep\n private smoothStep(start: number, end: number, point: number): number {\n if (point <= start) {\n return 0;\n }\n if (point >= end) {\n return 1;\n }\n const x = (point - start) / (end - start); // interpolation\n\n return x * x * (3 - 2 * x);\n }\n\n private runRafOutsideZone(callback: FrameRequestCallback): void {\n this.zone.runOutsideAngular(() => this.requestAnimationFrameFn(callback));\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { WINDOW } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CssSupportService {\n private cssSupports: (feature: string, value: string) => boolean;\n readonly #window = inject(WINDOW);\n\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n this.cssSupports = this.#window['CSS'] && this.#window['CSS'].supports;\n }\n\n isFeatureSupported(feature: string, value: string): boolean {\n if (!this.cssSupports) {\n return false;\n }\n\n return this.cssSupports(feature, value);\n }\n\n isTouchActionSupported(): boolean {\n return this.isFeatureSupported('touch-action', 'pan-y');\n }\n}\n","import { clone } from 'lodash-es';\n\nexport enum ScrollSpeedConstants {\n Default = 'default',\n}\n\nexport class ScrollSpeed {\n private _breakpoints: { [key: string]: string };\n private _default: string;\n\n constructor(config: { [key: string]: string }) {\n const parsedConfig = this.parseConfig(config);\n this._breakpoints = parsedConfig.breakpoints;\n this._default = parsedConfig.default;\n }\n\n get breakpoints(): { [key: string]: string } {\n return this._breakpoints;\n }\n\n get default(): string {\n return this._default;\n }\n\n private parseConfig(config: { [key: string]: string }): { breakpoints: { [key: string]: string }; default: string } {\n const clonedConfig = clone(config);\n\n const defaultValue = clonedConfig[ScrollSpeedConstants.Default];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete clonedConfig[ScrollSpeedConstants.Default];\n\n return {\n breakpoints: clonedConfig,\n default: defaultValue,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HammerGestureConfig } from '@angular/platform-browser';\n\nimport { TouchMouseInput } from 'hammerjs';\n\n// https://stackoverflow.com/questions/41017202/vertical-scroll-is-not-working-with-hammerjs-and-angular2\n@Injectable()\nexport class HammerGestureConfigProvider extends HammerGestureConfig {\n override overrides = {\n pinch: { enable: false },\n rotate: { enable: false },\n swipe: {\n direction: Hammer.DIRECTION_HORIZONTAL,\n },\n };\n\n // https://github.com/hammerjs/hammer.js/issues/1240\n override options = {\n inputClass: TouchMouseInput,\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface ScrollAdapterConfig {\n disableHorizontalScrollOnDesktop: boolean;\n}\n\nexport const SCROLL_ADAPTER_CONFIG = new InjectionToken('ms-scroll-adapter');\n","import {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n Optional,\n Output,\n Renderer2,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser';\n\nimport { ScrollingSizeConfig } from '@frontend/sports/common/client-config-data-access';\nimport { HammerGestureConfigProvider } from '@frontend/sports/common/core/feature/browser';\nimport { SmoothScroll } from '@frontend/sports/common/core/feature/smooth-scroll';\nimport { CssSupportService } from '@frontend/sports/common/core/utils/css-support';\nimport { ISimpleChanges } from '@frontend/sports/common/core/utils/simple-change';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { DeviceService, MediaQueryService, NativeAppService } from '@frontend/vanilla/core';\nimport { fromEvent, merge } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\n\nimport { SCROLL_ADAPTER_CONFIG, ScrollAdapterConfig } from './scroll-adapter.model';\nimport { ScrollSpeed } from './scroll-speed.model';\n\nexport enum ScrollAdapterButtonSize {\n Small = 24,\n Large = 36,\n}\n\nexport type SwipeEvents = 'swipeleft' | 'swiperight';\n\n@Component({\n selector: 'ms-scroll-adapter',\n templateUrl: 'scroll-adapter.html',\n standalone: true,\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: HammerGestureConfigProvider,\n },\n ],\n})\nexport class ScrollAdapterComponent implements OnChanges, AfterViewInit {\n @Input() scrollSize = 200;\n @Input() scrollSpeed?: ScrollSpeed;\n @Input() alwaysShowArrows = false;\n @Input() stretch = false;\n @Input() buttonSize = ScrollAdapterButtonSize.Small;\n /**\n * Can be used to reset the state of the scroll adapter by passing the reference of the list/object/object-count\n * rendered in the content\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() scrollItems?: any[];\n @Output() select = new EventEmitter<'left' | 'right'>();\n @Output() mobileSwipe = new EventEmitter();\n\n @HostBinding('class') get className(): string {\n const cls = ['scroll-adapter'];\n if (this.buttonSize === ScrollAdapterButtonSize.Large) {\n cls.push('scroll-adapter--large-arrows');\n }\n\n return cls.join(' ');\n }\n\n @ViewChild('contentTemplate', { static: true }) content: ElementRef;\n @ViewChild('containerTemplate', { static: true }) container: ElementRef;\n @ViewChild('leftArrow', { static: true }) leftArrow: ElementRef;\n @ViewChild('rightArrow', { static: true }) rightArrow: ElementRef;\n\n canScrollLeft = false;\n canScrollRight = false;\n showArrows: boolean; // is touch\n\n private readonly hiddenArrowClass = 'scroll-adapter__arrow--hidden';\n private readonly disabledArrowClass = 'scroll-adapter__arrow--disabled';\n private readonly scrollableLeftClass = 'scroll-adapter__container--scrollable-left';\n private readonly scrollableRightClass = 'scroll-adapter__container--scrollable-right';\n\n private scrollDuration = 200;\n private hasScrolled = false;\n private readonly destroyRef = inject(DestroyRef);\n\n private get containerElement(): HTMLElement {\n return this.container.nativeElement;\n }\n\n private get contentElement(): HTMLElement {\n return this.content.nativeElement;\n }\n\n constructor(\n private deviceService: DeviceService,\n private smoothScroll: SmoothScroll,\n private renderer: Renderer2,\n private scrollSizeConfig: ScrollingSizeConfig,\n private mediaService: MediaQueryService,\n private timer: TimerService,\n public elementRef: ElementRef,\n private nativeAppService: NativeAppService,\n private cssSupportService: CssSupportService,\n @Inject(HAMMER_GESTURE_CONFIG) private hammerGestureConfig: HammerGestureConfig,\n @Optional() @Inject(SCROLL_ADAPTER_CONFIG) private scrollAdapterConfig: ScrollAdapterConfig | null,\n ) {}\n\n // eslint-disable-next-line deprecation/deprecation\n ngOnChanges(changes: ISimpleChanges): void {\n this.showArrows = !this.deviceService.isMobile || this.nativeAppService.isTerminal || this.alwaysShowArrows;\n\n if (changes.scrollItems && !changes.scrollItems.firstChange) {\n this.resetArrows();\n }\n }\n\n updatedScrollPosition(buffer = 0): void {\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n const child = this.contentElement.querySelector('.active') as HTMLElement;\n if (!child) {\n return;\n }\n\n if (this.containerElement) {\n this.containerElement.scrollLeft = child.offsetLeft - buffer - this.containerElement.clientLeft / 2 + child.clientLeft / 2;\n }\n this.setArrows();\n }\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const scrollElement: HTMLElement | null = this.elementRef.nativeElement;\n if (scrollElement && this.cssSupportService.isTouchActionSupported()) {\n const hammer = this.hammerGestureConfig.buildHammer(scrollElement);\n\n merge(fromEvent(hammer, 'swiperight'), fromEvent(hammer, 'swipeleft'))\n .pipe(takeUntilDestroyed(this.destroyRef))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n .subscribe((event: any) => this.groupsSwiped(event));\n }\n\n if (!this.showArrows) {\n return;\n }\n\n if (this.scrollAdapterConfig?.disableHorizontalScrollOnDesktop && !this.deviceService.isMobile) {\n this.containerElement.style.overflowX = 'hidden'; // make overflowX hidden so scrolling over will scroll column vertically\n }\n\n merge(fromEvent(this.containerElement, 'scroll'), fromEvent(window, 'resize'))\n .pipe(auditTime(30), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.setArrows());\n\n this.setArrows();\n }\n\n scrollLeft(): void {\n this.scroll(this.containerElement.scrollLeft - this.calculateScrollSize());\n this.select.emit('left');\n }\n\n scrollRight(): void {\n this.hasScrolled = true;\n this.scroll(this.containerElement.scrollLeft + this.calculateScrollSize());\n this.select.emit('right');\n }\n\n setArrows(): void {\n if (!this.showArrows) {\n return;\n }\n\n // animationFrame is needed as the method might be called before the content is rendered,\n // even though the ngOnChange was triggered, so the measurement is wrong for the\n // width/scroll position\n this.timer.setAnimationFrame(() => {\n const scrollLeft = this.containerElement.scrollLeft;\n const offsetWidth = this.containerElement.offsetWidth;\n const scrollWidth = this.containerElement.scrollWidth;\n\n if (scrollLeft > 0) {\n this.hasScrolled = true;\n }\n\n // If we have arrows visible and the content can fit in the container,\n // we do not need the arrows visible. This happens when the right/left column width changes with code.\n // If you resize the browser windows manually, this is not reproducible.\n if (\n this.containerElement.offsetWidth !== this.containerElement.scrollWidth &&\n this.containerElement.offsetWidth > this.contentElement.offsetWidth\n ) {\n this.canScrollRight = false;\n this.canScrollLeft = false;\n } else {\n this.canScrollRight = scrollLeft + offsetWidth < scrollWidth - 5;\n this.canScrollLeft = scrollLeft > 5;\n }\n\n this.updateUi();\n });\n }\n\n resetArrows(): void {\n // we reset the inner state of the scroll adapter and force update ui prior\n // to setting the arrows to avoid flickering\n this.hasScrolled = false;\n this.canScrollLeft = false;\n this.canScrollRight = false;\n\n this.containerElement.scrollLeft = 0;\n\n this.updateUi();\n this.setArrows();\n }\n\n groupsSwiped(event: HammerInput): void {\n this.mobileSwipe.emit(event.type as SwipeEvents);\n event.srcEvent.stopPropagation();\n }\n\n private scroll(left: number): void {\n this.smoothScroll.scrollLeftTo(this.containerElement, left, this.scrollDuration);\n }\n\n private updateUi(): void {\n this.setClass(this.leftArrow, this.hiddenArrowClass, !this.leftArrowVisible());\n this.setClass(this.rightArrow, this.hiddenArrowClass, !this.rightArrowVisible());\n\n this.setClass(this.leftArrow, this.disabledArrowClass, !this.canScrollLeft);\n this.setClass(this.rightArrow, this.disabledArrowClass, !this.canScrollRight);\n\n this.setClass(this.container, this.scrollableLeftClass, this.leftArrowVisible());\n this.setClass(this.container, this.scrollableRightClass, this.rightArrowVisible());\n }\n\n private leftArrowVisible(): boolean {\n return this.hasScrolled && this.canScrollLeft;\n }\n\n private rightArrowVisible(): boolean {\n return this.canScrollRight;\n }\n\n /**\n * Add or removes a class from elements depending of direction\n *\n * @param el element to be modified\n * @param className class name\n * @param direction when true adds the class when false removes the class.\n */\n private setClass(el: ElementRef, className: string, direction: boolean): void {\n const hasClass = el.nativeElement.classList.contains(className);\n if (direction && !hasClass) {\n this.renderer.addClass(el.nativeElement, className);\n } else if (!direction && hasClass) {\n this.renderer.removeClass(el.nativeElement, className);\n }\n }\n\n private calculateScrollSize(): number {\n if (this.scrollSpeed) {\n const scrollPercentage = this.getScrollPercentage(this.scrollSpeed);\n\n if (scrollPercentage) {\n return this.containerElement.offsetWidth * scrollPercentage;\n }\n }\n\n return this.scrollSize;\n }\n\n private getScrollPercentage(scrollSpeed: ScrollSpeed): number | undefined {\n let activeBreakpoint = this.getActiveBreakpoint(scrollSpeed.breakpoints);\n\n if (!activeBreakpoint) {\n activeBreakpoint = scrollSpeed.default;\n }\n\n return this.scrollSizeConfig.scrollingSpeed[activeBreakpoint];\n }\n\n private getActiveBreakpoint(breakpoints: { [key: string]: string }): string | null {\n const keys = Object.keys(breakpoints);\n const activeBreakpointKey = keys.find((br) => this.mediaService.isActive(br));\n\n if (!activeBreakpointKey) {\n return null;\n }\n\n return breakpoints[activeBreakpointKey];\n }\n}\n","
\n
\n
\n\n \n\n\n \n\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n Input,\n QueryList,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DS_ATOMS } from '@frontend/ui/shared';\n\nexport const DS_PILL_VARIANTS_ARRAY = ['current', 'subtle', 'strong'] as const;\nexport type DsPillVariant = (typeof DS_PILL_VARIANTS_ARRAY)[number];\n\nexport const DS_PILL_SIZE_ARRAY = ['small', 'medium'] as const;\nexport type DsPillSize = (typeof DS_PILL_SIZE_ARRAY)[number];\n\n@Component({\n selector: '[ds-pill]',\n template: `\n \n \n \n \n \n \n `,\n host: {\n 'class': 'ds-pill',\n '[class]': '[\"ds-pill-\" + variant, \"ds-pill-\" + size]',\n '[class.ds-pill-selected]': 'selected',\n '[class.ds-pill-disabled]': 'disabled',\n '[attr.disabled]': 'disabled ? true : null',\n '[class.ds-pill-rounded-padding]': 'roundedPadding()',\n '[class.ds-pill-inverse]': 'inverse',\n '[attr.aria-disabled]': 'disabled',\n },\n styleUrl: 'pill.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DsPill implements AfterContentInit {\n private destroyRef = inject(DestroyRef);\n\n @Input({ transform: booleanAttribute }) selected = false;\n\n @Input() variant: DsPillVariant = 'current';\n\n @Input() size: DsPillSize = 'medium';\n\n @Input({ transform: booleanAttribute }) disabled = false;\n\n @Input({ transform: booleanAttribute }) inverse = false;\n\n //TODO use signal-based content queries\n /**\n * Retrieves and holds the list of child components or directives that implement the `DsAtoms` interface when\n * they are projected into the current component's content slots and are instances of the injection token `DS_ATOMS`.\n * If there are any children that implement `DsAtoms` interface are present, the host class `ds-pill-rounded-padding`\n * is added to the `ds-pill` component.\n */\n @ContentChildren(DS_ATOMS) dsAtoms?: QueryList;\n\n roundedPadding = signal(false);\n\n ngAfterContentInit() {\n this.setRoundedPadding();\n this.dsAtoms?.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.setRoundedPadding();\n });\n }\n\n private setRoundedPadding() {\n const includesNotificationBubble = this.dsAtoms?.some((item) => item === 'ds-notification-bubble');\n this.roundedPadding.set(!!includesNotificationBubble);\n }\n}\n","\n
    \n @for (item of pills; track item.id) {\n
  • \n \n
  • \n }\n
\n
\n\n\n @if (pill.display === display.Logo) {\n \n \n } @else if (pill.icon) {\n \n }\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ScrollAdapterComponent } from '@frontend/sports/common/core/feature/scroll-adapter';\nimport { SportsThemedPillsDirective } from '@frontend/sports/common/ui/sports-themed-pills';\nimport { CompetitionLogoComponent } from '@frontend/sports/competition-logos/feature';\nimport { WidgetContext } from '@frontend/sports/types/components/widget';\nimport { DsPill } from '@frontend/ui/pill';\nimport { IconCustomComponent } from '@frontend/vanilla/features/icons';\n\nimport { TabBarItem } from '../../tab-bar/tab-bar.models';\n\nexport enum WidgetTabBarDisplay {\n Default,\n Icon,\n Logo,\n}\nexport interface WidgetTabBarItem extends TabBarItem {\n display: WidgetTabBarDisplay;\n context: Partial;\n itemId: string | number;\n sportId?: number;\n widgetId: string;\n}\n\n@Component({\n selector: 'ms-widget-pill',\n templateUrl: './widget-pill.component.html',\n styleUrls: ['./widget-pill.component.scss'],\n standalone: true,\n imports: [DsPill, ScrollAdapterComponent, IconCustomComponent, CompetitionLogoComponent, CommonModule, SportsThemedPillsDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetPillComponent {\n @Input() pills: WidgetTabBarItem[];\n @Output() select = new EventEmitter();\n display = WidgetTabBarDisplay;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n eventSelected(widgetTabBarItem: WidgetTabBarItem): void {\n this.pills.forEach((item) => {\n item.active = item.title === widgetTabBarItem.title;\n });\n const tabItem = this.pills.find((e) => e.id === widgetTabBarItem.id);\n this.cdr.markForCheck();\n this.select.emit(tabItem);\n }\n}\n","function n(n) {\n for (var r = arguments.length, t = Array(r > 1 ? r - 1 : 0), e = 1; e < r; e++) t[e - 1] = arguments[e];\n if (\"production\" !== process.env.NODE_ENV) {\n var i = Y[n],\n o = i ? \"function\" == typeof i ? i.apply(null, t) : i : \"unknown error nr: \" + n;\n throw Error(\"[Immer] \" + o);\n }\n throw Error(\"[Immer] minified error nr: \" + n + (t.length ? \" \" + t.map(function (n) {\n return \"'\" + n + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction r(n) {\n return !!n && !!n[Q];\n}\nfunction t(n) {\n var r;\n return !!n && (function (n) {\n if (!n || \"object\" != typeof n) return !1;\n var r = Object.getPrototypeOf(n);\n if (null === r) return !0;\n var t = Object.hasOwnProperty.call(r, \"constructor\") && r.constructor;\n return t === Object || \"function\" == typeof t && Function.toString.call(t) === Z;\n }(n) || Array.isArray(n) || !!n[L] || !!(null === (r = n.constructor) || void 0 === r ? void 0 : r[L]) || s(n) || v(n));\n}\nfunction e(t) {\n return r(t) || n(23, t), t[Q].t;\n}\nfunction i(n, r, t) {\n void 0 === t && (t = !1), 0 === o(n) ? (t ? Object.keys : nn)(n).forEach(function (e) {\n t && \"symbol\" == typeof e || r(e, n[e], n);\n }) : n.forEach(function (t, e) {\n return r(e, t, n);\n });\n}\nfunction o(n) {\n var r = n[Q];\n return r ? r.i > 3 ? r.i - 4 : r.i : Array.isArray(n) ? 1 : s(n) ? 2 : v(n) ? 3 : 0;\n}\nfunction u(n, r) {\n return 2 === o(n) ? n.has(r) : Object.prototype.hasOwnProperty.call(n, r);\n}\nfunction a(n, r) {\n return 2 === o(n) ? n.get(r) : n[r];\n}\nfunction f(n, r, t) {\n var e = o(n);\n 2 === e ? n.set(r, t) : 3 === e ? n.add(t) : n[r] = t;\n}\nfunction c(n, r) {\n return n === r ? 0 !== n || 1 / n == 1 / r : n != n && r != r;\n}\nfunction s(n) {\n return X && n instanceof Map;\n}\nfunction v(n) {\n return q && n instanceof Set;\n}\nfunction p(n) {\n return n.o || n.t;\n}\nfunction l(n) {\n if (Array.isArray(n)) return Array.prototype.slice.call(n);\n var r = rn(n);\n delete r[Q];\n for (var t = nn(r), e = 0; e < t.length; e++) {\n var i = t[e],\n o = r[i];\n !1 === o.writable && (o.writable = !0, o.configurable = !0), (o.get || o.set) && (r[i] = {\n configurable: !0,\n writable: !0,\n enumerable: o.enumerable,\n value: n[i]\n });\n }\n return Object.create(Object.getPrototypeOf(n), r);\n}\nfunction d(n, e) {\n return void 0 === e && (e = !1), y(n) || r(n) || !t(n) || (o(n) > 1 && (n.set = n.add = n.clear = n.delete = h), Object.freeze(n), e && i(n, function (n, r) {\n return d(r, !0);\n }, !0)), n;\n}\nfunction h() {\n n(2);\n}\nfunction y(n) {\n return null == n || \"object\" != typeof n || Object.isFrozen(n);\n}\nfunction b(r) {\n var t = tn[r];\n return t || n(18, r), t;\n}\nfunction m(n, r) {\n tn[n] || (tn[n] = r);\n}\nfunction _() {\n return \"production\" === process.env.NODE_ENV || U || n(0), U;\n}\nfunction j(n, r) {\n r && (b(\"Patches\"), n.u = [], n.s = [], n.v = r);\n}\nfunction g(n) {\n O(n), n.p.forEach(S), n.p = null;\n}\nfunction O(n) {\n n === U && (U = n.l);\n}\nfunction w(n) {\n return U = {\n p: [],\n l: U,\n h: n,\n m: !0,\n _: 0\n };\n}\nfunction S(n) {\n var r = n[Q];\n 0 === r.i || 1 === r.i ? r.j() : r.g = !0;\n}\nfunction P(r, e) {\n e._ = e.p.length;\n var i = e.p[0],\n o = void 0 !== r && r !== i;\n return e.h.O || b(\"ES5\").S(e, r, o), o ? (i[Q].P && (g(e), n(4)), t(r) && (r = M(e, r), e.l || x(e, r)), e.u && b(\"Patches\").M(i[Q].t, r, e.u, e.s)) : r = M(e, i, []), g(e), e.u && e.v(e.u, e.s), r !== H ? r : void 0;\n}\nfunction M(n, r, t) {\n if (y(r)) return r;\n var e = r[Q];\n if (!e) return i(r, function (i, o) {\n return A(n, e, r, i, o, t);\n }, !0), r;\n if (e.A !== n) return r;\n if (!e.P) return x(n, e.t, !0), e.t;\n if (!e.I) {\n e.I = !0, e.A._--;\n var o = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o,\n u = o,\n a = !1;\n 3 === e.i && (u = new Set(o), o.clear(), a = !0), i(u, function (r, i) {\n return A(n, e, o, r, i, t, a);\n }), x(n, o, !1), t && n.u && b(\"Patches\").N(e, t, n.u, n.s);\n }\n return e.o;\n}\nfunction A(e, i, o, a, c, s, v) {\n if (\"production\" !== process.env.NODE_ENV && c === o && n(5), r(c)) {\n var p = M(e, c, s && i && 3 !== i.i && !u(i.R, a) ? s.concat(a) : void 0);\n if (f(o, a, p), !r(p)) return;\n e.m = !1;\n } else v && o.add(c);\n if (t(c) && !y(c)) {\n if (!e.h.D && e._ < 1) return;\n M(e, c), i && i.A.l || x(e, c);\n }\n}\nfunction x(n, r, t) {\n void 0 === t && (t = !1), !n.l && n.h.D && n.m && d(r, t);\n}\nfunction z(n, r) {\n var t = n[Q];\n return (t ? p(t) : n)[r];\n}\nfunction I(n, r) {\n if (r in n) for (var t = Object.getPrototypeOf(n); t;) {\n var e = Object.getOwnPropertyDescriptor(t, r);\n if (e) return e;\n t = Object.getPrototypeOf(t);\n }\n}\nfunction k(n) {\n n.P || (n.P = !0, n.l && k(n.l));\n}\nfunction E(n) {\n n.o || (n.o = l(n.t));\n}\nfunction N(n, r, t) {\n var e = s(r) ? b(\"MapSet\").F(r, t) : v(r) ? b(\"MapSet\").T(r, t) : n.O ? function (n, r) {\n var t = Array.isArray(n),\n e = {\n i: t ? 1 : 0,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n R: {},\n l: r,\n t: n,\n k: null,\n o: null,\n j: null,\n C: !1\n },\n i = e,\n o = en;\n t && (i = [e], o = on);\n var u = Proxy.revocable(i, o),\n a = u.revoke,\n f = u.proxy;\n return e.k = f, e.j = a, f;\n }(r, t) : b(\"ES5\").J(r, t);\n return (t ? t.A : _()).p.push(e), e;\n}\nfunction R(e) {\n return r(e) || n(22, e), function n(r) {\n if (!t(r)) return r;\n var e,\n u = r[Q],\n c = o(r);\n if (u) {\n if (!u.P && (u.i < 4 || !b(\"ES5\").K(u))) return u.t;\n u.I = !0, e = D(r, c), u.I = !1;\n } else e = D(r, c);\n return i(e, function (r, t) {\n u && a(u.t, r) === t || f(e, r, n(t));\n }), 3 === c ? new Set(e) : e;\n }(e);\n}\nfunction D(n, r) {\n switch (r) {\n case 2:\n return new Map(n);\n case 3:\n return Array.from(n);\n }\n return l(n);\n}\nfunction F() {\n function t(n, r) {\n var t = s[n];\n return t ? t.enumerable = r : s[n] = t = {\n configurable: !0,\n enumerable: r,\n get: function () {\n var r = this[Q];\n return \"production\" !== process.env.NODE_ENV && f(r), en.get(r, n);\n },\n set: function (r) {\n var t = this[Q];\n \"production\" !== process.env.NODE_ENV && f(t), en.set(t, n, r);\n }\n }, t;\n }\n function e(n) {\n for (var r = n.length - 1; r >= 0; r--) {\n var t = n[r][Q];\n if (!t.P) switch (t.i) {\n case 5:\n a(t) && k(t);\n break;\n case 4:\n o(t) && k(t);\n }\n }\n }\n function o(n) {\n for (var r = n.t, t = n.k, e = nn(t), i = e.length - 1; i >= 0; i--) {\n var o = e[i];\n if (o !== Q) {\n var a = r[o];\n if (void 0 === a && !u(r, o)) return !0;\n var f = t[o],\n s = f && f[Q];\n if (s ? s.t !== a : !c(f, a)) return !0;\n }\n }\n var v = !!r[Q];\n return e.length !== nn(r).length + (v ? 0 : 1);\n }\n function a(n) {\n var r = n.k;\n if (r.length !== n.t.length) return !0;\n var t = Object.getOwnPropertyDescriptor(r, r.length - 1);\n if (t && !t.get) return !0;\n for (var e = 0; e < r.length; e++) if (!r.hasOwnProperty(e)) return !0;\n return !1;\n }\n function f(r) {\n r.g && n(3, JSON.stringify(p(r)));\n }\n var s = {};\n m(\"ES5\", {\n J: function (n, r) {\n var e = Array.isArray(n),\n i = function (n, r) {\n if (n) {\n for (var e = Array(r.length), i = 0; i < r.length; i++) Object.defineProperty(e, \"\" + i, t(i, !0));\n return e;\n }\n var o = rn(r);\n delete o[Q];\n for (var u = nn(o), a = 0; a < u.length; a++) {\n var f = u[a];\n o[f] = t(f, n || !!o[f].enumerable);\n }\n return Object.create(Object.getPrototypeOf(r), o);\n }(e, n),\n o = {\n i: e ? 5 : 4,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n R: {},\n l: r,\n t: n,\n k: i,\n o: null,\n g: !1,\n C: !1\n };\n return Object.defineProperty(i, Q, {\n value: o,\n writable: !0\n }), i;\n },\n S: function (n, t, o) {\n o ? r(t) && t[Q].A === n && e(n.p) : (n.u && function n(r) {\n if (r && \"object\" == typeof r) {\n var t = r[Q];\n if (t) {\n var e = t.t,\n o = t.k,\n f = t.R,\n c = t.i;\n if (4 === c) i(o, function (r) {\n r !== Q && (void 0 !== e[r] || u(e, r) ? f[r] || n(o[r]) : (f[r] = !0, k(t)));\n }), i(e, function (n) {\n void 0 !== o[n] || u(o, n) || (f[n] = !1, k(t));\n });else if (5 === c) {\n if (a(t) && (k(t), f.length = !0), o.length < e.length) for (var s = o.length; s < e.length; s++) f[s] = !1;else for (var v = e.length; v < o.length; v++) f[v] = !0;\n for (var p = Math.min(o.length, e.length), l = 0; l < p; l++) o.hasOwnProperty(l) || (f[l] = !0), void 0 === f[l] && n(o[l]);\n }\n }\n }\n }(n.p[0]), e(n.p));\n },\n K: function (n) {\n return 4 === n.i ? o(n) : a(n);\n }\n });\n}\nfunction T() {\n function e(n) {\n if (!t(n)) return n;\n if (Array.isArray(n)) return n.map(e);\n if (s(n)) return new Map(Array.from(n.entries()).map(function (n) {\n return [n[0], e(n[1])];\n }));\n if (v(n)) return new Set(Array.from(n).map(e));\n var r = Object.create(Object.getPrototypeOf(n));\n for (var i in n) r[i] = e(n[i]);\n return u(n, L) && (r[L] = n[L]), r;\n }\n function f(n) {\n return r(n) ? e(n) : n;\n }\n var c = \"add\";\n m(\"Patches\", {\n $: function (r, t) {\n return t.forEach(function (t) {\n for (var i = t.path, u = t.op, f = r, s = 0; s < i.length - 1; s++) {\n var v = o(f),\n p = i[s];\n \"string\" != typeof p && \"number\" != typeof p && (p = \"\" + p), 0 !== v && 1 !== v || \"__proto__\" !== p && \"constructor\" !== p || n(24), \"function\" == typeof f && \"prototype\" === p && n(24), \"object\" != typeof (f = a(f, p)) && n(15, i.join(\"/\"));\n }\n var l = o(f),\n d = e(t.value),\n h = i[i.length - 1];\n switch (u) {\n case \"replace\":\n switch (l) {\n case 2:\n return f.set(h, d);\n case 3:\n n(16);\n default:\n return f[h] = d;\n }\n case c:\n switch (l) {\n case 1:\n return \"-\" === h ? f.push(d) : f.splice(h, 0, d);\n case 2:\n return f.set(h, d);\n case 3:\n return f.add(d);\n default:\n return f[h] = d;\n }\n case \"remove\":\n switch (l) {\n case 1:\n return f.splice(h, 1);\n case 2:\n return f.delete(h);\n case 3:\n return f.delete(t.value);\n default:\n return delete f[h];\n }\n default:\n n(17, u);\n }\n }), r;\n },\n N: function (n, r, t, e) {\n switch (n.i) {\n case 0:\n case 4:\n case 2:\n return function (n, r, t, e) {\n var o = n.t,\n s = n.o;\n i(n.R, function (n, i) {\n var v = a(o, n),\n p = a(s, n),\n l = i ? u(o, n) ? \"replace\" : c : \"remove\";\n if (v !== p || \"replace\" !== l) {\n var d = r.concat(n);\n t.push(\"remove\" === l ? {\n op: l,\n path: d\n } : {\n op: l,\n path: d,\n value: p\n }), e.push(l === c ? {\n op: \"remove\",\n path: d\n } : \"remove\" === l ? {\n op: c,\n path: d,\n value: f(v)\n } : {\n op: \"replace\",\n path: d,\n value: f(v)\n });\n }\n });\n }(n, r, t, e);\n case 5:\n case 1:\n return function (n, r, t, e) {\n var i = n.t,\n o = n.R,\n u = n.o;\n if (u.length < i.length) {\n var a = [u, i];\n i = a[0], u = a[1];\n var s = [e, t];\n t = s[0], e = s[1];\n }\n for (var v = 0; v < i.length; v++) if (o[v] && u[v] !== i[v]) {\n var p = r.concat([v]);\n t.push({\n op: \"replace\",\n path: p,\n value: f(u[v])\n }), e.push({\n op: \"replace\",\n path: p,\n value: f(i[v])\n });\n }\n for (var l = i.length; l < u.length; l++) {\n var d = r.concat([l]);\n t.push({\n op: c,\n path: d,\n value: f(u[l])\n });\n }\n i.length < u.length && e.push({\n op: \"replace\",\n path: r.concat([\"length\"]),\n value: i.length\n });\n }(n, r, t, e);\n case 3:\n return function (n, r, t, e) {\n var i = n.t,\n o = n.o,\n u = 0;\n i.forEach(function (n) {\n if (!o.has(n)) {\n var i = r.concat([u]);\n t.push({\n op: \"remove\",\n path: i,\n value: n\n }), e.unshift({\n op: c,\n path: i,\n value: n\n });\n }\n u++;\n }), u = 0, o.forEach(function (n) {\n if (!i.has(n)) {\n var o = r.concat([u]);\n t.push({\n op: c,\n path: o,\n value: n\n }), e.unshift({\n op: \"remove\",\n path: o,\n value: n\n });\n }\n u++;\n });\n }(n, r, t, e);\n }\n },\n M: function (n, r, t, e) {\n t.push({\n op: \"replace\",\n path: [],\n value: r === H ? void 0 : r\n }), e.push({\n op: \"replace\",\n path: [],\n value: n\n });\n }\n });\n}\nfunction C() {\n function r(n, r) {\n function t() {\n this.constructor = n;\n }\n a(n, r), n.prototype = (t.prototype = r.prototype, new t());\n }\n function e(n) {\n n.o || (n.R = new Map(), n.o = new Map(n.t));\n }\n function o(n) {\n n.o || (n.o = new Set(), n.t.forEach(function (r) {\n if (t(r)) {\n var e = N(n.A.h, r, n);\n n.p.set(r, e), n.o.add(e);\n } else n.o.add(r);\n }));\n }\n function u(r) {\n r.g && n(3, JSON.stringify(p(r)));\n }\n var a = function (n, r) {\n return (a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (n, r) {\n n.__proto__ = r;\n } || function (n, r) {\n for (var t in r) r.hasOwnProperty(t) && (n[t] = r[t]);\n })(n, r);\n },\n f = function () {\n function n(n, r) {\n return this[Q] = {\n i: 2,\n l: r,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n R: void 0,\n t: n,\n k: this,\n C: !1,\n g: !1\n }, this;\n }\n r(n, Map);\n var o = n.prototype;\n return Object.defineProperty(o, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), o.has = function (n) {\n return p(this[Q]).has(n);\n }, o.set = function (n, r) {\n var t = this[Q];\n return u(t), p(t).has(n) && p(t).get(n) === r || (e(t), k(t), t.R.set(n, !0), t.o.set(n, r), t.R.set(n, !0)), this;\n }, o.delete = function (n) {\n if (!this.has(n)) return !1;\n var r = this[Q];\n return u(r), e(r), k(r), r.t.has(n) ? r.R.set(n, !1) : r.R.delete(n), r.o.delete(n), !0;\n }, o.clear = function () {\n var n = this[Q];\n u(n), p(n).size && (e(n), k(n), n.R = new Map(), i(n.t, function (r) {\n n.R.set(r, !1);\n }), n.o.clear());\n }, o.forEach = function (n, r) {\n var t = this;\n p(this[Q]).forEach(function (e, i) {\n n.call(r, t.get(i), i, t);\n });\n }, o.get = function (n) {\n var r = this[Q];\n u(r);\n var i = p(r).get(n);\n if (r.I || !t(i)) return i;\n if (i !== r.t.get(n)) return i;\n var o = N(r.A.h, i, r);\n return e(r), r.o.set(n, o), o;\n }, o.keys = function () {\n return p(this[Q]).keys();\n }, o.values = function () {\n var n,\n r = this,\n t = this.keys();\n return (n = {})[V] = function () {\n return r.values();\n }, n.next = function () {\n var n = t.next();\n return n.done ? n : {\n done: !1,\n value: r.get(n.value)\n };\n }, n;\n }, o.entries = function () {\n var n,\n r = this,\n t = this.keys();\n return (n = {})[V] = function () {\n return r.entries();\n }, n.next = function () {\n var n = t.next();\n if (n.done) return n;\n var e = r.get(n.value);\n return {\n done: !1,\n value: [n.value, e]\n };\n }, n;\n }, o[V] = function () {\n return this.entries();\n }, n;\n }(),\n c = function () {\n function n(n, r) {\n return this[Q] = {\n i: 3,\n l: r,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n t: n,\n k: this,\n p: new Map(),\n g: !1,\n C: !1\n }, this;\n }\n r(n, Set);\n var t = n.prototype;\n return Object.defineProperty(t, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), t.has = function (n) {\n var r = this[Q];\n return u(r), r.o ? !!r.o.has(n) || !(!r.p.has(n) || !r.o.has(r.p.get(n))) : r.t.has(n);\n }, t.add = function (n) {\n var r = this[Q];\n return u(r), this.has(n) || (o(r), k(r), r.o.add(n)), this;\n }, t.delete = function (n) {\n if (!this.has(n)) return !1;\n var r = this[Q];\n return u(r), o(r), k(r), r.o.delete(n) || !!r.p.has(n) && r.o.delete(r.p.get(n));\n }, t.clear = function () {\n var n = this[Q];\n u(n), p(n).size && (o(n), k(n), n.o.clear());\n }, t.values = function () {\n var n = this[Q];\n return u(n), o(n), n.o.values();\n }, t.entries = function () {\n var n = this[Q];\n return u(n), o(n), n.o.entries();\n }, t.keys = function () {\n return this.values();\n }, t[V] = function () {\n return this.values();\n }, t.forEach = function (n, r) {\n for (var t = this.values(), e = t.next(); !e.done;) n.call(r, e.value, e.value, this), e = t.next();\n }, n;\n }();\n m(\"MapSet\", {\n F: function (n, r) {\n return new f(n, r);\n },\n T: function (n, r) {\n return new c(n, r);\n }\n });\n}\nfunction J() {\n F(), C(), T();\n}\nfunction K(n) {\n return n;\n}\nfunction $(n) {\n return n;\n}\nvar G,\n U,\n W = \"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol(\"x\"),\n X = \"undefined\" != typeof Map,\n q = \"undefined\" != typeof Set,\n B = \"undefined\" != typeof Proxy && void 0 !== Proxy.revocable && \"undefined\" != typeof Reflect,\n H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = !0, G),\n L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\",\n Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\",\n V = \"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\",\n Y = {\n 0: \"Illegal state\",\n 1: \"Immer drafts cannot have computed properties\",\n 2: \"This object has been frozen and should not be mutated\",\n 3: function (n) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n;\n },\n 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n 5: \"Immer forbids circular references\",\n 6: \"The first or second argument to `produce` must be a function\",\n 7: \"The third argument to `produce` must be a function or undefined\",\n 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n 10: \"The given draft is already finalized\",\n 11: \"Object.defineProperty() cannot be used on an Immer draft\",\n 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n 13: \"Immer only supports deleting array indices\",\n 14: \"Immer only supports setting array indices and the 'length' property\",\n 15: function (n) {\n return \"Cannot apply patch, path doesn't resolve: \" + n;\n },\n 16: 'Sets cannot have \"replace\" patches.',\n 17: function (n) {\n return \"Unsupported patch operation: \" + n;\n },\n 18: function (n) {\n return \"The plugin for '\" + n + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n + \"()` when initializing your application.\";\n },\n 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n 21: function (n) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n + \"'\";\n },\n 22: function (n) {\n return \"'current' expects a draft, got: \" + n;\n },\n 23: function (n) {\n return \"'original' expects a draft, got: \" + n;\n },\n 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n },\n Z = \"\" + Object.prototype.constructor,\n nn = \"undefined\" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function (n) {\n return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n));\n } : Object.getOwnPropertyNames,\n rn = Object.getOwnPropertyDescriptors || function (n) {\n var r = {};\n return nn(n).forEach(function (t) {\n r[t] = Object.getOwnPropertyDescriptor(n, t);\n }), r;\n },\n tn = {},\n en = {\n get: function (n, r) {\n if (r === Q) return n;\n var e = p(n);\n if (!u(e, r)) return function (n, r, t) {\n var e,\n i = I(r, t);\n return i ? \"value\" in i ? i.value : null === (e = i.get) || void 0 === e ? void 0 : e.call(n.k) : void 0;\n }(n, e, r);\n var i = e[r];\n return n.I || !t(i) ? i : i === z(n.t, r) ? (E(n), n.o[r] = N(n.A.h, i, n)) : i;\n },\n has: function (n, r) {\n return r in p(n);\n },\n ownKeys: function (n) {\n return Reflect.ownKeys(p(n));\n },\n set: function (n, r, t) {\n var e = I(p(n), r);\n if (null == e ? void 0 : e.set) return e.set.call(n.k, t), !0;\n if (!n.P) {\n var i = z(p(n), r),\n o = null == i ? void 0 : i[Q];\n if (o && o.t === t) return n.o[r] = t, n.R[r] = !1, !0;\n if (c(t, i) && (void 0 !== t || u(n.t, r))) return !0;\n E(n), k(n);\n }\n return n.o[r] === t && (void 0 !== t || r in n.o) || Number.isNaN(t) && Number.isNaN(n.o[r]) || (n.o[r] = t, n.R[r] = !0), !0;\n },\n deleteProperty: function (n, r) {\n return void 0 !== z(n.t, r) || r in n.t ? (n.R[r] = !1, E(n), k(n)) : delete n.R[r], n.o && delete n.o[r], !0;\n },\n getOwnPropertyDescriptor: function (n, r) {\n var t = p(n),\n e = Reflect.getOwnPropertyDescriptor(t, r);\n return e ? {\n writable: !0,\n configurable: 1 !== n.i || \"length\" !== r,\n enumerable: e.enumerable,\n value: t[r]\n } : e;\n },\n defineProperty: function () {\n n(11);\n },\n getPrototypeOf: function (n) {\n return Object.getPrototypeOf(n.t);\n },\n setPrototypeOf: function () {\n n(12);\n }\n },\n on = {};\ni(en, function (n, r) {\n on[n] = function () {\n return arguments[0] = arguments[0][0], r.apply(this, arguments);\n };\n}), on.deleteProperty = function (r, t) {\n return \"production\" !== process.env.NODE_ENV && isNaN(parseInt(t)) && n(13), on.set.call(this, r, t, void 0);\n}, on.set = function (r, t, e) {\n return \"production\" !== process.env.NODE_ENV && \"length\" !== t && isNaN(parseInt(t)) && n(14), en.set.call(this, r[0], t, e, r[0]);\n};\nvar un = function () {\n function e(r) {\n var e = this;\n this.O = B, this.D = !0, this.produce = function (r, i, o) {\n if (\"function\" == typeof r && \"function\" != typeof i) {\n var u = i;\n i = r;\n var a = e;\n return function (n) {\n var r = this;\n void 0 === n && (n = u);\n for (var t = arguments.length, e = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) e[o - 1] = arguments[o];\n return a.produce(n, function (n) {\n var t;\n return (t = i).call.apply(t, [r, n].concat(e));\n });\n };\n }\n var f;\n if (\"function\" != typeof i && n(6), void 0 !== o && \"function\" != typeof o && n(7), t(r)) {\n var c = w(e),\n s = N(e, r, void 0),\n v = !0;\n try {\n f = i(s), v = !1;\n } finally {\n v ? g(c) : O(c);\n }\n return \"undefined\" != typeof Promise && f instanceof Promise ? f.then(function (n) {\n return j(c, o), P(n, c);\n }, function (n) {\n throw g(c), n;\n }) : (j(c, o), P(f, c));\n }\n if (!r || \"object\" != typeof r) {\n if (void 0 === (f = i(r)) && (f = r), f === H && (f = void 0), e.D && d(f, !0), o) {\n var p = [],\n l = [];\n b(\"Patches\").M(r, f, p, l), o(p, l);\n }\n return f;\n }\n n(21, r);\n }, this.produceWithPatches = function (n, r) {\n if (\"function\" == typeof n) return function (r) {\n for (var t = arguments.length, i = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) i[o - 1] = arguments[o];\n return e.produceWithPatches(r, function (r) {\n return n.apply(void 0, [r].concat(i));\n });\n };\n var t,\n i,\n o = e.produce(n, r, function (n, r) {\n t = n, i = r;\n });\n return \"undefined\" != typeof Promise && o instanceof Promise ? o.then(function (n) {\n return [n, t, i];\n }) : [o, t, i];\n }, \"boolean\" == typeof (null == r ? void 0 : r.useProxies) && this.setUseProxies(r.useProxies), \"boolean\" == typeof (null == r ? void 0 : r.autoFreeze) && this.setAutoFreeze(r.autoFreeze);\n }\n var i = e.prototype;\n return i.createDraft = function (e) {\n t(e) || n(8), r(e) && (e = R(e));\n var i = w(this),\n o = N(this, e, void 0);\n return o[Q].C = !0, O(i), o;\n }, i.finishDraft = function (r, t) {\n var e = r && r[Q];\n \"production\" !== process.env.NODE_ENV && (e && e.C || n(9), e.I && n(10));\n var i = e.A;\n return j(i, t), P(void 0, i);\n }, i.setAutoFreeze = function (n) {\n this.D = n;\n }, i.setUseProxies = function (r) {\n r && !B && n(20), this.O = r;\n }, i.applyPatches = function (n, t) {\n var e;\n for (e = t.length - 1; e >= 0; e--) {\n var i = t[e];\n if (0 === i.path.length && \"replace\" === i.op) {\n n = i.value;\n break;\n }\n }\n e > -1 && (t = t.slice(e + 1));\n var o = b(\"Patches\").$;\n return r(n) ? o(n, t) : this.produce(n, function (n) {\n return o(n, t);\n });\n }, e;\n }(),\n an = new un(),\n fn = an.produce,\n cn = an.produceWithPatches.bind(an),\n sn = an.setAutoFreeze.bind(an),\n vn = an.setUseProxies.bind(an),\n pn = an.applyPatches.bind(an),\n ln = an.createDraft.bind(an),\n dn = an.finishDraft.bind(an);\nexport default fn;\nexport { un as Immer, pn as applyPatches, K as castDraft, $ as castImmutable, ln as createDraft, R as current, J as enableAllPlugins, F as enableES5, C as enableMapSet, T as enablePatches, dn as finishDraft, d as freeze, L as immerable, r as isDraft, t as isDraftable, H as nothing, e as original, fn as produce, cn as produceWithPatches, sn as setAutoFreeze, vn as setUseProxies };\n","import { ImageProfile } from '@cds/betting-offer';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { CountItem, ItemType, LeagueItem, children } from '@frontend/sports/common/core/data-access/sport-model';\nimport { StringDictionary } from '@frontend/sports/common/core/utils/extended-types';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { Tournament } from '@frontend/sports/types/components/tournaments';\nimport { immerable } from 'immer';\n\nimport { IntervalFilter } from '../calendar/count-interval.service';\nimport { TreeItem } from '../common/item/item.model';\n\nexport class Lazy {\n private cached?: T;\n\n constructor(private creator: () => T) {}\n\n get value(): T {\n if (this.cached === undefined) {\n this.cached = this.creator();\n }\n\n return this.cached;\n }\n}\n\nexport interface TreeOptions {\n urlMapper: (sport?: CountItem, region?: CountItem, league?: CountItem, group?: CountItem) => string;\n countMapper: (item?: CountItem) => number;\n priceBoostCountMapper?: (item?: CountItem) => number;\n title?: string;\n subTitle?: string;\n topTitle?: string;\n moreTitle?: string;\n allTitle?: string;\n seoOptimize?: boolean;\n allOptions?: TreeOptions;\n eSportsLobby?: boolean;\n}\n\nexport class BaseTreeItem implements TreeItem {\n [immerable] = true;\n\n private _href: string;\n\n constructor() {\n this.children = [];\n }\n\n get href(): string {\n return this._href;\n }\n\n set href(value: string) {\n this._href = value;\n }\n\n id: string | number;\n children: TreeItem[];\n active: boolean;\n expanded: boolean;\n arrow?: boolean;\n count?: number;\n icon?: string;\n title: string;\n tracking?: string;\n attribute?: StringDictionary;\n liveCount?: number;\n context?: string;\n compoundId?: string;\n priceBoostCount?: number;\n regions?: number[];\n}\n\nexport class LazyTreeItem extends BaseTreeItem {\n private lazyHref: Lazy;\n\n constructor([sport, region, league, group]: CountItem[], options: TreeOptions) {\n super();\n\n const current = group || league || region || sport;\n\n if (current) {\n this.id = current.id;\n this.expanded = options.seoOptimize || !current.children.length;\n\n this.attribute = {\n id: this.id,\n type: current.type.toLowerCase(),\n };\n }\n\n this.lazyHref = new Lazy(() => options.urlMapper(sport, region, league));\n this.count = options.countMapper(current);\n this.priceBoostCount = options.priceBoostCountMapper ? options.priceBoostCountMapper(current) : 0;\n this.active = false;\n }\n\n override get href(): string {\n return this.lazyHref.value;\n }\n\n override set href(value: string) {\n console.error(`LazyTreeItem should not have it's 'href' property set. Attempted value: ${value}`);\n }\n}\n\nexport class SportTreeItem extends LazyTreeItem {\n constructor(sport: CountItem, options: TreeOptions) {\n super([sport], options);\n\n const childrenType = getItemTypeForSport(sport.id);\n\n const sportTitleAndIcon = () => {\n this.icon = sport.icon ?? `sports-${sport.id}`;\n this.title = sport.name;\n };\n\n if (options.title && !options.eSportsLobby) {\n this.subTitle = options.subTitle;\n this.moreTitle = options.moreTitle;\n this.title = options.title;\n this.count = undefined;\n this.priceBoostCount = undefined;\n } else if (options.eSportsLobby) {\n sportTitleAndIcon();\n this.count = undefined;\n } else {\n sportTitleAndIcon();\n }\n\n this.children = children(sport, childrenType).map((region) => new RegionTreeItem(sport, region, options));\n this.liveCount = sport.counts.live;\n }\n\n subTitle?: string;\n moreTitle?: string;\n}\n\nexport class RegionTreeItem extends LazyTreeItem {\n constructor(sport: CountItem, region: CountItem, options: TreeOptions) {\n super([sport, region], options.allOptions ? options.allOptions : options);\n\n this.icon = region.type === ItemType.Region ? `country-icon c${region.id}` : 'sports-tournament';\n this.title = region.name;\n this.children = children(region, ItemType.Competition).map((league) => new LeagueTreeItem(sport, region, league, options));\n\n if (this.children.length && (options.seoOptimize || this.children.length > 1)) {\n const all = new RegionTreeItem(sport, { ...region, children: [] }, options.allOptions ? options.allOptions : options);\n\n all.title = `${options.allTitle} ${region.name}`;\n all.icon = 'theme-competitions-all';\n\n if (all.attribute) {\n all.attribute.target = 'all';\n }\n\n this.children.unshift(all);\n }\n }\n}\n\nexport class LeagueTreeItem extends LazyTreeItem {\n constructor(sport: CountItem, region: CountItem, league: LeagueItem, options: TreeOptions) {\n const leagueOptions = { ...options, urlMapper: () => options.urlMapper(sport, region, league) };\n\n super([sport, region, league], leagueOptions);\n\n this.sport = sport.id;\n this.region = region.name;\n this.title = league.name;\n this.icon = league.icon;\n this.isVirtual = league.isVirtual;\n this.siblings = league.isVirtual ? league.siblings : undefined;\n this.liveCount = league.counts.live;\n this.realCompetitionId = league.realCompetitionId;\n this.compoundId = league.compoundId;\n this.imageProfile = league.imageProfile;\n }\n\n sport: number;\n region: string;\n isVirtual: boolean;\n siblings?: number[];\n realCompetitionId?: number;\n imageProfile?: ImageProfile;\n}\n\nexport class VirtualGroupTreeItem extends LazyTreeItem {\n constructor(sport: CountItem, region: CountItem, league: LeagueItem, group: LeagueItem, options: TreeOptions) {\n const groupOptions = { ...options, urlMapper: () => options.urlMapper(sport, region, league, group) };\n\n super([sport, region, league, group], groupOptions);\n\n this.sport = sport.id;\n this.region = region.name;\n this.title = `${league.name} - ${group.name}`;\n this.icon = group.icon;\n this.favouriteId = group.siblings[0];\n }\n\n sport: number;\n region: string;\n favouriteId: number;\n}\n\nexport class TournamentTreeItem extends BaseTreeItem {\n constructor(sport: CountItem, tournament: Tournament, urlMapper: (sport: UrlParam, name: string) => string) {\n super();\n\n this.id = tournament.navigation.name ?? '';\n this.title = tournament.navigation.filter.title || (tournament.navigation.name ?? '');\n this.icon = tournament.navigation.icon || 'sports-tournament';\n this.href = urlMapper(sport, tournament.navigation.name ?? '');\n\n this.attribute = {\n id: this.id,\n type: 'tournament',\n };\n }\n}\n\nexport class CalendarTreeItem extends BaseTreeItem {\n constructor(sport: CountItem, interval: IntervalFilter, urlMapper: (sport: UrlParam, name: string) => string) {\n super();\n\n this.id = interval.name;\n this.title = interval.title;\n this.icon = 'theme-competitions-all';\n this.href = urlMapper(sport, interval.name);\n this.attribute = {\n id: this.id,\n type: 'calendar',\n };\n }\n}\n\nexport interface SportTreeState {\n sport?: number;\n sportExpanded?: boolean;\n region?: number;\n regionExpanded?: (string | number)[];\n league?: number | number[];\n tournament?: string;\n isVirtual?: boolean;\n virtualCompetitionGroup?: number;\n context?: string;\n}\n\nexport function getItemTypeForSport(sportId: number): ItemType.Tournament | ItemType.Region {\n return sportId === SportConstant.Tennis ? ItemType.Tournament : ItemType.Region;\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 const decoded = decodeURI(url.path());\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(decoded);\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 * as i1 from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, booleanAttribute, Directive, Input, numberAttribute, ANIMATION_MODULE_TYPE, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { MatRippleLoader, MatCommonModule, MatRippleModule } from '@angular/material/core';\n\n/** Injection token that can be used to provide the default options the button component. */\nconst _c0 = [\"mat-button\", \"\"];\nconst _c1 = [[[\"\", 8, \"material-icons\", 3, \"iconPositionEnd\", \"\"], [\"mat-icon\", 3, \"iconPositionEnd\", \"\"], [\"\", \"matButtonIcon\", \"\", 3, \"iconPositionEnd\", \"\"]], \"*\", [[\"\", \"iconPositionEnd\", \"\", 8, \"material-icons\"], [\"mat-icon\", \"iconPositionEnd\", \"\"], [\"\", \"matButtonIcon\", \"\", \"iconPositionEnd\", \"\"]]];\nconst _c2 = [\".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])\", \"*\", \".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]\"];\nconst _c3 = \".mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-text-button-horizontal-padding, 8px);height:var(--mdc-text-button-container-height);font-family:var(--mdc-text-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-text-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-text-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-text-button-label-text-transform);font-weight:var(--mdc-text-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, var(--mat-app-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-filled-button-horizontal-padding, 16px);height:var(--mdc-filled-button-container-height);font-family:var(--mdc-filled-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-filled-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-filled-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-filled-button-label-text-transform);font-weight:var(--mdc-filled-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color, var(--mat-app-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, var(--mat-app-on-primary));background-color:var(--mdc-filled-button-container-color, var(--mat-app-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow, var(--mat-app-level1));height:var(--mdc-protected-button-container-height);font-family:var(--mdc-protected-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-protected-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-protected-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-protected-button-label-text-transform);font-weight:var(--mdc-protected-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, var(--mat-app-primary));background-color:var(--mdc-protected-button-container-color, var(--mat-app-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow, var(--mat-app-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow, var(--mat-app-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-outlined-button-horizontal-padding, 15px);height:var(--mdc-outlined-button-container-height);font-family:var(--mdc-outlined-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-outlined-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-outlined-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-outlined-button-label-text-transform);font-weight:var(--mdc-outlined-button-label-text-weight, var(--mat-app-label-large-weight));border-radius:var(--mdc-outlined-button-container-shape, var(--mat-app-corner-full));border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, var(--mat-app-primary));border-color:var(--mdc-outlined-button-outline-color, var(--mat-app-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button .mdc-button__ripple{border-width:var(--mdc-outlined-button-outline-width);border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}\";\nconst _c4 = \".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}\";\nconst _c5 = [\"mat-fab\", \"\"];\nconst _c6 = [\"mat-mini-fab\", \"\"];\nconst _c7 = \".mat-mdc-fab-base{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);flex-shrink:0}.mat-mdc-fab-base .mat-mdc-button-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab-base .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-fab-base .mdc-button__label,.mat-mdc-fab-base .mat-icon{z-index:1;position:relative}.mat-mdc-fab-base .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab-base:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-fab-base._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab-base::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}.mat-mdc-fab-base[hidden]{display:none}.mat-mdc-fab-base::-moz-focus-inner{padding:0;border:0}.mat-mdc-fab-base:active,.mat-mdc-fab-base:focus{outline:none}.mat-mdc-fab-base:hover{cursor:pointer}.mat-mdc-fab-base>svg{width:100%}.mat-mdc-fab-base .mat-icon,.mat-mdc-fab-base .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab-base .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base[disabled]:focus,.mat-mdc-fab-base.mat-mdc-button-disabled,.mat-mdc-fab-base.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab-base.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{background-color:var(--mdc-fab-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-container-shape, var(--mat-app-corner-large));color:var(--mat-fab-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{width:40px;height:40px;background-color:var(--mdc-fab-small-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-small-container-shape, var(--mat-app-corner-medium));color:var(--mat-fab-small-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-small-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;line-height:normal;box-shadow:var(--mdc-extended-fab-container-elevation-shadow, var(--mat-app-level3));height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape, var(--mat-app-corner-large));font-family:var(--mdc-extended-fab-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-extended-fab-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-extended-fab-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-extended-fab-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:-8px;margin-right:12px}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons,[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons{margin-left:12px;margin-right:-8px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}\";\nconst _c8 = [\"mat-icon-button\", \"\"];\nconst _c9 = [\"*\"];\nconst _c10 = \".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color, var(--mat-app-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\";\nconst MAT_BUTTON_CONFIG = /*#__PURE__*/new InjectionToken('MAT_BUTTON_CONFIG');\n/** Shared host configuration for all buttons */\nconst MAT_BUTTON_HOST = {\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': '_getAriaDisabled()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n // MDC automatically applies the primary theme color to the button, but we want to support\n // an unthemed version. If color is undefined, apply a CSS class that makes it easy to\n // select and style this \"theme\".\n '[class.mat-unthemed]': '!color',\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n '[class.mat-mdc-button-base]': 'true',\n '[class]': 'color ? \"mat-\" + color : \"\"'\n};\n/** List of classes to add to buttons instances based on host attribute selector. */\nconst HOST_SELECTOR_MDC_CLASS_PAIR = [{\n attribute: 'mat-button',\n mdcClasses: ['mdc-button', 'mat-mdc-button']\n}, {\n attribute: 'mat-flat-button',\n mdcClasses: ['mdc-button', 'mdc-button--unelevated', 'mat-mdc-unelevated-button']\n}, {\n attribute: 'mat-raised-button',\n mdcClasses: ['mdc-button', 'mdc-button--raised', 'mat-mdc-raised-button']\n}, {\n attribute: 'mat-stroked-button',\n mdcClasses: ['mdc-button', 'mdc-button--outlined', 'mat-mdc-outlined-button']\n}, {\n attribute: 'mat-fab',\n mdcClasses: ['mdc-fab', 'mat-mdc-fab-base', 'mat-mdc-fab']\n}, {\n attribute: 'mat-mini-fab',\n mdcClasses: ['mdc-fab', 'mat-mdc-fab-base', 'mdc-fab--mini', 'mat-mdc-mini-fab']\n}, {\n attribute: 'mat-icon-button',\n mdcClasses: ['mdc-icon-button', 'mat-mdc-icon-button']\n}];\n/** Base class for all buttons. */\nlet MatButtonBase = /*#__PURE__*/(() => {\n class MatButtonBase {\n /**\n * Reference to the MatRipple instance of the button.\n * @deprecated Considered an implementation detail. To be removed.\n * @breaking-change 17.0.0\n */\n get ripple() {\n return this._rippleLoader?.getRipple(this._elementRef.nativeElement);\n }\n set ripple(v) {\n this._rippleLoader?.attachRipple(this._elementRef.nativeElement, v);\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = value;\n this._updateRippleDisabled();\n }\n /** Whether the button is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._updateRippleDisabled();\n }\n constructor(_elementRef, _platform, _ngZone, _animationMode) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._focusMonitor = inject(FocusMonitor);\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve initial load time of large applications.\n */\n this._rippleLoader = inject(MatRippleLoader);\n /** Whether this button is a FAB. Used to apply the correct class on the ripple. */\n this._isFab = false;\n this._disableRipple = false;\n this._disabled = false;\n const config = inject(MAT_BUTTON_CONFIG, {\n optional: true\n });\n const element = _elementRef.nativeElement;\n const classList = element.classList;\n this.disabledInteractive = config?.disabledInteractive ?? false;\n this.color = config?.color ?? null;\n this._rippleLoader?.configureRipple(element, {\n className: 'mat-mdc-button-ripple'\n });\n // For each of the variant selectors that is present in the button's host\n // attributes, add the correct corresponding MDC classes.\n for (const {\n attribute,\n mdcClasses\n } of HOST_SELECTOR_MDC_CLASS_PAIR) {\n if (element.hasAttribute(attribute)) {\n classList.add(...mdcClasses);\n }\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n }\n /** Focuses the button. */\n focus(origin = 'program', options) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n _getAriaDisabled() {\n if (this.ariaDisabled != null) {\n return this.ariaDisabled;\n }\n return this.disabled && this.disabledInteractive ? true : null;\n }\n _getDisabledAttribute() {\n return this.disabledInteractive || !this.disabled ? null : true;\n }\n _updateRippleDisabled() {\n this._rippleLoader?.setDisabled(this._elementRef.nativeElement, this.disableRipple || this.disabled);\n }\n static {\n this.ɵfac = function MatButtonBase_Factory(__ngFactoryType__) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatButtonBase,\n inputs: {\n color: \"color\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n ariaDisabled: [2, \"aria-disabled\", \"ariaDisabled\", booleanAttribute],\n disabledInteractive: [2, \"disabledInteractive\", \"disabledInteractive\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n }\n return MatButtonBase;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Shared host configuration for buttons using the `` tag. */\nconst MAT_ANCHOR_HOST = {\n '[attr.disabled]': '_getDisabledAttribute()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n // Note that we ignore the user-specified tabindex when it's disabled for\n // consistency with the `mat-button` applied on native buttons where even\n // though they have an index, they're not tabbable.\n '[attr.tabindex]': 'disabled && !disabledInteractive ? -1 : tabIndex',\n '[attr.aria-disabled]': '_getDisabledAttribute()',\n // MDC automatically applies the primary theme color to the button, but we want to support\n // an unthemed version. If color is undefined, apply a CSS class that makes it easy to\n // select and style this \"theme\".\n '[class.mat-unthemed]': '!color',\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n '[class.mat-mdc-button-base]': 'true',\n '[class]': 'color ? \"mat-\" + color : \"\"'\n};\n/**\n * Anchor button base.\n */\nlet MatAnchorBase = /*#__PURE__*/(() => {\n class MatAnchorBase extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n this._haltDisabledEvents = event => {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n }\n ngOnInit() {\n this._ngZone.runOutsideAngular(() => {\n this._elementRef.nativeElement.addEventListener('click', this._haltDisabledEvents);\n });\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._elementRef.nativeElement.removeEventListener('click', this._haltDisabledEvents);\n }\n _getAriaDisabled() {\n return this.ariaDisabled == null ? this.disabled : this.ariaDisabled;\n }\n static {\n this.ɵfac = function MatAnchorBase_Factory(__ngFactoryType__) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAnchorBase,\n inputs: {\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => {\n return value == null ? undefined : numberAttribute(value);\n }]\n },\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MatAnchorBase;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Material Design button component. Users interact with a button to perform an action.\n * See https://material.io/components/buttons\n *\n * The `MatButton` class applies to native button elements and captures the appearances for\n * \"text button\", \"outlined button\", and \"contained button\" per the Material Design\n * specification. `MatButton` additionally captures an additional \"flat\" appearance, which matches\n * \"contained\" but without elevation.\n */\nlet MatButton = /*#__PURE__*/(() => {\n class MatButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatButton_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatButton,\n selectors: [[\"button\", \"mat-button\", \"\"], [\"button\", \"mat-raised-button\", \"\"], [\"button\", \"mat-flat-button\", \"\"], [\"button\", \"mat-stroked-button\", \"\"]],\n hostVars: 14,\n hostBindings: function MatButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [\".mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-text-button-horizontal-padding, 8px);height:var(--mdc-text-button-container-height);font-family:var(--mdc-text-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-text-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-text-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-text-button-label-text-transform);font-weight:var(--mdc-text-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, var(--mat-app-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-filled-button-horizontal-padding, 16px);height:var(--mdc-filled-button-container-height);font-family:var(--mdc-filled-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-filled-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-filled-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-filled-button-label-text-transform);font-weight:var(--mdc-filled-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color, var(--mat-app-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, var(--mat-app-on-primary));background-color:var(--mdc-filled-button-container-color, var(--mat-app-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow, var(--mat-app-level1));height:var(--mdc-protected-button-container-height);font-family:var(--mdc-protected-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-protected-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-protected-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-protected-button-label-text-transform);font-weight:var(--mdc-protected-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, var(--mat-app-primary));background-color:var(--mdc-protected-button-container-color, var(--mat-app-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow, var(--mat-app-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow, var(--mat-app-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-outlined-button-horizontal-padding, 15px);height:var(--mdc-outlined-button-container-height);font-family:var(--mdc-outlined-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-outlined-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-outlined-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-outlined-button-label-text-transform);font-weight:var(--mdc-outlined-button-label-text-weight, var(--mat-app-label-large-weight));border-radius:var(--mdc-outlined-button-container-shape, var(--mat-app-corner-full));border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, var(--mat-app-primary));border-color:var(--mdc-outlined-button-outline-color, var(--mat-app-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button .mdc-button__ripple{border-width:var(--mdc-outlined-button-outline-width);border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}\", \".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design button component for anchor elements. Anchor elements are used to provide\n * links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons\n *\n * The `MatAnchor` class applies to native anchor elements and captures the appearances for\n * \"text button\", \"outlined button\", and \"contained button\" per the Material Design\n * specification. `MatAnchor` additionally captures an additional \"flat\" appearance, which matches\n * \"contained\" but without elevation.\n */\nlet MatAnchor = /*#__PURE__*/(() => {\n class MatAnchor extends MatAnchorBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatAnchor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatAnchor,\n selectors: [[\"a\", \"mat-button\", \"\"], [\"a\", \"mat-raised-button\", \"\"], [\"a\", \"mat-flat-button\", \"\"], [\"a\", \"mat-stroked-button\", \"\"]],\n hostVars: 15,\n hostBindings: function MatAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c3, _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token to be used to override the default options for FAB. */\nconst MAT_FAB_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-mdc-fab-default-options', {\n providedIn: 'root',\n factory: MAT_FAB_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_FAB_DEFAULT_OPTIONS_FACTORY() {\n return {\n // The FAB by default has its color set to accent.\n color: 'accent'\n };\n}\n// Default FAB configuration.\nconst defaults = /*#__PURE__*/MAT_FAB_DEFAULT_OPTIONS_FACTORY();\n/**\n * Material Design floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://material.io/components/buttons-floating-action-button/\n *\n * The `MatFabButton` class has two appearances: normal and extended.\n */\nlet MatFabButton = /*#__PURE__*/(() => {\n class MatFabButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatFabButton_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFabButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFabButton,\n selectors: [[\"button\", \"mat-fab\", \"\"]],\n hostVars: 18,\n hostBindings: function MatFabButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true)(\"mdc-fab--extended\", ctx.extended)(\"mat-mdc-extended-fab\", ctx.extended);\n }\n },\n inputs: {\n extended: [2, \"extended\", \"extended\", booleanAttribute]\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c5,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatFabButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [\".mat-mdc-fab-base{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);flex-shrink:0}.mat-mdc-fab-base .mat-mdc-button-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab-base .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-fab-base .mdc-button__label,.mat-mdc-fab-base .mat-icon{z-index:1;position:relative}.mat-mdc-fab-base .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab-base:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-fab-base._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab-base::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}.mat-mdc-fab-base[hidden]{display:none}.mat-mdc-fab-base::-moz-focus-inner{padding:0;border:0}.mat-mdc-fab-base:active,.mat-mdc-fab-base:focus{outline:none}.mat-mdc-fab-base:hover{cursor:pointer}.mat-mdc-fab-base>svg{width:100%}.mat-mdc-fab-base .mat-icon,.mat-mdc-fab-base .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab-base .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base[disabled]:focus,.mat-mdc-fab-base.mat-mdc-button-disabled,.mat-mdc-fab-base.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab-base.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{background-color:var(--mdc-fab-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-container-shape, var(--mat-app-corner-large));color:var(--mat-fab-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{width:40px;height:40px;background-color:var(--mdc-fab-small-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-small-container-shape, var(--mat-app-corner-medium));color:var(--mat-fab-small-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-small-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;line-height:normal;box-shadow:var(--mdc-extended-fab-container-elevation-shadow, var(--mat-app-level3));height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape, var(--mat-app-corner-large));font-family:var(--mdc-extended-fab-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-extended-fab-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-extended-fab-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-extended-fab-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:-8px;margin-right:12px}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons,[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons{margin-left:12px;margin-right:-8px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatFabButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design mini floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://material.io/components/buttons-floating-action-button/\n */\nlet MatMiniFabButton = /*#__PURE__*/(() => {\n class MatMiniFabButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatMiniFabButton_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMiniFabButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMiniFabButton,\n selectors: [[\"button\", \"mat-mini-fab\", \"\"]],\n hostVars: 14,\n hostBindings: function MatMiniFabButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c6,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatMiniFabButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatMiniFabButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons-floating-action-button/\n *\n * The `MatFabAnchor` class has two appearances: normal and extended.\n */\nlet MatFabAnchor = /*#__PURE__*/(() => {\n class MatFabAnchor extends MatAnchor {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatFabAnchor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatFabAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFabAnchor,\n selectors: [[\"a\", \"mat-fab\", \"\"]],\n hostVars: 19,\n hostBindings: function MatFabAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true)(\"mdc-fab--extended\", ctx.extended)(\"mat-mdc-extended-fab\", ctx.extended);\n }\n },\n inputs: {\n extended: [2, \"extended\", \"extended\", booleanAttribute]\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c5,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatFabAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatFabAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design mini floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons-floating-action-button/\n */\nlet MatMiniFabAnchor = /*#__PURE__*/(() => {\n class MatMiniFabAnchor extends MatAnchor {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatMiniFabAnchor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMiniFabAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMiniFabAnchor,\n selectors: [[\"a\", \"mat-mini-fab\", \"\"]],\n hostVars: 15,\n hostBindings: function MatMiniFabAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c6,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatMiniFabAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatMiniFabAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Material Design icon button component. This type of button displays a single interactive icon for\n * users to perform an action.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nlet MatIconButton = /*#__PURE__*/(() => {\n class MatIconButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n this._rippleLoader.configureRipple(this._elementRef.nativeElement, {\n centered: true\n });\n }\n static {\n this.ɵfac = function MatIconButton_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatIconButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatIconButton,\n selectors: [[\"button\", \"mat-icon-button\", \"\"]],\n hostVars: 14,\n hostBindings: function MatIconButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c8,\n ngContentSelectors: _c9,\n decls: 4,\n vars: 0,\n consts: [[1, \"mat-mdc-button-persistent-ripple\", \"mdc-icon-button__ripple\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatIconButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelement(2, \"span\", 1)(3, \"span\", 2);\n }\n },\n styles: [\".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color, var(--mat-app-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\", _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatIconButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design icon button component for anchor elements. This button displays a single\n * interaction icon that allows users to navigate across different routes or pages.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nlet MatIconAnchor = /*#__PURE__*/(() => {\n class MatIconAnchor extends MatAnchorBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatIconAnchor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatIconAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatIconAnchor,\n selectors: [[\"a\", \"mat-icon-button\", \"\"]],\n hostVars: 15,\n hostBindings: function MatIconAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c8,\n ngContentSelectors: _c9,\n decls: 4,\n vars: 0,\n consts: [[1, \"mat-mdc-button-persistent-ripple\", \"mdc-icon-button__ripple\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatIconAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelement(2, \"span\", 1)(3, \"span\", 2);\n }\n },\n styles: [_c10, _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatIconAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatButtonModule = /*#__PURE__*/(() => {\n class MatButtonModule {\n static {\n this.ɵfac = function MatButtonModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatButtonModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatButtonModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatRippleModule, MatCommonModule]\n });\n }\n }\n return MatButtonModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BUTTON_CONFIG, MAT_FAB_DEFAULT_OPTIONS, MAT_FAB_DEFAULT_OPTIONS_FACTORY, MatAnchor, MatButton, MatButtonModule, MatFabAnchor, MatFabButton, MatIconAnchor, MatIconButton, MatMiniFabAnchor, MatMiniFabButton };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, ViewChild, Injector, TemplateRef, Injectable, Optional, SkipSelf, NgModule } from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { Subject } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i1 from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nfunction SimpleSnackBar_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"button\", 2);\n i0.ɵɵlistener(\"click\", function SimpleSnackBar_Conditional_2_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.action());\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.data.action, \" \");\n }\n}\nconst _c0 = [\"label\"];\nfunction MatSnackBarContainer_ng_template_4_Template(rf, ctx) {}\nconst MAX_TIMEOUT = /*#__PURE__*/Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({\n dismissedByAction: this._dismissedByAction\n });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nconst MAT_SNACK_BAR_DATA = /*#__PURE__*/new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\nlet MatSnackBarLabel = /*#__PURE__*/(() => {\n class MatSnackBarLabel {\n static {\n this.ɵfac = function MatSnackBarLabel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarLabel)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarLabel,\n selectors: [[\"\", \"matSnackBarLabel\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-label\", \"mdc-snackbar__label\"],\n standalone: true\n });\n }\n }\n return MatSnackBarLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\nlet MatSnackBarActions = /*#__PURE__*/(() => {\n class MatSnackBarActions {\n static {\n this.ɵfac = function MatSnackBarActions_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarActions)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarActions,\n selectors: [[\"\", \"matSnackBarActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-actions\", \"mdc-snackbar__actions\"],\n standalone: true\n });\n }\n }\n return MatSnackBarActions;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to each of the snack bar's action buttons. */\nlet MatSnackBarAction = /*#__PURE__*/(() => {\n class MatSnackBarAction {\n static {\n this.ɵfac = function MatSnackBarAction_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarAction)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarAction,\n selectors: [[\"\", \"matSnackBarAction\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-action\", \"mdc-snackbar__action\"],\n standalone: true\n });\n }\n }\n return MatSnackBarAction;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SimpleSnackBar = /*#__PURE__*/(() => {\n class SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n static {\n this.ɵfac = function SimpleSnackBar_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SimpleSnackBar)(i0.ɵɵdirectiveInject(MatSnackBarRef), i0.ɵɵdirectiveInject(MAT_SNACK_BAR_DATA));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SimpleSnackBar,\n selectors: [[\"simple-snack-bar\"]],\n hostAttrs: [1, \"mat-mdc-simple-snack-bar\"],\n exportAs: [\"matSnackBar\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 2,\n consts: [[\"matSnackBarLabel\", \"\"], [\"matSnackBarActions\", \"\"], [\"mat-button\", \"\", \"matSnackBarAction\", \"\", 3, \"click\"]],\n template: function SimpleSnackBar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, SimpleSnackBar_Conditional_2_Template, 3, 1, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx.data.message, \"\\n\");\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.hasAction ? 2 : -1);\n }\n },\n dependencies: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n styles: [\".mat-mdc-simple-snack-bar{display:flex}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return SimpleSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: /*#__PURE__*/trigger('state', [/*#__PURE__*/state('void, hidden', /*#__PURE__*/style({\n transform: 'scale(0.8)',\n opacity: 0\n })), /*#__PURE__*/state('visible', /*#__PURE__*/style({\n transform: 'scale(1)',\n opacity: 1\n })), /*#__PURE__*/transition('* => visible', /*#__PURE__*/animate('150ms cubic-bezier(0, 0, 0.2, 1)')), /*#__PURE__*/transition('* => void, * => hidden', /*#__PURE__*/animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', /*#__PURE__*/style({\n opacity: 0\n })))])\n};\nlet uniqueId = 0;\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nlet MatSnackBarContainer = /*#__PURE__*/(() => {\n class MatSnackBarContainer extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n this._document = inject(DOCUMENT);\n this._trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /** Unique ID of the aria-live element. */\n this._liveElementId = `mat-snack-bar-container-live-${uniqueId++}`;\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const {\n fromState,\n toState\n } = event;\n if (toState === 'void' && fromState !== 'void' || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n });\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\n this._completeExit();\n }\n /**\n * Removes the element in a microtask. Helps prevent errors where we end up\n * removing an element which is in the middle of an animation.\n */\n _completeExit() {\n queueMicrotask(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n _afterPortalAttached() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n this._exposeToModals();\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n _exposeToModals() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n // `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n /** Clears the references to the live element from any modals it was added to. */\n _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser && document.activeElement instanceof HTMLElement && inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n static {\n this.ɵfac = function MatSnackBarContainer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarContainer)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(MatSnackBarConfig));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSnackBarContainer,\n selectors: [[\"mat-snack-bar-container\"]],\n viewQuery: function MatSnackBarContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 7);\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._label = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-snackbar\", \"mat-mdc-snack-bar-container\"],\n hostVars: 1,\n hostBindings: function MatSnackBarContainer_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵsyntheticHostListener(\"@state.done\", function MatSnackBarContainer_animation_state_done_HostBindingHandler($event) {\n return ctx.onAnimationEnd($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@state\", ctx._animationState);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 6,\n vars: 3,\n consts: [[\"label\", \"\"], [1, \"mdc-snackbar__surface\", \"mat-mdc-snackbar-surface\"], [1, \"mat-mdc-snack-bar-label\"], [\"aria-hidden\", \"true\"], [\"cdkPortalOutlet\", \"\"]],\n template: function MatSnackBarContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2, 0)(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSnackBarContainer_ng_template_4_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(5, \"div\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(5);\n i0.ɵɵattribute(\"aria-live\", ctx._live)(\"role\", ctx._role)(\"id\", ctx._liveElementId);\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}.cdk-high-contrast-active .mat-mdc-snackbar-surface{outline:solid 1px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color, var(--mat-app-inverse-on-surface));border-radius:var(--mdc-snackbar-container-shape, var(--mat-app-corner-extra-small));background-color:var(--mdc-snackbar-container-color, var(--mat-app-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font, var(--mat-app-body-medium-font));font-size:var(--mdc-snackbar-supporting-text-size, var(--mat-app-body-medium-size));font-weight:var(--mdc-snackbar-supporting-text-weight, var(--mat-app-body-medium-weight));line-height:var(--mdc-snackbar-supporting-text-line-height, var(--mat-app-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color, var(--mat-app-inverse-primary));--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\"],\n encapsulation: 2,\n data: {\n animation: [matSnackBarAnimations.snackBarState]\n }\n });\n }\n }\n return MatSnackBarContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY\n});\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nlet MatSnackBar = /*#__PURE__*/(() => {\n class MatSnackBar {\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n /** The component that should be rendered as the snack bar's simple component. */\n this.simpleSnackBarComponent = SimpleSnackBar;\n /** The container component that attaches the provided template or component. */\n this.snackBarContainerComponent = MatSnackBarContainer;\n /** The CSS class to apply for handset mode. */\n this.handsetCssClass = 'mat-mdc-snack-bar-handset';\n }\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent(component, config) {\n return this._attach(component, config);\n }\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template, config) {\n return this._attach(template, config);\n }\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message, action = '', config) {\n const _config = {\n ...this._defaultConfig,\n ...config\n };\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {\n message,\n action\n };\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n /**\n * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarConfig,\n useValue: config\n }]\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\n const config = {\n ...new MatSnackBarConfig(),\n ...this._defaultConfig,\n ...userConfig\n };\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef\n });\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(takeUntil(overlayRef.detachments())).subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, config) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration));\n }\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = config.horizontalPosition === 'left' || config.horizontalPosition === 'start' && !isRtl || config.horizontalPosition === 'end' && isRtl;\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarRef,\n useValue: snackBarRef\n }, {\n provide: MAT_SNACK_BAR_DATA,\n useValue: config.data\n }]\n });\n }\n static {\n this.ɵfac = function MatSnackBar_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBar)(i0.ɵɵinject(i1$1.Overlay), i0.ɵɵinject(i2.LiveAnnouncer), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i3.BreakpointObserver), i0.ɵɵinject(MatSnackBar, 12), i0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatSnackBar,\n factory: MatSnackBar.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MatSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\nlet MatSnackBarModule = /*#__PURE__*/(() => {\n class MatSnackBarModule {\n static {\n this.ɵfac = function MatSnackBarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSnackBarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSnackBarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MatSnackBar],\n imports: [OverlayModule, PortalModule, MatButtonModule, MatCommonModule, SimpleSnackBar, MatCommonModule]\n });\n }\n }\n return MatSnackBarModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarAction, MatSnackBarActions, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, matSnackBarAnimations };\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\nimport { ToasterModel } from './toaster.service';\n\n@Component({\n selector: 'ms-toaster',\n template: `\n \n \n \n `,\n standalone: true,\n imports: [NgIf, NgClass],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToasterComponent {\n @HostBinding('class') className = 'toaster';\n\n constructor(@Inject(MAT_SNACK_BAR_DATA) public toast: ToasterModel) {}\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarDismiss } from '@angular/material/snack-bar';\n\nimport { EpcotConfig } from '@frontend/sports/common/client-config-data-access';\nimport { Observable } from 'rxjs';\n\nimport { ToasterComponent } from './toaster.component';\n\nexport interface ToasterConfig {\n icon?: string;\n duration?: number;\n panelClass?: string;\n}\n\nexport interface ToasterModel {\n icon?: string;\n message: string;\n dismiss: () => void;\n}\n\nexport interface Toaster {\n // eslint-disable-next-line rxjs/finnish\n dismissed: Observable;\n // eslint-disable-next-line rxjs/finnish\n opened: Observable;\n dismiss(): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToasterService {\n private isEpcotEnabled: boolean;\n constructor(\n private snackBar: MatSnackBar,\n private epcotConfigService: EpcotConfig,\n ) {\n this.isEpcotEnabled = this.epcotConfigService.isEnabled;\n }\n\n open(message: string, { icon, duration, panelClass }: ToasterConfig = {}): Toaster {\n const toasterPanelClass = this.isEpcotEnabled ? 'toaster-panel' : 'row-toaster-panel';\n const panelClasses = [toasterPanelClass];\n if (panelClass) {\n panelClasses.push(...panelClass.split(' '));\n }\n const toaster = this.snackBar.openFromComponent(ToasterComponent, {\n data: {\n icon,\n message,\n dismiss: () => {\n toaster.dismiss();\n },\n },\n horizontalPosition: 'left',\n verticalPosition: 'bottom',\n panelClass: panelClasses,\n duration,\n });\n\n return {\n dismiss: () => {\n toaster.dismiss();\n },\n // eslint-disable-next-line rxjs/finnish\n dismissed: toaster.afterDismissed(),\n // eslint-disable-next-line rxjs/finnish\n opened: toaster.afterOpened(),\n };\n }\n\n dismiss(): void {\n this.snackBar.dismiss();\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","MainContentLoaded","_loaded$","__privateAdd","__privateSet","BehaviorSubject","loaded$","__privateGet","pipe","distinctUntilChanged","filter","Boolean","setLoaded","next","_MainContentLoaded","WidgetPageService","page","top","left","center","setActivePage","reset","r","_WidgetPageService","SportsRemoteLogger","loggerName","vanillaLogger","MS2_LOGGER_TOKEN","test","Error","error","additionalMessage","resultError","description","fileName","logError","info","message","formattedMessage","join","log","LogType","Info","warning","Warning","DebugLogger","remoteLogger","internalFeaturesConfig","sportsLogger","errorOrMessage","isBetplacementLoggingEnabled","includeStack","stack","LoggerFactory","internalFeatures","getLogger","getDebugLogger","RemoteLogger","l","_LoggerFactory","WidgetLoaderService","widgetsLoaded","Map","loggedWidgetsDetails","allTopLocationWidgetsLoaded","allTopLocationWidgetsLoaded$","asObservable","logger","inject","widgetLoadedDetails","getWidgetsByLocation","location","values","x","slot","setwidgetLoaded","widgetId","widgetDetails","__spreadProps","__spreadValues","isLoaded","every","setWidgetVisible","isVisible","setSlotWidgets","widgetData","has","isLogged","loggedWidgetDetail","existingWidget","parentWidgetId","order","widgetLoadedDetails$","of","cleanWidgetsLoaded","forEach","v","clear","_WidgetLoaderService","RunAfterLcpService","_widgetLoader","_widgetPage","_mainContentLoaded","_router","ngZone","NgZone","Router","afterLcpCallbacks$","Subject","lcp$$","ReplaySubject","lcp$","mergeMap","cb","tap","subscribe","onAppInit","runOutsideAngular","Observable","observer","performanceObserver","PerformanceObserver","list","getEntries","entry","element","Array","from","classList","includes","observe","type","buffered","disconnect","race","debounceTime","events","e","NavigationEnd","take","switchMap","_b","segment","url","parseUrl","root","children","primary","segments","path","delay","w","visible","widget","timer","runAfterLcp","fn","_RunAfterLcpService","BadgeAndRibbonVisibilityOptions","NameVisibility","CompetitionPageType","VisibilityOnMarquee","TrackingTileNames","isTile","item","marqueeType","undefined","usePreloaderData","config","target","propertyKey","descriptor","getDecoratedFunction","originalFunction","args","self","condition","apply","responseMapper","data","preloader","loading","waitUntil","timeout","status","input","finalize","options","totalWaited","waiting","interval","takeWhile","complete","UserService","isQuickDepositEnabled","sportsUser","columnSize","jurisdiction","clientIP","isEarlyPayoutAllowed","vUser","isAuthenticated","currency","ssoToken","geoCountry","country","username","workflowType","id","accountId","displayName","isEligibleForNewCustomerOffer","arcPlayBreak","arcUser","arcProfileDetails","associatedAccount","accountCategoryKey","pgAccountIdKey","onUserLogin$","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","s","_TennisPointsVisibilityService","DayOfWeek","DateProviderService","getNow","Date","getDate","buildDate","year","month","date","hours","minutes","seconds","ms","count","arguments","getStartOfDay","getFullYear","getMonth","getStartOfMinute","getHours","getMinutes","getEndOfDay","daysToBeAdded","endDate","setDate","addHours","noOfHours","setHours","subtractHours","now","valueOf","getEndOfMonth","currentDate","getDaysTo","targetDate","differenceInTime","getTime","ceil","getTimeDifference","convertToSeconds","diff","Math","floor","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","toString","a","_DateTimeParser","regexPattern","getSourceEventId","split","isV2CompoundId","safeEventId","replace","getPartition","indexOf","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","isBespokeSport","sportId","isEsport","Soccer","Baseball","AmericanFootball","Basketball","Icehockey","scoreboard","started","fixtureType","participants","LeaderboardGame","TournamentGame","PreMatchTournament","SportType","EventScoreboard","timerVisible","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","Scored","penalties","times","_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","getProvider","addons","playtech","EventProviderType","Playtech","inspired","Inspired","getRankByParticipantType","participantType","EventParticipantType","Home","rank","homeTeam","Away","awayTeam","getPitcherByParticipantType","_c","_d","_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","default","SetTab","SortOrder","PairGamePeriod","ExtendedDisplayType","EventDetailsTags","ComboPrevention","EventOption","EventOptionGroupType","EventOptionGroup","hasSubGroups","subGroups","getSubGroups","hasGroup","group","gridGroups","hasAnyGroup","isEmpty","isBetBuilder","o","ResultSorting","toResultSorting","Alphabet","Default","Odds","RegionModel","EventModel","optionGroups","optionSets","players","published","marketsDictionary","isSetGame","isGameOfType","SetGame","isTournamentGame","isPairGame","isBaseballGame","isPeriodGame","isLeaderboardGame","isStarted","startDate","isFinished","Finished","getBestPerformingParticipant","fixtureForm","homeTeamHomeForm","awayTeamAwayForm","overallHomeTeamForm","overallAwayTeamForm","winCount","isBestPerformingOption","option","optionGroup","optionName","overridenName","winning","participant","viewType","getBetBuilderConsumerFixtureId","betBuilderFixtureId","betBuilderTradingV2FixtureId","getBetBuilderIdByStage","live","betBuilderInfo","betBuilderId","betBuilderProvider","BetBuilderRowOfOptions","BetBuilderNoOfColumns","PRECREATED_BAB_EMPTY_THEME_ID","TeamGroupingValues","OddsSorting","OptionTypes","CorrectScoreHeaderButtonTabs","FeedType","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","first","currentPosition","mappedLocation","locationId","userLocation","isMockLiveStreamGeoCountryEnabled","liveStreamGeoCountry","toUpperCase","competitionId","GeolocationService","_ApiBaseSettingsProvider","ExpiringCache","cacheTime","cacheInternal","getOrCreate","source","validateCache","getInternal","create","transformed","catchError","delete","throwError","share","connector","resetOnComplete","resetOnRefCountZero","expiration","remove","ExpiringCacheFactory","_ExpiringCacheFactory","CookieProvider","cookies","getCookie","name","setCookie","expire","cookieExpirationDate","expires","put","deleteCookie","result","CookieService","_CookieProvider","Api","ApiBase","API","InjectionToken","ApiServiceFactory","forwardProductApi","ProductService","getMetadata","isEnabled","apiServiceFactory","API_EXT","createForProduct","area","forwardProductApiRequestHeader","ApiServiceBase","params","resultOptions","showSpinner","withCredentials","api","retryCount","retryDelay","retryOnStatus","headers","responseType","resolveWithFullResponse","post","cache","withCredentialsOptions","ApiServiceExternal","_ApiServiceExternal","ApiService","_ApiService","CustomerDnaProfileProviderService","cookieProvider","apiService","cacheFactory","cookieName","getProfileId","getProfile","profileId","loadProfile","_CustomerDnaProfileProviderService","urljoin","joined","slice","call","normalize","encodeParams","param","encoded","encodeObject","part","str","isArray","concat","keys","propertiesToEncode","encodeProperty","pair","encodeURIComponent","encodedValues","flatArray","BaseCdsApi","apiServiceExternal","loggerFactory","apiBaseSettings","customerDnaProfileService","customerDnaBettingOfferConfig","configured","baseUrl","cdsUrlBase","configure","resource","prepareRequestUrl","concatMap","response","body","err","getUrl","getDefault","request","rest","defaultQueryStringParams","addCustomerDnaProfileId","customerDnaProfileId","cdnaProfileId","endpoint","B","_BaseCdsApi","cdsFactory","apiSettings","CDS_API_FACTORY","interpolateDoubleBracesString","obj","isCaseSensitive","interpolateStringInternal","placeholderStyle","PlaceholderStyle","DoubleCurlyBraces","caseSensitive","interpolateSingleBracesString","SingleCurlyBraces","formatString","defaultFormatObjectOptions","mergedOptions","assign","flags","keyToPlaceholderAction","placeholderName","RegExp","generateGuid","d","performance","char","random","hashCode","hash","i","chr","charCodeAt","isDefined","hasValue","ofType","source$","typeCheck","filterDefined","xor","second","isPromise","then","Tv2MarketParameters","MarketTypes","HappeningValue","Ge","OfferGroupingApi","apiFactory","marketGroupingConfig","gridConfig","cdsApi","getFixtureGrouping","regionalisedGroupingEnabled","getFixtureGroupingBatch","sportIds","getGridGrouping","isRegionalisedGridEnabled","getFixturesContext","regionIds","tournamentIds","Tennis","category","competitionIds","virtualCompetitionIds","virtualCompetitionGroupIds","_OfferGroupingApi","window","MS2JS","GridGroupLoader","__metadata","OfferGroupingService","storage","expiringCacheFactory","sportGrouping","gridGrouping","groupingLanguage","cacheNull","null","invalidGridTimestamp","invalidGridTtl","groupingStorageKeys","getGroupingStorageKeys","isValidGroupingLang","initCacheFromStorage","clearStorageGroupingData","groupingVersion","cacheConfiguration","isValidGroupingId","getFixtureGroupingFromApi","getFixtureGroupingForEventModel","eventModel","grouping","find","enhanceGrouping","apbGroups","preCreatedGroups","marketGroups","offerGroup","createOfferGroup","PriceBoost","offerGroupBAB","PreCreatedBab","marketGroupItems","tag","tags","groupId","getFixtureGroupingForSports","forkJoin","defaultIfEmpty","validConfigs","missingConfigSportIds","difference","combineLatest","iif","fetchAndCacheFixtureGroupings","cachedConfigs","fetchedConfigs","groupings","g","fetchGroupings","fg","groupingConfiguration","version","isEqual","keyPrefixes","startsWith","T","_OfferGroupingService","MarketType","PeriodType","HappeningType","MarketSubType","DateFormatterService","intlService","MINUTE","HOUR","DAY","formatMap","_formatMap","today","title","Today","format","tomorrow","Tomorrow","other","TimerOther","formatDate","formatterKey","getFormatKey","formatter","formatDateWithTime","eventDate","IntlService","_DateFormatterService","AmericanFootballScoreboardFactory","getYardDistance","americanFootballStats","yardDistance","activeDown","yardsDistance","yardsToNextDown","Halftime","RegularTimeOver","getTriCode","separator","eventScoreboard","On","distance","Own","Opp","getLiveEventInfo","_AmericanFootballScoreboardFactory","BaseballScoreboardFactory","getBallsStrikesOuts","baseballStats","BallsStrikesOuts","balls","strikes","currentlyServing","outs","getBaseIcon","baseRunnerPositionClass","baseClass","baseTeam","bases","bt","hasFirstBase","hasSecondBase","hasThirdBase","BaseballBaseIcon","FirstSecondThirdBase","FirstSecondBase","FirstThirdBase","FirstBase","SecondThirdBase","SecondBase","ThirdBase","_BaseballScoreboardFactory","MessageParser","dateParser","eventDetailsConfig","parseMessages","messages","skipTime","icon","Number","processIcon","text","teamType","messageType","getIcon","icons","messageIcons","highlight","_MessageParser","ScoreboardFactory","messageParser","tennisPointsVisibilityService","dateFormatterService","baseballScoreboardFactory","americanFootballScoreboardFactory","SPORT_TYPE_LOOKUP","Football","Badminton","Snooker","Darts","SpecialGame","Tournament","SCOREBOARD_TYPE_LOOKUP","sportsScoreboardServices","showDate","createScoreboard","scoreboardResponse","model","getDefaultScoreboardType","periodId","indicator","bookieTicker","isGeneralTournament","sportType","getSportType","getSuspended","base","gameTimeInSeconds","formatGameTimer","createMessages","getSportStats","getSportScore","colors","getColors","bestOf","getBestOfSnooker","bestOfLegs","bestOfSets","powerPlayTeam","getDefaultSportType","defaultSportType","t","acc","curr","Skialpine","Motorbikes","Biathlon","sportScoreboardType","parseInt","playerInfo","colorsAvailable","shirtColor","messageList","content","sort","b","totalSeconds","scores","getFootballScore","getTennisScore","getBaseballScore","getSetGameScore","getDartsScore","getSnookerScore","getGeneralTournamentScore","getLeaderboardGameScore","getPeriodGameScore","getCricketScore","getTennisStats","getFootballStats","getBasketBallStats","getIcehockeyStats","getAmericanFootballStatistics","getBaseballStatistics","getSnookerStats","dartsMaxSet","participantsScore","matchType","turn","LegOnly","hundredEighties","player1","player2","legs","finished","Finish","detailed","scoreDetailed","FirstHalf","PenaltyShootout","penaltiesControl","getPenaltyScore","extraTimeScore","counter","valueMapper","Missed","penaltyMapper","round","team1","team2","tennisScoreboard","setCount","getTennisSetCount","isCurrentSet","partcipant1Score","partcipant2Score","partcipant1TiebBreakScore","tieBreaksValues","partcipant2TiebBreakScore","tieBreakPoints","isFutureSet","setWon","None","surface","winPoints","getSetScore","gameMode","fullScoreboard","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","participantsInfo","y","participantList","getSportsLiveEventInfo","_ScoreboardFactory","mapLeague","competition","stageId","virtualCompetitionId","short","sign","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","clone","isPlayer","CommonFixtureFactory","imgConfig","scoreboardFactory","overrideStatisticsConfig","betBuilderConfig","urlService","sourceId","precreatedOptionGroupInfo","nameSign","region","mapRegion","tradingStage","parentId","cutOffDate","stage","liveAlert","betBuilderFixture","sportcastId","online","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","precreatedOptionGroups","update","openForBetting","updateScoreboard","serverScoreboard","games","optionMarkets","Set","game","templateCategory","Golf","blacklistedCompetitions","isMatchSimulationEnabled","sportsWithMatchSimulation","runningBall","tournament","code","originalRegion","playerParticipants","teamId","shouldOverrideParticipantNames","optionMarket","marketType","parameters","displayTypes","displayType","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","sortBy","nativePrice","odds","toNumber","getOptionImage","participantImageMap","optionPlayerId","player1Id","player2Id","teamImage","logoColor","headshot","getParticipantImageMap","CommonMarketFactory","betbuilderConfig","OVER_UNDER_MATCHER","getGridGroups","categoryId","groups","patch","market","originalMarket","excludePriceboostedMarketGrouping","Spread","patchSpread","CorrectScore","patchCorrectScore","BetBuilder","patchPreCreatedBetBuilder","OverUnder","TotalsOverUnder","patchOverUnder","HeadToHead","TwoWayHandicap","patchHeadToHead","AutomatedPriceBoost","patchAutomatedPriceBoost","isOverUnder","isPartOfSgpGroup","getTranslated_Value","translation","detailedGrouping","orderType","marketSet","marketOrder","marketGroupId","marketGroupItemId","marketGroup","MAX_VALUE","showBoostedPrice","optionMarketName","balanced","patchDetailedGrouping","correctScoreOptionsSortOrder","happening","Happening","subPeriodNumber","SubPeriodNumber","rangeValue","RangeValue","sixPackGridGroupId","patchHeadToHeadMarketName","patchParticipantIdToOption","Scorer","MultiFPOverUnder","patchPlayerCombined","patchPlayerMilestone","patchPlayerOutcome","DynamicCorrectScore","Points","patchCorrectScoreOptions","orderBy","subPeriod","SubPeriod","Ascending","Descending","correctScoreOptions","optionNameValues","rawScore","correctScoreOption","FixtureParticipant","happeningIndex","masterSorting","HappeningToOccurV2","HappeningToOccurAndTeamToWin","participantsList","FixtureParticipantList","PassingYards","TouchdownPass","participantIds","interpolatedName","Player1","Player2","playerName","marketAttribute","Goal","addParameterToMarket","parameter","existingParameter","marketTabId","periodGroup","enablePrecreatedBetBuilderTab","marketHelpPath","precreatedGroupId","parameterTranslations","attributes","pairs","groupBy","attribute","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","inexact","quadrant","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","LN10_PRECISION","PI_PRECISION","P","finalise","min","max","k","Ctor","j","xdL","ydL","xd","yd","xs","ys","pr","rm","cosine","toLessThanHalfPi","m","rep","sd","t3","t3plusx","digitsToString","divide","len","one","tinyPow","taylorSeries","cosh2_x","d8","sinh2_x","d5","d16","d20","halfPi","getPi","wpr","xsd","px","x2","isBase10","denominator","inf","num","arg","guard","naturalLogarithm","getLn10","checkRoundingDigits","xe","xLTy","getBase10Exponent","q","naturalExponential","carry","z","getPrecision","sine","rL","toStringBinary","dp","checkInt32","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","aL","bL","subtract","cmp","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","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","clamp","useDefaults","ps","cos","cosh","isDecimalInstance","div","exp","hypot","ln","log10","log2","mod","mul","sin","sinh","sqrt","sub","tan","tanh","trunc","decimal_default","OptionGroupService","offerGroupingService","fallbackMarketsHeaderInfo","getOrder","optionSpread","hasNonBettableOdds","eventOptionGroup","fallbackMarketOddsThreshold","isBettableOptionGroup","opt","setFallbackGroupsNames","gridIds","gridGroupConfig","getFallbackOptionGroup","fallbackMarketName","fallbackGridGroupIds","showFallbackMarkets","availableOptionGroup","gridId","isFallbackMarket","isNextGoalMarket","XthHappening","Period","RegularTime","fallbackGridIds","_OptionGroupService","decimalOddsToAmerican","decimal","PRECISION","minus","dividedBy","roundAmericanOdds","american","isUsOddsRounding","toNearest","roundDecimalToAmerican","NativeFraction","empty","toFraction","lessThanOrEqualTo","decimalPlaces","simplify","denom","getCommonDivisor","equals","modulo","getValue","greatestCommonDivisor","NativePrice","decimals","getFraction","fraction","americanOdds","getAmericanOdds","americanOddsCalculation","usOddsCalculated","fromNativePrice","fromNativePriceElement","americanOddsCalculated","usOddsRounding","price","getInitialDecimals","nativeFraction","usOdds","fromDecimals","fromDecimalsElement","americanOddsToDecimalOdds","greaterThan","floorDecimalToAmerican","decimalToAmerican","lessThan","toCompare","greaterThanOrEqualTo","equal","cloneNativePriceElement","toJSON","GameMarketFactory","canCreate","combo","minimum","combo2","restriction","combo1","comboPrevention","templateId","isMain","visibility","hidden","resultOrder","mapOptions","spread","twoThreeWay","categoryAttribute","attr","templateCategoryId","hasBetBuilderMarkets","results","optionAttribute","optionGroupId","signature","sourceName","totalsPrefix","optionColumnId","OptionMarketFactory","minCombo","Single","isEachWay","placeTerms","TemplateId","CategoryId","priceId","boostedPrice","boostedPriceId","getValidTotalsPrefixType","optionTypes","fixtureParticipant","totalsPrefixType","FixtureMarketFactory","factories","_FixtureMarketFactory","FixtureFactory","fixtureFactory","marketFactory","sportConfig","getOrderedMarkets","fixtureScoreboard","deleteOptionGroup","updateOptionGroup","fixtureMarket","updated","markets","virtuals","marketTypeOrder","orderIndex","_FixtureFactory","InternalCompetitionTileService","marqueeTilesConfig","getCompetitionTiles","tiles","showOnCompetitionPage","checkRegionSportId","tile","fixtureId","regionSportId","_InternalCompetitionTileService","MarqueeTileService","marqueeConfig","nativeAppService","internalCompetitionTileService","getForFixture","filterForFixture","maxRequestedEvents","hasForFixture","getForTeamPagesFixture","fixtureIds","filterForTeamPagesFixture","getForCompetition","ids","Region","isTerminal","tileResult","Competition","cId","rId","regionId","filterTilesResult","combineWithPromotions","marquees","promotions","promoVisibility","MarqueeOnly","All","combined","promos","getCombinablePromotions","crmPromotionVisibility","marquee","crmPromotionId","filterDisabledSportsMarquee","showOnEventPage","eventIds","fid","disabledSportIds","NativeAppService","_MarqueeTileService","MarqueeTileFactory","optionGroupService","priceBoostConfig","createBetBuilderTile","modelEvent","sitecoreTile","precreatedMarketsInfo","modelMarket","isAutomatedMarquee","gameId","optionMarketId","isPrecreatedOptionGroupInvalid","longIds","selections","previousNativePriceValue","isEnabledAPB","isPriceBoostMarquee","optionId","previousPrice","getTilePrice","previousOdds","previousOddsNumerator","previousOddsDenominator","previousOddsUs","imageUrl","mapMarket","betbuilderSelectionOverride","getBetbuilderName","showOnHomeLobby","showOnSportsLobby","getVisibilityOnMarquee","hideBuildABetBadge","leftAlignOddsButton","AwayIndicatorOverride","awayIndicatorOverride","BadgeOverrideText","badgeOverrideText","OverriddenTeamnames","overriddenTeamNames","eventOptionGroups","previousNativePrice","doNotShowAnyBadgeRibbon","createMarqueeTile","isModelMarketBalanced","sitecoreOptionGroupId","marketIdString","setOverridenNames","resultId","gridGroupId","gridGroupIds","gameTemplateIds","gt","isPriceBoosted","marketAndOptionNameOverride","eventNameOverride","eventNameVisibility","marketAndOptionNameVisibility","link","imageAlt","trafficId","badgeAndRibbonVisibilityOption","noEventSportIds","badgeTitle","badgeTitleOverride","fallbackMarketType","ogpOverlay","mapOption","optionPrice","flatMap","marketId","groupPricing","builderOptionPricing","pricingInvalid","legInformation","resultState","visibleOptions","og","visibilityInvalid","vo","_MarqueeTileFactory","MarqueeResponseMapperService","marqueeTileFactory","mapFixtures","fixtures","inputTiles","tileWithoutFixtures","currentIndex","correspondingFixture","requestIndex","createTile","isRegular","isAvailable","nonGridableOptions","mapMarketToGameTemplateIds","marketFilterParams","tv2OptionGroup","getTV2OptionGroups","trackingDetail","maxTiles","tileInfo","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","isNaN","currencyFormat","clientCurrencyFormat","formattedValue","_MoneyService","OfferStatus","OfferStatusType","CallToAction","TrackingSource","CrmPromotionReplaceParametersService","moneyService","replaceParameters","replaceableParameters","useCurrencySymbol","showCurrencySymbol","uniq","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","TimerService","timeouts","intervals","setTimeout","handler","setCallback","callback","clearTimeout","setInterval","clearInterval","setAnimationFrame","requestAnimationFrame","cancelAnimationFrame","setTimeoutOutsideAngular","setIntervalOutsideAngular","scheduler","canceller","continous","val","removeCallback","dueTime","removeAll","collection","destructor","ngOnDestroy","_TimerService","SportsProductService","productService","injector","isSingleDomainApp","isSportsProductActive$","subject$","checkIsSportsProduct","productChanged","getDynamicInjector","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","sendMessage","transportName","httpClient","__async","getUserAgentHeader","createLogger","ConsoleLogger","userAgentHeaderName","Platform","constructUserAgent","VERSION","getOsName","getRuntime","getRuntimeVersion","os","runtime","runtimeVersion","userAgent","majorAndMinor","getErrorString","getGlobalThis","Arg","SubjectSubscription","init_Utils","subject","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","responseMessage","nextPing","invocationMessage","methods","methodsCopy","expectsResponse","res","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","pe","utils_1","qt","SubscriptionStore","subscription","require_logger","tslib_1","signalr_1","he","lt","le","optionalParams","require_client_connector","Jt","Xt","models_1","Qt","subscription_store_1","ge","logger_1","Ze","ClientConnector","onMessageReceived","onStatusChange","connectionOptions","_this","subscribeRequest","added","cancelRequest","removed","require_dist","Qe","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","BaseCustomLogger","MAX_LOGGED_ITEMS","DELAY","queue","sendLogs","firstValueFrom","import_cds_client","ko","to","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","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","epsLogger","bettingOfferConfig","subscriptions","observableSubscriptions","handlePushMessage","callbackList","warn","run","pushBufferingDuration","leading","trailing","envelopes","newSubscriptions","existing","topics","subscribe$","existing$","envelope","checkSubscription","cdsSubscription","without","_CdsPushService","CdsSubscriptionService","cdsPushService","crmPromotionFactory","pushSubscriptions","campaignCallback","campaignUpdateCallback","pushData","promoId","Inactive","removePromotion","refreshPromotions","playerUpdate","subscribeToPush","initialize","getAllSubscriptions","subscribedPromotions","getSubscriptions","flatten","_CdsSubscriptionService","CrmPromotionProviderService","crmPromotionLoader","subscriptionService","_promotionsMap$","meetings","competitions","templateIds","promotionsMap$","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","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","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","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","GameLauncherSection","gameLauncherResolver","route","section","position","lobbyPosition","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","sortTags","isVirtualCompetitionGroupItem","VirtualCompetitionGroup","isCompetitionItem","isVirtualCompetitionItem","isAntepost","antepost","typeOrder","currentTag","currentType","childTypes","childType","currentChildren","compoundId","childTag","Sport","Conference","mapCount","meta","mapMeta","mapCompetition","mapVirtualSport","mapVirtualLeague","mapVirtualCompetitionGroup","siblings","prefix","standings","displayMode","imageType","mapImageType","mapParticipant","groupOrder","groupIds","stageIds","extended","calendar","coupons","betBuilder","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","marketGroupIds","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","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","append","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","Horses","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","pop","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","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","cloneDeep","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","h","_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","snapshot","layout","cdnContext","EMPTY","widgetsToConsider","activeChildren","getRoute","isTennis","isFakeRegion","layoutSize","getSize","getPage","fixtureStage","additionalProps","size","isActive","routerState","firstChild","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","splice","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","miscellaneousConstants","LINE_SWITCHER_TRACKING","PRE_CREATED_SGP","VideoStreamTrackingStatus","EsportTrackingValues","trackingConstants","TrackingType","ExternalClient","TrackingService","vanillaTracking","track","trackingObject","triggerEvent","clean","updateDataLayer","trackError","errorDetail","reportError","triggerEventWithCleaning","_TrackingService","ExternalNativeAppService","trackingService","arcRestrictionService","channels","hideGamingOverlayByArc","invokeModule","applicationName","trackingData","getTrackingData","channel","Wrapper","PokerNativeApp","PokerDesktopClient","PokerMac","isPokerNativeApp","_ExternalNativeAppService","EventSwitcherComponentLoaderService","componentProxy","eventSwitcherComponent","getEventSwitcherComponent","EventDetailsModule","_EventSwitcherComponentLoaderService","ColumnLayoutRegister","columnLayout","resized","registration","resizeColumn","_ColumnLayoutRegister","MyBetsComponentLoaderService","sitecoreMyBets","userSettings","getColumnViewComponent","columnComponent","getEventViewComponent","eventComponent","MyBetsModule","_MyBetsComponentLoaderService","SummaryApiService","myBetsConfig","cacheTimeout","mybetsStatsCache","getOpenBetsCount","openEvents","openBetsCount","liveBetsCount","betNumbers","isMigrationSummary","hasError","_SummaryApiService","MyBetsSummaryService","loader","dispatcherService","mybetsConfig","mybetsVisualizationTrackingConfig","defaultSummary","EARLY_PAYOUT_SUCCESS","BET_PLACE_SUCCESS","CASH_OUT_ALREADY_EXECUTED","_summaryUpdate","summaryUpdate","onBetPlacementAction","stopped$","summary","eventCounts","splitFixtureIds","eid","subscribeBetPlacementActions","isOpenSummaryLoadingRestricted","myBetsRefreshInMilliseconds","aggresive","_MyBetsSummaryService","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","priceHistory","isPriceVisible","isMarketVisible","isOpen","currentPrice","oddsState","Locked","Closed","betCount","priceType","acceptedPrice","isNewCustomerOffer","isNewCustomerOfferPick","pickSubType","boostedPriceDetails","parentLinkedEventId","fromHybridFixture","initPropertiesFromJSON","getOddsAcceptance","setGroupInfo","BetslipV2Pick","isPick","Fixed","partitionId","sportName","competitionName","setMarketInvisible","BetslipV2OptionMarketPick","eventViewType","isFavouritePick","isFromNewCustomerOffer","isDraw","siblingOption","marketName","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","participantPriceType","BetslipV2ParticipantPick","betType","betTypeAltTranslation","updateFromPrice","thisPrice","fixtureOption","marketStatus","addPriceFromOption","updateFromParticipantOptions","currentMarketOptions","BetslipV2WinParticipantPick","fixedMarket","startingPriceMarket","isStartingPriceAvailable","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","DYNAMIC_INJECTOR_PROVIDER_TOKEN","NonRootToken","RouterEventsService","currentActivationEnd","currentRouteActivationEnd","currentActivationStart","currentRouteActivationStart","currentRoutesRecognized","currentRouteRoutesRecognized","isDirectLink","recognizedRoutes","urlHistory","initCurrentRouteActivationEnd","initCurrentRouteActivationStart","initCurrentRouteRoutesRecognized","ActivationEnd","ActivationStart","GuardsCheckEnd","RoutesRecognized","_RouterEventsService","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","stake","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","errors","hasNewError","newError","sameError","be","updatedError","extractPickErrors","extractedPickErrors","filteredTypeErrors","typeErrors","typePickErrors","getTypedPickErrors","getTypedBetslipErrors","filterErrorState","betslipErrorsPredicate","betslipTypeErrorsPredicate","slipErrorsPredicate","pickErrorsPredicate","pickIds","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","possibleWinnings","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","isNil","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","selectSelectedEdsTokens","selectedTokenIds","selectBogTokensState","selectSelectedBogToken","bogState","selectHasBogTokenSelected","selectBogTokenContext","selectHasEdsTokenSelected","betstationState","selectHasComboPreventionForContextFactory","selectMultiSingleTokenRewardContext","picksWithTokens","selectRecoverableTokens","tokenRecoveryState","selectCurrentEligibilityState","singleBetSinglePickId","selectAcquisitionSelectionTokenContext","acquisitionSelectionTokenContext","selectShowRewardsNotEligibleMessage","betslipCurrentType","selectHasEachWayOptionPickForContext","selectIsRewardTokensSelectorVisible","eachWayOptionPick","newCustomerOffer","hasVisibleTokens","selectRewardsTokensSelectorState","hasAcquisitionOnboarding","isTokenInvalid","accaBoostTokenSelector","accaBoostTokenForCurrentTypeSelector","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","longId","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","DomainEvent","WorkflowService","loginResponseHandler","loginStore","user","productNavigationService","execute","finalizeWithData","finalizeHandle","executeHandle","finalizeWithDataHandle","getParameters","loginError","goTo","redirectUrl","handleResponse","loginRedirectInfo","handle","loginResponse","loginType","LoginType","SharedFeaturesApiService","LoginResponseHandlerService","LoginStoreService","ProductNavigationService","_WorkflowService","LoginConfig","loginConfigFactory","SF","LoginService","loginConfig","dslService","runAfterLogin","runCallback","disableFeatureDataPrefetch","dsl","disabled","_LoginService","CryptoResourceService","encrypt","purpose","decrypt","_CryptoResourceService","CryptoService","cryptoResourceService","_CryptoService","BaseLoginProviderService","loginResponseSubject","profileSubject","dynamicScriptsService","initSdk","typeofSdk","scriptOptions","sdkUrl","clientId","async","crossorigin","trackSuccessLoginWithProvider","AppleProviderService","cookieService","cryptoService","navigationService","auth","authorization","authUrl","id_token","nonce","CookieName","Nonce","encryptedUserData","AppleUser","LoginProvider","APPLE","login","providerParameters","sdkLogin","AppleID","onloadCallback","redirectURI","signIn","initProfile","userData","NavigationService","Logger","DynamicScriptsService","_AppleProviderService","FacebookProviderService","connectionStatus","connectionStatusSubject","authResponse","signedRequest","expiresIn","data_access_expiration_time","FACEBOOK","FB","initFacebookAuth","getLoginStatus","fields","pictureUrl","picture","appId","cookie","sdkCookie","xfbml","sdkVersion","Event","_FacebookProviderService","GoogleProviderService","access_token","expires_in","expires_at","GOOGLE","initAuth","googleAuth","signInOptions","getAuthResponse","currentUser","getBasicProfile","googleProfile","getName","getImageUrl","gapi","auth2","client_id","_GoogleProviderService","LoginProvidersService","commonMessages","utilsService","messageQueueService","appleProviderService","googleProviderService","facebookProviderService","providersProfile","initProvidersProfile","appleProfile","facebookProfile","urlAuth","providerConfig","appendNonce","updateNonce","getAuthUrl","YAHOO","appendToUri","LoginHint","IdTokenHint","showLoginError","sdkAuth","loginOptions","redirectQueryParams","redirectQuery","loginUrl","cookieKeys","guid","scope","MessageScope","Login","html","LoginError","lifetime","MessageLifetime","CommonMessages","UtilsService","MessageQueueService","_LoginProvidersService","NavigationHelper","firstLoadFlag","navigationEnded","forceHomePage","allowBack","_NavigationHelper","YahooOpenIdTriggerOption","RedirectHelperService","_window","navigation","navigationHelper","menuActionsService","loginWithProvidersService","yahooOpenidconfig","navigationSubject$","WINDOW","windowTime","obs","redirect","goToLiveSport","goToPage","ignoreBrowserHistory","goToLive","goToSport","regionOrContext","leagueOrSubContext","Betting","goToVirtualSport","goToEvent","goToLogin","returnUrl","appendReferrer","useYahooLogin","isYahooOpenIdFlow","trigger","invoke","MenuAction","GOTO_LOGIN","goToHorseRacing","goToFixtureByFixture","goToFixture","goToFavouriteWithUrlParam","urlParam","goHome","isBackNavigation","goToMyBets","trackingParams","goToRacing","goBack","userIsComingFromPortalPromotions","history","back","reloadPage","nativeAppValue","nativeAppCookie","loginHint","idTokenHint","enableOnBetPlacement","referrer","MenuActionsService","_RedirectHelperService","ScrollFreezeServiceTypes","ScrollFreezeService","routerEvent","_freezeCountPage","_freezeCountPs","currentRouteTag$","ae","freezeScroll","CustomScrollbar","freezeCountPs","freezePage","freezeCountPage","urlWhenScreenWasFrozen","bodyStyle","setProperty","scrollingElement","scrollTop","bodyElement","forceScroll","isScrollFrozen","scroll","releaseScroll","releaseScrollPage","currentTopStr","removeProperty","shouldSkipResetScroll","currentTop","isUrlHasChanged","parsedUrl","contains","_ScrollFreezeService","MutationObserverService","defaultOptions","childList","subtree","mutationObserver","isMutationObserverSupported","MutationObserver","mutations","_MutationObserverService","AutomationService","internalFeatureConfig","isAutomationDebugEnabled","rendererFactory","attributeName","renderer","createRenderer","removeAllAttributes","elementRef","nativeElement","removeAttribute","addAttr","setSimpleAttribute","setExtendedAttribute","setAttribute","RendererFactory2","_AutomationService","AutomationDirective","elm","hasAttribute","ɵɵdirectiveInject","ElementRef","inputs","_AutomationDirective","AutomationModule","CommonModule","_AutomationModule","require_hammer","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","each","iterator","deprecate","deprecationMessage","nextKey","extend","dest","src","inherit","baseP","childP","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","toArray","uniqueArray","prefixed","property","camelProp","_uniqueId","uniqueId","getWindowForElement","doc","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","ev","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","TouchMouseInput","MouseInput","inputHandler","eventType","pointersLen","changedPointersLen","isFirst","isFinal","computeInputData","pointers","pointersLength","simpleCloneInputData","firstInput","firstMultiple","offsetCenter","getCenter","getAngle","getDistance","computeDeltaXY","getDirection","overallVelocity","getVelocity","getScale","getRotation","computeIntervalInputData","prevDelta","prevInput","deltaTime","velocity","velocityX","velocityY","direction","deltaX","deltaY","p1","p2","end","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","POINTER_INPUT_MAP","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","removePointer","eventTypeNormalized","pointerType","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","touches","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","getTouches","allTouches","targetIds","targetTouches","changedTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","DEDUP_DISTANCE","inputEvent","inputData","isMouse","recordTouches","isSyntheticEvent","eventData","setLastTouch","lastTouch","lts","removeLastTouch","dx","dy","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","recognizer","cleanTouchActions","srcEvent","hasNone","hasPanY","hasPanX","isTapPointer","isTapMovement","isTapTouchTime","touchMap","cssSupports","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","otherRecognizer","simultaneous","getRecognizerByNameIfManager","requireFail","emit","stateStr","inputDataClone","directionStr","AttrRecognizer","optionPointers","isRecognized","isValid","PanRecognizer","hasMoved","PinchRecognizer","inOut","PressRecognizer","validPointers","validMovement","validTime","RotateRecognizer","SwipeRecognizer","TapRecognizer","validTouchTime","validInterval","validMultiTap","tapCount","Hammer","Manager","STOP","FORCED_STOP","toggleCssProps","force","recognizers","curRecognizer","triggerDomEvent","gestureEvent","freeGlobal","EventService","_subject$","setup","zone","_eventAuditTime","listener","observed","fromEvent","auditTime","WindowEventService","resize","_WindowEventService","ScrollContainerService","scrollSubject","setTarget","scrollY","innerHeight","clientHeight","scrollHeight","scrollTo","scrollLeft","scrollToDelta","scrollEventTarget","scrollSubscription","eventTarget","scrollService","_ScrollContainerService","Deferred","promise","ContentRef","nodes","viewRef","componentRef","ActiveModal","close","dismiss","ModalRef","componentInstance","_contentRef","_windowCmptRef","_backdropCmptRef","_coverCmptRef","_beforeDismiss","updateData$","newData$","bind","deferred","updateTitle","windowComponentInstance","updateData","appendClass","currentClasses","newClass","SPACE","addWindowClass","windowClass","addBackdropClass","backdrop","backdropClass","_removeModalElements","_dismiss","_ModalRef","require_fastdom","win","debug","raf","FastDom","scheduleFlush","mixin","fastdom","writes","reads","array","MODAL_WINDOW_CONFIG","import_fastdom","X","Ce","OpenedModalsStorageService","openedModals","openedModal","modalRef","activeModal","removeCurrent","tryCloseSeeAll","isBabPopup","dialogSettings","headerSelector","closeAction","PopupAction","ManualClose","edpModal","_OpenedModalsStorageService","ModalAnimationHelperService","slotApp","backgroundWindow","_backgroundWindow","modalWindow","modals","querySelectorAll","closingRatioY","closingRatioX","minBackgroundScaleValue","minBackgroundScale","maxBackgroundScale","minCoverElementPosition","maxCoverElementPosition","animationDurationY","animationDurationX","maxBackdropOpacity","maxBackgroundPanValue","screen","addSlideWithScale","tryHideSlotApp","animateModal","currentY","tryShowSlotApp","mutate","animateCoverElement","animateBackdrop","animateBackground","fromScale","toScale","isEdpBackground","removeStyle","addSlideOutHorizontal","fromPosition","toPosition","currentX","shouldSlideOut","keyframes","setStyle","animate","animationOptions","calculateAnimationTime","timeForDistance","fromOpacity","toOpacity","backdrops","modalBackdrop","opacity","coverElements","coverElement","backgroundToAnimate","setTransformOriginCoordinates","getScrollValueFromBody","viewPortY","viewPortX","scrollValue","iterations","easing","_ModalAnimationHelperService","import_hammerjs","kt","VERTICAL_GESTURE_CONFIG","ModalGestureVerticalConfig","HammerGestureConfig","overrides","pan","touchAction","_ModalGestureVerticalConfig","ModalGestureService","modalCover","covers","edpCoverElement","scrollContainer","scrollTargetQuerySelector","_scrollContainer","headerHeight","_headerHeight","hammerGestureConfig","appConfig","animationHelper","mutationObserverService","willChange","isDragging","isAnimating","destroyRef","DestroyRef","currentBackgroundScale","currentBackdropOpacity","closingVelocity","coverElementHeight","modalDialogGesturesEnabled","onDestroy","sportsLeaveSub","onDestroyCleanup","addGestures","HTMLElement","isEdpModalBackground","initCoverElement","initModalBackdrop","handlePanEvents","modifyModalHeight","addClass","panElement","hammer","buildHammer","allowedToPan","handlePanstart","exhaustMap","animationFrames","handlePanmove","handlePanend","scrolledTop","panOnHeader","clientY","setBackgroundScaleOnPanMove","setModalTop","panClose","animationTime","shouldClose","closeWithVelocity","animateClose","velocityAnimationTime","currentPanValue","toFixed","removeClass","CloseByPan","attributeFilter","mutation","getAttribute","Renderer2","_ModalGestureService","HORIZONTAL_GESTURE_CONFIG","ModalGestureHorizontalConfig","_ModalGestureHorizontalConfig","ModalHorizontalGestureService","routerEventsService","currentBackgroundPanValue","previousUrl","trySetPreviousUrl","modalBody","isNativeWrapper","clientX","innerWidth","setModalLeft","setBackgroundOffset","replaceState","nonEdpUrls","_ModalHorizontalGestureService","popupManualClose","ModalDismissReasons","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵelement","ɵɵelementEnd","ɵɵelementContainerStart","_r3","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate","Close","ɵɵproperty","_r4","_r5","ɵɵtextInterpolate1","ɵɵtemplate","ModalWindowComponent_div_2_ng_container_3_ng_container_1_ng_container_2_Conditional_1_Template","ModalWindowComponent_div_2_ng_container_3_ng_container_1_ng_container_2_Conditional_2_Template","Q","ɵɵconditional","showCloseIcon","ModalWindowComponent_div_2_ng_container_3_ng_container_1_ng_container_1_Template","ModalWindowComponent_div_2_ng_container_3_ng_container_1_ng_container_2_Template","showCloseBtnText","ModalWindowComponent_div_2_ng_container_3_ng_container_1_Template","hideCloseButton","ModalWindowComponent_div_2_div_2_Template","ModalWindowComponent_div_2_ng_container_3_Template","ModalWindowComponent_div_2_Conditional_4_Template","ɵɵclassProp","headerTemplate","showBackNav","ModalWindowComponent","class","modalGestureService","modalAnimationHelper","popUpsConfig","modalHorizontalGestureService","slideOutFromTopToButtom","slideOutToRight","keyboard","animatePopupDismiss","EventEmitter","role","tabindex","closeButtonType","gestureOptions","dismissPopup","backdropClick","dismissWindow","BackdropClick","preventScrolPropogation","stopPropagation","escKey","defaultPrevented","Esc","ngOnInit","ngAfterViewInit","activeElement","hostVars","hostBindings","rf","$event","ɵɵclassMap","provide","useClass","ɵɵStandaloneFeature","ngContentSelectors","_c0","decls","vars","consts","Je","ModalWindowComponent_div_2_Template","ɵɵprojection","centered","showDialogHeader","NgIf","encapsulation","_ModalWindowComponent","DialogAnimation","DialogType","ButtonType","MODAL_DIALOG_CONTAINER","DEFAULT_HEADER_SELECTOR","ModalBackdropComponent","_ModalBackdropComponent","ModalCoverComponent","_ModalCoverComponent","ModalStack","applicationRef","containerService","backdropAttributes","open","contentInjector","containerEl","getContainerElement","tagName","centerVerticalToViewport","contentRef","_getContentRef","coverCmptRef","_attachCoverElement","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","beforeDismiss","closeAnimation","_applyWindowOptions","_applyVerticalCentering","_applyBackdropOptions","environmentInjector","attachView","hostView","projectableNodes","windowInstance","domEl","windowHeight","recalculateTimes","repositionModal","containerTopOffset","newHeight","newTop","backdropInstance","_createFromComponent","useValue","modalContentInjector","elementInjector","ApplicationRef","EnvironmentInjector","OverlayContainer","_ModalStack","Modal","_injector","_modalStack","_Modal","closeLinkClickHandler","button_r4","$implicit","buttonClickHandler","ɵɵpureFunction1","contentData","buttons","buttonConfig","kind","variant","ɵɵrepeaterCreate","MessageDialogComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIndex","ɵɵrepeater","button_r6","ɵɵclassMapInterpolate1","cssClass","MessageDialogComponent_Conditional_8_For_2_Template","MessageDialogComponent","isDesignSystem","_contentData","shouldCloseLinkBeDisplayed","showCloseLink","activatedButton","standalone","MessageDialogComponent_Conditional_1_Template","MessageDialogComponent_Conditional_7_Template","MessageDialogComponent_Conditional_8_Template","firstParagraph","ɵɵsanitizeHtml","secondParagraph","DsButton","_MessageDialogComponent","ModalDialogComponent","_elRef","cdr","openedModalsStorage","componentLoaded$","mountComponent","componentHost","contentComponent","componentLoaded","PageName","Referring","ChangeDetectorRef","viewQuery","ViewContainerRef","_ModalDialogComponent","ModalEventBridgeService","nativeApp","_eventName","notifyOpenOverlay","notifySensitivePage","isSensitiveForPushNotifications","isSensitiveForSliderGames","notifyCloseOverlay","sendToNative","_ModalEventBridgeService","ModalDialogService","openModalsCountKey","animationClasses","SlideInFromBottom","SlideInFromRight","SlideOutFromTop","modal","scrollFreeze","eventBridge","deviceService","sessionStorage","DefaultSettings","isModalDialog","showPageHeader","fit","openedModalsCount","increaseModalsCount","decreaseModalsCount","isModalDialogOpen","openPopup","optionsParam","isPopup","openDialog","defaultSettings","openModal","dialogInstance","openMessage","copySettings","modalCss","buildModalCss","modalBackdropCss","buildModalBackdropCss","epcotShowBalance","closePrevious","gestures","scrollFreezeType","isMobile","finally","afterResulted","cssClasses","showBottomNav","inColumn","animation","_ModalDialogService","EpcotConfigService","epcotConfig","modules","isShowMyBetsPopup","EpcotModule","MyBetsBetSlip","_EpcotConfigService","HeaderSearchService","clickEvent","click","_HeaderSearchService","Events","_Events","EventsAddedToGrid","Slideshow","SlideInit","SlideSet","EventPush","EventUpdated","MarketUpdated","EventLastUpdated","PageRequiresNoAnimation","ClaimsChanged","HorseRacing","OpenMeetingSelector","CloseMeetingSelector","MeetingSelected","FixtureSelectTopTwo","FixtureSelectTopThree","BetslipPluginStateChanged","ClosePluginSwitcher","FavouritesChanged","Popup","PopupClosed","BeforePopupDisplayed","UnauthenticatedCallEarlyPayoutSubscription","EarlyPayoutSuccess","OverlayToggle","LeagueHeaderToggle","RightSwipe","M2UserClaimsChanged","PageVisibilityChange","OrientationChanged","SensitivePageTrackerService","eventBridgeService","dispatchSensitivePagesEvent","currentPopup","oldPopup","popupClosedNotification","popupOpenedNotification","popupNotification","isPopupSensitive","popupSensitivity","popupAction","popupId","_SensitivePageTrackerService","PopupManager","dialogService","sensitivePageTracker","tracker","urlHelperService","headerSearchService","epcotConfigService","redirectHelper","popupStack","largeScreen","popups","_setLastActiveItem","screenSizeChanged","large","Betslip","openHandler","openInternal","onClosing","previousPopUp","navigateOnClose","hide","isClosedManually","isFirstLoadAndClosingBetslipPopup","navigate","popup","queryParamsHandling","replaceUrl","locationChange","locationChangeHandler","RouterEvent","requestedPopup","CloseByNavigation","closeAll","setLastActiveItem","setFullReloadRequired","fullReloadRequired","updateDialogAnimation","animationType","closePreviousModalWindow","popupConfig","updateDialogTitle","opening","needsAuthentication","handlePopupUnauth","parentPopupCloseDelay","closeOnChildPopup","CloseByNextPopup","O","popupHandle","RacingEvents","dismissPreviousPopup","toggle","openBetslip","fromBottomNav","isPopupOpen","isPopupInStack","currentUrl","currentQueryParams","go","show","catch","nextUrl","shouldSkipLocationChange","allowedInLargeScreen","showInOverlay","closingPopup","isPopupActionResult","_PopupManager","BottomNavActionsService","vanillaNavigation","popupManager","myBetsSummary","betslipIntegrationService","bottomNavService","accaBoostConfig","layoutNavigationConfig","hasLiveOpenBets","betslipToggled","myBetsToggled","myBetsUrl","myBetsTracking","betsCount","badgeClass","myBetsBadgeClass","isShowOpenBetsCount","myBetsItem","bottomNavItemsMapping","setItemCounter","isAccaBoost","setBetslipCounter","accaBoostBadgeClass","betslipBadgeClass","menuToggled","extraIconBadgeClass","_BottomNavActionsService","BottomNavService","CURRENT_THEME_TOKEN","IS_ROBOT_TOKEN","injectCurrentTheme","injectIsRobot","DS_ATOMS","DsNotificationBubble","hostClass","inverse","getAriaLabel","textContent","hostAttrs","booleanAttribute","ɵɵProvidersFeature","useFactory","ɵɵInputTransformsFeature","DsNotificationBubble_Conditional_0_Template","DsNotificationBubble_Conditional_1_Template","_DsNotificationBubble","getByThemeOrDefault","SportsThemedNotificationDirective","currentTheme","changeRef","notification","themedSize","themeInverse","isInverse","ngOnChanges","themeVariant","selectedVariant","themedVariant","ɵɵNgOnChangesFeature","_SportsThemedNotificationDirective","DsTabHeader","ngTemplateContextGuard","directive","L","_DsTabHeader","DsTabContent","_DsTabContent","ɵɵelementContainer","Ie","DsTab_Conditional_0_ng_container_0_Template","ctx_r0","lazyContent","_tabNameIndex","getRandomName","DsTab","customHeader","signal","focused","_focusMonitor","FocusMonitor","_elementRef","setFocused","stopMonitoring","contentQueries","dirIndex","TemplateRef","D","Se","DsTab_Conditional_0_Template","NgTemplateOutlet","changeDetection","_DsTab","DsTabsScrollArrow","_DsTabsScrollArrow","INITIAL_SCROLL_DELAY","SCROLL_THRESHOLD","DsTabsArrows","_destroyRef","_breakpointObserver","BreakpointObserver","isSmallScreen","Breakpoints","XSmall","Small","HandsetLandscape","TabletPortrait","_scrollDistanceToLeft","_containerWidth","_listScrollWidth","_maxScrollDistance","showNavigationArrows","_scrollable","initialScrollHappened","addMobileNavScrollClass","prevBtnHidden","nextBtnHidden","ngAfterContentInit","toObservable","_activeTab","activeTab","_updateScrollDistanceBasedOnName","containerWidthSub","listenToResizeObserver","_tabHeaderItemsContainer","contentRect","listItemsWidthSub","_tabHeaderItemsList","handleArrowClick","scrollAmount","_scrollDistance","_scrollTo","_updateTabScrollPosition","tabs","_tabs","selectedTab","tabHeaderItem","_getTabElementByName","scrollDistance","_calculateScrollDistance","offsetRectLeft","containerOffsetRectLeft","targetScroll","clientWidth","behavior","_id","_DsTabsArrows","containerElement","offsetRectRight","containerOffsetRectRight","offsetLeft","containerOffsetLeft","containerWidth","containerCenterPosition","targetCenterPosition","arrowSize","elements","resizeObserver","ResizeObserver","el","DEFAULT_TAB_OPTIONS","fullWidthTabs","defaultScrollDistance","defaultScrollSpeed","DS_TAB_OPTIONS","$item","je","DsTabsGroup_For_6_Conditional_3_ng_container_0_Template","tab_r3","ɵɵpureFunction2","_c7","W","_r2","ctx_r3","selectTab","DsTabsGroup_For_6_Conditional_3_Template","DsTabsGroup_For_6_Conditional_4_Template","F","Ke","DsTabsGroup_Conditional_8_Conditional_1_ng_container_0_Template","dsTabsLeftArrowTpl","DsTabsGroup_Conditional_8_Conditional_4_ng_container_0_Template","dsTabsRightArrowTpl","DsTabsGroup_Conditional_8_Conditional_1_Template","DsTabsGroup_Conditional_8_Conditional_2_Template","DsTabsGroup_Conditional_8_Conditional_4_Template","DsTabsGroup_Conditional_8_Conditional_5_Template","uniqueTabId","getTabId","DsTabsGroup","tabOptions","_scrollSpeed","activeTabChanged","tabChanged","ariaLabelNavigationArrowPrev","ariaLabelNavigationArrowNext","scrollSpeed","scrollable","tabItems","monitor","focusOrigin","sizeClass","indicatorClass","tabHeaderItemsClass","focusOption","tabOptionObj","focusVia","onKeydown","tabsList","newIndex","nextFocusTabIndex","getNextFocusTabIndex","preventDefault","newTab","oe","ɵɵInheritDefinitionFeature","_c6","i0","DsTabsGroup_For_6_Template","_forTrack0","DsTabsGroup_Conditional_8_Template","styles","_DsTabsGroup","DsTabsModule","re","se","_DsTabsModule","SportsThemedTabsDirective","tabGroup","themedIndicator","themedInverse","_SportsThemedTabsDirective","LinkDirective","updateAnchorLink","onClick","msLink","_LinkDirective","PATTERN_ALIAS","findPathDetails","visited","_loadedRoutes","lazyChildren","lazyChild","matcherRoutes","currentPath","matcher","isPrimaryRoute","outlet","getPreResolveRoutes","preResolveRoutes","loadedRoutes","PRIMARY_OUTLET","MatcherService","getMatches","routeTree","tree","matchingSegments","matchingSegmentGroups","matchResultToParams","getExtendedTree","extendTreeWithMatcherRoutes","S","_MatcherService","fromEntries","posParams","containee","containeePaths","hasChildren","matchesSegmentGroup","matchResults","matchedChildren","registered","registeredGroup","accumulator","registeredItem","currentItem","urlMatch","consumed","extendUrlSegmentGroup","currentMatcher","PrefetchRegistry","_ngZone","_timerService","_matcherService","_trees","_routeToPreResolve","_preResolveRoutes","_preResolveExec","_preResolveParams","_THROTTLE_TIME","_PrefetchRegistry_instances","getPreResolverFn_fn","setLinkPreResolver_fn","getMatches_fn","WeakMap","__privateMethod","registeredTree","registerRoutes","shouldPrefetch","urls","preResolvers","containsTree","treeOrUrl","serializeUrl","exec","runInInjectionContext","#getPreResolverFn","paramsKey","preResolverUrl","#setLinkPreResolver","preResolveFns","preResolveRouteTree","#getMatches","trees","_PrefetchRegistry","containsQueryParams","containsSegmentGroup","matchers","equalPath","as","bs","matchesMatcher","SpeculativeLinkPreloader","_loading","_registry","RouteConfigLoadEnd","preload","conn","navigator","effectiveType","saveData","_SpeculativeLinkPreloader","SpeculativeLinkObserver","_loader","_elementLink","_intersectionObserver","RouterPreloader","IntersectionObserver","isIntersecting","urlTree","unregister","unobserve","_SpeculativeLinkObserver","SpeculativeLinkConfig","speculativeLinkConfigFactory","SpeculativeLinkDirective","_pageVisibilityService","_observer","_configService","_isPageVisible","_isEnabled","_register","required","alias","isConfigReady","effect","URL","_SpeculativeLinkDirective","DsDivider","vertical","_DsDivider","TabGroupWithCounterComponent_For_2_ng_container_1_Conditional_1_ng_container_1_Template","tabGroup_r4","_c1","selected_r2","TabGroupWithCounterComponent_For_2_ng_container_1_Conditional_2_ng_container_0_Template","TabGroupWithCounterComponent_For_2_ng_container_1_Conditional_1_Template","TabGroupWithCounterComponent_For_2_ng_container_1_Conditional_2_Template","TabGroupWithCounterComponent_For_2_ng_container_1_Template","selected_r7","ctx_r7","counterVariant","activeCounterVariant","tab_r6","TabGroupWithCounterComponent_ng_template_4_Conditional_2_Template","TabGroupWithCounterComponent","tabSelected","tabSize","themeInverseIndicator","showBorder","TabGroupWithCounterComponent_For_2_Template","TabGroupWithCounterComponent_Conditional_3_Template","TabGroupWithCounterComponent_ng_template_4_Template","ɵɵtemplateRefExtractor","_TabGroupWithCounterComponent","DisabledCookieValue","EnabledCookieValueOldDesktop","EnabledCookieValue","DarkModeService","getIsEnabled","writeCookie","putRaw","DarkMode","PERMANENT_COOKIE_EXPIRATION","_DarkModeService","CompetitionLogosService","imagesConfig","darkModeService","competitionLogos","overriddenCompetitionLogo","getLogoUrl","isLogoOverrideEnabled","imageRootPath","competitionImageName","overridenCompetitionImageName","getCompetitionImageName","competitionLogoUrl","getImageProfileLogoUrl","logo","hasLogo","leagues","imageDark","_CompetitionLogosService","FallbackImage","PARTICIPANT_IMAGE_CONFIG","onImageFailedLoaded","imageClass","ɵɵsanitizeUrl","sportsToReversePlayer2Image","ImageType","ImageRootPath","ParticipantType","ParticipantImageComponent","shouldRotate","showFallback","showLogoColor","logoLoaded","loaded","rotateImage","fallbackColor","showBackgroundCircle","participantImageUrl","participantLogoUrl","fallbackImage","settingImage","isLogoBackgroundEnabled","getFallbackColor","backgroundColor","images","setHeadshotImage","Logo","Jersey","Fallback","at","Player","participantImage","Headshot","participantImageName","participantUrl","headshotExtension","jersey","EpcotDefault","rootpath","getRootPath","participantImageProfileName","isParticipantProfile","Prod","ParticipantImageComponent_img_1_Template","ɵɵstyleProp","ɵɵpureFunction3","NgClass","_ParticipantImageComponent","fallbackIcon","M","loadLogo","onLoadingError","loadingError","CompetitionLogoComponent","hostImage","cls","isWithRightImage","competitionLogosService","showLogoCircle","isCompetitionImageProfile","currentValue","previousValue","updateCompetitionLogoUrl","markForCheck","getLogoColor","updatedLogoUrl","CompetitionLogoComponent_span_0_Template","CompetitionLogoComponent_div_1_Template","_CompetitionLogoComponent","ScrollDirection","SmoothScroll","requestAnimationFrameFn","fallbackFn","scrollLeftTo","forceDuration","smoothScrollTo","scrollTopTo","Top","documentElement","scrollToOptions","doStepScrolling","scrollElement","roundedTarget","roundedDuration","scrollDirection","startTime","endTime","startPos","previousPos","runRafOutsideZone","scrollFrame","firstRun","point","smoothStep","frameTop","currentPreviousPos","_SmoothScroll","CssSupportService","supports","isFeatureSupported","isTouchActionSupported","_CssSupportService","ScrollSpeedConstants","ScrollSpeed","parsedConfig","parseConfig","_breakpoints","breakpoints","_default","clonedConfig","defaultValue","me","HammerGestureConfigProvider","pinch","enable","rotate","swipe","_HammerGestureConfigProvider","SCROLL_ADAPTER_CONFIG","we","ScrollAdapterButtonSize","ScrollAdapterComponent","buttonSize","Large","contentElement","smoothScroll","scrollSizeConfig","cssSupportService","scrollAdapterConfig","scrollSize","alwaysShowArrows","stretch","mobileSwipe","canScrollLeft","canScrollRight","hiddenArrowClass","disabledArrowClass","scrollableLeftClass","scrollableRightClass","scrollDuration","hasScrolled","showArrows","scrollItems","firstChange","resetArrows","updatedScrollPosition","clientLeft","setArrows","groupsSwiped","disableHorizontalScrollOnDesktop","overflowX","calculateScrollSize","scrollRight","scrollWidth","updateUi","setClass","leftArrow","leftArrowVisible","rightArrow","rightArrowVisible","hasClass","scrollPercentage","getScrollPercentage","activeBreakpoint","getActiveBreakpoint","scrollingSpeed","activeBreakpointKey","br","HAMMER_GESTURE_CONFIG","N","_c4","_ScrollAdapterComponent","DsPill","roundedPadding","setRoundedPadding","dsAtoms","includesNotificationBubble","attrs","_c3","C","_DsPill","item_r2","ctx_r2","eventSelected","WidgetPillComponent_For_3_ng_container_2_Template","iconTemplate_r4","H","pill_r5","itemId","WidgetPillComponent_ng_template_4_Conditional_0_Template","WidgetPillComponent_ng_template_4_Conditional_1_Template","display","WidgetTabBarDisplay","WidgetPillComponent","widgetTabBarItem","pills","tabItem","WidgetPillComponent_For_3_Template","WidgetPillComponent_ng_template_4_Template","_WidgetPillComponent","Z","nn","rn","tn","U","A","I","E","en","R","G","un","an","cn","sn","vn","immer_esm_default","Lazy","cached","BaseTreeItem","href","_href","immerable","LazyTreeItem","expanded","seoOptimize","lazyHref","urlMapper","countMapper","priceBoostCountMapper","SportTreeItem","childrenType","getItemTypeForSport","sportTitleAndIcon","eSportsLobby","subTitle","moreTitle","RegionTreeItem","liveCount","allOptions","LeagueTreeItem","allTitle","leagueOptions","VirtualGroupTreeItem","groupOptions","favouriteId","TournamentTreeItem","CalendarTreeItem","CompetitionRouteService","routerEvents","parsedRoute","mappers","getQuery","getInteger","toInteger","getIntegerArray","getSportRoute","getCommon","subContext","getBettingRoute","getConferencesRoute","conferenceName","getVirtualBettingRoute","virtualCompetitionGroupName","getBettingSportRoute","getCouponRoute","couponName","getTournamentRoute","getStandingsRoute","getStandingsVirtualRoute","getCalendarRoute","getWorldCupHubRoute","worldCupHub","getBetsRoute","marketOffer","getBetsVirtualRoute","marketTemplate","marketCategory","dynamicOfferCategory","getLiveRoute","getLiveConferenceRoute","getVirtualLiveRoute","getCouponCompetitionRoute","getCouponVirtualCompetitionRoute","regex","mapper","couponContext","competitionContext","conferencesContext","conferences","tournamentContext","teampagesContext","betsContext","standingsContext","liveContext","worldCupHubContext","baseOptions","nextRaces","eventContext","baseContext","virtualNode","urlAfterRedirects","decoded","getCompetitionRouteTracking","hasFixtures","groupName","routeContext","capitalize","_CompetitionRouteService","_c2","MAT_BUTTON_CONFIG","HOST_SELECTOR_MDC_CLASS_PAIR","MatButtonBase","_MatButtonBase","_platform","_animationMode","MatRippleLoader","mdcClasses","ɵɵinvalidFactory","ɵɵdefineDirective","MatButton","_MatButton","platform","animationMode","ANIMATION_MODULE_TYPE","ɵɵdefineComponent","ɵɵattribute","ɵɵprojectionDef","SimpleSnackBar_Conditional_2_Template","ɵɵgetCurrentView","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","MatSnackBarRef","containerInstance","_overlayRef","MAT_SNACK_BAR_DATA","MatSnackBarConfig","MatSnackBarLabel","_MatSnackBarLabel","MatSnackBarActions","_MatSnackBarActions","MatSnackBarAction","_MatSnackBarAction","SimpleSnackBar","_SimpleSnackBar","snackBarRef","matSnackBarAnimations","transition","MatSnackBarContainer","_MatSnackBarContainer","BasePortalOutlet","_changeDetectorRef","snackBarConfig","portal","fromState","toState","onEnter","panelClasses","label","labelClass","ariaOwns","newValue","inertElement","liveElement","focusedElement","ɵɵviewQuery","CdkPortalOutlet","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵsyntheticHostListener","ɵɵsyntheticHostProperty","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","_MatSnackBar","_overlay","_live","_parentSnackBar","_defaultConfig","_config","overlayRef","userInjector","containerPortal","ComponentPortal","containerRef","userConfig","TemplatePortal","overlayConfig","OverlayConfig","positionStrategy","isRtl","isLeft","isRight","Overlay","LiveAnnouncer","toast","ToasterComponent","ToasterComponent_i_0_Template","_ToasterComponent","ToasterService","snackBar","isEpcotEnabled","panelClass","toaster","openFromComponent","horizontalPosition","verticalPosition","dismissed","afterDismissed","afterOpened","_ToasterService"],"mappings":"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","x_google_ignoreList":[46,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,107,276,281,350,353,354]}