{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/CardM.vue?3c43","webpack:///./common/styles/colors.scss","webpack:///./src/assets/icons/material_symbols/account_circle_FILL1_wght400_GRAD0_opsz48.vue?3030","webpack:///./src/store/modules/language.ts","webpack:///./src/store/modules/gamelists.ts","webpack:///./src/store/modules/genres.ts","webpack:///./src/store/modules/publishers.ts","webpack:///./src/store/index.ts","webpack:///./src/store/modules/bigscreen.ts","webpack:///./src/assets/icons/material_symbols/shareIcon.vue?1d15","webpack:///./src/assets/icons/material_symbols/add_FILL0_wght400_GRAD0_opsz48.vue?058e","webpack:///./src/assets/icons/material_symbols/lockIcon.vue?426d","webpack:///./sdk/src/engine/types/TrialEndReason.ts","webpack:///./src/assets/icons/material_symbols/share_FILL0_wght400_GRAD0_opsz48.vue?272d","webpack:///./src/components/SubscribeBannerPopup.vue?fa92","webpack:///./src/components/CardScreenshot.vue?7328","webpack:///./src/views/Home.vue?52f5","webpack:///./src/views/PlayIframe.vue?84bb","webpack:///./src/components/OGLTapBar.vue?9edd","webpack:///./src/views/Categories.vue?be75","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL0_wght400_GRAD0_opsz24.vue?d1b5","webpack:///./src/assets/icons/material_symbols/more_vert_FILL0_wght400_GRAD0_opsz48.vue?a719","webpack:///./src/assets/icons/material_symbols/add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue?e067","webpack:///./src/components/TapBarMoveWarning.vue?c95b","webpack:///./src/components/SubscribeTutoPopup.vue?8801","webpack:///./sdk/src/engine/types/ErrorCodes.ts","webpack:///./src/components/CardGameL.vue?d73d","webpack:///./src/components/SharePopup.vue?e8a4","webpack:///./src/assets/icons/material_symbols/play_arrow_FILL1_wght400_GRAD0_opsz48.vue?274c","webpack:///./src/components/CardL.vue?d1a3","webpack:///./src/apm.ts","webpack:///./common/utils/utils.ts","webpack:///./src/assets/icons/material_symbols/ios_share_FILL0_wght400_GRAD0_opsz48.vue?6439","webpack:///./src/components/Home/HomeSections/CardShowtime.vue?b6d2","webpack:///./src/assets/icons/material_symbols/visibility_FILL1_wght400_GRAD0_opsz48.vue?becb","webpack:///./sdk/src/engine/old-client-stuff/MobileManager.ts","webpack:///./sdk/src/engine/Logger.ts","webpack:///./sdk/src/engine/WebRTC/FirefoxRTCStatsTypes.ts","webpack:///./sdk/src/engine/WebRTC/DefaultWebRTCStatsParser.ts","webpack:///./sdk/src/engine/WebRTC/FirefoxWebRTCStatsParser.ts","webpack:///./sdk/src/engine/WebRTC/WebRTCStatsParser.ts","webpack:///./src/views/PlayIframe.vue?04e0","webpack:///./src/components/HomeScroller.vue?69c7","webpack:///./src/components/SubscribeBanner.vue?9981","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./common/share/index.ts","webpack:///./src/store/modules/mobile.ts","webpack:///./src/components/SubscribeBanner.vue?36ae","webpack:///./src/components/TapBar.vue?769f","webpack:///./src/assets/icon.png","webpack:///./src/components/Profile/LoginForm.vue?ea0a","webpack:///./src/assets/icons/material_symbols/bookmark_add_FILL0_wght400_GRAD0_opsz48.vue?07cd","webpack:///./src/views/Game.vue?d51f","webpack:///./src/App.vue?e52c","webpack:///./src/components/NeedPartnerAuthenticationPopup.vue?26b5","webpack:///./src/components/CategoryList.vue?e2d3","webpack:///./src/components/HomeListedGame.vue?8688","webpack:///./src/components/UpdateModal.vue?66ae","webpack:///./src/components/Bigscreen/EnterCodePopup.vue?224e","webpack:///./src/components/Bigscreen/EnterCodePopup.vue","webpack:///./src/components/Bigscreen/EnterCodePopup.vue?e4ec","webpack:///./src/components/Bigscreen/EnterCodePopup.vue?6858","webpack:///./src/views/Leaderboard.vue?2e01","webpack:///./src/components/TapBar.vue?b33a","webpack:///./common/stats/SessionManager.ts","webpack:///./common/stats/StatsManager.ts","webpack:///./src/store/modules/games.ts","webpack:///./src/assets/icons/material_symbols/home_FILL1_wght400_GRAD0_opsz48.vue?25b5","webpack:///./src/App.vue?279b","webpack:///./src/store/modules/authentication.ts","webpack:///./src/assets/icons/material_symbols/play_circle_FILL1_wght400_GRAD0_opsz48.vue?4e8c","webpack:///./src/assets/incomp_browser.png","webpack:///./src/store/modules/homesections.ts","webpack:///./src/components/ListedGame.vue?b1d9","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL1_wght400_GRAD0_opsz24.vue?6be8","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue?fab3","webpack:///./src/components/Bigscreen/EnterCodePopup.vue?2529","webpack:///./src/components/AgreementPopup.vue?81d4","webpack:///./src/components/OGLTapBar.vue?1569","webpack:///./src/assets/icons/material_symbols/more_horiz_FILL0_wght400_GRAD0_opsz48.vue?3019","webpack:///./src/components/Add2HomeTuto.vue?0735","webpack:///./src/views/OneGameProfile.vue?4220","webpack:///./src/components/HorizontalScroll.vue?7024","webpack:///./src/views/OneGameLobby.vue?fc5d","webpack:///./src/components/Profile/RegisterForm.vue?91e7","webpack:///./src/assets/icons/material_icons/arrow_back_ios_white_24dp.vue?f171","webpack:///./src/components/Home/HomeSections/CardGameVideo.vue?8bdc","webpack:///./src/components/CardGameM.vue?7081","webpack:///./src/views/Game.vue?61e6","webpack:///./src/components/CardScreenshot.vue?7501","webpack:///./src/components/CardScreenshot.vue","webpack:///./src/components/CardScreenshot.vue?eb99","webpack:///./src/components/CardScreenshot.vue?e003","webpack:///./src/components/CardGameL.vue?35e2","webpack:///./src/components/CardGame.vue","webpack:///./src/components/CardGame.vue?054e","webpack:///./src/components/CardGame.vue?f64e","webpack:///./src/components/CardL.vue?d374","webpack:///./src/components/CardL.vue","webpack:///./src/components/CardL.vue?07f7","webpack:///./src/components/CardL.vue?4214","webpack:///./src/components/CardGameL.vue","webpack:///./src/components/CardGameL.vue?1946","webpack:///./src/components/CardGameL.vue?2349","webpack:///./src/components/HomeScroller.vue?b45b","webpack:///./src/components/HorizontalScroll.vue?0d57","webpack:///./src/components/HorizontalScroll.vue","webpack:///./src/components/HorizontalScroll.vue?731c","webpack:///./src/components/HorizontalScroll.vue?3e2b","webpack:///./src/components/HomeScroller.vue","webpack:///./src/components/HomeScroller.vue?4a91","webpack:///./src/components/HomeScroller.vue?ec88","webpack:///./src/components/TapBar.vue?d79d","webpack:///./src/components/SubscribeBanner.vue?edb4","webpack:///./src/components/SubscribeBanner.vue","webpack:///./src/components/SubscribeBanner.vue?3ef5","webpack:///./src/components/SubscribeBanner.vue?e8f6","webpack:///./src/components/TapBar.vue","webpack:///./src/components/TapBar.vue?6040","webpack:///./src/components/TapBar.vue?3086","webpack:///./src/components/Home/HomeSections/CardGameVideo.vue?5993","webpack:///./src/components/ListedGame.vue?d888","webpack:///./src/components/ListedGame.vue","webpack:///./src/components/ListedGame.vue?1a9d","webpack:///./src/components/ListedGame.vue?a226","webpack:///./src/components/Home/HomeSections/CardGameVideo.vue","webpack:///./src/components/Home/HomeSections/CardGameVideo.vue?d49d","webpack:///./src/components/Home/HomeSections/CardGameVideo.vue?13d8","webpack:///./src/views/Game.vue","webpack:///./src/views/Game.vue?b107","webpack:///./src/views/Game.vue?afb0","webpack:///./src/views/PlayIframe.vue?1410","webpack:///./src/views/PlayIframe.vue","webpack:///./src/views/Categories.vue","webpack:///./src/views/PlayIframe.vue?dfe3","webpack:///./src/views/PlayIframe.vue?dc08","webpack:///./src/views/Categories.vue?634e","webpack:///./src/views/Categories.vue?a640","webpack:///./src/views/Categories.vue?6d4a","webpack:///./src/views/Profile.vue?7237","webpack:///./src/views/Profile.vue","webpack:///./src/views/Profile.vue?051d","webpack:///./src/views/Profile.vue?dbf3","webpack:///./src/views/Leaderboard.vue?094c","webpack:///./src/components/OGLTapBar.vue?885c","webpack:///./src/components/OGLTapBar.vue","webpack:///./src/components/OGLTapBar.vue?3440","webpack:///./src/components/OGLTapBar.vue?b4f0","webpack:///./src/views/Leaderboard.vue","webpack:///./src/views/Leaderboard.vue?efa5","webpack:///./src/views/Leaderboard.vue?28f4","webpack:///./src/views/Logout.vue?1cb1","webpack:///./src/views/Logout.vue","webpack:///./src/views/Logout.vue?3c2b","webpack:///./src/views/Logout.vue?d274","webpack:///./src/views/Home.vue?8455","webpack:///./src/components/Home/HomeSection.vue?e051","webpack:///./src/components/Banner.vue?eb3d","webpack:///./src/components/Banner.vue","webpack:///./src/components/Banner.vue?3b48","webpack:///./src/components/Banner.vue?9426","webpack:///./src/components/Home/HomeSections/CardGameXL.vue?cbeb","webpack:///./src/components/Home/HomeSections/CardGameXL.vue","webpack:///./src/components/Home/HomeSections/CardGameXL.vue?7c07","webpack:///./src/components/Home/HomeSections/CardGameXL.vue?7da6","webpack:///./src/components/Home/HomeSections/CardShowtime.vue?d31f","webpack:///./src/components/Home/HomeSections/CardShowtime.vue","webpack:///./src/components/Home/HomeSections/CardShowtime.vue?2820","webpack:///./src/components/Home/HomeSections/CardShowtime.vue?a62a","webpack:///./src/components/CategoryList.vue?b774","webpack:///./src/components/CardCategory.vue?8757","webpack:///./src/components/CardCategory.vue","webpack:///./src/components/CardCategory.vue?d59d","webpack:///./src/components/CardCategory.vue?b8f9","webpack:///./src/components/CategoryList.vue","webpack:///./src/components/CategoryList.vue?e970","webpack:///./src/components/CategoryList.vue?4680","webpack:///./src/components/Home/HomeSections/HomeCardGameVideo.vue?438b","webpack:///./src/components/HomeListedGame.vue?4daa","webpack:///./src/components/CardGameM.vue?d7bd","webpack:///./src/components/CardM.vue?3482","webpack:///./src/components/CardM.vue","webpack:///./src/components/CardM.vue?05f7","webpack:///./src/components/CardM.vue?a5cc","webpack:///./src/components/CardGameM.vue","webpack:///./src/components/CardGameM.vue?4f7e","webpack:///./src/components/CardGameM.vue?8e97","webpack:///./src/components/HomeListedGame.vue","webpack:///./src/components/HomeListedGame.vue?287b","webpack:///./src/components/HomeListedGame.vue?50f7","webpack:///./src/components/Home/HomeSections/HomeCardGameVideo.vue","webpack:///./src/components/Home/HomeSections/HomeCardGameVideo.vue?a494","webpack:///./src/components/Home/HomeSections/HomeCardGameVideo.vue?640c","webpack:///./src/components/Home/HomeSection.vue","webpack:///./src/components/Home/HomeSection.vue?7669","webpack:///./src/components/Home/HomeSection.vue?6b77","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?2352","webpack:///./src/views/Home.vue?b4c0","webpack:///./src/views/OneGameLobby.vue?d2a1","webpack:///./src/views/OneGameLobby.vue","webpack:///./src/views/OneGameLobby.vue?2690","webpack:///./src/views/OneGameLobby.vue?c305","webpack:///./src/views/OneGameProfile.vue?2bee","webpack:///./src/components/TapBarMoveWarning.vue?0f6a","webpack:///./src/components/TapBarMoveWarning.vue","webpack:///./src/components/TapBarMoveWarning.vue?c8ba","webpack:///./src/components/TapBarMoveWarning.vue?548d","webpack:///./src/components/Profile/LoginForm.vue?abe5","webpack:///./src/components/Profile/LoginForm.vue","webpack:///./src/components/Profile/LoginForm.vue?2e84","webpack:///./src/components/Profile/LoginForm.vue?b6d3","webpack:///./src/components/Profile/RegisterForm.vue?b7e8","webpack:///./src/components/Profile/RegisterForm.vue","webpack:///./src/components/Profile/RegisterForm.vue?f89d","webpack:///./src/components/Profile/RegisterForm.vue?5adc","webpack:///./src/views/OneGameProfile.vue","webpack:///./src/views/OneGameProfile.vue?5800","webpack:///./src/views/OneGameProfile.vue?4815","webpack:///./src/router/routes.ts","webpack:///./src/router/index.ts","webpack:///./src/components/WrongBrowserPopup.vue?20c7","webpack:///./src/assets/icons/material_symbols/search_FILL0_wght400_GRAD0_opsz48.vue?9676","webpack:///./src/assets/icons/material_symbols/live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue?0246","webpack:///./src/components/Home/HomeSections/CardGameXL.vue?0ad2","webpack:///./src/components/CardCategory.vue?730a","webpack:///./src/components/Banner.vue?e079","webpack:///./src/App.vue?83c8","webpack:///./src/components/AlertDialog.vue?06c8","webpack:///./src/components/AlertDialog.vue","webpack:///./src/components/AlertDialog.vue?6c51","webpack:///./src/components/AlertDialog.vue?be2c","webpack:///./src/components/WrongBrowserPopup.vue?0bcc","webpack:///./src/components/WrongBrowserPopup.vue","webpack:///./src/components/WrongBrowserPopup.vue?324d","webpack:///./src/components/WrongBrowserPopup.vue?f772","webpack:///./src/components/NeedAccessPopup.vue?7b5d","webpack:///./src/components/NeedAccessPopup.vue","webpack:///./src/components/NeedAccessPopup.vue?882b","webpack:///./src/components/NeedAccessPopup.vue?1cfa","webpack:///./src/components/NeedPartnerAuthenticationPopup.vue?454e","webpack:///./src/components/NeedPartnerAuthenticationPopup.vue","webpack:///./src/components/NeedPartnerAuthenticationPopup.vue?03f9","webpack:///./src/components/NeedPartnerAuthenticationPopup.vue?e4cd","webpack:///./src/components/Add2HomeTuto.vue?f70d","webpack:///./src/components/Add2HomeTuto.vue","webpack:///./src/components/Add2HomeTuto.vue?8714","webpack:///./src/components/Add2HomeTuto.vue?a7f0","webpack:///./src/components/Add2HomeAndroidIntercept.vue?e40c","webpack:///./src/components/Add2HomeAndroidIntercept.vue","webpack:///./src/components/Add2HomeAndroidIntercept.vue?60b1","webpack:///./src/components/Add2HomeAndroidIntercept.vue?5bd4","webpack:///./src/components/UpdateModal.vue?177a","webpack:///./src/components/UpdateModal.vue","webpack:///./src/components/UpdateModal.vue?abce","webpack:///./src/components/UpdateModal.vue?23a9","webpack:///./src/components/AgreementPopup.vue?9b9b","webpack:///./src/components/AgreementPopup.vue","webpack:///./src/components/AgreementPopup.vue?29ba","webpack:///./src/components/AgreementPopup.vue?4745","webpack:///./src/components/SharePopup.vue?ed0e","webpack:///./src/components/SharePopup.vue","webpack:///./src/components/SharePopup.vue?3162","webpack:///./src/components/SharePopup.vue?9b65","webpack:///./src/components/SubscribeTutoPopup.vue?0a19","webpack:///./src/components/SubscribeTutoPopup.vue","webpack:///./src/components/SubscribeTutoPopup.vue?8dea","webpack:///./src/components/SubscribeTutoPopup.vue?cb34","webpack:///./src/components/RenewTutoPopup.vue?0538","webpack:///./src/components/RenewTutoPopup.vue","webpack:///./src/components/RenewTutoPopup.vue?23d0","webpack:///./src/components/RenewTutoPopup.vue?0b9e","webpack:///./src/components/SubscribeBannerPopup.vue?4757","webpack:///./src/components/SubscribeBannerPopup.vue","webpack:///./src/components/SubscribeBannerPopup.vue?0073","webpack:///./src/components/SubscribeBannerPopup.vue?14c6","webpack:///./src/App.vue","webpack:///./src/App.vue?31c5","webpack:///./src/App.vue?68bd","webpack:///./src/assets/icons/material_symbols/account_circle_FILL1_wght400_GRAD0_opsz48.vue?bcda","webpack:///./src/assets/icons/material_symbols/account_circle_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/play_arrow_FILL1_wght400_GRAD0_opsz48.vue?922e","webpack:///./src/assets/icons/material_symbols/play_arrow_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/play_circle_FILL1_wght400_GRAD0_opsz48.vue?83bd","webpack:///./src/assets/icons/material_symbols/play_circle_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/search_FILL0_wght400_GRAD0_opsz48.vue?db39","webpack:///./src/assets/icons/material_symbols/search_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_icons/arrow_back_ios_white_24dp.vue?9f12","webpack:///./src/assets/icons/material_icons/arrow_back_ios_white_24dp.vue","webpack:///./src/assets/icons/material_symbols/add_FILL0_wght400_GRAD0_opsz48.vue?b737","webpack:///./src/assets/icons/material_symbols/add_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue?0928","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue?0b58","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue","webpack:///./src/assets/icons/material_symbols/bookmark_add_FILL0_wght400_GRAD0_opsz48.vue?1ae3","webpack:///./src/assets/icons/material_symbols/bookmark_add_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/bookmark_added_FILL1_wght400_GRAD0_opsz48.vue?5320","webpack:///./src/assets/icons/material_symbols/bookmark_added_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/home_FILL1_wght400_GRAD0_opsz48.vue?fe77","webpack:///./src/assets/icons/material_symbols/home_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/ios_share_FILL0_wght400_GRAD0_opsz48.vue?55e4","webpack:///./src/assets/icons/material_symbols/ios_share_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/more_horiz_FILL0_wght400_GRAD0_opsz48.vue?2939","webpack:///./src/assets/icons/material_symbols/more_horiz_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/more_vert_FILL0_wght400_GRAD0_opsz48.vue?b2d9","webpack:///./src/assets/icons/material_symbols/more_vert_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/add_box_FILL1_wght400_GRAD0_opsz48.vue?5448","webpack:///./src/assets/icons/material_symbols/add_box_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue?3292","webpack:///./src/assets/icons/material_symbols/add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/visibility_FILL1_wght400_GRAD0_opsz48.vue?c77b","webpack:///./src/assets/icons/material_symbols/visibility_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/visibility_off_FILL1_wght400_GRAD0_opsz48.vue?2117","webpack:///./src/assets/icons/material_symbols/visibility_off_FILL1_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/leaderboard_FILL0_wght400_GRAD0_opsz48.vue?7bff","webpack:///./src/assets/icons/material_symbols/leaderboard_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/share_FILL0_wght400_GRAD0_opsz48.vue?6378","webpack:///./src/assets/icons/material_symbols/share_FILL0_wght400_GRAD0_opsz48.vue","webpack:///./src/assets/icons/material_symbols/live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue?6b14","webpack:///./src/assets/icons/material_symbols/live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue","webpack:///./src/assets/icons/material_symbols/cancel_20dp_FILL0_wght400_GRAD0_opsz20.vue?7985","webpack:///./src/assets/icons/material_symbols/cancel_20dp_FILL0_wght400_GRAD0_opsz20.vue","webpack:///./src/assets/icons/material_symbols/check_circle_20dp_FILL0_wght400_GRAD0_opsz20.vue?011d","webpack:///./src/assets/icons/material_symbols/check_circle_20dp_FILL0_wght400_GRAD0_opsz20.vue","webpack:///./src/assets/icons/material_symbols/shareIcon.vue?76e4","webpack:///./src/assets/icons/material_symbols/shareIcon.vue","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL1_wght400_GRAD0_opsz24.vue?b269","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL1_wght400_GRAD0_opsz24.vue","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL0_wght400_GRAD0_opsz24.vue?dc4c","webpack:///./src/assets/icons/material_symbols/star_24dp_FILL0_wght400_GRAD0_opsz24.vue","webpack:///./src/assets/icons/material_symbols/lockIcon.vue?28d1","webpack:///./src/assets/icons/material_symbols/lockIcon.vue","webpack:///./src/assets/icons/material_symbols/unlockIcon.vue?a562","webpack:///./src/assets/icons/material_symbols/unlockIcon.vue","webpack:///./src/plugins/vuetify.ts","webpack:///./src/main.ts","webpack:///./src/assets/logo.png","webpack:///./sdk/src/engine/types/index.ts","webpack:///./src/components/Add2HomeAndroidIntercept.vue?9a05","webpack:///./src/assets/icons/material_symbols/visibility_off_FILL1_wght400_GRAD0_opsz48.vue?803e","webpack:///./src/components/AlertDialog.vue?5421","webpack:///./src/assets/icons/material_symbols/keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue?fa4a","webpack:///./src/components/RenewTutoPopup.vue?9b6a","webpack:///./src/components/OGLTapBar.vue?ba86","webpack:///./src/views/Profile.vue?7306","webpack:///./src/components/TapBar.vue?83db","webpack:///./src/assets/icons/material_symbols/add_box_FILL1_wght400_GRAD0_opsz48.vue?2c1e","webpack:///./src/assets/icons/material_symbols/leaderboard_FILL0_wght400_GRAD0_opsz48.vue?9dda","webpack:///./src/components/SubscribeBanner.vue?9564","webpack:///./src/assets/icons/material_symbols/bookmark_added_FILL1_wght400_GRAD0_opsz48.vue?34fa","webpack:///./sdk/src/engine/types/NetworkState.ts","webpack:///./src/assets/sword.png","webpack:///./src/components/Home/HomeSections/HomeCardGameVideo.vue?ec29","webpack:///./src/components/NeedAccessPopup.vue?6a26","webpack:///./src/plugins/i18n.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","namespaced","state","language","availableLanguages","getters","availableLanguageCodes","map","mutations","SET_LANGUAGE","lang","locale","SET_AVAILABLE_LANGUAGES","actions","setLanguage","context","prefferdLanguages","moduleActionContext","commit","some","sl","match","RegExp","test","fallbackLocale","toString","init","dispatch","axiosInstance","response","navigator","languages","loadMessages","jsonLocaleFileUrl","a","mergeLocaleMessage","gameListsPromise","gameLists","SET_GAME_LISTS","getGameLists","rootGetters","locales","forEach","messages","_id","localizedClientInfo","title","genresPromise","genres","SET_GENRES","getGenres","publishersPromise","publishers","SET_PUBLISHERS","getPublishers","StatsManager","use","strict","authentication","games","mobile","homeSections","bigscreen","apiEndpoint","isLoading","requestedRoute","alert","show","add2HomeTuto","showWrongBrowserPopup","SET_LOADING","SET_REQUESTED_ROUTE","SHOW_ALERT","text","onClose","CLOSE_ALERT","SHOW_WRONG_BROWSER_POPUP","SHOW_ADD2HOME_TUTO","onSkip","querySelector","classList","add","scrollTo","location","CLOSE_ADD2HOME_TUTO","remove","store","rootActionContext","moduleGetterContext","rootGetterContext","interceptors","config","baseURL","token","jwt","headers","Authorization","status","StreamingMode","bigscreenIsPaired","isBigscreenPaired","TOGGLE_BIGSCREEN_IS_PAIRED","bool","sendPairingCode","body","pairing_code","post","isPairedToBigScreen","TrialEndReason","ErrorCode","uuidv4","replace","Number","parseInt","crypto","getRandomValues","Uint8Array","apm","pageName","SESSION_ID_KEY","LAST_SEEN_DATE_KEY","initApm","apmServerUrl","sessionExpirationDuration","distributedTracingOrigins","active","serviceName","serverUrl","breakdownMetrics","propagateTracestate","logLevel","ignoreTransactions","disableInstrumentations","flushInterval","pageLoadTransactionName","storedSessionID","localStorage","getItem","lastSeen","session_id","Date","getTime","addLabels","isPwa","standalone","matchMedia","matches","setItem","toISOString","dec2hex","dec","padStart","generateId","len","arr","Array","from","join","delay","ms","assertNever","x","isValidAndroidAppID","id","isValidHttpUrl","string","url","URL","_","protocol","MobileOS","BrowserType","OrientationMode","prefix","this","enabled","args","newArgs","unshift","log","modifyLog","info","debug","warn","RTCStatsType","historyLimit","history","rawStats","dataChannel","peerConnection","transport","iceCandidatePairs","certificates","codecs","inboundStreams","localIceCandidates","remoteIceCandidates","iceCandidates","locals","remotes","stats","attribute","rawData","kind","inboundStreamData","FindByAttribute","previousStat","transportData","transportId","newLocal","selectedCandidatePairId","inboundRTPAudioStream","inboundRTPVideoStream","bytesReceivedPerSeconds","NaN","effectiveFramesPerSecond","bytesReceived","timestamp","framesDecoded","localCertificate","localCertificateId","remoteCertificate","remoteCertificateId","selectedCandidatePair","localCandidate","localCandidateId","remoteCandidate","remoteCandidateId","codec","codecId","parseRawData","parsedData","date","parseInboundStream","pop","emit","parsedStats","ping","remoteOutboundStreams","CANDIDATE_PAIR","DATA_CHANNEL","INBOUND_RTP","LOCAL_CANDIDATE","REMOTE_CANDIDATE","REMOTE_OUTBOUND_RTP","payloadType","mimeType","clockRate","sdpFmtpLine","previousCandidatePair","candidatePair","find","pair","selected","candidate","bytesSent","dtlsCipher","dtlsState","selectedCandidatePairChanges","srtpCipher","tlsVersion","base64Certificate","fingerprint","fingerprintAlgorithm","availableIncomingBitrate","bitrateMean","availableOutgoingBitrate","consentRequestsSent","currentRoundTripTime","nominated","priority","requestsReceived","requestsSent","responsesReceived","responsesSent","totalRoundTripTime","writable","candidateType","deleted","ip","isRemote","port","networkType","address","prev","estimatedPlayoutTimestamp","headerBytesReceived","lastPacketReceivedTimestamp","mediaType","packetsLost","packetsReceived","ssrc","decoderImplementation","firCount","framerateMean","keyFramesDecoded","nackCount","pliCount","totalDecodeTime","totalInterFrameDelay","totalSquaredInterFrameDelay","frameHeight","frameWidth","framesDropped","jitterBufferDelay","jitterBufferEmittedCount","inboundStream","fecPacketsDiscarded","fecPacketsReceived","jitter","makeDummyCodec","createTransport","createInboundStream","datachannelid","dataChannelIdentifier","stack","webpackContext","req","webpackContextResolve","keys","GetShareURL","options","defaultURL","searchParams","set","referralCode","delete","ShareData","CanShare","canShare","Share","share","SERVICE_WORKER_OUTGOING_MESSAGE_TYPE","SendMessageToServiceWorker","serviceWorker","ready","controller","postMessage","parser","LOCAL_STORAGE_COUNT_PWA_LAUNCHES","orientation","PORTRAIT","manifest","pushNotifEnabled","defferedPWAPrompt","isBigScreenResolution","lastModified","showUpdateModal","add2HomeAndroidIntercept","showAgreementPopup","showSubscribeTutoPopup","showRenewTutoPopup","showSharePopup","showSubscribeBannerPopup","showTvCodePopup","isWebApp","isiOS","getOS","isAndroid","isChrome","getBrowser","isSafari","isBrowserValid","shareOptions","game","rootState","router","currentRoute","i18n","gameName","user","canDeferPWAPrompt","isAbleNotification","Notification","gaveAgreement","countPWALaunches","count","SET_BIGSCREEN_RESOLUTION","SET_ORIENTATION","innerHeight","innerWidth","LANDSCAPE","SET_MANIFEST","objValue","srcValue","stringManifest","JSON","stringify","blob","Blob","manifestURL","createObjectURL","customManifest","UPDATE_MANIFEST","SET_PUSH_NOTIF_ENABLED","SET_DEFERRED_PWA_PROMPT","SHOW_DEFERRED_PWA_PROMPT","prompt","SET_LAST_MODIFIED","SET_SHOW_UPDATE_MODAL","SHOW_ADD2HOME_ANDROID_INTERCEPT","CLOSE_SHOW_ADD2HOME_ANDROID_INTERCEPT","SHOW_AGREEMENT_POPUP","CLOSE_AGREEMENT_POPUP","SHOW_RENEW_TUTO_POPUP","CLOSE_RENEW_TUTO_POPUP","SHOW_TV_CODE_POPUP","CLOSE_TV_CODE_POPUP","SHOW_SUBSCRIBE_TUTO_POPUP","CLOSE_SUBSCRIBE_TUTO_POPUP","SHOW_SHARE_POPUP","CLOSE_SHARE_POPUP","INCREMENT_PWA_LAUNCHES","SHOW_SUBSCRIBE_BANNER_POPUP","CLOSE_SUBSCRIBE_BANNER_POPUP","addEventListener","updateAndSetManifest","permission","pushManager","getSubscription","sub","UPDATE_ENDPOINT","dynamicManifest","short_name","description","display","start_url","origin","background_color","theme_color","icons","sizes","purpose","related_applications","platform","setBigScreenResolution","fetchBigScreenResolution","createNotificationSubscription","subscribe","userVisibleOnly","applicationServerKey","subscription","removeNotificationSubscription","unsubscribe","checkPWAChanged","random","Math","round","now","substring","fetch","method","cache","lastModifiedDate","isNaN","lastPwaReload","lastPwaReloadDate","reloadPWA","reload","render","_vm","_h","$createElement","_c","_self","attrs","staticClass","_v","hideSuccessMsg","_e","hideFailMsg","domProps","codeValue","on","checkInput","close","staticRenderFns","playOnBigScreen","$store","direct","$t","play","component","VIcon","VOverlay","newSession","start","lastActive","_currentSession","_cacheStorage","LOCAL_STORAGE_KEY","SESSION_MAX_AGE","SESSION_MAX_IDLE","saveSessionToCacheStorage","session","caches","open","json","put","Response","loadSessionFromCacheStorage","res","saveSession","loadSession","item","parse","getSession","age","idle","_APIEndpoint","_user","_cgToken","_pageLoadID","_attributes","setAPIEndpoint","endpoint","isLocal","hostname","isHTTPS","setUser","setCGToken","GetDate","dd","getUTCDate","mm","getUTCMonth","yyyy","getUTCFullYear","hh","getUTCHours","min","getUTCMinutes","ss","getUTCSeconds","SSS","getUTCMilliseconds","enrichStats","entrypoint_ip","page_load_ID","user_agent","userAgent","user_id","screen","SendStats","Headers","append","SendArbitraryStats","log_type","additional_attributes","SendNavigationStats","to","SendButtonClickStats","button","gamingPageTab","PegiRating","PegiContentDescriptor","SubscriptionAccess","TriggerEvent","TriggerConditionPWA","TriggerOutput","ScreenshotType","sortGamesByName","sortGamesByDate","sort","b","releasedAt","favoriteGamesIds","favoriteGames","lastPlayedGamesIds","lastPlayedGames","subscriptions","expiredSubscriptions","getGame","appID","g","getGameById","gamesSortedAlpha","gamesSortedDate","getMaxTrialPlays","_state","getGamesFromCache","urlRequest","cachedList","getHighestSubscription","highestSub","subRanks","FULL","DISCOVERY","TRIAL","VISIBLE","UNKNOWN","access","endOfSubscriptionDate","getGameSubscription","gam","subscriptionAccess","hasSubscription","getHighestExpiredSubscription","ADD_GAMES","newGames","filter","g2","SET_FAVORITE_GAMES_IDS","gameIds","SET_FAVORITE_GAMES","SET_LAST_PLAYED_GAMES_IDS","SET_LAST_PLAYED_GAMES","ADD_GAME_TO_LAST_PLAYED","index","indexOf","ADD_GAME_TO_FAVORITES","REMOVE_GAME_FROM_FAVORITES","SET_SUBSCRIPTIONS","SET_EXPIRED_SUBSCRIPTIONS","CACHE_REQUEST","payload","cacheDate","SET_GAME_SUBCRIPTION","applyGamesLocales","rootDispatch","shortDescription","caregameBonuses","getAllGames","force","getGamesByQuery","query","cachedGames","params","getGamesByIds","ids","gamesToFetch","gamesAlreadyFetched","$or","getGameByAppID","gameInState","getGamesByGenre","genre","getGamesByPublisher","publisher","getFavoriteGames","sorted","aFavorite","bFavorite","getLastPlayedGames","aLastPlayed","bLastPlayed","getHomeSections","checkAllsubscriptions","getExpiredSubscriptions","addToFavorite","removeFromFavorite","checkGameSubscription","getRemainingTrialPlays","tries","openSubPopup","clickedSub","startTransaction","end","tempAccount","popup","listener","source","subbed","removeEventListener","playUrl","BIGSCREEN","MOBILE","URLSearchParams","search","entries","openPlay","playIframeLocation","path","rootCommit","needSubscription","atLeastOneVisible","gameSub","pwaIsInstalled","getInstalledRelatedApps","relatedApps","envSkipPWACheckAndroid","envSkipPWACheckiOS","envSkipPWACheck","hasPermission","SKIP_ADD2HOME","UserPermission","cacheStorage","CGToken","exp","TOKEN_KEY","CGTOKENS_KEY","CACHE_KEY","LOCAL_STORAGE_REFERRAL_KEY","whoamiPromise","cgtokens","showNeedAccessPopup","showNeedPartnerAuthenticationPopup","friendList","isAuthenticated","permissions","includes","isAuthPartner","isUrlSubPartner","isOtherSubPartner","SET_JWT","ADD_CGTOKEN","cgtoken","valid","expired","REMOVE_CGTOKEN","SET_CGTOKENS","DELETE_JWT","removeItem","SET_USER","UPDATE_STATS_INFO","SET_SHOW_NEED_ACCESS_POPUP","SET_SHOW_NEED_PARTNER_AUTHENTICATION_POPUP","SET_USERNAME","username","ADD_FRIENDS","friends","newFriend","friend","REMOVE_FRIEND","f","SET_REFERRAL_CODE","GIVE_AGREEMENT","logout","createTempAccount","setJWT","whoami","tempRegister","login","password","loginValidity","_context","usernameValidity","initCacheStorage","currentCGToken","isRegistered","hasReferrer","createdAt","getFriends","accountAge","maxAgeForReferrer","updateReferrer","latestToken","cgTokens","cacheResponse","cacheResponse2","convertAccount","currentURL","newRoute","pathname","fromEntries","updateUsername","users","uUID","addFriend","removeFriend","needAccess","partnerAccess","openAuthPopup","popupOpened","partnerUrlAccess","partnerOtherAccess","highestExpiredSub","setReferrer","giveAgreement","patch","onCGToken","onError","onPopupCGToken","onPopupClose","onPopupError","checkPopupClose","openUnsubPopup","onSuccess","onPopupSubUnsubSuccess","popupInterval","setInterval","closed","popupClosedProgrammatically","clearInterval","authorizedOrigins","split","every","success","Type","singleGameSections","GAME_SINGLE","GAME_VIDEO","homeSectionsPromise","link","fr","NORMAL","SET_HOME_SECTIONS","_homeSections","homeSection","order","subTitle","class","subscribed","lock","noActiveSub","isComingSoon","staticStyle","_s","playButtonText","genreLink","genreName","contentRating","toggleFavorite","canPlayOnTv","hasBigScreenPermission","playOnTv","screenshots","currentSShot","$event","lightBoxOpened","_l","screenshot","portrait","isPortrait","thumbnail","clickedScreenshot","short","fullDescription","similarGames","$router","back","image","$emit","scopedSlots","_u","fn","proxy","_t","String","Boolean","VImg","VSkeletonLoader","bannerSmall","stopPropagation","preventDefault","clickPlayButton","arguments","default","components","CardL","VBtn","stepper","stepperArray","k","activeStepper","ref","notitle","childrenCount","el","$refs","horizontalScroll","$el","maxScroll","scrollWidth","clientWidth","floor","scrollLeft","max","$children","calculateStepper","HorizontalScroll","bordered","showSubBanner","click","openPopup","SubscribeBanner","VBottomNavigation","disableLink","bannerBigNoTitle","hidden","videoURL","showPlayButton","fake","CardGameL","pause","video","currentTime","contains","children","videoSource","tagName","dataset","load","appId","videoUrl","headerVideo","ListedGame","accessUpdateInterval","favorite","newValue","gameSubscription","$route","VUE_APP_GAME_ACCESS_UPDATE_INTERVAL","setupAccessUpdate","autoplay","pegi","rating","gameID","$te","urlSegment","toLowerCase","CardScreenshot","CoolLightBox","HomeScroller","TapBar","CardGameVideo","EnterCodePopup","VContainer","reset","streamingmode","isBigScreen","ListType","style","backgroundImage","backgroundColor","directives","rawName","expression","currentTab","imageLink","tab","currentTabIndex","_tab","loaded","genreLoaded","defaultTabs","colorGradient1","colorGradient2","ALL_GAMES","theTabs","fetchGames","GENRE","headerImg","tabElem","tabs","elem","parentElement","elemAbsoluteLeft","offsetLeft","elemAbsoluteRight","offsetWidth","tabIndex","elems","querySelectorAll","isFullyVisible","scrollIntoView","behavior","block","inline","loadGames","$nextTick","scrollToTab","initGenres","tabName","findIndex","toLocaleLowerCase","highestSubscription","endSubDate","clickedLink","isTempAccount","switchColor","model","callback","$$v","hasNotif","isBigscreenResolution","showFaq","hasDiscoverySubscription","VUE_APP_PROFILE_SHOW_TNC","format","toLocaleDateString","VSwitch","move","doMove","checkBeforeMove","_rej","OGLTapBar","section","observeVideoCard","firstSection","isFirst","isTypeBig","atLeastOneGame","isTypeNormal","isTypeFavorite","isTypeLastPlayed","isTypeGameSingle","isTypeGameVideo","transmitVideoCardUpdate","transmitVideoCard","bannerBigWithTitle","cat","colorGradient3","listedCategories","CardCategory","homeBannerSmall","CardM","CardGameM","HomeListedGame","homeSectionGames","videoCard","FAVORITE","LAST_PLAYED","getGamesFromHomeSection","BIG","CATEGORY_LIST","CATEGORY_SINGLE","CardGameXL","CardShowtime","CategoryList","Banner","HomeCardGameVideo","everyVideoElement","intersectSquareHeight","screenMiddle","videoNeedsLoading","videoElement","loadVideo","pauseVideo","playVideo","restartVideo","checkIntersection","top","bottom","intersectingVideos","firstVideo","videoRect","getBoundingClientRect","firstVideoRect","y","rectA","y1","y2","rectB","scrollY","playing","element","h","OLD","HomeSectionComponent","HomeSection","showLogin","showRegister","beforeMoveLeave","beforeMoveContinue","beforeMove","form","$set","formRules","required","resetError","showPassword","disabled","working","validate","loginResult","VForm","VProgressCircular","VTextField","validationRegex","userNameAlreadyTakenError","checkUsernameDebounced","loginAlreadyTakenError","checkLoginDebounced","register","v","timerId","checkUsername","checkLogin","friendID","beforeMovePromise","showBeforeMoveWarning","LoginForm","RegisterForm","TapBarMoveWarning","routes","Game","meta","noHandleNotch","PlayIframe","Categories","OneGameProfile","Profile","Logout","skipAuth","OneGameLobby","Home","redirect","routeHistory","afterEach","_from","fallback","routeBeforeBack","fullPath","MAX_BACK_ATTEMPTS","attempts","backWorked","hasMoved","go","routeAfterBack","base","scrollBehavior","savedPosition","hasQueryParams","route","beforeEach","next","referrer","hadCGToken","assign","shouldKeepAlive","dialog","buttonText","VCard","VDialog","VCol","VRow","VCardActions","step","icon","skip","showButtonClose","useLogo","install","showGetTempAccountPopup","onReady","exitCode","BROWSER_INCOMPATIBLE","Alert","CONNECTION_LOST","CONNECTION_TIMEOUT","NO_CAPACITY_AVAILABLE","PWA_REQUIRED","SAVE_PENDING","SAVE_RESTORE_ERROR","SERVICE_NOT_AVAILABLE","SPEEDTEST_FAILED","BS_SPEEDTEST_FAILED","USER_AFK","USER_ALREADY_PAIRED","USER_NOT_AUTHORIZED","USER_UNFOCUS_AFK","USER_NEW_SESSION","QUEUE_TIMEOUT","BS_DISCONNECTED","showError","isIframe","opener","listenToMessages","dostuff","setUpApm","pageLoadTransansaction","getCurrentTransaction","loadingSpan","startSpan","waitForRouterReady","subscriptionStatusPromise","expiredSubscriptionsPromise","VUE_APP_GLOBAL_ACCESS_UPDATE_INTERVAL","catch","loadedLobby","checkPWANeedReload","hideNativePWABanner","setViewHeight","debouncedSetHeight","$once","vh","documentElement","setProperty","VUE_APP_SESSION_EXPIRATION_DURATION","apmEndpoint","AlertDialog","WrongBrowserPopup","NeedAccessPopup","NeedPartnerAuthenticationPopup","Add2HomeTuto","Add2HomeAndroidIntercept","UpdateModal","SubscribeTutoPopup","RenewTutoPopup","AgreementPopup","SharePopup","SubscribeBannerPopup","VApp","VMain","customIcons","unlock","iconfont","values","tapBarHome","tapBarCategory","tapBarProfile","tapBarLeaderboard","playButton","playCircleButton","tvButton","backButton","favoriteButton","favoriteButtonAdded","showMore","showLess","profileAddGames","add2HomeTutoOtherStep1","add2HomeTutoOtherStep2","add2HomeTutoAndroidChromeStep1","add2HomeTutoAndroidChromeStep2","visibility","visibilityOff","shareButton","newShareButton","starButton","unstarButton","lockIcon","unlockIcon","validIcon","failedIcon","theme","dark","current","isSecureContext","productionTip","errorHandler","_info","original","vuetify","$mount","NetworkState","loadLocaleMessages","matched"],"mappings":"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","file":"js/app.6ed53b11.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-16c5cde1\":\"c7d98f86\",\"chunk-d77110e2\":\"9d865db5\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-16c5cde1\":1,\"chunk-d77110e2\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-16c5cde1\":\"21f481a5\",\"chunk-d77110e2\":\"f7637229\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardM.vue?vue&type=style&index=0&id=fcf0c436&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./account_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=153a7d04&lang=scss&scoped=true&\"","import { defineModule } from \"direct-vuex\";\nimport axios, { AxiosResponse } from \"axios\";\n\nimport Vuei18n from \"@/plugins/i18n\";\nimport { moduleActionContext, axiosInstance } from \"@/store\";\n\ninterface Language {\n code: string;\n jsonLocaleFileUrl: string;\n}\n\nexport interface LanguageState {\n language?: string;\n availableLanguages: Language[];\n}\n\nlet promise: Promise> | undefined;\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n language: undefined,\n availableLanguages: [],\n } as LanguageState,\n getters: {\n availableLanguageCodes: (state) => state.availableLanguages.map((language) => language.code),\n },\n mutations: {\n SET_LANGUAGE(state: LanguageState, lang: string) {\n state.language = lang;\n Vuei18n.locale = lang;\n },\n SET_AVAILABLE_LANGUAGES(state: LanguageState, availableLanguages: Language[]) {\n state.availableLanguages = availableLanguages;\n },\n },\n actions: {\n setLanguage(context, prefferdLanguages: readonly string[]) {\n const { getters, commit } = moduleActionContext(context, module);\n\n if (typeof prefferdLanguages === \"string\") commit.SET_LANGUAGE(prefferdLanguages);\n else {\n let language: string | undefined = undefined;\n prefferdLanguages?.some((l) =>\n getters.availableLanguageCodes.some((sl): boolean => {\n const match = new RegExp(sl, \"gi\").test(l);\n if (match) language = sl;\n return match;\n })\n );\n if (!language) language = Vuei18n.fallbackLocale.toString();\n commit.SET_LANGUAGE(language);\n }\n },\n async init(context): Promise {\n const { state, commit, dispatch } = moduleActionContext(context, module);\n\n if (state.availableLanguages.length !== 0) return;\n if (promise) return;\n promise = axiosInstance.get(`/api/v1/languages`);\n const response = await promise;\n commit.SET_AVAILABLE_LANGUAGES(response.data);\n\n await dispatch.setLanguage(navigator.languages);\n\n await dispatch.loadMessages();\n },\n async loadMessages(context) {\n const { state } = moduleActionContext(context, module);\n\n for (const language of state.availableLanguages) {\n try {\n if (!language.jsonLocaleFileUrl) return;\n const response = await axios.get(language.jsonLocaleFileUrl);\n Vuei18n.mergeLocaleMessage(language.code, response.data);\n } catch (e) {\n console.error(e);\n }\n }\n },\n },\n});\n\nexport default module;\n","import { defineModule } from \"direct-vuex\";\n\nimport { LocaleMessageObject } from \"vue-i18n\";\n\nimport { moduleActionContext, axiosInstance as axios } from \"@/store/\";\nimport VueI18n from \"@/plugins/i18n\";\nimport { AxiosResponse } from \"axios\";\n\ntype Locale = \"fr\" | \"en\" | string;\n\ninterface GameListLocalizedClientInfo {\n title: string;\n}\n\nexport interface GameList {\n _id: string;\n name: string;\n urlSegment: string;\n games: string[];\n localizedClientInfo: { [key in Locale]: GameListLocalizedClientInfo };\n}\n\nlet gameListsPromise: Promise> | undefined = undefined;\n\nexport interface GameListsState {\n gameLists: GameList[];\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n gameLists: [],\n } as GameListsState,\n mutations: {\n SET_GAME_LISTS(state, gameLists: GameList[]) {\n state.gameLists = gameLists;\n },\n },\n actions: {\n async getGameLists(context): Promise {\n const { rootGetters, state, commit } = moduleActionContext(context, module);\n try {\n if (state.gameLists.length > 0) return state.gameLists;\n if (!gameListsPromise) gameListsPromise = axios.get(`/api/v1/gamelists`);\n const { data } = await gameListsPromise;\n commit.SET_GAME_LISTS(data);\n const locales: Locale[] = rootGetters.language.availableLanguageCodes;\n locales.forEach((locale) => {\n const messages: LocaleMessageObject = {};\n state.gameLists.forEach(\n (a) => (messages[`gameLists.${a._id}.title`] = a?.localizedClientInfo?.[locale]?.title)\n );\n VueI18n.mergeLocaleMessage(locale, messages);\n });\n return state.gameLists;\n } catch (error) {\n console.error(error);\n commit.SET_GAME_LISTS([]);\n return state.gameLists;\n }\n },\n },\n});\n\nexport default module;\n","import { defineModule } from \"direct-vuex\";\n\nimport { LocaleMessageObject } from \"vue-i18n\";\n\nimport { moduleActionContext, axiosInstance as axios } from \"@/store/\";\nimport VueI18n from \"@/plugins/i18n\";\nimport { AxiosResponse } from \"axios\";\n\ninterface GenreLocalizedClientInfo {\n name: string;\n bannerImg: string;\n}\n\ntype Locale = \"fr\" | \"en\" | string;\n\nexport class Genre {\n _id: string;\n name: string;\n enabled: boolean;\n headerImg: string;\n localizedClientInfo: { [key in Locale]: GenreLocalizedClientInfo };\n colorGradient1?: string;\n colorGradient2?: string;\n urlSegment?: string;\n}\n\nlet genresPromise: Promise> | undefined = undefined;\n\nexport interface GenresState {\n genres: Genre[];\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n genres: [],\n } as GenresState,\n mutations: {\n SET_GENRES(state, genres: Genre[]) {\n state.genres = genres;\n },\n },\n actions: {\n async getGenres(context): Promise {\n const { rootGetters, state, commit } = moduleActionContext(context, module);\n try {\n if (state.genres.length > 0) return state.genres;\n if (!genresPromise) genresPromise = axios.get(`/api/v1/genres`);\n const { data } = await genresPromise;\n commit.SET_GENRES(data);\n const locales: Locale[] = rootGetters.language.availableLanguageCodes;\n locales.forEach((locale) => {\n const messages: LocaleMessageObject = {};\n state.genres.forEach((a) => (messages[`genres.${a._id}.name`] = a?.localizedClientInfo?.[locale]?.name));\n VueI18n.mergeLocaleMessage(locale, messages);\n });\n return state.genres;\n } catch (error) {\n console.error(error);\n commit.SET_GENRES([]);\n return state.genres;\n }\n },\n },\n});\n\nexport default module;\n","import { defineModule } from \"direct-vuex\";\n\nimport { moduleActionContext, axiosInstance as axios } from \"@/store/\";\nimport { AxiosResponse } from \"axios\";\n\nexport interface Publisher {\n _id: string;\n name: string;\n}\n\nlet publishersPromise: Promise> | undefined = undefined;\n\nexport interface PublishersState {\n publishers: Publisher[];\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n publishers: [],\n } as PublishersState,\n\n mutations: {\n SET_PUBLISHERS(state, publishers: Publisher[]) {\n state.publishers = publishers;\n },\n },\n actions: {\n async getPublishers(context): Promise {\n const { commit, state } = moduleActionContext(context, module);\n try {\n if (state.publishers.length > 0) return state.publishers;\n if (!publishersPromise) publishersPromise = axios.get(`/api/v1/publishers`);\n const { data } = await publishersPromise;\n commit.SET_PUBLISHERS(data);\n return state.publishers;\n } catch (error) {\n console.error(error);\n commit.SET_PUBLISHERS([]);\n return state.publishers;\n }\n },\n },\n});\n\nexport default module;\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport { createDirectStore } from \"direct-vuex\";\nimport { RawLocation } from \"vue-router\";\nimport axios from \"axios\";\n\nimport authentication from \"./modules/authentication\";\nimport language from \"./modules/language\";\nimport games from \"./modules/games\";\nimport homeSections from \"./modules/homesections\";\nimport gameLists from \"./modules/gamelists\";\nimport genres from \"./modules/genres\";\nimport publishers from \"./modules/publishers\";\nimport mobile from \"./modules/mobile\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport bigscreen from \"./modules/bigscreen\";\n\nStatsManager.setAPIEndpoint(process.env.VUE_APP_API_ENDPOINT);\n\nVue.use(Vuex);\n\ninterface AlertDialog {\n show: boolean;\n title?: string;\n text: string;\n buttonText?: string;\n onClose?: () => void;\n}\n\ninterface Add2HomeTuto {\n show: boolean;\n onSkip?: () => void;\n onClose?: () => void;\n}\n\nexport interface RootState {\n apiEndpoint: string;\n isLoading: boolean;\n requestedRoute: RawLocation;\n alert: AlertDialog;\n showWrongBrowserPopup: boolean;\n add2HomeTuto: Add2HomeTuto;\n}\n\nconst { store, rootActionContext, moduleActionContext, rootGetterContext, moduleGetterContext } = createDirectStore({\n strict: process.env.NODE_ENV !== \"production\",\n modules: {\n authentication,\n language,\n games,\n mobile,\n homeSections,\n gameLists,\n genres,\n publishers,\n bigscreen,\n },\n state: {\n apiEndpoint: process.env.VUE_APP_API_ENDPOINT,\n isLoading: false,\n requestedRoute: \"\",\n alert: {\n show: false,\n },\n add2HomeTuto: {\n show: false,\n },\n showWrongBrowserPopup: false,\n } as RootState,\n getters: {},\n mutations: {\n SET_LOADING(state, isLoading: boolean) {\n state.isLoading = isLoading;\n },\n SET_REQUESTED_ROUTE(state, requestedRoute: RawLocation) {\n state.requestedRoute = requestedRoute;\n },\n SHOW_ALERT(state, { title, text, onClose }: { title?: string; text: string; onClose?: () => void }) {\n state.alert.title = title;\n state.alert.text = text;\n state.alert.onClose = onClose;\n state.alert.show = true;\n },\n CLOSE_ALERT(state) {\n if (state.alert.show) {\n state.alert.onClose?.();\n state.alert.show = false;\n }\n },\n SHOW_WRONG_BROWSER_POPUP(state) {\n state.showWrongBrowserPopup = true;\n },\n SHOW_ADD2HOME_TUTO(state, { onSkip, onClose }: { onSkip?: () => void; onClose?: () => void }) {\n state.add2HomeTuto.onSkip = onSkip;\n state.add2HomeTuto.onClose = onClose;\n state.add2HomeTuto.show = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(location.href, \"ADD2HOME_TUTO\");\n },\n CLOSE_ADD2HOME_TUTO(state) {\n if (state.add2HomeTuto.show) {\n state.add2HomeTuto.onClose?.();\n state.add2HomeTuto.show = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"ADD2HOME_TUTO\", location.href);\n }\n },\n },\n actions: {},\n});\n\n// Export the direct-store instead of the classic Vuex store.\nexport default store;\n\n// The following exports will be used to enable types in the\n// implementation of actions.\nexport { rootActionContext, moduleActionContext, rootGetterContext, moduleGetterContext };\n\n// The following lines enable types in the injected store '$store'.\nexport type AppStore = typeof store;\ndeclare module \"vuex\" {\n interface Store {\n direct: AppStore;\n }\n}\n\nexport const axiosInstance = axios.create();\n\naxiosInstance.interceptors.request.use((config) => {\n config.baseURL = store.state.apiEndpoint;\n const token = store.getters.authentication.jwt;\n if (!config.headers.Authorization && token) config.headers.Authorization = `Bearer ${token}`;\n return config;\n});\n\naxiosInstance.interceptors.response.use(undefined, (error) => {\n if (error?.response?.status === 429) {\n // TODO Show popup to tell people that they sent too many requests?\n }\n return Promise.reject(error);\n});\n","import { defineModule } from \"direct-vuex\";\nimport { moduleActionContext } from \"..\";\nimport { axiosInstance as axios } from \"@/store/\";\nimport { AxiosResponse } from \"axios\";\n\nexport enum StreamingMode {\n BIGSCREEN = \"BIGSCREEN\",\n MOBILE = \"MOBILE\",\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n bigscreenIsPaired: false,\n },\n getters: {\n isBigscreenPaired: (state) => state.bigscreenIsPaired,\n },\n mutations: {\n TOGGLE_BIGSCREEN_IS_PAIRED(state, bool: boolean) {\n state.bigscreenIsPaired = bool;\n },\n },\n actions: {\n async sendPairingCode(context, code: string) {\n const { commit } = moduleActionContext(context, module);\n\n const body = { pairing_code: code };\n let response: AxiosResponse;\n try {\n response = await axios.post(`/api/v1/bigScreen/pairingCode`, body);\n } catch (err) {\n console.error(err);\n commit.TOGGLE_BIGSCREEN_IS_PAIRED(false);\n return false;\n }\n if (response.status === 200) {\n commit.TOGGLE_BIGSCREEN_IS_PAIRED(true);\n return true;\n } else {\n commit.TOGGLE_BIGSCREEN_IS_PAIRED(false);\n return false;\n }\n },\n\n async isPairedToBigScreen(context) {\n const { commit } = moduleActionContext(context, module);\n try {\n const response = await axios.get(`/api/v1/bigScreen/isPaired`);\n if (response.status === 200) {\n commit.TOGGLE_BIGSCREEN_IS_PAIRED(true);\n }\n } catch (e) {\n commit.TOGGLE_BIGSCREEN_IS_PAIRED(false);\n }\n },\n },\n});\n\nexport default module;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shareIcon.vue?vue&type=style&index=0&id=84742512&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4c3cfd58&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lockIcon.vue?vue&type=style&index=0&id=6fa0d682&lang=scss&scoped=true&\"","export enum TrialEndReason {\n /**\n * The trial ended because the user won the trial level(s).\n */\n WIN,\n\n /**\n * The trial ended because the user lost the trial level(s).\n */\n LOSE,\n\n /**\n * The trial ended because the user finished the trial level(s).\n */\n ENDED,\n\n /**\n * The trial ended because there is no time remaining.\n */\n TIMEOUT,\n}\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=18cd8ef8&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBannerPopup.vue?vue&type=style&index=0&id=1be7917b&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardScreenshot.vue?vue&type=style&index=0&id=cb2a7c9e&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=2ffb3c63&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayIframe.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=style&index=0&id=40a040e3&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./star_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=78b3fb73&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more_vert_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=07de4529&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4c1ee3ee&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBarMoveWarning.vue?vue&type=style&index=0&id=b0939d12&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeTutoPopup.vue?vue&type=style&index=0&id=48bcc126&lang=scss&scoped=true&\"","export enum ErrorCode {\n /**\n * The current browser is not compatible with CareGame.\n */\n BROWSER_INCOMPATIBLE,\n\n /**\n * The connection to the CareGame service has been lost.\n */\n CONNECTION_LOST,\n\n /**\n * The connection to the CareGame service took to long to succeed and has been aborted.\n */\n CONNECTION_TIMEOUT,\n\n /**\n * No capacity was found to serve this user.\n */\n NO_CAPACITY_AVAILABLE,\n\n /**\n * The current browser requires the page to be running as a PWA but the page is not running as such.\n */\n PWA_REQUIRED,\n\n /**\n * The previous save of the user is still being saved.\n */\n SAVE_PENDING,\n\n /**\n * The previous save of the user could not be retrieved.\n */\n SAVE_RESTORE_ERROR,\n\n /**\n * The CareGame service is not available.\n */\n SERVICE_NOT_AVAILABLE,\n\n /**\n * The speedtest showed that the user doesn't have a good enough connection to play.\n */\n SPEEDTEST_FAILED,\n\n /**\n * The speedtest showed that the user doesn't have a good enough connection to play on bigscreen.\n */\n BS_SPEEDTEST_FAILED,\n\n /**\n * The user has not touched the screen for a while and has been set as AFK.\n */\n USER_AFK,\n\n /**\n * The user is already playing on another device.\n */\n USER_ALREADY_PAIRED,\n\n /**\n * The user is trying to play a game they don't have access to.\n */\n USER_NOT_AUTHORIZED,\n\n /**\n * The user has switch app and has been set as AFK.\n */\n USER_UNFOCUS_AFK,\n\n /**\n * A new session has been launched with the same account.\n */\n USER_NEW_SESSION,\n\n /**\n * The user was in the queue for too long.\n */\n QUEUE_TIMEOUT,\n\n /**\n * The bigscreen peer disconnected\n */\n BS_DISCONNECTED,\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameL.vue?vue&type=style&index=0&id=6b063c2a&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePopup.vue?vue&type=style&index=0&id=31bd09a6&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./play_arrow_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=3ba5c15b&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardL.vue?vue&type=style&index=0&id=d5737d46&lang=scss&scoped=true&\"","import { init, ApmBase } from \"@elastic/apm-rum\";\n\nfunction uuidv4(): string {\n // Reference: https://stackoverflow.com/a/61011303/2780319\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (s) => {\n const c = Number.parseInt(s, 10);\n return (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16);\n });\n}\n\nlet apm: ApmBase | undefined = undefined;\n\nconst pageName = \"Lobby-page-load\";\nconst SESSION_ID_KEY = \"sessionID\";\nexport const LAST_SEEN_DATE_KEY = \"lastSeen\";\n\nexport async function initApm(\n apmServerUrl: string,\n sessionExpirationDuration: number,\n distributedTracingOrigins: (string | RegExp)[] | undefined,\n active = true\n): Promise {\n apm = init({\n // Set required service name (allowed characters: a-z, A-Z, 0-9, -, _, and space)\n serviceName: \"CareGame-SDK\",\n // Set custom APM Server URL (default: http://localhost:8200)\n serverUrl: apmServerUrl,\n // environment: \"toto\",\n active: active,\n breakdownMetrics: true,\n distributedTracingOrigins: distributedTracingOrigins,\n propagateTracestate: true,\n logLevel: \"trace\",\n ignoreTransactions: [`*/send_stat/gamer`],\n disableInstrumentations: [\"fetch\", \"xmlhttprequest\", \"eventtarget\"],\n flushInterval: 10,\n pageLoadTransactionName: pageName,\n });\n let session_id: string;\n const storedSessionID = localStorage.getItem(SESSION_ID_KEY);\n const lastSeen = localStorage.getItem(LAST_SEEN_DATE_KEY);\n if (\n !storedSessionID ||\n (lastSeen && (new Date().getTime() - new Date(lastSeen).getTime()) / 1000 > sessionExpirationDuration)\n )\n session_id = uuidv4();\n else session_id = storedSessionID;\n apm.addLabels({ session_id });\n apm.addLabels({\n isPwa:\n (window.navigator as any).standalone ||\n window.matchMedia(\"(display-mode: standalone)\").matches ||\n window.matchMedia(\"(display-mode: fullscreen)\").matches,\n });\n // setSessionID(session_id);\n localStorage.setItem(SESSION_ID_KEY, session_id);\n localStorage.setItem(LAST_SEEN_DATE_KEY, new Date().toISOString());\n return apm;\n}\n\nexport default apm;\n","// See https://stackoverflow.com/a/27747377/2780319\n// dec2hex :: Integer -> String\n// i.e. 0-255 -> '00'-'ff'\n/**\n * Convert a decimal number to a hexadecimal string.\n * @param dec The decimal number to convert.\n * @returns The hexadecimal string.\n */\nfunction dec2hex(dec: number): string {\n return dec.toString(16).padStart(2, \"0\");\n}\n\n/**\n * Generate a random id. See https://stackoverflow.com/a/27747377/2780319\n * @param len The length of the id to generate. Defaults to 40.\n * @returns The generated id.\n */\nexport function generateId(len = 40): string {\n const arr = new Uint8Array(len / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, dec2hex).join(\"\");\n}\n\n/**\n * Generate a random UUID v4.\n * Reference: https://stackoverflow.com/a/61011303/2780319\n * @returns The generated UUID v4.\n */\nexport function uuidv4(): string {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (s) => {\n const c = Number.parseInt(s, 10);\n return (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16);\n });\n}\n\n/**\n * Wait for the given number of milliseconds. It's setTimeout wrapped in a promise.\n * @param ms The number of milliseconds to wait.\n * @returns A promise that resolves after the given number of milliseconds.\n */\nexport function delay(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Assert that the given value is never.\n * @param x The value to assert.\n * @throws If the value is not never.\n */\nexport function assertNever(x: never): never {\n throw new Error(`Unexpected object: ${x}`);\n}\n\n/**\n * Check if the given string is a valid Android Application ID.\n * @param id The Android Application ID to test.\n * @returns True if the given string is a valid Android Application ID, false otherwise.\n */\nexport function isValidAndroidAppID(id: string): boolean {\n // Should matches Android Application ID following these rules:\n // • It must have at least two segments (one or more dots).\n // • Each segment must start with a letter.\n // • All characters must be alphanumeric or an underscore [a-zA-Z0-9_].\n return /^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/.test(id);\n}\n\n/**\n * Check if the given string is a valid HTTP URL.\n * @param string The string to test.\n * @returns True if the given string is a valid HTTP URL, false otherwise.\n */\nexport function isValidHttpUrl(string: string): boolean {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n\n/**\n * Check if we are running in a web app / pwa.\n * @returns True if the current browser is a web app / pwa, false otherwise.\n */\nexport function isWebApp(): boolean {\n return (\n (window.navigator as any).standalone == true ||\n window.matchMedia(\"(display-mode: standalone)\").matches ||\n window.matchMedia(\"(display-mode: fullscreen)\").matches\n );\n}\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ios_share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=5eb0eae8&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardShowtime.vue?vue&type=style&index=0&id=78f79f02&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./visibility_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=d8fa4484&lang=scss&scoped=true&\"","import { UAParser } from \"ua-parser-js\";\n\nimport Logger from \"../Logger\";\n\nconst parser = new UAParser();\n\nexport enum MobileOS {\n ANDROID,\n IOS,\n OTHER,\n}\n\nexport enum BrowserType {\n CHROME,\n CHROME_WEBVIEW,\n EDGE,\n FACEBOOK,\n FIREFOX,\n OPERA,\n SAFARI,\n SAMSUNG,\n OTHER,\n}\n\nexport enum OrientationMode {\n PORTRAIT,\n LANDSCAPE,\n}\n\nexport function isMobile(): boolean {\n return (\n parser.getDevice().type === \"mobile\" ||\n parser.getDevice().type === \"tablet\" ||\n parser.getDevice().type === \"embedded\"\n );\n}\n\nexport function getMobileOS(): MobileOS {\n if (parser.getOS().name === \"Android\") return MobileOS.ANDROID;\n if (parser.getOS().name === \"iOS\") return MobileOS.IOS;\n return MobileOS.OTHER;\n}\n\nexport function getBrowserType(): BrowserType {\n Logger.log(\"BROWSER\", parser.getBrowser().name);\n if (parser.getBrowser().name === \"Chrome\") return BrowserType.CHROME;\n if (parser.getBrowser().name === \"Chrome WebView\") return BrowserType.CHROME_WEBVIEW;\n if (parser.getBrowser().name === \"Mobile Safari\") return BrowserType.SAFARI;\n if (parser.getBrowser().name === \"Samsung Browser\") return BrowserType.SAMSUNG;\n if (parser.getBrowser().name === \"Opera\") return BrowserType.OPERA;\n if (parser.getBrowser().name === \"Firefox\") return BrowserType.FIREFOX;\n if (parser.getBrowser().name === \"Edge\") return BrowserType.EDGE;\n if (parser.getBrowser().name === \"Facebook\") return BrowserType.FACEBOOK;\n return BrowserType.OTHER;\n}\n\nexport function getMobileOrientation(): OrientationMode {\n return window.innerHeight > window.innerWidth ? OrientationMode.PORTRAIT : OrientationMode.LANDSCAPE;\n}\n\nexport function isFacebookApp(): boolean {\n return parser.getUA().indexOf(\"FBAN\") > -1 || parser.getUA().indexOf(\"FBAV\") > -1;\n}\n\nexport function isWebApp(): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (\n (window.navigator as any).standalone ||\n window.matchMedia(\"(display-mode: standalone)\").matches ||\n window.matchMedia(\"(display-mode: fullscreen)\").matches\n );\n}\n","class Logger {\n private enabled: boolean;\n private prefix = \"CG-SDK\";\n\n public setPrefix(prefix?: string): void {\n this.prefix = prefix || \"\";\n }\n\n public setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n }\n\n private modifyLog(args: unknown[]): unknown[] {\n const newArgs = Array.prototype.slice.call(args);\n\n if (this.prefix) newArgs.unshift(`[${this.prefix}] -`);\n\n return newArgs;\n }\n\n public log(...args: unknown[]): void {\n if (this.enabled) console.log(...this.modifyLog(args));\n }\n\n public info(...args: unknown[]): void {\n if (this.enabled) console.info(...this.modifyLog(args));\n }\n\n public debug(...args: unknown[]): void {\n if (this.enabled) console.debug(...this.modifyLog(args));\n }\n\n public warn(...args: unknown[]): void {\n if (this.enabled) console.warn(...this.modifyLog(args));\n }\n\n public error(...args: unknown[]): void {\n if (this.enabled) console.error(...this.modifyLog(args));\n }\n}\n\nexport default new Logger();\n","export enum RTCStatsType {\n CANDIDATE_PAIR = \"candidate-pair\",\n LOCAL_CANDIDATE = \"local-candidate\",\n REMOTE_CANDIDATE = \"remote-candidate\",\n INBOUND_RTP = \"inbound-rtp\",\n REMOTE_OUTBOUND_RTP = \"remote-outbound-rtp\",\n DATA_CHANNEL = \"data-channel\",\n}\n\nexport interface RTCStats {\n id: string;\n timestamp: number;\n type: RTCStatsType;\n}\n\nexport interface RTCIceCandidatePairStatsData extends RTCStats {\n bytesReceived: number;\n bytesSent: number;\n lastPacketReceivedTimestamp: number;\n lastPacketSentTimestamp: number;\n localCandidateId: string;\n nominated: boolean;\n priority: number;\n readable: boolean;\n remoteCandidateId: string;\n selected: boolean;\n state: RTCStatsIceCandidatePairState;\n timestamp: number;\n transportId: string;\n type: RTCStatsType.CANDIDATE_PAIR;\n writable: boolean;\n}\n\nexport interface RTCDataChannelStats extends RTCStats {\n bytesReceived: number;\n bytesSent: number;\n dataChannelIdentifier: number;\n label: string;\n messagesReceived: number;\n messagesSent: number;\n protocol: string;\n state: RTCDataChannelState;\n type: RTCStatsType.DATA_CHANNEL;\n}\n\nexport interface RTCIceCandidatePairStats extends RTCIceCandidatePairStatsData {\n localCandidateId: string;\n remoteCandidateId: string;\n transportId: string;\n}\n\nexport interface RTCIceCandidateStatsData extends RTCStats {\n address: string;\n candidateType: RTCIceCandidateType;\n port: number;\n priority: number;\n protocol: RTCIceProtocol;\n type: RTCStatsType.LOCAL_CANDIDATE | RTCStatsType.REMOTE_CANDIDATE;\n}\n\nexport interface RTCIceCandidateLocalStats extends RTCIceCandidateStatsData {\n type: RTCStatsType.LOCAL_CANDIDATE;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface RTCIceCandidateRemoteStats extends RTCIceCandidateStatsData {\n type: RTCStatsType.REMOTE_CANDIDATE;\n}\n\nexport interface RTCInboundRTPStreamStats extends RTCStats {\n bytesReceived: number;\n jitter: number;\n kind: \"audio\" | \"video\";\n mediaType: \"audio\" | \"video\";\n nackCount: number;\n packetsLost: number;\n packetsReceived: number;\n remoteId: string;\n ssrc: number;\n type: RTCStatsType.INBOUND_RTP;\n jitterBufferDelay: number;\n jitterBufferEmittedCount: number;\n}\n\nexport interface RTCInboundRTPAudioStreamStats extends RTCInboundRTPStreamStats {\n fecPacketsDiscarded: number;\n fecPacketsReceived: number;\n kind: \"audio\";\n mediaType: \"audio\";\n}\n\nexport interface RTCInboundRTPVideoStreamStats extends RTCInboundRTPStreamStats {\n bitrateMean: number;\n bitrateStdDev: number;\n discardedPackets: number;\n firCount: number;\n framerateMean: number;\n framerateStdDev: number;\n framesDecoded: number;\n kind: \"video\";\n mediaType: \"video\";\n pliCount: number;\n frameHeight: number;\n frameWidth: number;\n framesDropped: number;\n}\n\nexport interface RTCRemoteOutboundRTPStats extends RTCStats {\n bytesSent: number;\n kind: \"audio\" | \"video\";\n localId: string;\n mediaType: \"audio\" | \"video\";\n type: RTCStatsType.REMOTE_OUTBOUND_RTP;\n packetsSent: number;\n remoteTimestamp: number;\n ssrc: string;\n}\n\nexport interface RTCRemoteOutboundRTPVideoStats extends RTCRemoteOutboundRTPStats {\n kind: \"video\";\n mediaType: \"video\";\n}\n\nexport interface RTCRemoteOutboundRTPAudioStats extends RTCRemoteOutboundRTPStats {\n kind: \"audio\";\n mediaType: \"audio\";\n}\n","import { EventEmitter } from \"events\";\n\nimport * as WebRTCStatsParser from \"./WebRTCStatsParser\";\nimport * as DefaultRTCStatsTypes from \"./DefaultRTCStatsTypes\";\n\nexport interface DefaultRawData {\n certificates: DefaultRTCStatsTypes.RTCCertificateStats[];\n codecs: DefaultRTCStatsTypes.RTCCodecStats[];\n dataChannel: DefaultRTCStatsTypes.RTCDataChannelStats;\n iceCandidatePairs: DefaultRTCStatsTypes.RTCIceCandidatePairStats[];\n iceCandidates: {\n locals: DefaultRTCStatsTypes.RTCIceCandidateLocalStats[];\n remotes: DefaultRTCStatsTypes.RTCIceCandidateRemoteStats[];\n };\n inboundStreams: DefaultRTCStatsTypes.RTCInboundRTPStreamStats[];\n peerConnection: DefaultRTCStatsTypes.RTCPeerConnectionStats;\n transport: DefaultRTCStatsTypes.RTCTransportStats;\n}\n\nexport class DefaultWebRTCStatsParser extends EventEmitter implements WebRTCStatsParser.IStatsParser {\n private readonly historyLimit = 100;\n private readonly history: WebRTCStatsParser.ParsedWebRTCStats[];\n\n constructor() {\n super();\n this.history = [];\n }\n\n private parseRawData(rawStats: DefaultRTCStatsTypes.RTCStats[]): DefaultRawData {\n const iceCandidatePairs: DefaultRTCStatsTypes.RTCIceCandidatePairStats[] = [];\n const certificates: DefaultRTCStatsTypes.RTCCertificateStats[] = [];\n const codecs: DefaultRTCStatsTypes.RTCCodecStats[] = [];\n let dataChannel!: DefaultRTCStatsTypes.RTCDataChannelStats;\n const inboundStreams: DefaultRTCStatsTypes.RTCInboundRTPStreamStats[] = [];\n let peerConnection!: DefaultRTCStatsTypes.RTCPeerConnectionStats;\n const localIceCandidates: DefaultRTCStatsTypes.RTCIceCandidateLocalStats[] = [];\n const remoteIceCandidates: DefaultRTCStatsTypes.RTCIceCandidateRemoteStats[] = [];\n let transport!: DefaultRTCStatsTypes.RTCTransportStats;\n rawStats.forEach((s) => {\n switch (s.type) {\n case \"candidate-pair\":\n iceCandidatePairs?.push(s as DefaultRTCStatsTypes.RTCIceCandidatePairStats);\n break;\n case \"certificate\":\n certificates?.push(s as DefaultRTCStatsTypes.RTCCertificateStats);\n break;\n case \"codec\":\n codecs?.push(s as DefaultRTCStatsTypes.RTCCodecStats);\n break;\n case \"data-channel\":\n dataChannel = s as DefaultRTCStatsTypes.RTCDataChannelStats;\n break;\n case \"inbound-rtp\":\n inboundStreams?.push(s as DefaultRTCStatsTypes.RTCInboundRTPStreamStats);\n break;\n case \"peer-connection\":\n peerConnection = s as DefaultRTCStatsTypes.RTCPeerConnectionStats;\n break;\n case \"local-candidate\":\n localIceCandidates?.push(s as DefaultRTCStatsTypes.RTCIceCandidateLocalStats);\n break;\n case \"remote-candidate\":\n remoteIceCandidates?.push(s as DefaultRTCStatsTypes.RTCIceCandidateRemoteStats);\n break;\n case \"transport\":\n transport = s as DefaultRTCStatsTypes.RTCTransportStats;\n break;\n case \"remote-outbound-rtp\":\n break;\n default:\n // assertNever(s.type);\n console.warn(`Unknown stat: ${s.type}`);\n }\n });\n return {\n certificates,\n codecs,\n dataChannel,\n iceCandidatePairs,\n iceCandidates: {\n locals: localIceCandidates,\n remotes: remoteIceCandidates,\n },\n inboundStreams,\n peerConnection,\n transport,\n };\n }\n\n private FindByAttribute(\n stats: DefaultRTCStatsTypes.RTCStats[],\n attribute: string,\n value: unknown\n ): DefaultRTCStatsTypes.RTCStats | undefined {\n for (const s of stats) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((s as any)[attribute] === value) return s;\n }\n return undefined;\n }\n\n private parseInboundStream(\n rawData: DefaultRawData,\n kind: \"audio\" | \"video\"\n ): WebRTCStatsParser.InboundRTPAudioStream | WebRTCStatsParser.InboundRTPVideoStream {\n let inboundStreamData = this.FindByAttribute(rawData.inboundStreams, \"mediaType\", kind) as\n | DefaultRTCStatsTypes.RTCInboundRTPAudioStreamStats\n | DefaultRTCStatsTypes.RTCInboundRTPVideoStreamStats;\n if (!inboundStreamData)\n inboundStreamData = this.FindByAttribute(rawData.inboundStreams, \"kind\", kind) as\n | DefaultRTCStatsTypes.RTCInboundRTPAudioStreamStats\n | DefaultRTCStatsTypes.RTCInboundRTPVideoStreamStats;\n\n const transportData = this.FindByAttribute(\n [rawData.transport],\n \"id\",\n inboundStreamData.transportId\n ) as DefaultRTCStatsTypes.RTCTransportStats;\n const newLocal = this.FindByAttribute(\n rawData.iceCandidatePairs,\n \"id\",\n transportData.selectedCandidatePairId\n ) as DefaultRTCStatsTypes.RTCIceCandidatePairStats;\n\n let previousStat;\n if (kind === \"audio\" && this.history[0].inboundRTPAudioStream) {\n previousStat = this.history[0].inboundRTPAudioStream;\n } else if (kind === \"video\" && this.history[0].inboundRTPVideoStream) {\n previousStat = this.history[0].inboundRTPVideoStream;\n }\n\n let bytesReceivedPerSeconds = NaN;\n let effectiveFramesPerSecond = NaN;\n if (previousStat) {\n bytesReceivedPerSeconds =\n (inboundStreamData.bytesReceived - previousStat.bytesReceived) /\n ((inboundStreamData.timestamp - previousStat.timestamp) / 1000);\n if (kind == \"video\") effectiveFramesPerSecond = \n ((inboundStreamData as DefaultRTCStatsTypes.RTCInboundRTPVideoStreamStats).framesDecoded - (previousStat as WebRTCStatsParser.InboundRTPVideoStream).framesDecoded) /\n ((inboundStreamData.timestamp - previousStat.timestamp) / 1000);\n }\n\n const transport: WebRTCStatsParser.Transport = {\n ...transportData,\n localCertificate: this.FindByAttribute(\n rawData.certificates,\n \"id\",\n transportData.localCertificateId\n ) as DefaultRTCStatsTypes.RTCCertificateStats,\n remoteCertificate: this.FindByAttribute(\n rawData.certificates,\n \"id\",\n transportData.remoteCertificateId\n ) as DefaultRTCStatsTypes.RTCCertificateStats,\n selectedCandidatePair: {\n ...newLocal,\n localCandidate: this.FindByAttribute(\n rawData.iceCandidates.locals,\n \"id\",\n newLocal.localCandidateId\n ) as DefaultRTCStatsTypes.RTCIceCandidateLocalStats,\n remoteCandidate: this.FindByAttribute(\n rawData.iceCandidates.remotes,\n \"id\",\n newLocal.remoteCandidateId\n ) as DefaultRTCStatsTypes.RTCIceCandidateRemoteStats,\n bytesReceivedPerSeconds: bytesReceivedPerSeconds,\n },\n };\n return kind == \"video\" ? {\n ...inboundStreamData,\n effectiveFramesPerSecond,\n codec: this.FindByAttribute(\n rawData.codecs,\n \"id\",\n inboundStreamData.codecId\n ) as DefaultRTCStatsTypes.RTCCodecStats,\n transport: transport,\n } as WebRTCStatsParser.InboundRTPVideoStream : {\n ...inboundStreamData,\n codec: this.FindByAttribute(\n rawData.codecs,\n \"id\",\n inboundStreamData.codecId\n ) as DefaultRTCStatsTypes.RTCCodecStats,\n transport: transport,\n } as WebRTCStatsParser.InboundRTPAudioStream;\n }\n\n public parse(rawStats: DefaultRTCStatsTypes.RTCStats[]): void {\n if (rawStats.length === 0) return;\n\n const rawData = this.parseRawData(rawStats);\n\n const parsedData: WebRTCStatsParser.ParsedWebRTCStats = {\n timestamp: rawStats[0].timestamp,\n date: new Date(rawStats[0].timestamp),\n dataChannel: rawData.dataChannel,\n rawData,\n };\n try {\n parsedData.inboundRTPVideoStream = this.parseInboundStream(\n rawData,\n \"video\"\n ) as WebRTCStatsParser.InboundRTPVideoStream;\n } catch (_) {\n parsedData.inboundRTPVideoStream = undefined;\n }\n try {\n parsedData.inboundRTPAudioStream = this.parseInboundStream(\n rawData,\n \"audio\"\n ) as WebRTCStatsParser.InboundRTPAudioStream;\n } catch (_) {\n parsedData.inboundRTPAudioStream = undefined;\n }\n this.history.unshift(parsedData);\n if (this.history.length > this.historyLimit) this.history.pop();\n this.emit(\"stats\", this.parsedStats);\n }\n\n public get parsedStats(): WebRTCStatsParser.ParsedWebRTCStats {\n return this.history[0];\n }\n}\n","import { EventEmitter } from \"events\";\n\nimport * as WebRTCStatsParser from \"./WebRTCStatsParser\";\nimport * as FirefoxRTCStatsTypes from \"./FirefoxRTCStatsTypes\";\nimport { RTCCodecStats } from \"./DefaultRTCStatsTypes\";\nimport { assertNever } from \"../../../../common/utils/utils\";\n\nexport interface FirefoxRawData {\n dataChannel: FirefoxRTCStatsTypes.RTCDataChannelStats;\n iceCandidatePairs: FirefoxRTCStatsTypes.RTCIceCandidatePairStats[];\n iceCandidates: {\n locals: FirefoxRTCStatsTypes.RTCIceCandidateLocalStats[];\n remotes: FirefoxRTCStatsTypes.RTCIceCandidateRemoteStats[];\n };\n inboundStreams: FirefoxRTCStatsTypes.RTCInboundRTPStreamStats[];\n remoteOutboundStreams: FirefoxRTCStatsTypes.RTCRemoteOutboundRTPStats[];\n}\n\nexport class FirefoxWebRTCStatsParser extends EventEmitter implements WebRTCStatsParser.IStatsParser {\n private readonly history: WebRTCStatsParser.ParsedWebRTCStats[];\n private readonly ping: number;\n private readonly historyLimit = 100;\n\n constructor(ping: number) {\n super();\n this.ping = ping;\n this.history = [];\n }\n\n private parseRawData(rawStats: FirefoxRTCStatsTypes.RTCStats[]): FirefoxRawData {\n const iceCandidatePairs: FirefoxRTCStatsTypes.RTCIceCandidatePairStats[] = [];\n const inboundStreams: FirefoxRTCStatsTypes.RTCInboundRTPStreamStats[] = [];\n const remoteOutboundStreams: FirefoxRTCStatsTypes.RTCRemoteOutboundRTPStats[] = [];\n const localIceCandidates: FirefoxRTCStatsTypes.RTCIceCandidateLocalStats[] = [];\n const remoteIceCandidates: FirefoxRTCStatsTypes.RTCIceCandidateRemoteStats[] = [];\n let dataChannel!: FirefoxRTCStatsTypes.RTCDataChannelStats;\n rawStats.forEach((s) => {\n switch (s.type) {\n case FirefoxRTCStatsTypes.RTCStatsType.CANDIDATE_PAIR:\n iceCandidatePairs?.push(s as FirefoxRTCStatsTypes.RTCIceCandidatePairStats);\n break;\n case FirefoxRTCStatsTypes.RTCStatsType.DATA_CHANNEL:\n dataChannel = s as FirefoxRTCStatsTypes.RTCDataChannelStats;\n break;\n case FirefoxRTCStatsTypes.RTCStatsType.INBOUND_RTP:\n inboundStreams?.push(s as FirefoxRTCStatsTypes.RTCInboundRTPStreamStats);\n break;\n case FirefoxRTCStatsTypes.RTCStatsType.LOCAL_CANDIDATE:\n localIceCandidates?.push(s as FirefoxRTCStatsTypes.RTCIceCandidateLocalStats);\n break;\n case FirefoxRTCStatsTypes.RTCStatsType.REMOTE_CANDIDATE:\n remoteIceCandidates?.push(s as FirefoxRTCStatsTypes.RTCIceCandidateRemoteStats);\n break;\n case FirefoxRTCStatsTypes.RTCStatsType.REMOTE_OUTBOUND_RTP:\n remoteOutboundStreams?.push(s as FirefoxRTCStatsTypes.RTCRemoteOutboundRTPStats);\n break;\n default:\n assertNever(s.type);\n }\n });\n return {\n dataChannel,\n iceCandidatePairs,\n iceCandidates: {\n locals: localIceCandidates,\n remotes: remoteIceCandidates,\n },\n inboundStreams,\n remoteOutboundStreams,\n };\n }\n\n /**\n * Create a fake codec stat element with data copied from existing stats on Kibana\n */\n private makeDummyCodec(rawData: FirefoxRawData, kind: \"audio\" | \"video\"): RTCCodecStats {\n if (kind === \"video\")\n return {\n id: \"dummyVideoID\",\n timestamp: rawData.inboundStreams[0].timestamp,\n type: \"codec\",\n payloadType: 96,\n mimeType: \"unknown\",\n clockRate: 90000,\n sdpFmtpLine: \"level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e015\",\n };\n else\n return {\n id: \"dummyAudioID\",\n timestamp: rawData.inboundStreams[0].timestamp,\n type: \"codec\",\n payloadType: 110,\n mimeType: \"audio/OPUS\",\n clockRate: 48000,\n sdpFmtpLine: \"minptime=10;useinbandfec=1\",\n };\n }\n\n private createTransport(rawData: FirefoxRawData, kind: \"audio\" | \"video\"): WebRTCStatsParser.Transport {\n const candidatePair = rawData.iceCandidatePairs.find((pair) => pair.selected);\n let previousCandidatePair;\n\n if (kind === \"audio\" && this.history[0].inboundRTPAudioStream) {\n previousCandidatePair = this.history[0].inboundRTPAudioStream.transport.selectedCandidatePair;\n } else if (kind === \"video\" && this.history[0].inboundRTPVideoStream) {\n previousCandidatePair = this.history[0].inboundRTPVideoStream.transport.selectedCandidatePair;\n }\n const localCandidate = candidatePair\n ? rawData.iceCandidates.locals.find((candidate) => candidate.id === candidatePair.localCandidateId)\n : undefined;\n const remoteCandidate = candidatePair\n ? rawData.iceCandidates.remotes.find((candidate) => candidate.id === candidatePair.remoteCandidateId)\n : undefined;\n const transport: WebRTCStatsParser.Transport = {\n id: \"dummyTransportID\",\n timestamp: rawData.inboundStreams[0].timestamp,\n bytesReceived: 0,\n bytesSent: 0,\n dtlsCipher: \"dummyCiper\",\n dtlsState: \"dummyState\",\n selectedCandidatePairChanges: 0,\n srtpCipher: \"dummyCiper\",\n tlsVersion: \"dummyVersion\",\n type: \"transport\",\n localCertificate: {\n id: \"dummyCert\",\n timestamp: rawData.inboundStreams[0].timestamp,\n type: \"certificate\",\n base64Certificate: \"dummy64Cert\",\n fingerprint: \"dummyFingerPrint\",\n fingerprintAlgorithm: \"dummyAlgo\",\n },\n remoteCertificate: {\n id: \"dummyCert\",\n timestamp: rawData.inboundStreams[0].timestamp,\n type: \"certificate\",\n base64Certificate: \"dummy64Cert\",\n fingerprint: \"dummyFingerPrint\",\n fingerprintAlgorithm: \"dummyAlgo\",\n },\n selectedCandidatePair: {\n id: \"dummyPair\",\n timestamp: rawData.inboundStreams[0].timestamp,\n availableIncomingBitrate: (rawData.inboundStreams[0] as FirefoxRTCStatsTypes.RTCInboundRTPVideoStreamStats)\n .bitrateMean,\n availableOutgoingBitrate: 0,\n bytesReceived: 0,\n bytesSent: 0,\n consentRequestsSent: 0,\n currentRoundTripTime: this.ping / 1000,\n nominated: true,\n priority: 0,\n requestsReceived: 0,\n requestsSent: 0,\n responsesReceived: 0,\n responsesSent: 0,\n state: \"failed\",\n totalRoundTripTime: 0,\n type: FirefoxRTCStatsTypes.RTCStatsType.CANDIDATE_PAIR,\n writable: true,\n bytesReceivedPerSeconds: 0,\n localCandidate: {\n id: \"dummyLocalCandidate\",\n timestamp: rawData.inboundStreams[0].timestamp,\n candidateType: \"host\",\n deleted: false,\n ip: \"dummyIP\",\n isRemote: false,\n port: 0,\n priority: 0,\n protocol: \"udp\",\n networkType: \"unknown\",\n type: FirefoxRTCStatsTypes.RTCStatsType.LOCAL_CANDIDATE,\n transportId: \"dummyTransportID\",\n },\n remoteCandidate: {\n id: \"dummyRemoteCandidate\",\n timestamp: rawData.inboundStreams[0].timestamp,\n candidateType: \"host\",\n deleted: false,\n ip: \"dummyIP\",\n isRemote: true,\n port: 0,\n priority: 0,\n protocol: \"udp\",\n type: FirefoxRTCStatsTypes.RTCStatsType.REMOTE_CANDIDATE,\n transportId: \"dummyTransportID\",\n },\n },\n };\n if (candidatePair) {\n if (previousCandidatePair) {\n transport.selectedCandidatePair.bytesReceivedPerSeconds =\n (candidatePair.bytesReceived - previousCandidatePair.bytesReceived) /\n ((candidatePair.timestamp - previousCandidatePair.timestamp) / 1000);\n }\n transport.bytesReceived = candidatePair.bytesReceived;\n transport.bytesSent = candidatePair.bytesSent;\n transport.selectedCandidatePair.id = candidatePair.id;\n transport.selectedCandidatePair.timestamp = candidatePair.timestamp;\n transport.selectedCandidatePair.bytesReceived = candidatePair.bytesReceived;\n transport.selectedCandidatePair.bytesSent = candidatePair.bytesSent;\n transport.selectedCandidatePair.priority = candidatePair.priority;\n transport.selectedCandidatePair.state = candidatePair.state;\n transport.selectedCandidatePair.writable = candidatePair.writable;\n }\n if (localCandidate) {\n transport.selectedCandidatePair.localCandidate.id = localCandidate.id;\n transport.selectedCandidatePair.localCandidate.timestamp = localCandidate.timestamp;\n transport.selectedCandidatePair.localCandidate.candidateType = localCandidate.candidateType;\n transport.selectedCandidatePair.localCandidate.ip = localCandidate.address;\n transport.selectedCandidatePair.localCandidate.port = localCandidate.port;\n transport.selectedCandidatePair.localCandidate.priority = localCandidate.priority;\n transport.selectedCandidatePair.localCandidate.protocol = localCandidate.protocol;\n }\n if (remoteCandidate) {\n transport.selectedCandidatePair.remoteCandidate.id = remoteCandidate.id;\n transport.selectedCandidatePair.remoteCandidate.timestamp = remoteCandidate.timestamp;\n transport.selectedCandidatePair.remoteCandidate.candidateType = remoteCandidate.candidateType;\n transport.selectedCandidatePair.remoteCandidate.ip = remoteCandidate.address;\n transport.selectedCandidatePair.remoteCandidate.port = remoteCandidate.port;\n transport.selectedCandidatePair.remoteCandidate.priority = remoteCandidate.priority;\n transport.selectedCandidatePair.remoteCandidate.protocol = remoteCandidate.protocol;\n }\n\n return transport;\n }\n\n private createInboundStream(\n rawData: FirefoxRawData,\n kind: \"audio\" | \"video\",\n codec: RTCCodecStats,\n transport: WebRTCStatsParser.Transport\n ): WebRTCStatsParser.InboundRTPVideoStream | WebRTCStatsParser.InboundRTPAudioStream {\n if (kind === \"video\") {\n const inboundRTPVideoStream = rawData.inboundStreams[0] as FirefoxRTCStatsTypes.RTCInboundRTPVideoStreamStats;\n const prev = rawData.inboundStreams[1] as FirefoxRTCStatsTypes.RTCInboundRTPVideoStreamStats;\n let effectiveFramesPerSecond = 0;\n if (prev) {\n effectiveFramesPerSecond = (inboundRTPVideoStream.framesDecoded - prev.framesDecoded) / ((inboundRTPVideoStream.timestamp - prev.timestamp) / 1000);\n }\n return {\n id: inboundRTPVideoStream.id,\n timestamp: inboundRTPVideoStream.timestamp,\n type: FirefoxRTCStatsTypes.RTCStatsType.INBOUND_RTP,\n bytesReceived: inboundRTPVideoStream.bytesReceived,\n estimatedPlayoutTimestamp: 0,\n headerBytesReceived: 0,\n isRemote: true,\n kind: \"video\",\n lastPacketReceivedTimestamp: 0,\n mediaType: \"video\",\n packetsLost: inboundRTPVideoStream.packetsLost,\n packetsReceived: inboundRTPVideoStream.packetsReceived,\n ssrc: inboundRTPVideoStream.ssrc,\n decoderImplementation: \"\",\n firCount: inboundRTPVideoStream.firCount,\n framesDecoded: inboundRTPVideoStream.framerateMean,\n effectiveFramesPerSecond,\n keyFramesDecoded: 0,\n nackCount: inboundRTPVideoStream.nackCount,\n pliCount: inboundRTPVideoStream.pliCount,\n totalDecodeTime: 1,\n totalInterFrameDelay: 1,\n totalSquaredInterFrameDelay: 0,\n codec,\n transport,\n frameHeight: inboundRTPVideoStream.frameHeight,\n frameWidth: inboundRTPVideoStream.frameWidth,\n framesDropped: inboundRTPVideoStream.framesDropped,\n jitterBufferDelay: inboundRTPVideoStream.jitterBufferDelay,\n jitterBufferEmittedCount: inboundRTPVideoStream.jitterBufferEmittedCount,\n };\n } else {\n const inboundStream = rawData.inboundStreams[0] as FirefoxRTCStatsTypes.RTCInboundRTPAudioStreamStats;\n return {\n id: inboundStream.id,\n timestamp: inboundStream.timestamp,\n fecPacketsDiscarded: inboundStream.fecPacketsDiscarded,\n fecPacketsReceived: inboundStream.fecPacketsReceived,\n jitter: inboundStream.jitter,\n kind: \"audio\",\n mediaType: \"audio\",\n bytesReceived: inboundStream.bytesReceived,\n estimatedPlayoutTimestamp: 0,\n headerBytesReceived: 0,\n isRemote: true,\n lastPacketReceivedTimestamp: 0,\n packetsLost: inboundStream.packetsLost,\n packetsReceived: inboundStream.packetsReceived,\n ssrc: inboundStream.ssrc,\n type: FirefoxRTCStatsTypes.RTCStatsType.INBOUND_RTP,\n codec,\n transport,\n jitterBufferDelay: inboundStream.jitterBufferDelay,\n jitterBufferEmittedCount: inboundStream.jitterBufferEmittedCount,\n };\n }\n }\n\n /**\n * This function transpose raw data from firefox to the format used by the default stat parser.\n */\n private parseInboundStream(\n rawData: FirefoxRawData,\n kind: \"audio\" | \"video\"\n ): WebRTCStatsParser.InboundRTPAudioStream | WebRTCStatsParser.InboundRTPVideoStream {\n const codec = this.makeDummyCodec(rawData, kind);\n const transport = this.createTransport(rawData, kind);\n return this.createInboundStream(rawData, kind, codec, transport);\n }\n\n public parse(rawStats: FirefoxRTCStatsTypes.RTCStats[]): void {\n if (rawStats.length === 0) return;\n\n const rawData = this.parseRawData(rawStats);\n\n const dataChannel = {\n ...rawData.dataChannel,\n datachannelid: rawData.dataChannel?.dataChannelIdentifier,\n };\n const parsedData: WebRTCStatsParser.ParsedWebRTCStats = {\n timestamp: rawStats[0].timestamp,\n date: new Date(rawStats[0].timestamp),\n dataChannel,\n rawData,\n };\n try {\n parsedData.inboundRTPVideoStream = this.parseInboundStream(\n rawData,\n \"video\"\n ) as WebRTCStatsParser.InboundRTPVideoStream;\n } catch (e) {\n console.debug(`Could not create InboundStream:`, e.stack);\n parsedData.inboundRTPVideoStream = undefined;\n }\n try {\n parsedData.inboundRTPAudioStream = this.parseInboundStream(\n rawData,\n \"audio\"\n ) as WebRTCStatsParser.InboundRTPAudioStream;\n } catch (e) {\n console.debug(`Could not create InboundStream:`, e.stack);\n parsedData.inboundRTPAudioStream = undefined;\n }\n this.history.unshift(parsedData);\n if (this.history.length > this.historyLimit) this.history.pop();\n this.emit(\"stats\", this.parsedStats);\n }\n\n public get parsedStats(): WebRTCStatsParser.ParsedWebRTCStats {\n return this.history[0];\n }\n}\n","import { BrowserType } from \"../old-client-stuff/MobileManager\";\nimport { EventEmitter } from \"events\";\n\nimport {\n RTCCertificateStats,\n RTCCodecStats,\n RTCDataChannelStats,\n RTCIceCandidateLocalStats,\n RTCIceCandidatePairStatsData,\n RTCIceCandidateRemoteStats,\n RTCInboundRTPAudioStreamStatsData,\n RTCInboundRTPVideoStreamStatsData,\n RTCStats,\n RTCTransportStatsData,\n} from \"./DefaultRTCStatsTypes\";\n\nimport { DefaultRawData, DefaultWebRTCStatsParser } from \"./DefaultWebRTCStatsParser\";\nimport { FirefoxRawData, FirefoxWebRTCStatsParser } from \"./FirefoxWebRTCStatsParser\";\n\ntype RawData = DefaultRawData | FirefoxRawData;\n\nexport interface IceCandidatePair extends RTCIceCandidatePairStatsData {\n localCandidate: RTCIceCandidateLocalStats;\n remoteCandidate: RTCIceCandidateRemoteStats;\n bytesReceivedPerSeconds: number;\n}\n\nexport interface Transport extends RTCTransportStatsData {\n localCertificate: RTCCertificateStats;\n remoteCertificate: RTCCertificateStats;\n selectedCandidatePair: IceCandidatePair;\n}\nexport interface InboundRTPAudioStream extends RTCInboundRTPAudioStreamStatsData {\n codec: RTCCodecStats;\n transport: Transport;\n}\n\nexport interface InboundRTPVideoStream extends RTCInboundRTPVideoStreamStatsData {\n codec: RTCCodecStats;\n transport: Transport;\n effectiveFramesPerSecond: number;\n quality?: string;\n encoderBitrate?: number;\n encoderSpecificBitrate?: number;\n}\n\nexport interface ParsedWebRTCStats {\n timestamp: number;\n date: Date;\n rawData?: RawData;\n inboundRTPAudioStream?: InboundRTPAudioStream;\n inboundRTPVideoStream?: InboundRTPVideoStream;\n dataChannel?: RTCDataChannelStats;\n events?: string[];\n}\n\nexport declare interface WebRTCStatsParser extends EventEmitter {\n on(event: \"rawStats\", listener: (rawStats: RTCStats[]) => void): this;\n on(event: \"stats\", listener: (stats: ParsedWebRTCStats) => void): this;\n}\n\nexport interface IStatsParser {\n on(event: \"stats\", listener: (stats: ParsedWebRTCStats) => void): this;\n\n parse(rawStats: RTCStats[]): void;\n}\n\nexport interface LightParsedWebRTCVideoStats {\n timestamp: DOMHighResTimeStamp;\n date: Date;\n dataChannel?: {\n bytesReceived: number;\n bytesSent: number;\n };\n inboundRTPVideoStream: {\n mediaType: string;\n jitter?: number;\n packetsLost: number;\n packetsReceived: number;\n bytesReceived: number;\n firCount: number;\n effectiveFramesPerSecond: number;\n frameHeight: number;\n frameWidth: number;\n framesDecoded: number;\n framesDropped: number;\n framesPerSecond?: number;\n framesReceived?: number;\n freezeCount?: number;\n jitterBufferDelay: number;\n jitterBufferEmittedCount: number;\n keyFramesDecoded: number;\n pliCount: number;\n totalDecodeTime: number;\n totalFreezesDuration?: number;\n totalInterFrameDelay: number;\n totalProcessingDelay?: number;\n totalSquaredInterFrameDelay: number;\n quality?: string;\n encoderBitrate?: number;\n encoderSpecificBitrate?: number;\n codec: {\n sdpFmtpLine: string;\n },\n transport: {\n selectedCandidatePair: {\n availableIncomingBitrate: number;\n currentRoundTripTime: number;\n localCandidate: {\n candidateType: RTCIceCandidateType,\n },\n remoteCandidate: {\n candidateType: RTCIceCandidateType,\n },\n bytesReceivedPerSeconds: number;\n }\n },\n },\n events?: string[];\n}\n\nexport function convertToLightParsedWebRTCVideoStats(stat: ParsedWebRTCStats): LightParsedWebRTCVideoStats | undefined {\n if (!stat.inboundRTPVideoStream) return undefined;\n const lightStat: LightParsedWebRTCVideoStats = {\n timestamp: stat.timestamp,\n date: stat.date,\n dataChannel: undefined,\n inboundRTPVideoStream: {\n mediaType: stat.inboundRTPVideoStream.mediaType,\n jitter: stat.inboundRTPVideoStream.jitter,\n packetsLost: stat.inboundRTPVideoStream.packetsLost,\n packetsReceived: stat.inboundRTPVideoStream.packetsReceived,\n bytesReceived: stat.inboundRTPVideoStream.bytesReceived,\n firCount: stat.inboundRTPVideoStream.firCount,\n frameHeight: stat.inboundRTPVideoStream.frameHeight,\n frameWidth: stat.inboundRTPVideoStream.frameWidth,\n framesDecoded: stat.inboundRTPVideoStream.framesDecoded,\n framesDropped: stat.inboundRTPVideoStream.framesDropped,\n framesPerSecond: stat.inboundRTPVideoStream.framesPerSecond,\n framesReceived: stat.inboundRTPVideoStream.framesReceived,\n freezeCount: stat.inboundRTPVideoStream.freezeCount,\n jitterBufferDelay: stat.inboundRTPVideoStream.jitterBufferDelay,\n jitterBufferEmittedCount: stat.inboundRTPVideoStream.jitterBufferEmittedCount,\n keyFramesDecoded: stat.inboundRTPVideoStream.keyFramesDecoded,\n pliCount: stat.inboundRTPVideoStream.pliCount,\n totalDecodeTime: stat.inboundRTPVideoStream.totalDecodeTime,\n totalFreezesDuration: stat.inboundRTPVideoStream.totalFreezesDuration,\n totalInterFrameDelay: stat.inboundRTPVideoStream.totalInterFrameDelay,\n totalProcessingDelay: stat.inboundRTPVideoStream.totalProcessingDelay,\n totalSquaredInterFrameDelay: stat.inboundRTPVideoStream.totalSquaredInterFrameDelay,\n codec: {\n sdpFmtpLine: stat.inboundRTPVideoStream.codec.sdpFmtpLine,\n },\n transport: {\n selectedCandidatePair: {\n availableIncomingBitrate: stat.inboundRTPVideoStream.transport.selectedCandidatePair.availableIncomingBitrate,\n currentRoundTripTime: stat.inboundRTPVideoStream.transport.selectedCandidatePair.currentRoundTripTime,\n localCandidate: {\n candidateType: stat.inboundRTPVideoStream.transport.selectedCandidatePair.localCandidate.candidateType,\n },\n remoteCandidate: {\n candidateType: stat.inboundRTPVideoStream.transport.selectedCandidatePair.remoteCandidate.candidateType,\n },\n bytesReceivedPerSeconds: stat.inboundRTPVideoStream.transport.selectedCandidatePair.bytesReceivedPerSeconds,\n }\n },\n effectiveFramesPerSecond: stat.inboundRTPVideoStream.effectiveFramesPerSecond,\n quality: stat.inboundRTPVideoStream.quality,\n encoderBitrate: stat.inboundRTPVideoStream.encoderBitrate,\n encoderSpecificBitrate: stat.inboundRTPVideoStream.encoderSpecificBitrate,\n },\n events: stat.events,\n };\n if (stat.dataChannel) {\n lightStat.dataChannel = {\n bytesReceived: stat.dataChannel.bytesReceived,\n bytesSent: stat.dataChannel.bytesSent\n }\n }\n return lightStat;\n}\n\nexport class WebRTCStatsParser extends EventEmitter {\n private readonly rtcPeerConnection: RTCPeerConnection;\n private readonly parser: IStatsParser;\n private readonly delay: number = 1000;\n private readonly historyLimit = 100;\n private readonly rawHistory: RTCStats[][];\n\n private intervalHandle: number;\n\n constructor(rtcPeerConnection: RTCPeerConnection, delay = 1000, browserType: BrowserType, ping: number) {\n super();\n this.rtcPeerConnection = rtcPeerConnection;\n this.delay = delay;\n this.rawHistory = [];\n if (browserType === BrowserType.FIREFOX) this.parser = new FirefoxWebRTCStatsParser(ping);\n else this.parser = new DefaultWebRTCStatsParser();\n\n this.parser.on(\"stats\", (stats: ParsedWebRTCStats) => this.emit(\"stats\", stats));\n this.start();\n }\n\n public start(): void {\n this.intervalHandle = setInterval(() => this.run(), this.delay);\n }\n\n public stop(): void {\n clearInterval(this.intervalHandle);\n }\n\n private async run(): Promise {\n if (!this.rtcPeerConnection) return;\n if (this.rtcPeerConnection.connectionState !== \"connected\") return;\n\n const report = await this.rtcPeerConnection.getStats();\n this.rawHistory.unshift(Array.from(report.values()));\n\n if (this.rawHistory.length > this.historyLimit) this.rawHistory.pop();\n\n this.emit(\"rawStats\", this.rawStats);\n\n this.parser.parse(this.rawStats);\n }\n\n public get rawStats(): RTCStats[] {\n return this.rawHistory[0];\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeScroller.vue?vue&type=style&index=0&id=403885e7&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","var map = {\n\t\"./en.json\": \"edd4\",\n\t\"./fr.json\": \"f693\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"49f8\";","import { isValidHttpUrl as ShareUtils } from \"../utils/utils\";\n\nexport interface ShareData {\n title: string;\n text: string;\n url: string;\n}\n\nexport interface ShareOptions {\n referralCode?: string;\n title: string;\n text: string;\n url?: string;\n}\n\n/**\n * Get the URL to share\n * @param user\n * @param defaultURL\n */\nexport function GetShareURL(options: ShareOptions): string {\n const defaultURL = options.url || \"FALSE\";\n\n let url: URL;\n // If the share URL is an absolute URL, use it as is\n if (ShareUtils(defaultURL)) url = new URL(defaultURL);\n else {\n // If the share URL is FALSE, use the current URL\n if (defaultURL.match(/^FALSE$/i)) url = new URL(window.location.href);\n // Else, use the share URL as a relative URL to the current URL\n else url = new URL(defaultURL, window.location.href);\n }\n\n url.searchParams.set(\"share\", \"true\");\n if (options.referralCode) url.searchParams.set(\"referrer\", options.referralCode);\n url.searchParams.delete(\"cgtoken\");\n return url.toString();\n}\n\n/**\n * Get the data to share\n * @param user The current user\n * @param game The game to share\n * @param defaultURL The default URL to share\n */\nexport function ShareData(options: ShareOptions): ShareData {\n return {\n title: options.title,\n text: options.text,\n url: GetShareURL(options),\n };\n}\n\n/**\n * Check if the browser can share\n * @param user The current user\n * @param defaultURL The default URL to share\n */\nexport function CanShare(options: ShareOptions): boolean {\n // Check if the browser supports the Web Share API\n if (!(navigator as any).canShare) return false;\n\n // Cast to any because typescript doesn't know about canShare yet\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (navigator as any).canShare(ShareData(options));\n}\n\n/**\n * Open the share dialog\n * @param game The game to share\n * @param user The current user\n * @param defaultURL The default URL to share\n */\nexport async function Share(options: ShareOptions): Promise {\n return navigator.share(ShareData(options));\n}\n","import { defineModule } from \"direct-vuex\";\nimport { UAParser } from \"ua-parser-js\";\nimport mergeWith from \"lodash/mergeWith\";\nimport isArray from \"lodash/isArray\";\n\nimport { moduleActionContext, moduleGetterContext, axiosInstance as axios } from \"@/store\";\nimport router from \"@/router\";\nimport i18n from \"@/plugins/i18n\";\n\nimport { isValidHttpUrl } from \"@/../common/utils/utils\";\nimport * as ShareUtils from \"@/../common/share\";\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\nimport { Manifest } from \"@/interfaces/manifest\";\nimport { Game } from \"./games\";\n\nexport enum OrientationMode {\n PORTRAIT,\n LANDSCAPE,\n}\n\nexport enum SERVICE_WORKER_OUTGOING_MESSAGE_TYPE {\n UPDATE_MANIFEST = \"UPDATE_MANIFEST\",\n UPDATE_ENDPOINT = \"UPDATE_ENDPOINT\",\n UPDATE_STATS_INFO = \"UPDATE_STATS_INFO\",\n}\n\nexport async function SendMessageToServiceWorker(\n type: SERVICE_WORKER_OUTGOING_MESSAGE_TYPE,\n data: unknown\n): Promise {\n await navigator?.serviceWorker?.ready;\n if (navigator?.serviceWorker?.controller)\n navigator.serviceWorker.controller.postMessage({\n type,\n data,\n });\n}\n\nconst parser = new UAParser();\n\ninterface Add2HomeAndroidIntercept {\n show: boolean;\n onSkip?: () => void;\n onClose?: () => void;\n}\n\nexport interface MobileState {\n orientation: OrientationMode;\n manifest: Manifest | undefined;\n pushNotifEnabled: boolean;\n defferedPWAPrompt: BeforeInstallPromptEvent | undefined;\n isBigScreenResolution: boolean;\n lastModified: Date | undefined; // Date Last-Modified from the server\n showUpdateModal: boolean; // Flag to show the refresh modal\n add2HomeAndroidIntercept: Add2HomeAndroidIntercept;\n showAgreementPopup: boolean;\n showSubscribeTutoPopup: boolean;\n showRenewTutoPopup: boolean;\n showSharePopup: boolean;\n showSubscribeBannerPopup: boolean;\n showTvCodePopup: boolean;\n}\n\nconst LOCAL_STORAGE_COUNT_PWA_LAUNCHES = \"pwaLaunches\";\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n orientation: OrientationMode.PORTRAIT,\n manifest: undefined,\n pushNotifEnabled: false,\n defferedPWAPrompt: undefined,\n isBigScreenResolution: true,\n lastModified: undefined,\n showUpdateModal: false,\n add2HomeAndroidIntercept: {\n show: false,\n },\n showAgreementPopup: false,\n showSubscribeTutoPopup: false,\n showRenewTutoPopup: false,\n showSharePopup: false,\n showSubscribeBannerPopup: false,\n showTvCodePopup: false,\n } as MobileState,\n getters: {\n isWebApp: (): boolean =>\n window.navigator.standalone == true ||\n window.matchMedia(\"(display-mode: standalone)\").matches ||\n window.matchMedia(\"(display-mode: fullscreen)\").matches,\n isiOS: (): boolean => parser.getOS().name === \"iOS\",\n isAndroid: (): boolean => parser.getOS().name === \"Android\",\n isChrome: (): boolean => parser.getBrowser().name === \"Chrome\",\n isSafari: (): boolean => parser.getBrowser().name === \"Mobile Safari\",\n isBrowserValid: (): boolean => {\n if (/^true$/i.test(process.env.VUE_APP_SKIP_BROWSER_CHECK)) return true;\n if (parser.getOS().name === \"Android\") {\n switch (parser.getBrowser().name) {\n case \"Chrome\": // Also matches Vivaldi\n case \"Samsung Browser\":\n case \"Opera\":\n case \"Edge\":\n case \"Facebook\":\n case \"Chrome WebView\":\n return true;\n default:\n return false;\n }\n }\n if (parser.getOS().name === \"iOS\") {\n switch (parser.getBrowser().name) {\n case \"Mobile Safari\":\n return true;\n default:\n return false;\n }\n }\n return false;\n },\n getBrowser: (): string | undefined => {\n return parser.getBrowser().name;\n },\n getOS: (): string | undefined => {\n return parser.getOS().name;\n },\n shareOptions: (...args) => (game?: Game): ShareUtils.ShareOptions => {\n const { rootState } = mod1GetterContext(args);\n\n let url = process.env.VUE_APP_SHARE_URL;\n\n if (!isValidHttpUrl(url) && router.currentRoute.name === \"Home\") {\n url = `/`;\n }\n\n let title = i18n.t(\"share.app.title\").toString();\n let text = i18n.t(\"share.app.text\").toString();\n if (game) {\n const gameName = i18n.t(`games.${game._id}.name`).toString() || \"\";\n title = gameName;\n text = i18n.t(\"share.game.text\", { game: gameName }).toString();\n }\n\n return {\n title,\n text,\n referralCode: rootState.authentication.user?.referralCode,\n url,\n };\n },\n isBigScreenResolution: (state): boolean => {\n return state.isBigScreenResolution;\n },\n canShare: (...args): boolean => {\n const { getters } = mod1GetterContext(args);\n\n return ShareUtils.CanShare(getters.shareOptions());\n },\n canDeferPWAPrompt: (state): boolean => state.defferedPWAPrompt !== undefined,\n isAbleNotification: (): boolean => window.Notification !== undefined,\n gaveAgreement: (...args): boolean => {\n const { rootState } = mod1GetterContext(args);\n return rootState.authentication.user?.gaveAgreement ?? true;\n },\n countPWALaunches: (): number => {\n const count = localStorage.getItem(LOCAL_STORAGE_COUNT_PWA_LAUNCHES);\n if (count) return parseInt(count);\n return 0;\n },\n },\n mutations: {\n SET_BIGSCREEN_RESOLUTION(state, value: boolean) {\n state.isBigScreenResolution = value;\n },\n SET_ORIENTATION(state) {\n state.orientation = window.innerHeight > window.innerWidth ? OrientationMode.PORTRAIT : OrientationMode.LANDSCAPE;\n },\n SET_MANIFEST(state, manifest: Manifest) {\n state.manifest = mergeWith(state.manifest, manifest, (objValue, srcValue) =>\n isArray(objValue) ? srcValue : undefined\n );\n // Set the custom manifest, for iOS\n if (parser.getOS().name === \"iOS\") {\n // Prepare the custom manifest as blob (raw-data)\n const stringManifest = JSON.stringify(state.manifest);\n const blob = new Blob([stringManifest], { type: \"application/json\" });\n const manifestURL = URL.createObjectURL(blob);\n // Create the manifest link element if it doesn't exist\n if (!document.head.querySelector(\"link[rel='manifest']\")) {\n const customManifest = document.createElement(\"link\");\n customManifest.setAttribute(\"rel\", \"manifest\");\n customManifest.setAttribute(\"id\", \"custom-manifest\");\n document.head.appendChild(customManifest);\n }\n // Set the custom manifest data\n document.querySelector(\"#custom-manifest\")?.setAttribute(\"href\", manifestURL);\n }\n // Set the manifest used by the service worker, for Android\n else {\n // Wait for the service worker to be ready\n navigator?.serviceWorker?.ready.then(() => {\n // Send the custom manifest data to the service worker\n SendMessageToServiceWorker(SERVICE_WORKER_OUTGOING_MESSAGE_TYPE.UPDATE_MANIFEST, manifest);\n // Create the manifest link element if it doesn't exist\n if (!document.head.querySelector(\"link[rel='manifest']\")) {\n const customManifest = document.createElement(\"link\");\n customManifest.setAttribute(\"rel\", \"manifest\");\n customManifest.setAttribute(\"href\", \"manifest.webmanifest\");\n document.head.appendChild(customManifest);\n }\n });\n }\n },\n SET_PUSH_NOTIF_ENABLED(state, enabled: boolean) {\n state.pushNotifEnabled = enabled;\n },\n SET_DEFERRED_PWA_PROMPT(state, event: BeforeInstallPromptEvent) {\n state.defferedPWAPrompt = event;\n },\n SHOW_DEFERRED_PWA_PROMPT(state) {\n state.defferedPWAPrompt?.prompt();\n state.defferedPWAPrompt = undefined;\n },\n SET_LAST_MODIFIED(state, lastModified: Date) {\n state.lastModified = lastModified;\n },\n SET_SHOW_UPDATE_MODAL(state, show: boolean) {\n state.showUpdateModal = show;\n StatsManager.SendNavigationStats(location.href, \"UPDATE_POPUP\");\n },\n SHOW_ADD2HOME_ANDROID_INTERCEPT(state, { onSkip, onClose }: { onSkip?: () => void; onClose?: () => void }) {\n state.add2HomeAndroidIntercept.onSkip = onSkip;\n state.add2HomeAndroidIntercept.onClose = onClose;\n state.add2HomeAndroidIntercept.show = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(location.href, \"ADD2HOME_ANDROID_INTERCEPT\");\n },\n CLOSE_SHOW_ADD2HOME_ANDROID_INTERCEPT(state) {\n if (state.add2HomeAndroidIntercept.show) {\n state.add2HomeAndroidIntercept.onClose?.();\n state.add2HomeAndroidIntercept.show = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"ADD2HOME_ANDROID_INTERCEPT\", location.href);\n }\n },\n SHOW_AGREEMENT_POPUP(state) {\n state.showAgreementPopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"AGREEMENT_POPUP\");\n },\n CLOSE_AGREEMENT_POPUP(state) {\n state.showAgreementPopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"AGREEMENT_POPUP\", window.location.href);\n },\n SHOW_RENEW_TUTO_POPUP(state) {\n state.showRenewTutoPopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"RENEW_TUTO_POPUP\");\n },\n CLOSE_RENEW_TUTO_POPUP(state) {\n state.showRenewTutoPopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"RENEW_TUTO_POPUP\", window.location.href);\n },\n SHOW_TV_CODE_POPUP(state) {\n state.showTvCodePopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"TV_CODE_POPUP\");\n },\n CLOSE_TV_CODE_POPUP(state) {\n state.showTvCodePopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"TV_CODE_POPUP\", window.location.href);\n },\n SHOW_SUBSCRIBE_TUTO_POPUP(state) {\n state.showSubscribeTutoPopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"SUBSCRIBE_TUTO_POPUP\");\n },\n CLOSE_SUBSCRIBE_TUTO_POPUP(state) {\n state.showSubscribeTutoPopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"SUBSCRIBE_TUTO_POPUP\", window.location.href);\n },\n SHOW_SHARE_POPUP(state) {\n state.showSharePopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"SHARE_POPUP\");\n },\n CLOSE_SHARE_POPUP(state) {\n state.showSharePopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"SHARE_POPUP\", window.location.href);\n },\n INCREMENT_PWA_LAUNCHES() {\n const count = localStorage.getItem(LOCAL_STORAGE_COUNT_PWA_LAUNCHES);\n if (count) localStorage.setItem(LOCAL_STORAGE_COUNT_PWA_LAUNCHES, (parseInt(count) + 1).toString());\n else localStorage.setItem(LOCAL_STORAGE_COUNT_PWA_LAUNCHES, \"1\");\n },\n SHOW_SUBSCRIBE_BANNER_POPUP(state) {\n state.showSubscribeBannerPopup = true;\n document.querySelector(\"html\")?.classList.add(\"noscroll\");\n window.scrollTo(0, 0);\n StatsManager.SendNavigationStats(window.location.href, \"SUBSCRIBE_BANNER_POPUP\");\n },\n CLOSE_SUBSCRIBE_BANNER_POPUP(state) {\n state.showSubscribeBannerPopup = false;\n document.querySelector(\"html\")?.classList.remove(\"noscroll\");\n StatsManager.SendNavigationStats(\"SUBSCRIBE_BANNER_POPUP\", window.location.href);\n },\n },\n actions: {\n async init(context) {\n const { commit, dispatch, getters } = moduleActionContext(context, module);\n commit.SET_ORIENTATION();\n window.addEventListener(\"resize\", () => commit.SET_ORIENTATION());\n dispatch.updateAndSetManifest();\n\n if (getters.isAbleNotification) {\n if (Notification?.permission === \"denied\") commit.SET_PUSH_NOTIF_ENABLED(false);\n else {\n const serviceWorker = await navigator.serviceWorker.ready;\n const sub = await serviceWorker.pushManager.getSubscription();\n if (sub) commit.SET_PUSH_NOTIF_ENABLED(true);\n }\n }\n\n SendMessageToServiceWorker(\n SERVICE_WORKER_OUTGOING_MESSAGE_TYPE.UPDATE_ENDPOINT,\n process.env.VUE_APP_API_ENDPOINT\n );\n },\n updateAndSetManifest(context) {\n const { commit, rootGetters } = moduleActionContext(context, module);\n\n const dynamicManifest: Manifest = {\n name: process.env.VUE_APP_PWA_NAME || `CareGame`,\n short_name: process.env.VUE_APP_PWA_NAME || \"CareGame\",\n description: \"Mobile Gaming, One Click Away\",\n display: \"fullscreen\",\n start_url: `${location.origin}/`,\n orientation: \"any\",\n background_color: \"#07071B\",\n theme_color: \"#00AF77\",\n icons: [\n {\n src: \"/pwa/android-chrome-maskable-192x192.png\",\n sizes: \"192x192\",\n type: \"image/png\",\n purpose: \"maskable any\",\n },\n {\n src: \"/pwa/android-chrome-maskable-512x512.png\",\n sizes: \"512x512\",\n type: \"image/png\",\n purpose: \"maskable any\",\n },\n {\n src: \"/pwa/android-chrome-192x192.png\",\n sizes: \"192x192\",\n type: \"image/png\",\n purpose: \"any\",\n },\n {\n src: \"/pwa/android-chrome-512x512.png\",\n sizes: \"512x512\",\n type: \"image/png\",\n purpose: \"any\",\n },\n ],\n related_applications: [\n {\n platform: \"webapp\",\n url: `/manifest.webmanifest`,\n },\n ],\n };\n if (rootGetters.authentication.jwt) dynamicManifest.start_url += rootGetters.authentication.jwt;\n commit.SET_MANIFEST(dynamicManifest);\n },\n async setBigScreenResolution(context, value: boolean): Promise {\n const { commit } = moduleActionContext(context, module);\n\n const body = {\n \"bigscreen_resolution\": value ? \"BIGSCREEN\" : \"MOBILE\",\n }\n const response = await axios.post(`/api/v1/userPrefs`, body);\n if (response.status === 200) {\n commit.SET_BIGSCREEN_RESOLUTION(value);\n return value;\n }\n return !value;\n },\n async fetchBigScreenResolution(context): Promise {\n const { commit } = moduleActionContext(context, module);\n const response = await axios.get(`/api/v1/userPrefs/bigscreen_resolution`);\n if (response.status === 200) {\n if (response.data === \"MOBILE\") {\n commit.SET_BIGSCREEN_RESOLUTION(false);\n return false;\n }\n if (response.data === \"BIGSCREEN\") {\n commit.SET_BIGSCREEN_RESOLUTION(true);\n return true;\n }\n }\n return false;\n },\n async createNotificationSubscription(context): Promise {\n const { commit } = moduleActionContext(context, module);\n //wait for service worker installation to be ready, and then\n\n const serviceWorker = await navigator.serviceWorker.ready;\n // subscribe and return the subscription\n const subscription = await serviceWorker.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: process.env.VUE_APP_PUSH_VAPID_PUBLIC_KEY,\n });\n\n await axios.post(`/api/v1/pushsubscribtion/subscribe`, subscription);\n commit.SET_PUSH_NOTIF_ENABLED(true);\n return subscription;\n },\n async removeNotificationSubscription(context): Promise {\n const { commit } = moduleActionContext(context, module);\n const serviceWorker = await navigator.serviceWorker.ready;\n const sub = await serviceWorker.pushManager.getSubscription();\n sub?.unsubscribe();\n await axios.delete(`/api/v1/pushsubscribtion/subscribe`);\n commit.SET_PUSH_NOTIF_ENABLED(false);\n },\n async share(context, { game }: { game?: Game } = { game: undefined }): Promise {\n const { getters } = moduleActionContext(context, module);\n\n return ShareUtils.Share(getters.shareOptions(game));\n },\n /**\n * Check if the PWA has changed since the last reload\n */\n async checkPWAChanged(context) {\n const { commit } = moduleActionContext(context, module);\n try {\n // Add a random query string to the URL to avoid caching.\n const url = new URL(location.origin);\n // Use both random and Date.now()\n const random = Math.round(Date.now() * Math.random())\n .toString(10)\n .substring(2, 15);\n url.searchParams.set(\"c\", random);\n\n // Fetch the Last-Modified date from the server\n const response = await fetch(url.href, {\n method: \"HEAD\",\n cache: \"no-cache\",\n });\n const lastModified = response.headers.get(\"Last-Modified\") || \"\";\n // const lastModified = \"Thu, 21 Sep 3028 15:35:46 GMT\";\n\n // Convert the Last-Modified string to a Date object\n const lastModifiedDate = new Date(lastModified);\n\n // If there is no Last-Modified date or if it is invalid, return\n if (!lastModified || isNaN(lastModifiedDate.getTime())) return;\n // Store the new Last-Modified date\n commit.SET_LAST_MODIFIED(lastModifiedDate);\n\n // Get the last PWA reload date from the local storage\n const lastPwaReload = localStorage.getItem(\"lastPwaReload\") || \"\";\n // Convert the last PWA reload string to a Date object\n let lastPwaReloadDate = new Date(parseInt(lastPwaReload));\n\n // If there is no last PWA reload date, store the new Last-Modified date as the last PWA reload date\n // This is to avoid showing the refresh popup on the first load of the PWA\n if (!lastPwaReload || isNaN(lastPwaReloadDate.getTime())) {\n lastPwaReloadDate = lastModifiedDate;\n localStorage.setItem(\"lastPwaReload\", lastPwaReloadDate.getTime().toString());\n }\n\n // Show the refresh popup if needed if the new Last-Modified date is more recent than the last PWA reload date\n if (lastModifiedDate > lastPwaReloadDate) {\n commit.SET_SHOW_UPDATE_MODAL(true);\n }\n } catch (error) {\n console.error(\"Error fetching Last-Modified date:\", error);\n }\n },\n /**\n * Reload the PWA to apply updates\n */\n async reloadPWA(context) {\n const { state } = moduleActionContext(context, module);\n\n // Store the new Last-Modified date as the last PWA reload date\n // We don't store the current date as the last PWA reload date in case the Last-Modified date is in the future\n if (state.lastModified) localStorage.setItem(\"lastPwaReload\", state.lastModified.getTime().toString());\n // Reload the PWA to apply updates\n window.location.reload();\n },\n },\n});\n\nexport default module;\nconst mod1GetterContext = (args: [any, any, any, any]) => moduleGetterContext(args, module);\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBanner.vue?vue&type=style&index=1&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","module.exports = __webpack_public_path__ + \"img/icon.60432eab.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=4fe3fb88&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bookmark_add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=055b5941&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=d4e3514e&lang=scss&scoped=true&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedPartnerAuthenticationPopup.vue?vue&type=style&index=0&id=2245ace5&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryList.vue?vue&type=style&index=0&id=b625e0e0&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeListedGame.vue?vue&type=style&index=0&id=880f26b0&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModal.vue?vue&type=style&index=0&id=b71ed6a4&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"2000\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Enter code displayed on TV\")])]),_c('div',{staticClass:\"text\"},[(!_vm.hideSuccessMsg)?_c('div',{staticClass:\"flex\"},[_c('v-icon',[_vm._v(\"$validIcon\")]),_c('span',{staticClass:\"success-msg\"},[_vm._v(\"Success\")])],1):_vm._e(),(!_vm.hideFailMsg)?_c('div',{staticClass:\"flex\"},[_c('v-icon',[_vm._v(\"$failedIcon\")]),_c('span',{staticClass:\"fail-msg\"},[_vm._v(\"Wrong code\")])],1):_vm._e()]),_c('div',{staticClass:\"code-block\"},[_c('input',{staticClass:\"code-text\",attrs:{\"type\":\"number\",\"pattern\":\"\\\\d*\",\"min\":\"0\",\"max\":\"6\",\"maxlength\":\"6\",\"minlength\":\"0\",\"placeholder\":\"000000\",\"required\":\"\"},domProps:{\"value\":_vm.codeValue},on:{\"input\":_vm.checkInput}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button important\",on:{\"click\":_vm.close}},[_vm._v(\"Close\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport { Game } from \"@/store/modules/games\";\n\n@Component\nexport default class EnterCodePopup extends Vue {\n @Prop(Object) game: Game;\n\n codeValue = \"\";\n\n hideSuccessMsg = true;\n hideFailMsg = true;\n\n async play(playOnBigScreen: boolean): Promise {\n StatsManager.SendButtonClickStats(location.href, \"play\");\n\n if (!this.game) return;\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n StatsManager.SendNavigationStats(location.href, \"INVALID_BROWSER_ALERT\");\n return;\n }\n\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: playOnBigScreen });\n }\n\n async checkInput(event: Event) {\n if (event.target && (event.target as any).value.length <= 6) {\n this.codeValue = (event.target as any).value;\n }\n (event.target as any).value = this.codeValue;\n\n if (this.codeValue.length === 6) {\n const response = await this.$store.direct.dispatch.bigscreen.sendPairingCode(this.codeValue);\n if (response) {\n // Here display success message\n this.hideSuccessMsg = false;\n this.hideFailMsg = true;\n setTimeout(() => {\n this.play(true);\n this.codeValue = \"\";\n (event.target as any).value = this.codeValue;\n this.close();\n }, 1000);\n } else {\n // Here display failed message\n this.hideSuccessMsg = true;\n this.hideFailMsg = false;\n this.codeValue = \"\";\n (event.target as any).value = this.codeValue;\n }\n } else {\n this.hideSuccessMsg = true;\n this.hideFailMsg = true;\n }\n }\n\n close(): void {\n this.$store.direct.commit.mobile.CLOSE_TV_CODE_POPUP();\n StatsManager.SendButtonClickStats(\"TV_CODE_POPUP\", \"close\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnterCodePopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnterCodePopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EnterCodePopup.vue?vue&type=template&id=49afccd0&scoped=true&\"\nimport script from \"./EnterCodePopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./EnterCodePopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EnterCodePopup.vue?vue&type=style&index=0&id=49afccd0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49afccd0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VIcon,VOverlay})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Leaderboard.vue?vue&type=style&index=0&id=53713ed1&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBar.vue?vue&type=style&index=1&id=8a5d2b78&lang=scss&scoped=true&\"","import { generateId } from \"../utils/utils\";\n\n/**\n * Represents a User session for stats.\n */\nexport interface Session {\n /**\n * The ID of the session.\n */\n id: string;\n /**\n * The start time of the session.\n */\n start: Date;\n /**\n * The last active time of the session.\n *\n * This is updated every time the session is used.\n *\n * This is used to determine if the session is too idle and should expire.\n */\n lastActive: Date;\n}\n\n/**\n * Create a new session.\n * @returns The new session.\n */\nfunction newSession(): Session {\n return {\n id: generateId(),\n start: new Date(),\n lastActive: new Date(),\n };\n}\n\nlet _currentSession: Session | undefined = undefined;\nlet _cacheStorage: Cache | undefined = undefined;\n\n/**\n * The key used to store the session in local storage or cache storage.\n */\nconst LOCAL_STORAGE_KEY = \"cg_session\";\n/**\n * The maximum amount of time a session can be alive before it is considered expired.\n * In milliseconds.\n */\nconst SESSION_MAX_AGE = 1000 * 60 * 60 * 24 * 1; // 1 day\n/**\n * The maximum amount of time a session can be idle before it is considered expired.\n * In milliseconds.\n */\nconst SESSION_MAX_IDLE = 1000 * 60 * 10; // 10 minutes\n\n/**\n * Save the session to cache storage.\n * @param session The session to save.\n */\nasync function saveSessionToCacheStorage(session: Session): Promise {\n if (!window.caches) return;\n if (!_cacheStorage) _cacheStorage = await caches.open(\"cg_session\");\n\n const json = JSON.stringify(session);\n await _cacheStorage.put(LOCAL_STORAGE_KEY, new Response(json));\n}\n\n/**\n * Load the session from cache storage.\n * @returns The session, or undefined if no session exists.\n */\nasync function loadSessionFromCacheStorage(): Promise {\n if (!window.caches) return;\n if (!_cacheStorage) _cacheStorage = await caches.open(\"cg_session\");\n\n const response = await _cacheStorage.match(LOCAL_STORAGE_KEY);\n if (!response) return undefined;\n\n const res = await response.json();\n res.start = new Date(res.start);\n res.lastActive = new Date(res.lastActive);\n return res;\n}\n\n/**\n * Clear the session from cache storage.\n */\nasync function clearSessionFromCacheStorage(): Promise {\n if (!window.caches) return;\n if (!_cacheStorage) _cacheStorage = await caches.open(\"cg_session\");\n\n await _cacheStorage.delete(LOCAL_STORAGE_KEY);\n}\n\nloadSessionFromCacheStorage().then((session) => {\n if (session) _currentSession = session;\n});\n\n/**\n * Save the session to browser storage.\n * @param session The session to save.\n */\nfunction saveSession(session: Session): void {\n _currentSession = session;\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(session));\n saveSessionToCacheStorage(session);\n}\n\n/**\n * Load the session from browser storage.\n * @returns The session, or undefined if no session exists.\n */\nfunction loadSession(): Session | undefined {\n if (_currentSession) return _currentSession;\n\n const item = localStorage.getItem(LOCAL_STORAGE_KEY);\n if (!item) return undefined;\n\n const res = JSON.parse(item);\n res.start = new Date(res.start);\n res.lastActive = new Date(res.lastActive);\n return res;\n}\n\n/**\n * Get the current session.\n *\n * A new session is created if:\n * * If no session exists.\n * * If the session is too old or too idle.\n *\n * Will update the last active time of the session.\n * @returns The current or new session.\n */\nexport function getSession(): Session {\n // Get session from browser storage\n let session = loadSession();\n\n // If no session, create a new one\n if (!session) {\n session = newSession();\n saveSession(session);\n } else {\n // Check if session is too old\n const age = Date.now() - session.start.getTime();\n if (age > SESSION_MAX_AGE) {\n session = newSession();\n saveSession(session);\n }\n\n // Check if session is too idle\n const idle = Date.now() - session.lastActive.getTime();\n if (idle > SESSION_MAX_IDLE) {\n session = newSession();\n saveSession(session);\n }\n }\n\n // Update last active time for the current session\n session.lastActive = new Date();\n saveSession(session);\n\n return session;\n}\n\n/**\n * Clear the session from browser storage.\n */\nexport function clearSession(): void {\n localStorage.removeItem(LOCAL_STORAGE_KEY);\n clearSessionFromCacheStorage();\n}\n","import * as SessionManager from \"./SessionManager\";\n\nimport { User } from \"../models/User\";\nimport * as Utils from \"../utils/utils\";\n\nlet _APIEndpoint: string | undefined = undefined;\nlet _user: User | undefined = undefined;\nlet _cgToken: string | undefined = undefined;\nconst _pageLoadID: string = Utils.generateId();\n\nconst _attributes: { [key: string]: unknown } = {};\n\n/**\n * Set the API endpoint to send stats to.\n * @param endpoint The API endpoint to send stats to.\n * @throws If the API endpoint is not set.\n * @throws If the API endpoint is not a valid URL.\n * @throws If the API endpoint is not HTTPS.\n */\nexport function setAPIEndpoint(endpoint: string): void {\n if (!endpoint) throw new Error(\"API endpoint not set.\");\n const url = new URL(endpoint);\n const isLocal = /(^localhost$|^127\\.0\\.0\\.1$|^10\\.|^172\\.(1[6-9]|2[0-9]|31)\\.|^192\\.168)/.test(url.hostname);\n const isHTTPS = url.protocol === \"https:\";\n // API Endpoint must be HTTPS unless it's local\n if (!isLocal && !isHTTPS) throw new Error(\"API endpoint must be HTTPS.\");\n _APIEndpoint = endpoint;\n}\n\n/**\n * Set the user to send stats for.\n * @param user The user to set.\n */\nexport function setUser(user: User): void {\n _user = user;\n}\n\n/**\n * Set the token to use for the Authorization header.\n * @param token The token to use for the Authorization header.\n */\nexport function setCGToken(token: string): void {\n _cgToken = token;\n}\n\n/**\n * Set an attribute to send with every stat.\n * @param key The key of the attribute.\n * @param value The value of the attribute.\n */\nexport function setAttribute(key: string, value: unknown): void {\n _attributes[key] = value;\n}\n\n/**\n * The base interface for stats.\n */\ninterface Stats {\n session?: SessionManager.Session;\n session_id?: string;\n log_type: string;\n date?: string;\n entrypoint_ip?: string;\n url?: string;\n sub_type?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n page_load_ID?: string;\n user_agent?: string;\n language?: string;\n orientation?: string;\n user_id?: string;\n isWebApp?: boolean;\n hostname?: string;\n}\n\ninterface NavigationStats extends Stats {\n log_type: \"navigation_stat\";\n from: string;\n to: string;\n}\n\ninterface EndSessionStats extends Stats {\n log_type: \"client_end_session_stat\";\n reason_of_leave: string;\n}\n\ninterface SessionStats extends Stats {\n log_type: \"client_session_stat\";\n network_score: number;\n webrtc_session_id: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n webrtc_stats: any;\n}\n\ninterface SpeedStats extends Stats {\n speed_test_pass: \"skip\" | \"fail\" | \"pass\";\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result: any;\n}\n\n/**\n * Get the current date in the format YYYY-MM-DD HH:MM:SS.SSS.\n * @returns The current date in the format YYYY-MM-DD HH:MM:SS.SSS.\n */\nfunction GetDate(): string {\n const now = new Date();\n const dd = now.getUTCDate();\n const mm = now.getUTCMonth() + 1;\n const yyyy = now.getUTCFullYear();\n const hh = now.getUTCHours();\n const min = now.getUTCMinutes();\n const ss = now.getUTCSeconds();\n const SSS = now.getUTCMilliseconds();\n\n let timestamp = `${yyyy}-${mm < 10 ? `0${mm}` : mm}-${dd < 10 ? `0${dd}` : dd}`;\n timestamp = `${timestamp} ${hh < 10 ? `0${hh}` : hh}:${min < 10 ? `0${min}` : min}:${ss < 10 ? `0${ss}` : ss}.`;\n if (SSS < 10) {\n timestamp = `${timestamp}00`;\n } else if (SSS < 100) {\n timestamp = `${timestamp}0`;\n }\n timestamp = `${timestamp}${SSS}`;\n return timestamp;\n}\n\n/**\n * Enrich the stats with additional information.\n *\n * This includes the session ID, date, entrypoint IP, URL, page load ID, user agent, language, orientation, user ID, and whether the page is a web app.\n * @param stats The stats to enrich.\n * @returns The enriched stats.\n */\nfunction enrichStats(stats: Stats): Stats {\n stats.session = SessionManager.getSession();\n stats.session_id = stats.session.id;\n stats.date = GetDate();\n stats.entrypoint_ip = _APIEndpoint;\n stats.hostname = window.location.hostname;\n stats.url = window.location.href;\n stats.page_load_ID = _pageLoadID;\n stats.user_agent = navigator.userAgent;\n stats.language = navigator.language;\n if (_user) stats.user_id = _user.id;\n if (window.screen.orientation) stats.orientation = window.screen.orientation.type;\n else stats.orientation = window.innerHeight > window.innerWidth ? \"portrait\" : \"landscape\";\n stats.isWebApp =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window.navigator as any).standalone ||\n window.matchMedia(\"(display-mode: standalone)\").matches ||\n window.matchMedia(\"(display-mode: fullscreen)\").matches;\n stats = { ...stats, ..._attributes };\n return stats;\n}\n\n/**\n * Send a stat to the API endpoint.\n * @param stats The stat to send.\n * @throws If the API endpoint is not set.\n */\nfunction SendStats(stats: Stats): void {\n if (!_APIEndpoint) throw new Error(\"API endpoint not set.\");\n\n const headers: Headers = new Headers();\n headers.append(\"Content-Type\", \"application/json;charset=UTF-8\");\n if (_cgToken) headers.append(\"Authorization\", `Bearer ${_cgToken}`);\n\n fetch(`${_APIEndpoint}/send_stat/arbitrary`, {\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(enrichStats(stats)),\n });\n}\n\n/**\n * Send a stat to the API endpoint using an XMLHttpRequest.\n *\n * This is used for the session stats, as fetch makes the browser crash when doing too many requests.\n * @param stats The stat to send.\n */\nfunction sendStatsXhr(stats: Stats): void {\n if (!_APIEndpoint) throw new Error(\"API endpoint not set.\");\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", `${_APIEndpoint}/send_stat/arbitrary`, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n if (_cgToken) xhr.setRequestHeader(\"Authorization\", `Bearer ${_cgToken}`);\n xhr.send(JSON.stringify(enrichStats(stats)));\n}\n\n/**\n * Send arbitrary stats to the API endpoint.\n * @param log_type The log type of the stats.\n * @param data Arbitrary data to send with the stats.\n * @param additional_attributes Additional attributes to send with the stats.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function SendArbitraryStats(\n log_type: string,\n data?: any,\n additional_attributes?: Record\n): void {\n let stats: Stats = {\n log_type: log_type,\n };\n stats = { ...stats, ...additional_attributes };\n if (data) stats.data = data;\n SendStats(stats);\n}\n\n/**\n * Send navigation stats to the API endpoint.\n * @param from The page the user navigated from.\n * @param to The page the user navigated to.\n */\nexport function SendNavigationStats(from: string, to: string): void {\n const stats: NavigationStats = {\n log_type: \"navigation_stat\",\n from,\n to,\n };\n SendStats(stats);\n}\n\n/**\n * Send end session stats to the API endpoint.\n * @param reason_of_leave The reason the user left the session.\n * @param data Arbitrary data to send with the stats.\n * @param additional_attributes Inner data to send with the stats.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function SendEndSessionStats(reason_of_leave: string, data?: any, additional_attributes?: any): void {\n let stats: EndSessionStats = {\n log_type: \"client_end_session_stat\",\n reason_of_leave,\n };\n stats = { ...stats, ...additional_attributes };\n if (data) stats.data = data;\n SendStats(stats);\n}\n\n/**\n * Send WebRTC session stats to the API endpoint.\n *\n * The stats will be sent using an XMLHttpRequest.\n * @param webrtc_session_id The WebRTC session ID.\n * @param network_score The network score.\n * @param webrtc_stats The WebRTC stats.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function SendSessionStats(webrtc_session_id: string, network_score: number, webrtc_stats: any): void {\n const stats: SessionStats = {\n log_type: \"client_session_stat\",\n webrtc_session_id,\n network_score,\n webrtc_stats,\n };\n sendStatsXhr(stats);\n}\n\n/**\n * Send speed test stats to the API endpoint.\n * @param speed_test_pass Whether the speed test passed.\n * @param result The result of the speed test.\n */\nexport function SendSpeedTestStats(speed_test_pass: \"skip\" | \"fail\" | \"pass\", result?: unknown): void {\n const stats: SpeedStats = {\n log_type: \"client_speedtest_stat\",\n speed_test_pass,\n result,\n };\n SendStats(stats);\n}\n\n/**\n * Send a button click stat to the API endpoint.\n * @param location Where the button was clicked.\n * @param button The button that was clicked.\n * @param data Arbitrary data to send with the stats.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function SendButtonClickStats(location: string, button: string, data?: Record): void {\n SendArbitraryStats(\"button_click\", { location, button, ...data });\n}\n","import { defineModule } from \"direct-vuex\";\n\nimport { apm, Transaction } from \"@elastic/apm-rum\";\nimport { LocaleMessageObject } from \"vue-i18n\";\nimport sortBy from \"lodash/sortBy\";\n\nimport { moduleActionContext, axiosInstance as axios } from \"@/store/\";\nimport VueI18n from \"@/plugins/i18n\";\n\nimport { Genre } from \"./genres\";\nimport { Publisher } from \"./publishers\";\n\nimport router from \"../../router\";\nimport { UserPermission } from \"./authentication\";\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport { RawLocation } from \"vue-router\";\nimport { StreamingMode } from \"./bigscreen\";\n\nlet gamingPageTab: Window | null;\n\ninterface GameLocalizedClientInfo {\n name: string;\n description: string;\n shortDescription: string;\n caregameBonuses: string;\n}\n\nenum PegiRating {\n PEGI3 = 3,\n PEGI7 = 7,\n PEGI12 = 12,\n PEGI16 = 16,\n PEGI18 = 18,\n}\n\nenum PegiContentDescriptor {\n BAD_LANGUAGE,\n DISCRIMINATION,\n DRUGS,\n FEAR,\n GAMBLING,\n SEX,\n VIOLENCE,\n IN_GAME_PURCHASES,\n}\n\nexport enum SubscriptionAccess {\n UNKNOWN = \"unknown\",\n FULL = \"full\",\n DISCOVERY = \"discovery\",\n TRIAL = \"trial\",\n VISIBLE = \"visible\",\n}\n\nexport interface Subscription {\n access: SubscriptionAccess;\n type: string;\n endOfSubscriptionDate: Date;\n}\n\nclass Pegi {\n rating!: PegiRating;\n contentDescriptors!: PegiContentDescriptor[];\n}\n\nclass ContentRating {\n pegi!: Pegi;\n}\n\nexport enum TriggerEvent {\n END_OF_MATCH = \"end_of_race\",\n}\n\nexport enum TriggerConditionPWA {\n PWA = \"PWA\",\n NOT_PWA = \"NOT_PWA\",\n}\n\nexport enum TriggerOutput {\n POPUP_TUTO_PWA = \"POPUP_TUTO_PWA\",\n POPUP_SHARE = \"POPUP_SHARE\",\n}\n\nexport interface Trigger {\n _id: string;\n\n /**\n * What event triggers the trigger\n */\n event: TriggerEvent;\n\n /**\n * Optional condition for the trigger based on the access type of the highest subscription of the user\n */\n conditionAccess: SubscriptionAccess;\n\n /**\n * Optional condition for the trigger based on the PWA status of the user\n */\n conditionPWA: TriggerConditionPWA;\n\n /**\n * What output the trigger will have\n */\n output: TriggerOutput;\n\n /**\n * Number of times the trigger should be fired for the output to be triggered. 0 will disable.\n */\n interval: number;\n\n /**\n * ax number of times the trigger can be fired. 0 for unlimited.\n */\n max: number;\n\n /**\n * Whether the trigger is enabled or not\n */\n enabled: boolean;\n\n /**\n * Priority of the trigger. Higher priority triggers will be fired first.\n */\n priority: number;\n\n /**\n * Whether the trigger should stop other triggers from being fired.\n */\n stopOtherTriggers: boolean;\n}\n\nexport interface Game {\n _id: string;\n appID: string;\n bannerBigNoTitle: string;\n bannerBigWithTitle: string;\n bannerSmall: string;\n homeBannerSmall: string;\n headerVideo: string;\n name: string;\n orientation: string;\n isComingSoon: boolean;\n genre: string;\n publisher: string;\n canPlayOnTv: boolean;\n releasedAt: Date;\n contentRating: ContentRating;\n localizedClientInfo: { [key in Locale]: GameLocalizedClientInfo };\n screenshots: Screenshot[];\n similarGames: string[];\n triggers: Trigger[];\n subscriptionAccess: SubscriptionAccess;\n}\n\ntype Locale = \"fr\" | \"en\" | string;\n\nenum ScreenshotType {\n IMAGE = \"IMAGE\",\n VIDEO = \"VIDEO\",\n}\n\nexport interface Screenshot {\n url: string;\n type: ScreenshotType;\n thumbnail?: string;\n}\n\nexport function sortGamesByName(games: Game[]): Game[] {\n return sortBy(games, [\"name\"]);\n}\n\nexport function sortGamesByDate(games: Game[]): Game[] {\n return games.slice().sort((a, b) => new Date(b.releasedAt).getTime() - new Date(a.releasedAt).getTime());\n}\n\ninterface GameCache {\n urlRequest: string;\n games: Game[];\n cacheDate: Date;\n}\n\nexport interface GamesState {\n games: Game[];\n favoriteGamesIds: string[];\n favoriteGames: Game[];\n lastPlayedGamesIds: string[];\n lastPlayedGames: Game[];\n subscriptions: Subscription[];\n expiredSubscriptions: Subscription[];\n cache: { [urlRequest: string]: GameCache | undefined };\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n games: [],\n favoriteGamesIds: [],\n favoriteGames: [],\n lastPlayedGamesIds: [],\n lastPlayedGames: [],\n subscriptions: [],\n expiredSubscriptions: [],\n cache: {},\n } as GamesState,\n getters: {\n getGame: (state) => (appID: string): Game | undefined => state.games.find((g) => g.appID == appID),\n getGameById: (state) => (id: string): Game | undefined => state.games.find((g) => g._id == id),\n gamesSortedAlpha: (state): Game[] => sortGamesByName(state.games),\n gamesSortedDate: (state): Game[] => sortGamesByDate(state.games),\n getMaxTrialPlays: (_state): number => process.env.VUE_APP_MAX_TRIAL_PLAYS || 5,\n getGamesFromCache: (state) => (urlRequest: string): Game[] | undefined => {\n const cachedList = state.cache[urlRequest];\n if (!cachedList) return undefined;\n return cachedList.games;\n },\n /**\n * Returns the highest subscription the user has. FULL > DISCOVERY > TRIAL > VISIBLE\n * If the user has multiple subscriptions of the same type, the one that expires the latest is returned\n */\n getHighestSubscription: (state): Subscription | undefined => {\n // If the user has no subscription, return undefined\n if (state.subscriptions.length == 0) return undefined;\n\n // Take the first subscription\n let highestSub: Subscription | undefined = state.subscriptions[0];\n\n // If the user has only one subscription, return it\n if (state.subscriptions.length == 1) return highestSub;\n\n // Create a rank for each subscription type\n const subRanks = {\n [SubscriptionAccess.FULL]: 3,\n [SubscriptionAccess.DISCOVERY]: 2,\n [SubscriptionAccess.TRIAL]: 1,\n [SubscriptionAccess.VISIBLE]: 0,\n [SubscriptionAccess.UNKNOWN]: -1,\n };\n\n // Iterate over all subscriptions but the first one\n for (const sub of state.subscriptions.slice(1)) {\n // If the current subscription is higher than the highest one, replace it\n if (subRanks[sub.access] > subRanks[highestSub.access]) {\n highestSub = sub;\n continue;\n }\n\n // If the current subscription is of the same type as the highest one\n if (subRanks[sub.access] == subRanks[highestSub.access]) {\n // If the current subscription expires later than the highest one, replace it\n if (sub.endOfSubscriptionDate > highestSub.endOfSubscriptionDate) {\n highestSub = sub;\n }\n }\n }\n\n return highestSub;\n },\n /**\n * Returns the subscription the user has for a specific game.\n * If the user has no subscription for the game, the highest subscription is returned\n * @param game The game to get the subscription for\n * @returns The subscription the user has for the game or the highest subscription if the user has no subscription for the game or undefined if the user has no subscription at all\n */\n getGameSubscription: (state, getters) => (game: Game): SubscriptionAccess | undefined => {\n const gam = state.games.find((g) => g._id == game._id);\n if (gam && game.subscriptionAccess !== SubscriptionAccess.UNKNOWN) return game.subscriptionAccess;\n else if (getters.hasSubscription) return getters.getHighestSubscription.access;\n return undefined;\n },\n hasSubscription: (state): boolean => state.subscriptions.length > 0,\n getHighestExpiredSubscription: (state): Subscription | undefined => {\n // If the user has no subscription, return undefined\n if (state.expiredSubscriptions.length == 0) return undefined;\n\n // Take the first subscription\n let highestSub: Subscription | undefined = state.expiredSubscriptions[0];\n\n // If the user has only one subscription, return it\n if (state.expiredSubscriptions.length == 1) return highestSub;\n\n // Create a rank for each subscription type\n const subRanks = {\n [SubscriptionAccess.FULL]: 3,\n [SubscriptionAccess.DISCOVERY]: 2,\n [SubscriptionAccess.TRIAL]: 1,\n [SubscriptionAccess.VISIBLE]: 0,\n [SubscriptionAccess.UNKNOWN]: -1,\n };\n\n // Iterate over all subscriptions but the first one\n for (const sub of state.expiredSubscriptions.slice(1)) {\n // If the current subscription is higher than the highest one, replace it\n if (subRanks[sub.access] > subRanks[highestSub.access]) {\n highestSub = sub;\n continue;\n }\n\n // If the current subscription is of the same type as the highest one\n if (subRanks[sub.access] == subRanks[highestSub.access]) {\n // If the current subscription expires later than the highest one, replace it\n if (sub.endOfSubscriptionDate > highestSub.endOfSubscriptionDate) {\n highestSub = sub;\n }\n }\n }\n\n return highestSub;\n },\n },\n mutations: {\n ADD_GAMES(state, games: Game[]) {\n // don't add games that already exist\n const newGames = games.filter((g) => g).filter((g) => !state.games.find((g2) => g2._id == g._id));\n // initialize subscriptionAccess to unknown\n newGames.forEach((g) => (g.subscriptionAccess = SubscriptionAccess.UNKNOWN));\n state.games.push(...newGames);\n },\n SET_FAVORITE_GAMES_IDS(state, gameIds: string[]) {\n state.favoriteGamesIds = gameIds;\n },\n\n SET_FAVORITE_GAMES(state, games: Game[]) {\n state.favoriteGames = games;\n },\n SET_LAST_PLAYED_GAMES_IDS(state, gameIds: string[]) {\n state.lastPlayedGamesIds = gameIds;\n },\n SET_LAST_PLAYED_GAMES(state, games: Game[]) {\n state.lastPlayedGames = games;\n },\n ADD_GAME_TO_LAST_PLAYED(state, game: Game) {\n // remove game if already in list\n const index = state.lastPlayedGamesIds.indexOf(game._id);\n if (index > -1) {\n state.lastPlayedGamesIds.splice(index, 1);\n state.lastPlayedGames.splice(index, 1);\n }\n state.lastPlayedGamesIds.unshift(game._id);\n state.lastPlayedGames.unshift(game);\n },\n ADD_GAME_TO_FAVORITES(state, game: Game) {\n state.favoriteGamesIds.push(game._id);\n state.favoriteGames.push(game);\n },\n REMOVE_GAME_FROM_FAVORITES(state, game: Game) {\n state.favoriteGamesIds.splice(state.favoriteGamesIds.indexOf(game._id), 1);\n state.favoriteGames.splice(state.favoriteGames.indexOf(game), 1);\n },\n SET_SUBSCRIPTIONS(state, subscriptions: Subscription[]) {\n state.subscriptions = subscriptions;\n },\n SET_EXPIRED_SUBSCRIPTIONS(state, subscriptions: Subscription[]) {\n state.expiredSubscriptions = subscriptions;\n },\n CACHE_REQUEST(state, payload: { urlRequest: string; games: Game[] }) {\n state.cache[payload.urlRequest] = {\n urlRequest: payload.urlRequest,\n games: payload.games,\n cacheDate: new Date(),\n };\n },\n SET_GAME_SUBCRIPTION(state, payload: { game: Game; access: SubscriptionAccess }) {\n payload.game.subscriptionAccess = payload.access;\n },\n },\n actions: {\n async applyGamesLocales(context, games: Game[]): Promise {\n const { rootDispatch } = moduleActionContext(context, module);\n await rootDispatch.language.init();\n\n games.forEach((game) => {\n if (!game) return;\n const locales: Locale[] = Object.keys(game.localizedClientInfo);\n locales.forEach((locale) => {\n const messages: LocaleMessageObject = {};\n messages[`games.${game._id}.name`] = game?.localizedClientInfo?.[locale]?.name;\n messages[`games.${game._id}.description`] = game?.localizedClientInfo?.[locale]?.description;\n messages[`games.${game._id}.shortDescription`] = game?.localizedClientInfo?.[locale]?.shortDescription;\n messages[`games.${game._id}.caregameBonuses`] = game?.localizedClientInfo?.[locale]?.caregameBonuses || \"\";\n VueI18n.mergeLocaleMessage(locale, messages);\n });\n });\n },\n async getAllGames(context, force?: boolean): Promise {\n const { dispatch, state, commit } = moduleActionContext(context, module);\n try {\n const data = await dispatch.getGamesByQuery({ query: {}, force });\n commit.ADD_GAMES(data);\n dispatch.applyGamesLocales(data);\n return state.games;\n } catch (error) {\n console.error(error);\n return [];\n }\n },\n async getGamesByQuery(context, payload: { query: Record; force?: boolean }): Promise {\n const { dispatch, commit, getters } = moduleActionContext(context, module);\n try {\n const urlRequest = `/api/v1/games/${JSON.stringify(payload.query)}`;\n const cachedGames = getters.getGamesFromCache(urlRequest);\n if (cachedGames && !payload.force) return cachedGames;\n else {\n const res = await axios.get(`/api/v1/games`, { params: { query: payload.query } });\n commit.CACHE_REQUEST({\n urlRequest: urlRequest,\n games: res.data,\n });\n commit.ADD_GAMES(res.data);\n dispatch.applyGamesLocales(res.data);\n return res.data;\n }\n } catch (error) {\n console.error(error);\n return [];\n }\n },\n async getGamesByIds(context, ids: string[]): Promise {\n const { dispatch, state } = moduleActionContext(context, module);\n\n const gamesToFetch: string[] = [];\n const gamesAlreadyFetched: Game[] = [];\n ids.forEach((id) => {\n const game = state.games.find((g) => g._id == id);\n if (game) gamesAlreadyFetched.push(game);\n else gamesToFetch.push(id);\n });\n\n // if there are no games to fetch, return the games already in the store\n if (gamesToFetch.length == 0) return gamesAlreadyFetched;\n // must do this instead of { $id: { $in: gamesToFetch } } because of a bug in the backend\n const query = gamesToFetch.map((id) => ({ _id: id }));\n try {\n const res = await dispatch.getGamesByQuery({ query: { $or: query } });\n // returns the games fetched as well as the game already fetched\n return [...res, ...gamesAlreadyFetched];\n } catch (error) {\n console.error(error);\n return [];\n }\n },\n async getGameByAppID(context, appID: string): Promise {\n const { dispatch, getters, commit } = moduleActionContext(context, module);\n try {\n const gameInState = getters.getGame(appID);\n if (gameInState !== undefined) return gameInState;\n const res = await axios.get(`/api/v1/games`, {\n params: {\n query: {\n appID,\n },\n },\n });\n\n const game = res.data[0];\n if (!game) return;\n commit.ADD_GAMES([game]);\n dispatch.applyGamesLocales([game]);\n return game;\n } catch (error) {\n console.error(error);\n return undefined;\n }\n },\n async getGamesByGenre(context, genre: Genre): Promise {\n const { dispatch } = moduleActionContext(context, module);\n const res = await dispatch.getGamesByQuery({ query: { genre: genre._id } });\n return res;\n },\n async getGamesByPublisher(context, publisher: Publisher): Promise {\n const { dispatch } = moduleActionContext(context, module);\n const res = await dispatch.getGamesByQuery({ query: { publisher: publisher._id } });\n return res;\n },\n async getFavoriteGames(context): Promise {\n const { dispatch, commit, state } = moduleActionContext(context, module);\n if (state.favoriteGamesIds.length == 0) return [];\n const res = await dispatch.getGamesByIds(state.favoriteGamesIds);\n const sorted = res.sort((a, b) => {\n const aFavorite = state.favoriteGamesIds.indexOf(a._id);\n const bFavorite = state.favoriteGamesIds.indexOf(b._id);\n return aFavorite - bFavorite;\n });\n commit.SET_FAVORITE_GAMES(sorted);\n return res;\n },\n async getLastPlayedGames(context): Promise {\n const { dispatch, commit, state } = moduleActionContext(context, module);\n if (state.lastPlayedGamesIds.length == 0) return [];\n const res = await dispatch.getGamesByIds(state.lastPlayedGamesIds);\n const sorted = res.sort((a, b) => {\n const aLastPlayed = state.lastPlayedGamesIds.indexOf(a._id);\n const bLastPlayed = state.lastPlayedGamesIds.indexOf(b._id);\n return aLastPlayed - bLastPlayed;\n });\n commit.SET_LAST_PLAYED_GAMES(sorted);\n return res;\n },\n async init(context) {\n const { dispatch, rootDispatch } = moduleActionContext(context, module);\n await dispatch.getAllGames();\n await rootDispatch.genres.getGenres();\n await rootDispatch.publishers.getPublishers();\n await rootDispatch.homeSections.getHomeSections();\n await rootDispatch.gameLists.getGameLists();\n await dispatch.checkAllsubscriptions();\n await dispatch.getExpiredSubscriptions();\n },\n async addToFavorite(context, game: Game) {\n const { commit } = moduleActionContext(context, module);\n try {\n commit.ADD_GAME_TO_FAVORITES(game);\n await axios.post(`/api/v1/favorites/${game._id}`);\n } catch (err) {\n commit.REMOVE_GAME_FROM_FAVORITES(game);\n }\n },\n async removeFromFavorite(context, game: Game) {\n const { commit } = moduleActionContext(context, module);\n try {\n commit.REMOVE_GAME_FROM_FAVORITES(game);\n await axios.delete(`/api/v1/favorites/${game._id}`);\n } catch (err) {\n commit.ADD_GAME_TO_FAVORITES(game);\n }\n },\n\n async checkGameSubscription(context, payload: { game: Game; force?: boolean }): Promise {\n const { commit } = moduleActionContext(context, module);\n if (!payload.force && payload.game.subscriptionAccess !== SubscriptionAccess.UNKNOWN)\n return payload.game.subscriptionAccess;\n const response = await axios.get<{ access: SubscriptionAccess }>(`/api/v1/subscription/${payload.game._id}`);\n commit.SET_GAME_SUBCRIPTION({ game: payload.game, access: response.data.access });\n return response.data.access;\n },\n async checkAllsubscriptions(context): Promise {\n const { state, commit } = moduleActionContext(context, module);\n const response = await axios.get(`/api/v1/subscription`);\n commit.SET_SUBSCRIPTIONS(response.data);\n return state.subscriptions;\n },\n async getExpiredSubscriptions(context): Promise {\n const { state, commit } = moduleActionContext(context, module);\n const response = await axios.get(`/api/v1/subscription/expired`);\n commit.SET_EXPIRED_SUBSCRIPTIONS(response.data);\n return state.expiredSubscriptions;\n },\n async getRemainingTrialPlays(context, game: Game): Promise {\n const { getters } = moduleActionContext(context, module);\n const tries = localStorage.getItem(`trial_plays_${game.appID}`);\n if (tries != null) return getters.getMaxTrialPlays - parseInt(tries);\n return 0;\n },\n openSubPopup(context) {\n const { dispatch, rootState } = moduleActionContext(context, module);\n\n const clickedSub = apm.startTransaction(\"Clicked-sub-button\", \"usage-tracking\");\n setTimeout(() => {\n clickedSub?.end();\n const isTempAccount = rootState.authentication.user?.tempAccount || true;\n const url = isTempAccount ? process.env.VUE_APP_POPUP_URL_SUB_TEMP_ACCOUNT : process.env.VUE_APP_POPUP_URL_SUB;\n\n StatsManager.SendNavigationStats(location.href, url);\n if (/^true$/i.test(process.env.VUE_APP_POPUP_PARTNER_REDIRECT)) {\n location.replace(url);\n return;\n }\n\n const popup = window.open(url, \"_blank\");\n const listener = async (event: MessageEvent): Promise => {\n if (((!event.source as unknown) as Window) === popup) return;\n if (event.data.type === \"subscribe\") {\n let subbed: undefined | Transaction;\n if (event.data.status === \"success\") {\n await dispatch.getAllGames(true);\n await dispatch.checkAllsubscriptions();\n subbed = apm.startTransaction(\"Subbed\", \"usage-tracking\");\n }\n setTimeout(() => {\n popup?.close();\n subbed?.end();\n window.removeEventListener(\"message\", listener);\n }, 10);\n }\n };\n window.addEventListener(\"message\", listener);\n }, 10);\n },\n async playUrl(context, payload: { game: Game; playOnBigScreen: boolean }): Promise {\n const { rootGetters } = moduleActionContext(context, module);\n\n // Create a new URL with the current URL as base\n const url = new URL(\n `/play/?appid=${payload.game.appID}&cgtoken=${rootGetters.authentication.jwt}`,\n window.location.href\n );\n if (rootGetters.bigscreen.isBigscreenPaired && payload.playOnBigScreen) url.searchParams.append(\"streamingmode\", StreamingMode.BIGSCREEN);\n else url.searchParams.append(\"streamingmode\", StreamingMode.MOBILE);\n // Add all query parameters from the current URL to the new URL\n for (const [key, value] of new URLSearchParams(location.search).entries()) {\n url.searchParams.append(key, value as string);\n }\n return url.href;\n },\n async openPlay(context, payload: { game: Game; playOnBigScreen: boolean }): Promise {\n const { rootGetters, dispatch, commit } = moduleActionContext(context, module);\n const playIframeLocation: RawLocation = { path: `/playiframe/${payload.game.appID}` };\n\n if (payload.playOnBigScreen && rootGetters.bigscreen.isBigscreenPaired) {\n playIframeLocation.query = {\n \"streamingmode\": StreamingMode.BIGSCREEN,\n }\n } else {\n playIframeLocation.query = {\n \"streamingmode\": StreamingMode.MOBILE,\n }\n }\n if (rootGetters.mobile.isWebApp) router.push(playIframeLocation);\n else {\n if (rootGetters.mobile.isiOS) {\n gamingPageTab = window.open(await dispatch.playUrl(payload));\n } else {\n try {\n gamingPageTab?.location.origin;\n gamingPageTab = window.open(await dispatch.playUrl(payload), \"Game\");\n } catch (err) {\n gamingPageTab = window.open(await dispatch.playUrl(payload));\n }\n }\n if (!gamingPageTab) router.push(playIframeLocation);\n }\n\n commit.ADD_GAME_TO_LAST_PLAYED(payload.game);\n },\n async play(context, payload: { game: Game; playOnBigScreen: boolean }): Promise {\n const { state, getters, dispatch, rootGetters, rootCommit, rootDispatch } = moduleActionContext(context, module);\n\n const highestSub = getters.getHighestSubscription;\n // If the user has at most a subscription VISIBLE, then they can't play\n if (highestSub == null || highestSub.access == SubscriptionAccess.VISIBLE) {\n rootDispatch.authentication.needSubscription();\n return;\n // Otherwise, if the user has more than 1 subscription, we need to check the subscription differently\n } else if (state.subscriptions.length > 1) {\n // check if there is at least one VISIBLE subscription access type\n const atLeastOneVisible = state.subscriptions.some((sub) => sub.access == SubscriptionAccess.VISIBLE);\n\n // If there's at least one VISIBLE subscription, we need to check the subscription for the game specifically\n // If there's no visible subscription, they can play the game\n if (atLeastOneVisible) {\n const gameSub = await dispatch.checkGameSubscription({ game: payload.game });\n if (gameSub == SubscriptionAccess.VISIBLE) {\n rootDispatch.authentication.needSubscription();\n return;\n }\n }\n }\n\n const from = window.location.href;\n const playUrl = await dispatch.playUrl(payload);\n\n let pwaIsInstalled = false;\n if ((navigator as any).getInstalledRelatedApps) {\n const relatedApps = await (navigator as any).getInstalledRelatedApps();\n pwaIsInstalled = relatedApps.length > 0;\n }\n\n const envSkipPWACheckAndroid = /^true$/i.test(process.env.VUE_APP_SKIP_PWA_CHECK_ANDROID);\n const envSkipPWACheckiOS = /^true$/i.test(process.env.VUE_APP_SKIP_PWA_CHECK_IOS);\n\n let envSkipPWACheck = false;\n if (rootGetters.mobile.isAndroid) envSkipPWACheck = envSkipPWACheckAndroid;\n else if (rootGetters.mobile.isiOS) envSkipPWACheck = envSkipPWACheckiOS;\n else if (envSkipPWACheckAndroid && envSkipPWACheckiOS) envSkipPWACheck = true;\n\n if (\n !envSkipPWACheck &&\n !rootGetters.mobile.isWebApp &&\n !rootGetters.authentication.hasPermission(UserPermission.SKIP_ADD2HOME) &&\n !pwaIsInstalled\n ) {\n if (rootGetters.mobile.isAndroid && rootGetters.mobile.canDeferPWAPrompt) {\n rootCommit.mobile.SHOW_ADD2HOME_ANDROID_INTERCEPT({\n onSkip: async () => {\n dispatch.openPlay(payload);\n StatsManager.SendNavigationStats(from, playUrl);\n },\n });\n } else {\n rootCommit.SHOW_ADD2HOME_TUTO({\n onSkip: async () => {\n dispatch.openPlay(payload);\n StatsManager.SendNavigationStats(from, playUrl);\n },\n });\n }\n } else {\n dispatch.openPlay(payload);\n StatsManager.SendNavigationStats(from, playUrl);\n }\n },\n },\n});\n\nexport default module;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4d8df3e4&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green100\":\"#cfe5f2\",\"green200\":\"#87bedf\",\"green300\":\"#57a3d2\",\"green400\":\"#2789c5\",\"green500\":\"#0f7cbf\",\"green600\":\"#0e70ac\",\"green700\":\"#0b5786\",\"green800\":\"#094a73\",\"green900\":\"#083e60\",\"green1000\":\"#042538\",\"purple100\":\"#e7e7f5\",\"purple200\":\"#d0d0eb\",\"purple300\":\"#a2a2c3\",\"purple400\":\"#6b6b88\",\"purple500\":\"#292939\",\"purple600\":\"#1d1d31\",\"purple700\":\"#141429\",\"purple800\":\"#0d0d21\",\"purple900\":\"#07071b\",\"purple1000\":\"#040411\"};","import { defineModule } from \"direct-vuex\";\nimport { RawLocation } from \"vue-router\";\nimport { AxiosResponse } from \"axios\";\nimport jwtDecode, { JwtPayload } from \"jwt-decode\";\n\nimport Store, { moduleActionContext, moduleGetterContext, axiosInstance as axios } from \"@/store/\";\nimport Router from \"@/router\";\nimport { SendMessageToServiceWorker, SERVICE_WORKER_OUTGOING_MESSAGE_TYPE } from \"@/store/modules/mobile\";\nimport i18n from \"@/plugins/i18n\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport { SubscriptionAccess } from \"./games\";\n\nexport enum UserPermission {\n SEE_BASIC_WEBRTC_STATS = \"SEE_BASIC_WEBRTC_STATS\",\n SEE_FULL_WEBRTC_STATS = \"SEE_FULL_WEBRTC_STATS\",\n SKIP_ADD2HOME = \"SKIP_ADD2HOME\",\n SKIP_SPEEDTEST = \"SKIP_SPEEDTEST\",\n BIGSCREEN = \"BIGSCREEN\",\n}\n\nexport interface MeResponse {\n id: string;\n isRegistered: boolean;\n username?: string;\n favoriteGames: string[];\n lastPlayedGames: string[];\n permissions: UserPermission[];\n referralCode: string;\n hasReferrer: boolean;\n createdAt: string;\n gaveAgreement: boolean;\n tempAccount: boolean;\n}\n\nexport interface User {\n id: string;\n uUID?: string;\n username?: string;\n}\n\nexport interface CurrentUser extends User {\n isRegistered: boolean;\n permissions: UserPermission[];\n referralCode: string;\n hasReferrer: boolean;\n createdAt: Date;\n gaveAgreement: boolean;\n tempAccount: boolean;\n}\n\nclass CGToken {\n jwt: string;\n\n constructor(jwt: string) {\n this.jwt = jwt;\n }\n\n get expired(): boolean {\n try {\n const payload = jwtDecode(this.jwt);\n return payload.exp ? payload.exp * 1000 < Date.now() : false;\n } catch (e) {\n return true;\n }\n }\n\n get valid(): boolean {\n try {\n jwtDecode(this.jwt);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport interface AuthenticationState {\n user: CurrentUser | null;\n friendList: User[];\n jwt: string | undefined;\n cgtokens: CGToken[];\n showNeedAccessPopup: boolean;\n showNeedPartnerAuthenticationPopup: boolean;\n referralCode: string | undefined;\n}\n\nconst TOKEN_KEY = \"token\";\nconst CGTOKENS_KEY = \"cgtokens\";\nconst CACHE_KEY = \"auth\";\nconst LOCAL_STORAGE_REFERRAL_KEY = \"referral\";\nlet cacheStorage: Cache | undefined;\n\nlet whoamiPromise: Promise> | undefined = undefined;\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n user: null,\n jwt: undefined,\n cgtokens: [],\n showNeedAccessPopup: false,\n showNeedPartnerAuthenticationPopup: false,\n friendList: [],\n referralCode: undefined,\n } as AuthenticationState,\n getters: {\n isAuthenticated: (state): boolean => !!state.user,\n /**\n * Get the JWT token\n */\n jwt: (state): string | undefined => state.jwt || localStorage.getItem(TOKEN_KEY) || undefined,\n hasPermission: (state) => (permission: UserPermission): boolean =>\n state.user?.permissions.includes(permission) || false,\n isAuthPartner: (_state): boolean => {\n if (!process.env.VUE_APP_POPUP_URL_AUTH) return false;\n return !/^FALSE$/i.test(process.env.VUE_APP_POPUP_URL_AUTH);\n },\n isUrlSubPartner: (_state): boolean => {\n if (!process.env.VUE_APP_POPUP_URL_SUB) return false;\n return !/^FALSE$/i.test(process.env.VUE_APP_POPUP_URL_SUB);\n },\n isOtherSubPartner: (_state): boolean => {\n if (!process.env.VUE_APP_POPUP_HOW_TO_SUB) return false;\n return !/^FALSE$/i.test(process.env.VUE_APP_POPUP_HOW_TO_SUB);\n },\n referralCode: (state): string | undefined =>\n state.referralCode || localStorage.getItem(LOCAL_STORAGE_REFERRAL_KEY) || undefined,\n },\n mutations: {\n SET_JWT(state: AuthenticationState, jwt: string) {\n state.jwt = jwt;\n localStorage.setItem(TOKEN_KEY, jwt);\n StatsManager.setCGToken(jwt);\n },\n ADD_CGTOKEN(state: AuthenticationState, cgtoken: CGToken) {\n // add only new tokens\n if (state.cgtokens.find((t) => t.jwt === cgtoken.jwt)) return;\n // don't add expired and invalid tokens\n if (!cgtoken.valid || cgtoken.expired) return;\n\n state.cgtokens.push(cgtoken);\n\n localStorage.setItem(CGTOKENS_KEY, JSON.stringify(state.cgtokens.map((t) => t.jwt)));\n },\n REMOVE_CGTOKEN(state: AuthenticationState, cgtoken: CGToken) {\n state.cgtokens = state.cgtokens.filter((t) => t.jwt !== cgtoken.jwt);\n\n localStorage.setItem(CGTOKENS_KEY, JSON.stringify(state.cgtokens.map((t) => t.jwt)));\n },\n SET_CGTOKENS(state: AuthenticationState, cgtokens: CGToken[]) {\n // remove expired and invalid tokens\n state.cgtokens = cgtokens.filter((t) => t.valid && !t.expired);\n\n localStorage.setItem(CGTOKENS_KEY, JSON.stringify(state.cgtokens.map((t) => t.jwt)));\n },\n DELETE_JWT(state: AuthenticationState) {\n state.jwt = undefined;\n localStorage.removeItem(TOKEN_KEY);\n cacheStorage?.delete(TOKEN_KEY);\n },\n SET_USER(state: AuthenticationState, user: CurrentUser | null) {\n state.user = user;\n if (user) {\n StatsManager.setUser(user);\n SendMessageToServiceWorker(SERVICE_WORKER_OUTGOING_MESSAGE_TYPE.UPDATE_STATS_INFO, { user_id: user.id });\n }\n },\n SET_SHOW_NEED_ACCESS_POPUP(state: AuthenticationState, show: boolean) {\n state.showNeedAccessPopup = show;\n if (show) StatsManager.SendNavigationStats(location.href, \"NEED_ACCESS_POPUP\");\n else StatsManager.SendNavigationStats(\"NEED_ACCESS_POPUP\", location.href);\n },\n SET_SHOW_NEED_PARTNER_AUTHENTICATION_POPUP(state: AuthenticationState, show: boolean) {\n state.showNeedPartnerAuthenticationPopup = show;\n if (show) StatsManager.SendNavigationStats(location.href, \"NEED_PARTNER_AUTHENTICATION_POPUP\");\n else StatsManager.SendNavigationStats(\"NEED_PARTNER_AUTHENTICATION_POPUP\", location.href);\n },\n SET_USERNAME(state: AuthenticationState, username: string) {\n if (!state.user) return;\n state.user.username = username;\n },\n ADD_FRIENDS(state: AuthenticationState, friends: User[]) {\n // add only new friends\n state.friendList = friends.filter((newFriend) => !state.friendList.find((friend) => friend.id === newFriend.id));\n },\n REMOVE_FRIEND(state: AuthenticationState, friend: User) {\n state.friendList = state.friendList.filter((f) => f.id !== friend.id);\n },\n SET_REFERRAL_CODE(state: AuthenticationState, referralCode: string) {\n state.referralCode = referralCode;\n localStorage.setItem(LOCAL_STORAGE_REFERRAL_KEY, referralCode);\n },\n GIVE_AGREEMENT(state: AuthenticationState) {\n if (!state.user) return;\n state.user.gaveAgreement = true;\n },\n },\n actions: {\n logout(context) {\n const { state, getters, commit } = moduleActionContext(context, module);\n if (getters.jwt) commit.REMOVE_CGTOKEN(new CGToken(getters.jwt));\n cacheStorage?.put(CGTOKENS_KEY, new Response(JSON.stringify(state.cgtokens.map((t) => t.jwt))));\n\n commit.SET_USER(null);\n commit.DELETE_JWT();\n },\n async createTempAccount(context) {\n const { getters, dispatch } = moduleActionContext(context, module);\n try {\n const body: any = {};\n if (getters.referralCode) body.referralCode = getters.referralCode;\n const response = await axios.post<{ token: string }>(`/auth/user/temp`, body);\n await dispatch.setJWT(response.data.token);\n await dispatch.whoami(true);\n } catch (e) {\n console.error(e);\n }\n },\n async tempRegister(context, { username, login, password }: { username: string; login: string; password: string }) {\n const { dispatch } = moduleActionContext(context, module);\n try {\n const response = await axios.post<{ token: string }>(`/auth/user/temp/register`, { username, login, password });\n await dispatch.setJWT(response.data.token);\n await dispatch.whoami(true);\n } catch (e) {\n console.error(e);\n }\n },\n async login(context, { login, password }: { login: string; password: string }): Promise {\n const { dispatch } = moduleActionContext(context, module);\n try {\n const response = await axios.post<{ token: string }>(`/auth/user/login`, { login, password });\n await dispatch.setJWT(response.data.token);\n await dispatch.whoami(true);\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n },\n async loginValidity(_context, { login }: { login: string }): Promise {\n try {\n await axios.post(`/auth/user/login/validity`, { login });\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n },\n async usernameValidity(_context, { username }: { username: string }): Promise {\n try {\n await axios.post(`/auth/user/username/validity`, { username });\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n },\n async whoami(context, force?: boolean): Promise | undefined> {\n const { state, commit, getters, dispatch, rootCommit, rootDispatch } = moduleActionContext(context, module);\n\n await dispatch.initCacheStorage();\n if (!getters.jwt) return;\n try {\n if (whoamiPromise && !force) return whoamiPromise;\n\n // check if current cgtoken is expired, or invalid, and if yes don't even try it\n const currentCGToken = new CGToken(getters.jwt);\n if (currentCGToken.expired || !currentCGToken.valid) {\n throw { message: \"Expired or Invalid token\", response: { status: 403 } };\n }\n\n await (whoamiPromise = axios.get(`/auth/user/me`));\n const response = await whoamiPromise;\n commit.SET_USER({\n id: response.data.id,\n isRegistered: response.data.isRegistered,\n username: response.data.username,\n permissions: response.data.permissions,\n referralCode: response.data.referralCode,\n hasReferrer: response.data.hasReferrer,\n createdAt: new Date(response.data.createdAt),\n gaveAgreement: response.data.gaveAgreement,\n tempAccount: response.data.tempAccount,\n });\n rootCommit.games.SET_FAVORITE_GAMES_IDS(response.data.favoriteGames);\n rootDispatch.games.getFavoriteGames();\n rootCommit.games.SET_LAST_PLAYED_GAMES_IDS(response.data.lastPlayedGames);\n rootDispatch.games.getLastPlayedGames();\n dispatch.getFriends();\n\n // wait 5 seconds\n // await new Promise((resolve) => setTimeout(resolve, 5000));\n\n const accountAge = new Date().getTime() - new Date(response.data.createdAt).getTime();\n const maxAgeForReferrer = 1000 * 60 * 60 * 24 * 7; // 7 days\n // if the user has no referrer and is not too old\n if (!state.user?.hasReferrer && accountAge < maxAgeForReferrer) {\n if (getters.referralCode) {\n try {\n dispatch.updateReferrer();\n } catch (e) {\n console.error(e);\n }\n }\n }\n } catch (e) {\n if (e.response.status === 403) {\n dispatch.logout();\n whoamiPromise = undefined;\n // use the cgtokens to try to login again\n if (state.cgtokens.length > 0) {\n const latestToken = state.cgtokens[state.cgtokens.length - 1];\n commit.SET_JWT(latestToken.jwt);\n await dispatch.whoami(true);\n }\n }\n }\n return;\n },\n async initCacheStorage(context): Promise {\n const { state, commit } = moduleActionContext(context, module);\n\n const cgTokens = localStorage.getItem(CGTOKENS_KEY);\n if (cgTokens && state.cgtokens.length === 0) {\n commit.SET_CGTOKENS(JSON.parse(cgTokens).map((t: string) => new CGToken(t)));\n }\n\n if (!window.caches) return;\n if (!cacheStorage) cacheStorage = await caches.open(CACHE_KEY);\n const cacheResponse = await cacheStorage.match(TOKEN_KEY);\n if (cacheResponse) {\n const token: string = await cacheResponse.json();\n // Don't commit if the token is already set\n if (!state.jwt) commit.SET_JWT(token);\n }\n const cacheResponse2 = await cacheStorage.match(CGTOKENS_KEY);\n if (cacheResponse2) {\n const cgtokens: string[] = await cacheResponse2.json();\n // Don't commit if the cgtokens are already set\n if (state.cgtokens.length === 0) {\n commit.SET_CGTOKENS(cgtokens.map((t: string) => new CGToken(t)));\n }\n }\n },\n async setJWT(context, jwt: string) {\n const { state, getters, commit, dispatch } = moduleActionContext(context, module);\n\n // if there's already a token and it's not the same\n if (getters.jwt && getters.jwt !== jwt) {\n // call the new function to convert the account\n const result = await dispatch.convertAccount(jwt);\n // if the account was converted, we remove the new token from the url and return without setting it\n if (result) {\n // remove the token from the url without reloading the page\n const currentURL = new URL(window.location.href);\n currentURL.searchParams.delete(\"cgtoken\");\n const newRoute: RawLocation = { path: location.pathname, query: Object.fromEntries(currentURL.searchParams) };\n Router.replace(newRoute);\n // return without setting the token\n return;\n }\n // if the account was not converted, we continue and set the token as usual\n }\n\n await dispatch.initCacheStorage();\n commit.SET_JWT(jwt);\n commit.ADD_CGTOKEN(new CGToken(jwt));\n await cacheStorage?.put(TOKEN_KEY, new Response(JSON.stringify(jwt)));\n await cacheStorage?.put(CGTOKENS_KEY, new Response(JSON.stringify(state.cgtokens.map((t) => t.jwt))));\n },\n async updateUsername(context, username: string) {\n const { commit } = moduleActionContext(context, module);\n try {\n await (whoamiPromise = axios.post(`/auth/user/updateUsername`, { username: username }));\n commit.SET_USERNAME(username);\n } catch (e) {\n console.error(e);\n }\n },\n async getFriends(context) {\n const { commit } = moduleActionContext(context, module);\n try {\n const response = await axios.get<\n {\n _id: string;\n username: string;\n uUID: string;\n }[]\n >(`/api/v1/friends`);\n const users = [];\n for (const user of response.data) {\n users.push({\n id: user._id,\n username: user.username,\n uUID: user.uUID,\n });\n }\n commit.ADD_FRIENDS(users);\n } catch (e) {\n console.error(e);\n }\n },\n async addFriend(context, user: User) {\n const { commit } = moduleActionContext(context, module);\n try {\n await axios.post(`/api/v1/friends/${user.id}`);\n commit.ADD_FRIENDS([user]);\n } catch (e) {\n console.error(e);\n }\n },\n async removeFriend(context, user: User) {\n const { commit } = moduleActionContext(context, module);\n try {\n await axios.delete(`/api/v1/friends/${user.id}`);\n commit.REMOVE_FRIEND(user);\n } catch (e) {\n console.error(e);\n }\n },\n async needAccess(context) {\n const { commit, dispatch, getters } = moduleActionContext(context, module);\n const partnerAccess = getters.isAuthPartner;\n if (partnerAccess) {\n const onClose: () => void = () => {\n if (getters.isAuthenticated) {\n commit.SET_SHOW_NEED_PARTNER_AUTHENTICATION_POPUP(false);\n Router.replace(\"/\");\n } else dispatch.openAuthPopup({ onClose });\n };\n const popupOpened = await dispatch.openAuthPopup({ onClose });\n if (!popupOpened) commit.SET_SHOW_NEED_PARTNER_AUTHENTICATION_POPUP(true);\n } else {\n commit.SET_SHOW_NEED_ACCESS_POPUP(true);\n }\n },\n async needSubscription(context) {\n const { commit, getters, rootDispatch, rootCommit, rootGetters } = moduleActionContext(context, module);\n const partnerUrlAccess = getters.isUrlSubPartner;\n const partnerOtherAccess = getters.isOtherSubPartner;\n if (partnerUrlAccess) {\n await rootDispatch.games.openSubPopup();\n } else if (partnerOtherAccess) {\n const highestExpiredSub = rootGetters.games.getHighestExpiredSubscription;\n if (highestExpiredSub?.access === SubscriptionAccess.FULL) {\n rootCommit.mobile.SHOW_RENEW_TUTO_POPUP();\n } else {\n rootCommit.mobile.SHOW_SUBSCRIBE_TUTO_POPUP();\n }\n } else {\n commit.SET_SHOW_NEED_ACCESS_POPUP(true);\n }\n },\n async setReferrer(context, referralCode: string) {\n const { commit } = moduleActionContext(context, module);\n commit.SET_REFERRAL_CODE(referralCode);\n },\n async updateReferrer(context) {\n const { getters } = moduleActionContext(context, module);\n if (!getters.referralCode) return;\n await axios.post(`/auth/user/setReferrer`, { referralCode: getters.referralCode });\n },\n async giveAgreement(context) {\n const { commit } = moduleActionContext(context, module);\n try {\n await axios.post(`/auth/user/giveAgreement`);\n commit.GIVE_AGREEMENT();\n } catch (e) {\n console.error(e);\n }\n },\n async convertAccount(_context, token): Promise {\n try {\n await axios.patch(`/auth/user/convertAccount`, { token });\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n },\n openAuthPopup(\n context,\n {\n onCGToken,\n onClose,\n onError,\n }: { onCGToken?: (cgToken: string) => void; onClose?: () => void; onError?: (error: string) => void }\n ): Window | null {\n onPopupCGToken = onCGToken;\n onPopupClose = onClose;\n onPopupError = onError;\n\n StatsManager.SendNavigationStats(location.href, process.env.VUE_APP_POPUP_URL_AUTH);\n if (/^true$/i.test(process.env.VUE_APP_POPUP_PARTNER_REDIRECT)) {\n location.replace(process.env.VUE_APP_POPUP_URL_AUTH);\n return null;\n }\n\n const popup = window.open(process.env.VUE_APP_POPUP_URL_AUTH);\n\n checkPopupClose(popup);\n return popup;\n },\n openUnsubPopup(\n context,\n onSuccess?: (success: boolean) => void,\n onClose?: () => void,\n onError?: (error: string) => void\n ): Window | null {\n onPopupSubUnsubSuccess = onSuccess;\n onPopupClose = onClose;\n onPopupError = onError;\n\n StatsManager.SendNavigationStats(location.href, process.env.VUE_APP_POPUP_URL_UNSUB);\n if (/^true$/i.test(process.env.VUE_APP_POPUP_PARTNER_REDIRECT)) {\n location.replace(process.env.VUE_APP_POPUP_URL_UNSUB);\n return null;\n }\n\n const popup = window.open(process.env.VUE_APP_POPUP_URL_UNSUB);\n\n checkPopupClose(popup);\n return popup;\n },\n },\n});\n\nfunction checkPopupClose(popup: Window | null): void {\n const popupInterval = setInterval(() => {\n if (popup?.closed) {\n if (!popupClosedProgrammatically) onPopupClose?.();\n clearInterval(popupInterval);\n }\n }, 100);\n}\n\nlet onPopupCGToken: ((cgToken: string) => void) | undefined = undefined;\nlet onPopupError: ((error: string) => void) | undefined = undefined;\nlet onPopupSubUnsubSuccess: ((success: boolean) => void) | undefined = undefined;\nlet onPopupClose: (() => void) | undefined = undefined;\nlet popupClosedProgrammatically = false;\n\nwindow.addEventListener(\n \"message\",\n async (event: MessageEvent) => {\n const authorizedOrigins = (process.env.VUE_APP_POPUP_URL_ORIGIN as string).split(\";\");\n\n if (authorizedOrigins.every((origin) => !new RegExp(event.origin).test(origin))) return;\n\n // An error has occured\n if (event.data.error) {\n popupClosedProgrammatically = true;\n (event.source as Window).close();\n\n if (event.data.error === \"auth_fail\") {\n console.error(event.data.error);\n Store.commit.SHOW_ALERT({\n text: i18n.t(\"popups.errors.auth_fail.text\").toString(),\n onClose: () =>\n Store.dispatch.authentication.openAuthPopup({\n onCGToken: onPopupCGToken,\n onClose: onPopupClose,\n onError: onPopupError,\n }),\n });\n return;\n }\n\n console.error(event.data.error);\n onPopupError?.(event.data.error);\n onPopupClose?.();\n return;\n }\n\n // We received the token\n if (event.data.cgtoken) {\n popupClosedProgrammatically = true;\n (event.source as Window).close();\n\n await Store.dispatch.authentication.setJWT(event.data.cgtoken);\n await Store.dispatch.authentication.whoami(true);\n await Store.dispatch.games.init();\n\n onPopupCGToken?.(event.data.cgtoken);\n onPopupClose?.();\n return;\n }\n\n if (event.data.success !== undefined) {\n popupClosedProgrammatically = true;\n (event.source as Window).close();\n\n await Store.dispatch.games.init();\n\n onPopupSubUnsubSuccess?.(event.data.success);\n onPopupClose?.();\n }\n },\n false\n);\n\nexport default module;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./play_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=65b4a04a&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/incomp_browser.b9ea3243.png\";","import { defineModule } from \"direct-vuex\";\n\nimport { LocaleMessageObject } from \"vue-i18n\";\n\nimport { moduleActionContext, axiosInstance as axios } from \"@/store/\";\nimport VueI18n from \"@/plugins/i18n\";\nimport { AxiosResponse } from \"axios\";\n\ntype Locale = \"fr\" | \"en\" | string;\n\ninterface HomeSectionLocalizedClientInfo {\n title?: string;\n subTitle?: string;\n}\n\nexport interface HomeSectionGame {\n game: string;\n order: number;\n}\n\nexport interface HomeSectionListedCategory {\n title: string;\n order: number;\n link: string;\n image: string;\n colorGradient1?: string;\n colorGradient2?: string;\n colorGradient3?: string;\n}\n\nexport enum Type {\n OLD = \"OLD\",\n BIG = \"BIG\",\n LAST_PLAYED = \"LAST_PLAYED\",\n FAVORITE = \"FAVORITE\",\n NORMAL = \"NORMAL\",\n CATEGORY_SINGLE = \"CATEGORY_SINGLE\",\n CATEGORY_LIST = \"CATEGORY_LIST\",\n GAME_SINGLE = \"GAME_SINGLE\",\n GAME_VIDEO = \"GAME_VIDEO\",\n}\n\nexport interface HomeSection {\n _id: string;\n name: string;\n link?: string;\n games: HomeSectionGame[];\n type: Type;\n localizedClientInfo: { [key in Locale]: HomeSectionLocalizedClientInfo };\n image?: string;\n showPlayButton?: boolean;\n}\n\nexport interface HomeSectionCategoryList extends HomeSection {\n listedCategories: HomeSectionListedCategory[];\n}\n\nconst singleGameSections: Type[] = [Type.GAME_SINGLE, Type.GAME_VIDEO];\n\nlet homeSectionsPromise: Promise> | undefined = undefined;\n\nexport interface HomeSectionsState {\n homeSections: HomeSection[];\n}\n\nconst module = defineModule({\n namespaced: true as const,\n state: {\n homeSections: [\n { _id: \"0\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"1\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"2\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"3\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"4\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"5\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"6\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"7\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"8\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n { _id: \"9\", name: \"$fake\", link: \"\", games: [], localizedClientInfo: { fr: { title: \"\" } }, type: Type.NORMAL },\n ],\n } as HomeSectionsState,\n mutations: {\n SET_HOME_SECTIONS(state, homeSections: HomeSection[]) {\n const _homeSections = homeSections.slice();\n // If the home section is a single game, we need to put the game in the games array\n // We do that because it's simplier to always use an array of games\n for (const homeSection of _homeSections) {\n if (singleGameSections.includes(homeSection.type)) {\n const game = (homeSection as any).game;\n if (game) homeSection.games = [{ game, order: 0 }];\n }\n }\n state.homeSections = _homeSections;\n },\n },\n actions: {\n async getHomeSections(context): Promise {\n const { rootGetters, state, commit } = moduleActionContext(context, module);\n try {\n // if we are not authenticated, we don't need to fetch the home sections\n if (!rootGetters.authentication.isAuthenticated) return state.homeSections;\n if (state.homeSections.length > 0 && state.homeSections[0].games.length > 0) return state.homeSections;\n if (!homeSectionsPromise) homeSectionsPromise = axios.get(`/api/v1/homesections`);\n const { data } = await homeSectionsPromise;\n commit.SET_HOME_SECTIONS(data);\n const locales: Locale[] = rootGetters.language.availableLanguageCodes;\n locales.forEach((locale) => {\n const messages: LocaleMessageObject = {};\n state.homeSections.forEach((a) => {\n const title = a?.localizedClientInfo?.[locale]?.title;\n if (title) messages[`homeSections.${a._id}.title`] = title;\n const subTitle = a?.localizedClientInfo?.[locale]?.subTitle;\n if (subTitle) messages[`homeSections.${a._id}.subTitle`] = subTitle;\n });\n VueI18n.mergeLocaleMessage(locale, messages);\n });\n return state.homeSections;\n } catch (error) {\n console.error(error);\n return state.homeSections;\n }\n },\n },\n});\n\nexport default module;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListedGame.vue?vue&type=style&index=0&id=7c75de80&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./star_24dp_FILL1_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=8e41b09c&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=style&index=0&id=5ef5f9ab&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnterCodePopup.vue?vue&type=style&index=0&id=49afccd0&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgreementPopup.vue?vue&type=style&index=0&id=8640b678&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OGLTapBar.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more_horiz_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=437f224d&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeTuto.vue?vue&type=style&index=0&id=61ad20b7&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameProfile.vue?vue&type=style&index=0&id=e8721862&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HorizontalScroll.vue?vue&type=style&index=0&id=24d60b1e&scoped=true&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameLobby.vue?vue&type=style&index=0&id=19e7239c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisterForm.vue?vue&type=style&index=0&id=5ab9ff5c&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./arrow_back_ios_white_24dp.vue?vue&type=style&index=0&id=bdda68ce&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameVideo.vue?vue&type=style&index=0&id=4cff217c&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameM.vue?vue&type=style&index=0&id=67f18a9b&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"container no-gutters\",class:{ 'non-subscribed': !_vm.subscribed },attrs:{\"fluid\":\"\"}},[(_vm.$store.direct.state.mobile.showTvCodePopup)?_c('EnterCodePopup',{attrs:{\"game\":_vm.game}}):_vm._e(),_c('div',{staticClass:\"header\"},[_c('CardGameVideo',{staticClass:\"cardvideo\",attrs:{\"game\":_vm.game,\"disableLink\":\"\"}},[(this.gameSubscription)?_c('v-btn',{staticClass:\"button play landscapeOnly\",class:{ lock: _vm.noActiveSub, 'coming-soon': _vm.game.isComingSoon },on:{\"click\":_vm.play}},[(!_vm.noActiveSub && !_vm.game.isComingSoon)?_c('v-icon',[_vm._v(\"$playButton\")]):(!_vm.game.isComingSoon)?_c('v-icon',{staticStyle:{\"padding-right\":\"2px\"}},[_vm._v(\"$lockIcon\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.playButtonText())+\" \")],1):_vm._e()],1),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"third\"},[_c('v-btn',{staticClass:\"category\",attrs:{\"to\":_vm.genreLink}},[_vm._v(_vm._s(_vm.genreName))]),_c('span',{staticClass:\"pegi\"},[_vm._v(\" \"+_vm._s(_vm.contentRating))]),_c('div',{staticClass:\"actions landscapeOnly\"},[(_vm.canShare)?_c('v-btn',{staticClass:\"button share\",on:{\"click\":_vm.share}},[_c('v-icon',[_vm._v(\"$newShareButton\")]),_c('div',{staticClass:\"share-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.share\")))])],1):_vm._e(),_c('v-btn',{staticClass:\"button favorite\",on:{\"click\":_vm.toggleFavorite}},[_c('div',[(_vm.favorite)?_c('v-icon',{staticClass:\"favorite-icon\"},[_vm._v(\"$unstarButton\")]):_c('v-icon',{staticClass:\"favorite-icon\"},[_vm._v(\"$starButton\")])],1),_c('div',[(_vm.favorite)?_c('span',{staticClass:\"favorite-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.star.remove\")))]):_c('span',{staticClass:\"favorite-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.star.add\")))])])])],1)],1),(_vm.game.canPlayOnTv && _vm.hasBigScreenPermission)?_c('div',{staticClass:\"actions landscapeOnly\"},[_c('button',{staticClass:\"play-on-tv\",attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.playOnTv}},[_c('v-icon',[_vm._v(\"$tvButton\")]),_c('div',[_vm._v(_vm._s(_vm.$t(\"game.buttons.playOnTv\")))])],1)]):_vm._e()])],1),_c('CoolLightBox',{attrs:{\"items\":_vm.screenshots,\"index\":_vm.currentSShot,\"effect\":\"fade\",\"slideshow\":false,\"gallery\":false,\"closeOnClickOutsideMobile\":true,\"srcName\":\"url\",\"srcThumb\":\"thumbnail\"},on:{\"close\":function($event){_vm.currentSShot = null},\"on-open\":function($event){return _vm.lightBoxOpened()}}}),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"actions portraitOnly\"},[(this.gameSubscription)?_c('v-btn',{staticClass:\"button play\",class:{ lock: _vm.noActiveSub, 'coming-soon': _vm.game.isComingSoon },on:{\"click\":_vm.play}},[(!_vm.noActiveSub && !_vm.game.isComingSoon)?_c('v-icon',[_vm._v(\"$playButton\")]):(!_vm.game.isComingSoon)?_c('v-icon',{staticStyle:{\"padding-right\":\"2px\"}},[_vm._v(\"$lockIcon\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.playButtonText())+\" \")],1):_vm._e(),(_vm.canShare)?_c('button',{staticClass:\"button share\",attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.share}},[_c('v-icon',[_vm._v(\"$newShareButton\")]),_c('div',{staticClass:\"share-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.share\")))])],1):_vm._e(),_c('button',{staticClass:\"button favorite\",attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.toggleFavorite}},[_c('div',[(_vm.favorite)?_c('v-icon',{staticClass:\"favorite-icon\"},[_vm._v(\"$unstarButton\")]):_c('v-icon',{staticClass:\"favorite-icon\"},[_vm._v(\"$starButton\")])],1),_c('div',[(_vm.favorite)?_c('span',{staticClass:\"favorite-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.star.remove\")))]):_c('span',{staticClass:\"favorite-text\"},[_vm._v(_vm._s(_vm.$t(\"game.buttons.star.add\")))])])])],1),(!_vm.noActiveSub && _vm.game.canPlayOnTv && _vm.hasBigScreenPermission)?_c('div',{staticClass:\"actions portraitOnly\"},[_c('button',{staticClass:\"play-on-tv\",attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.playOnTv}},[_c('v-icon',[_vm._v(\"$tvButton\")]),_c('div',[_vm._v(_vm._s(_vm.$t(\"game.buttons.playOnTv\")))])],1)]):_vm._e(),(_vm.$t((\"games.\" + (_vm.game._id) + \".caregameBonuses\")).length)?_c('div',{staticClass:\"descriptionSection section\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"game.sections.bonuses.sectionTitle\")))]),_c('div',{staticClass:\"description short\",domProps:{\"innerHTML\":_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".caregameBonuses\")))}})]):_vm._e(),(_vm.screenshots.length > 0)?_c('HomeScroller',{staticClass:\"screenshotsSection section\",attrs:{\"title\":_vm.$t('game.sections.gallery.sectionTitle')}},_vm._l((_vm.screenshots),function(screenshot,i){return _c('CardScreenshot',{key:i,class:{ portrait: _vm.isPortrait },attrs:{\"image\":screenshot.thumbnail || screenshot.url,\"video\":screenshot.type === 'VIDEO'},on:{\"click\":function($event){return _vm.clickedScreenshot(screenshot, i)}}})}),1):_vm._e(),_c('div',{staticClass:\"descriptionSection section\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"game.sections.description.sectionTitle\")))]),_c('div',{staticClass:\"description\",class:{ short: !_vm.fullDescription },domProps:{\"innerHTML\":_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".description\")))}}),_c('div',{staticClass:\"seeMoreLess\"},[_c('v-btn',{attrs:{\"text\":\"\",\"ripple\":false},on:{\"click\":function($event){_vm.fullDescription = !_vm.fullDescription}}},[(!_vm.fullDescription)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"game.sections.description.showMore\"))+\" \"),_c('v-icon',[_vm._v(\"$showMore\")])],1):_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"game.sections.description.showLess\"))+\" \"),_c('v-icon',[_vm._v(\"$showLess\")])],1)])],1)]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"data section\"},_vm._l((_vm.info),function(i){return _c('div',{key:i.key,staticClass:\"dataline\"},[_c('div',{staticClass:\"key\"},[_vm._v(_vm._s(i.key))]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(i.value))])])}),0),(_vm.similarGames.length > 0)?_c('div',{staticClass:\"separator\"}):_vm._e(),(_vm.similarGames.length > 0)?_c('HomeScroller',{staticClass:\"section\",attrs:{\"title\":_vm.$t(\"game.sections.morelike.sectionTitle\", { game: _vm.$t((\"games.\" + (_vm.game._id) + \".name\")) })}},_vm._l((_vm.similarGames),function(game){return _c('CardGameL',{key:game._id,attrs:{\"game\":game}})}),1):_vm._e()],1),_c('v-btn',{staticClass:\"back\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$router.back()}}},[_c('v-icon',[_vm._v(\"$backButton\")])],1),_c('TapBar',{attrs:{\"bordered\":\"\",\"showSubBanner\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.image},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"154\"}})]},proxy:true}])},[(_vm.video)?_c('v-icon',[_vm._v(\"$playCircleButton\")]):_vm._e(),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class CardScreenShot extends Vue {\n @Prop(String) readonly image: string;\n\n @Prop(Boolean) readonly video: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardScreenshot.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardScreenshot.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardScreenshot.vue?vue&type=template&id=cb2a7c9e&scoped=true&\"\nimport script from \"./CardScreenshot.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardScreenshot.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardScreenshot.vue?vue&type=style&index=0&id=cb2a7c9e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cb2a7c9e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VIcon,VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{attrs:{\"to\":_vm.to}},[_c('CardL',{attrs:{\"image\":_vm.game.bannerSmall}},[(_vm.showPlayButton)?_c('v-btn',{attrs:{\"fab\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clickPlayButton.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"$playButton\")])],1):_vm._e()],1)],1):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"image\",\"min-width\":\"154\",\"height\":\"126\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\nimport { Game } from \"@/store/modules/games\";\n\n@Component\nexport default class CardGame extends Vue {\n @Prop(Object) readonly game: Game;\n\n get loaded(): boolean {\n return !!this.game;\n }\n\n get to(): string {\n return `/game/${this.game.appID}`;\n }\n}\n","var render, staticRenderFns\nimport script from \"./CardGame.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardGame.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGame.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGame.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.image},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"154\"}})]},proxy:true}])},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class CardL extends Vue {\n @Prop(String) readonly image: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardL.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardL.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardL.vue?vue&type=template&id=d5737d46&scoped=true&\"\nimport script from \"./CardL.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardL.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardL.vue?vue&type=style&index=0&id=d5737d46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5737d46\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VImg,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop } from \"vue-property-decorator\";\nimport CardGame from \"./CardGame.vue\";\nimport CardL from \"./CardL.vue\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component({\n components: {\n CardL,\n },\n})\nexport default class CardGameL extends CardGame {\n @Prop({ type: Boolean, default: false }) showPlayButton: boolean;\n\n clickPlayButton(): void {\n StatsManager.SendButtonClickStats(location.href, \"play\", {\n game: {\n id: this.game._id,\n name: this.game.name,\n appID: this.game.appID,\n },\n });\n\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n StatsManager.SendNavigationStats(location.href, \"INVALID_BROWSER_ALERT\");\n return;\n }\n\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: false });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameL.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameL.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardGameL.vue?vue&type=template&id=6b063c2a&scoped=true&\"\nimport script from \"./CardGameL.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardGameL.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardGameL.vue?vue&type=style&index=0&id=6b063c2a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b063c2a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VIcon,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"box\"},[(_vm.title)?_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),(_vm.subTitle)?_c('div',{staticClass:\"subTitle\"},[_vm._v(_vm._s(_vm.subTitle))]):_vm._e(),(_vm.stepper && _vm.stepperArray.length > 1)?_c('div',{staticClass:\"stepper\"},_vm._l((_vm.stepperArray),function(i,k){return _c('span',{key:k,staticClass:\"step\",class:{ active: _vm.activeStepper == i }})}),0):_vm._e(),_c('HorizontalScroll',{ref:\"horizontalScroll\",class:{ notitle: !_vm.title }},[_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"d-flex flex-row\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\n@Component\nexport default class HorizontalScroll extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HorizontalScroll.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HorizontalScroll.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HorizontalScroll.vue?vue&type=template&id=24d60b1e&scoped=true&\"\nimport script from \"./HorizontalScroll.vue?vue&type=script&lang=ts&\"\nexport * from \"./HorizontalScroll.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HorizontalScroll.vue?vue&type=style&index=0&id=24d60b1e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24d60b1e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport HorizontalScroll from \"@/components/HorizontalScroll.vue\";\n\n@Component({\n components: {\n HorizontalScroll,\n },\n})\nexport default class HomeScroller extends Vue {\n @Prop(String) readonly title: string;\n @Prop(String) readonly subTitle: string;\n @Prop({ type: Boolean, default: false }) readonly stepper: boolean;\n\n activeStepper = 0;\n\n $refs!: {\n horizontalScroll: Vue;\n };\n\n get stepperArray(): number[] {\n return Array.from(Array(this.childrenCount).keys());\n }\n\n childrenCount = 0;\n\n calculateStepper(): void {\n const el = this.$refs.horizontalScroll.$el;\n const maxScroll = el.scrollWidth - el.clientWidth;\n this.activeStepper = Math.floor(el.scrollLeft / (maxScroll / this.childrenCount));\n this.activeStepper = Math.min(this.activeStepper, this.childrenCount - 1);\n this.activeStepper = Math.max(this.activeStepper, 0);\n }\n\n mounted(): void {\n if (this.stepper) {\n this.childrenCount = this.$refs.horizontalScroll.$children.length;\n const el = this.$refs.horizontalScroll.$el;\n\n el.addEventListener(\"scroll\", () => this.calculateStepper());\n el.addEventListener(\"touchend\", () => this.calculateStepper());\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeScroller.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeScroller.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HomeScroller.vue?vue&type=template&id=403885e7&scoped=true&\"\nimport script from \"./HomeScroller.vue?vue&type=script&lang=ts&\"\nexport * from \"./HomeScroller.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HomeScroller.vue?vue&type=style&index=0&id=403885e7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"403885e7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('v-bottom-navigation',{staticClass:\"tapbar\",class:{ bordered: _vm.bordered }},[(!_vm.subscribed && _vm.showSubBanner)?_c('SubscribeBanner',{staticClass:\"subBanner\"}):_vm._e(),_c('div',{staticClass:\"tapbarBottom\"},[_c('v-btn',{staticClass:\"button\",class:_vm.$router.currentRoute.name === 'Home' ? 'v-btn--active' : '',attrs:{\"to\":\"/\",\"ripple\":false,\"active-class\":\"\"}},[_c('v-icon',[_vm._v(\"$tapBarHome\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.home\")))])],1),_c('v-btn',{staticClass:\"button\",attrs:{\"to\":\"/category\",\"ripple\":false}},[_c('v-icon',[_vm._v(\"$tapBarCategory\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.category\")))])],1),_c('v-btn',{staticClass:\"button\",attrs:{\"to\":\"/profile\",\"ripple\":false}},[_c('v-icon',[_vm._v(\"$tapBarProfile\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.profile\")))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t(\"subscribeBanner.text\")))]),_c('button',{attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.click}},[_c('v-icon',[_vm._v(\"$unlockIcon\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"subscribeBanner.button.text\"))+\" \")],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class SubscribeBanner extends Vue {\n @Prop(Boolean) readonly morePadding: boolean;\n\n click(): void {\n StatsManager.SendButtonClickStats(location.href, \"subBanner\");\n const openPopup = /^true$/i.test(process.env.VUE_APP_SUBSCRIBE_BANNER_POPUP);\n if (openPopup) this.$store.direct.commit.mobile.SHOW_SUBSCRIBE_BANNER_POPUP();\n else this.$store.direct.dispatch.games.openSubPopup();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SubscribeBanner.vue?vue&type=template&id=68ac3cb0&scoped=true&\"\nimport script from \"./SubscribeBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./SubscribeBanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SubscribeBanner.vue?vue&type=style&index=0&id=68ac3cb0&lang=scss&scoped=true&\"\nimport style1 from \"./SubscribeBanner.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68ac3cb0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport SubscribeBanner from \"@/components/SubscribeBanner.vue\";\nimport { SubscriptionAccess } from \"@/store/modules/games\";\n\n@Component({\n components: {\n SubscribeBanner,\n },\n})\nexport default class TapBar extends Vue {\n @Prop({ type: Boolean, default: false }) bordered: boolean;\n @Prop({ type: Boolean, default: false }) showSubBanner: boolean;\n\n get subscribed(): boolean {\n const sub = this.$store.direct.getters.games.getHighestSubscription;\n return !sub || sub.access === SubscriptionAccess.FULL;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TapBar.vue?vue&type=template&id=8a5d2b78&scoped=true&\"\nimport script from \"./TapBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./TapBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TapBar.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./TapBar.vue?vue&type=style&index=1&id=8a5d2b78&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a5d2b78\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBottomNavigation } from 'vuetify/lib/components/VBottomNavigation';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBottomNavigation,VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('div',{staticClass:\"box\"},[_c('router-link',{staticClass:\"link\",class:{ 'disabled-link': _vm.disableLink },attrs:{\"to\":_vm.to}},[_c('div',{staticClass:\"parent\"},[_c('img',{staticClass:\"image1 pic\",attrs:{\"src\":_vm.game.bannerBigNoTitle}}),(_vm.videoURL)?_c('video',{staticClass:\"image2 pic lazy need-load\",attrs:{\"preload\":\"metadata\",\"loop\":\"\",\"playsinline\":\"\",\"autoplay\":\"\",\"muted\":\"\",\"hidden\":_vm.hidden},domProps:{\"muted\":true},on:{\"playing\":function($event){_vm.hidden = false},\"pause\":function($event){_vm.hidden = true}}},[_c('source',{attrs:{\"data-src\":_vm.videoURL,\"type\":\"video/mp4\"}})]):_vm._e()]),_c('ListedGame',{staticClass:\"gameInfo\",attrs:{\"game\":_vm.game,\"disableLink\":_vm.disableLink,\"showPlayButton\":_vm.showPlayButton}},[_vm._t(\"default\")],2)],1)],1):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"image\",\"min-width\":\"240\",\"height\":\"256\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{class:{ disableLink: _vm.disableLink },attrs:{\"to\":_vm.to}},[_c('div',{staticClass:\"box\"},[_c('CardGameL',{attrs:{\"game\":_vm.game,\"showPlayButton\":_vm.showPlayButton}}),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".name\"))))]),_c('div',{staticClass:\"description\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".shortDescription\"))))])]),_vm._t(\"default\")],2)]):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"card\",\"min-width\":\"88\",\"height\":\"72\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport CardGameL from \"./CardGameL.vue\";\n\nimport { Game } from \"@/store/modules/games\";\n\n@Component({\n components: {\n CardGameL,\n },\n})\nexport default class ListedGame extends Vue {\n @Prop(Boolean) readonly fake: boolean;\n @Prop(Object) readonly game: Game;\n @Prop(Boolean) readonly disableLink: boolean;\n @Prop(Boolean) readonly showPlayButton: boolean;\n\n get loaded(): boolean {\n return !this.fake || !!this.game;\n }\n\n get to(): string {\n return `/game/${this.game.appID}`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListedGame.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListedGame.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListedGame.vue?vue&type=template&id=7c75de80&scoped=true&\"\nimport script from \"./ListedGame.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListedGame.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ListedGame.vue?vue&type=style&index=0&id=7c75de80&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c75de80\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport CardGame from \"@/components/CardGame.vue\";\nimport ListedGame from \"@/components/ListedGame.vue\";\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component({\n components: {\n ListedGame,\n },\n})\nexport default class CardGameVideo extends CardGame {\n @Prop(Boolean) readonly disableLink: boolean;\n @Prop(Boolean) readonly showPlayButton: boolean;\n\n hidden = true;\n\n get videoURL(): string {\n return this.game.headerVideo;\n }\n\n deactivated() {\n this.$el.querySelector(\"video\")?.pause();\n }\n\n activated(): void {\n // reload and play video after a page change\n //this.$el.querySelector(\"video\")?.load();\n const video = this.$el.querySelector(\"video\");\n if (video) {\n video.currentTime = 0;\n video.play();\n }\n }\n\n mounted() {\n const video = this.$el.querySelector(\"video\");\n\n if (video && video.classList.contains(\"need-load\")) {\n for (var source in video.children) {\n var videoSource = video.children[source];\n if (typeof videoSource.tagName === \"string\" && videoSource.tagName === \"SOURCE\") {\n (videoSource as any).src = (videoSource as any).dataset.src;\n }\n }\n video.load();\n video.play();\n video.classList.remove(\"need-load\");\n }\n\n const t = this.$el.querySelector(\"video\");\n t?.addEventListener(\"canplay\", (event) => {\n StatsManager.SendArbitraryStats(\"gamedesc-video-canplay\", { appId: this.game.appID, videoUrl: this.game.headerVideo });\n });\n t?.addEventListener(\"canplaythrough\", (event) => {\n StatsManager.SendArbitraryStats(\"gamedesc-video-canplaythrough\", { appId: this.game.appID, videoUrl: this.game.headerVideo });\n });\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameVideo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardGameVideo.vue?vue&type=template&id=4cff217c&scoped=true&\"\nimport script from \"./CardGameVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardGameVideo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardGameVideo.vue?vue&type=style&index=0&id=4cff217c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cff217c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport CoolLightBox from \"vue-cool-lightbox\";\nimport \"vue-cool-lightbox/dist/vue-cool-lightbox.min.css\";\n\nimport { Game, Screenshot, SubscriptionAccess } from \"@/store/modules/games\";\n\nimport CardScreenshot from \"@/components/CardScreenshot.vue\";\nimport CardGameL from \"@/components/CardGameL.vue\";\nimport HomeScroller from \"@/components/HomeScroller.vue\";\nimport TapBar from \"@/components/TapBar.vue\";\nimport { Genre } from \"@/store/modules/genres\";\nimport CardGameVideo from \"@/components/Home/HomeSections/CardGameVideo.vue\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport EnterCodePopup from \"@/components/Bigscreen/EnterCodePopup.vue\";\nimport { UserPermission } from \"@/store/modules/authentication\";\n\n@Component({\n components: {\n CardScreenshot,\n CardGameL,\n CoolLightBox,\n HomeScroller,\n TapBar,\n CardGameVideo,\n EnterCodePopup,\n },\n})\nexport default class GameView extends Vue {\n currentSShot: number | null = null;\n fullDescription = false;\n accessUpdateInterval: number | null = null;\n\n get info() {\n return [\n {\n key: this.$t(\"game.sections.info.publisher\"),\n value: this.publisher,\n },\n ];\n }\n\n get screenshots(): Screenshot[] {\n return (\n this.game?.screenshots\n ?.filter((s) => s)\n .map((s) => ({\n ...s,\n thumbnail: s.thumbnail || s.url,\n autoplay: true,\n })) || []\n );\n }\n\n get favorite(): boolean {\n if (!this.game) return false;\n return this.$store.direct.state.games.favoriteGamesIds.includes(this.game._id);\n }\n\n get isPortrait(): boolean {\n return this.game?.orientation === \"PORTRAIT\";\n }\n\n get gameSubscription(): SubscriptionAccess | undefined {\n if (!this.game) return undefined;\n return this.$store.direct.getters.games.getGameSubscription(this.game) || SubscriptionAccess.VISIBLE;\n }\n\n async play(e: Event, playOnBigScreen = false): Promise {\n e.preventDefault();\n e.stopPropagation();\n StatsManager.SendButtonClickStats(location.href, \"play\");\n\n if (!this.game) return;\n if (this.game?.isComingSoon) return;\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n StatsManager.SendNavigationStats(location.href, \"INVALID_BROWSER_ALERT\");\n return;\n }\n\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: playOnBigScreen });\n }\n\n async playOnTv(e: Event): Promise {\n await this.$store.direct.dispatch.bigscreen.isPairedToBigScreen();\n if (!this.$store.direct.getters.bigscreen.isBigscreenPaired) {\n e.preventDefault();\n e.stopPropagation();\n this.$store.direct.commit.mobile.SHOW_TV_CODE_POPUP();\n } else {\n this.play(e, true);\n this.$store.direct.commit.mobile.CLOSE_TV_CODE_POPUP();\n }\n }\n\n async toggleFavorite(): Promise {\n if (!this.game) return;\n if (this.favorite) await this.$store.direct.dispatch.games.removeFromFavorite(this.game);\n else await this.$store.direct.dispatch.games.addToFavorite(this.game);\n StatsManager.SendButtonClickStats(location.href, \"favorite\", { newValue: !this.favorite });\n }\n\n get pegiRating(): number {\n return this.game?.contentRating?.pegi?.rating || 3;\n }\n\n get game(): Game | undefined {\n return this.$store.direct.getters.games.getGame(this.$route.params.game);\n }\n\n get similarGames(): Game[] {\n return (\n this.game?.similarGames\n ?.map((gameID) => this.$store.direct.state.games.games.find((game) => game._id === gameID) as Game)\n .filter((g) => g) || []\n );\n }\n\n get publisher(): string {\n return this.$store.direct.state.publishers.publishers.find((p) => p._id === this.game?.publisher)?.name || \"\";\n }\n\n get genre(): Genre | undefined {\n return this.$store.direct.state.genres.genres.find((p) => p._id === this.game?.genre);\n }\n\n get genreName(): string {\n return this.$te(`genres.${this.genre?._id}.name`) ? this.$t(`genres.${this.genre?._id}.name`).toString() : \"\";\n }\n\n get genreLink(): string {\n return `/category/${this.genre?.urlSegment || this.genre?.name.toLowerCase()}`;\n }\n\n get contentRating(): string {\n if (this.game?.contentRating.pegi.rating)\n return this.$t(\"game.contentRating.simple\", { age: this.game?.contentRating.pegi.rating }).toString();\n return \"\";\n }\n\n get canShare(): boolean {\n return this.$store.direct.getters.mobile.canShare;\n }\n\n get hasBigScreenPermission(): boolean {\n return this.$store.direct.getters.authentication.hasPermission(UserPermission.BIGSCREEN);\n }\n\n get subscribed(): boolean {\n const sub = this.$store.direct.getters.games.getHighestSubscription;\n return !sub || sub.access === SubscriptionAccess.FULL;\n }\n\n playButtonText(): string {\n if (this.game?.isComingSoon) return this.$t(`game.buttons.play.coming-soon`).toString();\n if (!this.gameSubscription) return \"\";\n return this.$t(`game.buttons.play.${this.gameSubscription}`).toString();\n }\n\n get noActiveSub(): boolean {\n return this.gameSubscription === SubscriptionAccess.VISIBLE;\n }\n\n async share(): Promise {\n if (!this.game) return;\n this.$store.direct.dispatch.mobile.share({ game: this.game });\n StatsManager.SendButtonClickStats(location.href, \"share\");\n }\n\n async lightBoxOpened(): Promise {\n const video = document.querySelector(\".cool-lightbox__iframe video\") as HTMLVideoElement;\n if (video) {\n // Add attributes to the video element to make it autoplay on iOS\n video.setAttribute(\"playsinline\", \"\");\n video.setAttribute(\"muted\", \"\");\n video.setAttribute(\"loop\", \"\");\n\n // remove controls?\n // video.removeAttribute(\"controls\");\n\n // play the video\n video.play();\n }\n }\n\n clickedScreenshot(screenshot: Screenshot, index: number): void {\n this.currentSShot = index;\n StatsManager.SendButtonClickStats(location.href, \"screenshot\", { index, screenshot: screenshot.url });\n }\n\n async created(): Promise {\n await this.$store.direct.dispatch.games.getGameByAppID(this.$route.params.game);\n if (!this.game) return;\n this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game });\n await this.$store.direct.dispatch.games.getGamesByIds(this.game.similarGames);\n await this.$store.direct.dispatch.genres.getGenres();\n await this.$store.direct.dispatch.publishers.getPublishers();\n this.$store.direct.dispatch.homeSections.getHomeSections();\n }\n\n setupAccessUpdate(): void {\n if (this.accessUpdateInterval) return;\n this.accessUpdateInterval = setInterval(() => {\n if (this.game) this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game, force: true });\n }, parseInt(process.env.VUE_APP_GAME_ACCESS_UPDATE_INTERVAL) || 1000 * 60);\n }\n\n activated(): void {\n if (this.game) this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game, force: true });\n this.setupAccessUpdate();\n }\n\n deactivated(): void {\n if (this.accessUpdateInterval) {\n clearInterval(this.accessUpdateInterval);\n this.accessUpdateInterval = null;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Game.vue?vue&type=template&id=d4e3514e&scoped=true&\"\nimport script from \"./Game.vue?vue&type=script&lang=ts&\"\nexport * from \"./Game.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Game.vue?vue&type=style&index=0&id=d4e3514e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d4e3514e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VContainer,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"playView\"}},[_c('iframe',{attrs:{\"id\":\"playIframe\",\"title\":\"CareGame\",\"src\":_vm.playUrl,\"width\":\"100%\",\"height\":\"100%\",\"frameborder\":0,\"scrolling\":'no',\"allowfullscreen\":true}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport { Game } from \"@/store/modules/games\";\nimport { StreamingMode } from \"@/store/modules/bigscreen\";\n\n@Component({\n components: {},\n})\nexport default class Play extends Vue {\n get game(): Game | undefined {\n return this.$store.direct.getters.games.getGame(this.$route.params.game);\n }\n\n get isBigScreen(): boolean {\n return this.$route.query.streamingmode === StreamingMode.BIGSCREEN;\n }\n\n get playUrl(): string {\n let url = `/play/?appid=${this.$route.params.game}&cgtoken=${this.$store.direct.getters.authentication.jwt}&eula=true`;\n if (this.isBigScreen) url += `&streamingmode=${StreamingMode.BIGSCREEN}`;\n else url += `&streamingmode=${StreamingMode.MOBILE}`;\n return url;\n }\n\n init(): void {\n var body = document.body;\n body.classList.add(\"no-handle-notch\");\n }\n\n reset(): void {\n var body = document.body;\n body.classList.remove(\"no-handle-notch\");\n }\n\n activated(): void {\n this.init();\n }\n\n deactivated(): void {\n this.reset();\n }\n\n mounted(): void {\n this.init();\n }\n\n beforeDestroy(): void {\n this.reset();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport ListedGame from \"@/components/ListedGame.vue\";\nimport TapBar from \"@/components/TapBar.vue\";\n\nimport { Game, SubscriptionAccess } from \"@/store/modules/games\";\nimport { Genre } from \"@/store/modules/genres\";\n\nimport i18n from \"@/plugins/i18n\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\nenum ListType {\n GENRE,\n ALL_GAMES,\n}\n\ninterface Tab {\n name: string;\n urlSegment: string;\n type: ListType;\n imageLink: string;\n colorGradient1?: string;\n colorGradient2?: string;\n}\n\n@Component({\n components: {\n ListedGame,\n TapBar,\n },\n})\nexport default class GameListView extends Vue {\n loaded = false;\n genreLoaded = false;\n games: Game[] = [];\n\n set currentTabIndex(tabIndex: number) {\n const tabElem = this.tabs[tabIndex];\n // don't do anything if the tab is already active\n if (this.$route.params.tab === tabElem.urlSegment) return;\n this.$router.replace({ params: { ...this.$route.params, tab: tabElem.urlSegment } });\n\n this.$nextTick(() => {\n this.scrollToTab(tabIndex);\n });\n this.loadGames();\n console.log(\"currentTabIndex\", tabIndex);\n StatsManager.SendButtonClickStats(location.href, \"category_tab\", {\n tab: tabElem.name,\n });\n }\n\n get currentTabIndex(): number {\n const tabName = (this.$route.params.tab as string) || process.env.VUE_APP_DEFAULT_CATEGORY || \"all\";\n const tabIndex = this.tabs.findIndex((t) => t.urlSegment === tabName);\n return tabIndex;\n }\n\n get subscribed(): boolean {\n const sub = this.$store.direct.getters.games.getHighestSubscription;\n return !sub || sub.access === SubscriptionAccess.FULL;\n }\n\n defaultTabs: Tab[] = [\n {\n name: i18n.t(`category.all`).toString(),\n urlSegment: \"all\",\n imageLink: require(\"@/assets/sword.png\"),\n colorGradient1: \"#3C2920\",\n colorGradient2: \"#3A1B19\",\n type: ListType.ALL_GAMES,\n },\n ];\n theTabs: Tab[] = [];\n\n get tabs(): Tab[] {\n return this.theTabs.length > 0 ? this.theTabs : this.defaultTabs;\n }\n\n get currentTab(): Tab | undefined {\n return this.tabs[this.currentTabIndex];\n }\n\n get gamesSorted(): Game[] {\n return this.games.slice().sort((a, b) => {\n if (a.name < b.name) return -1;\n else if (a.name > b.name) return 1;\n else return 0;\n });\n }\n\n async loadGames(): Promise {\n this.loaded = false;\n this.games = await this.fetchGames();\n if (this.games.length > 0) this.loaded = true;\n }\n\n async fetchGames(): Promise {\n if (!this.currentTab) return [];\n switch (this.currentTab.type) {\n case ListType.GENRE:\n if (this.genre) return await this.$store.direct.dispatch.games.getGamesByGenre(this.genre);\n else return [];\n case ListType.ALL_GAMES:\n return await this.$store.direct.dispatch.games.getAllGames(true);\n default:\n return [];\n }\n }\n\n get genre(): Genre | undefined {\n return this.$store.direct.state.genres.genres.find(\n (g) => g.name.toLowerCase() === this.currentTab?.name.toLocaleLowerCase()\n );\n }\n\n get backgroundColor(): string {\n if (!this.currentTab) return \"\";\n return `radial-gradient(74.53% 76.79% at 0% 0%, ${this.currentTab.colorGradient1}, ${this.currentTab.colorGradient2}, #07071b 100%)`;\n }\n\n async initGenres(): Promise {\n if (this.theTabs.length > 0) return;\n await this.$store.direct.dispatch.genres.getGenres();\n this.theTabs = this.defaultTabs;\n this.$store.direct.state.genres.genres.forEach((g) => {\n if (g.enabled) {\n this.theTabs.push({\n name: this.$t(`genres.${g._id}.name`).toString(),\n urlSegment: g.urlSegment || g.name.toLowerCase(),\n imageLink: g.headerImg,\n colorGradient1: g.colorGradient1,\n colorGradient2: g.colorGradient2,\n type: ListType.GENRE,\n });\n }\n });\n this.genreLoaded = true;\n if (this.currentTabIndex < 0) this.currentTabIndex = 0;\n const tabElem = this.tabs[this.currentTabIndex];\n // only replace if the tab is not already active\n if (this.$route.params.tab !== tabElem.urlSegment)\n this.$router.replace({ params: { ...this.$route.params, tab: tabElem.urlSegment } });\n }\n\n isFullyVisible(elem: HTMLElement): boolean {\n if (!elem?.parentElement) return false;\n const elemAbsoluteLeft = elem.offsetLeft - elem.parentElement?.scrollLeft;\n const elemAbsoluteRight = elemAbsoluteLeft + elem.offsetWidth;\n return elemAbsoluteLeft >= 0 && elemAbsoluteRight <= window.innerWidth;\n }\n\n scrollToTab(tabIndex?: number): void {\n const elems = document.querySelectorAll(\".tabBox .tab\");\n const elem = elems[tabIndex || this.currentTabIndex] as HTMLElement;\n if (this.isFullyVisible(elem)) return;\n elem?.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\n }\n\n async init(): Promise {\n this.loadGames();\n\n this.$store.direct.dispatch.homeSections.getHomeSections();\n\n this.$nextTick(() => {\n this.scrollToTab();\n });\n }\n\n async created(): Promise {\n await this.initGenres();\n await this.init();\n }\n\n async activated(): Promise {\n await this.init();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayIframe.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayIframe.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlayIframe.vue?vue&type=template&id=d8184c7c&\"\nimport script from \"./PlayIframe.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlayIframe.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PlayIframe.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"no-gutters\":\"\",\"fluid\":\"\"}},[_c('div',{staticClass:\"header\",style:({ backgroundImage: _vm.backgroundColor })},[_c('div',{staticClass:\"top\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"category.title\")))]),_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"search\",attrs:{\"to\":\"/category\",\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"$tapBarCategory\")])],1)],1),(_vm.genreLoaded)?_c('v-img',{staticClass:\"image\",attrs:{\"max-height\":\"144\",\"src\":_vm.currentTab.imageLink,\"contain\":\"\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"max-height\":\"144\"}})]},proxy:true}],null,false,3530559679)}):_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"max-height\":\"144\"}}),_c('div',{staticClass:\"tabs\"},[(_vm.genreLoaded)?_c('div',{staticClass:\"tabBox\"},_vm._l((_vm.tabs),function(tab,index){return _c('div',{key:index,staticClass:\"tab\",class:{ active: _vm.currentTabIndex == index },attrs:{\"ripple\":false},on:{\"click\":function($event){_vm.currentTabIndex = index}}},[_vm._v(\" \"+_vm._s(tab.name)+\" \")])}),0):_c('div',{staticClass:\"tabBox\"},_vm._l(([0, 1, 2, 3, 4, 5, 6, 7, 8]),function(_tab,index){return _c('div',{key:index,staticClass:\"tab\"},[_c('v-skeleton-loader',{staticClass:\"mx-auto\",attrs:{\"max-width\":\"300\",\"type\":\"chip\"}})],1)}),0)])],1),_c('div',{staticClass:\"content\"},[(_vm.loaded)?_c('div',{staticClass:\"gamelist\"},_vm._l((_vm.gamesSorted),function(game){return _c('ListedGame',{key:game._id,attrs:{\"game\":game}})}),1):_c('div',{staticClass:\"gamelist\"},_vm._l(([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),function(i){return _c('ListedGame',{key:i,attrs:{\"fake\":\"\"}})}),1)]),_c('TapBar',{attrs:{\"bordered\":\"\",\"showSubBanner\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Categories.vue?vue&type=template&id=40a040e3&scoped=true&\"\nimport script from \"./Categories.vue?vue&type=script&lang=ts&\"\nexport * from \"./Categories.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Categories.vue?vue&type=style&index=0&id=40a040e3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40a040e3\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VContainer,VIcon,VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"no-gutters\":\"\",\"fluid\":\"\"}},[_c('div',{staticClass:\"topBlock\"},[_c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"left\"},[_c('v-icon',[_vm._v(\"$tapBarProfile\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"profile.title\")))])],1)]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"topBlockLine\"},[_c('span',{staticClass:\"left\"},[_vm._v(_vm._s(_vm.$t(\"profile.subscription.title\")))]),(_vm.highestSubscription)?_c('span',{staticClass:\"right\"},[(_vm.highestSubscription.access != 'visible')?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"profile.subscription.status.until\", { access: _vm.$t((\"profile.subscription.status.access.\" + (_vm.highestSubscription.access))), date: _vm.endSubDate, }))+\" \")]):_c('span',[_c('span',{staticClass:\"subscriptionStatus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"profile.subscription.status.inactive\"))+\" \")])]):_vm._e()]),(_vm.showAsterisk)?_c('span',{staticClass:\"asterisk\",domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.subscription.asterisk'))}}):_vm._e(),(_vm.showSupportEmail)?_c('div',{staticClass:\"topBlockLine link\"},[_c('a',{staticClass:\"left\",attrs:{\"href\":_vm.$t('profile.supportemail.link').toString(),\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.supportemail.text'))},on:{\"click\":function($event){return _vm.clickedLink('supportemail')}}})]):_vm._e(),(_vm.showFaq)?_c('div',{staticClass:\"topBlockLine link\"},[_c('a',{staticClass:\"left\",attrs:{\"href\":_vm.$t('profile.faq.link').toString(),\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.faq.text'))},on:{\"click\":function($event){return _vm.clickedLink('faq')}}})]):_vm._e(),(_vm.showTnC)?_c('div',{staticClass:\"topBlockLine link\"},[_c('a',{staticClass:\"left\",attrs:{\"href\":_vm.$t('profile.tnc.link').toString(),\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.tnc.text'))},on:{\"click\":function($event){return _vm.clickedLink('tnc')}}})]):_vm._e(),(_vm.isAuthPartner && _vm.isTempAccount)?_c('div',{staticClass:\"topBlockLine link\"},[_c('a',{staticClass:\"left\",attrs:{\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.alreadyGotPartnerAccount.text'))},on:{\"click\":function($event){return _vm.needAccess()}}})]):_vm._e(),(_vm.isAbleNotification)?_c('div',{staticClass:\"topBlockLine\"},[_c('span',{staticClass:\"left\"},[_vm._v(_vm._s(_vm.$t(\"profile.notification.title\")))]),_c('v-switch',{attrs:{\"color\":_vm.switchColor},model:{value:(_vm.hasNotif),callback:function ($$v) {_vm.hasNotif=$$v},expression:\"hasNotif\"}})],1):_vm._e(),(_vm.hasBigScreenPermission)?_c('div',{staticClass:\"topBlockLine\"},[_c('span',{staticClass:\"left\"},[_vm._v(_vm._s(_vm.$t(\"profile.resolution.title\")))]),_c('v-switch',{attrs:{\"color\":_vm.switchColor},model:{value:(_vm.isBigscreenResolution),callback:function ($$v) {_vm.isBigscreenResolution=$$v},expression:\"isBigscreenResolution\"}})],1):_vm._e()]),_c('div',{staticClass:\"library\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"profile.library.title\")))]),_c('div',{staticClass:\"subTitle\"},[_vm._v(_vm._s(_vm.$t(\"profile.library.subTitle\")))]),(_vm.loaded && _vm.games.length > 0)?_c('div',{staticClass:\"gamelist\",class:{ showFaq: _vm.showFaq }},_vm._l((_vm.games),function(game){return _c('ListedGame',{key:game._id,attrs:{\"game\":game}})}),1):(!_vm.loaded)?_c('div',{staticClass:\"gamelist\"},_vm._l(([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),function(i){return _c('ListedGame',{key:i,attrs:{\"fake\":\"\"}})}),1):_c('div',{staticClass:\"empty\"},[_c('div',{staticClass:\"helpText\"},[_vm._v(_vm._s(_vm.$t(\"profile.library.empty.helpText\")))]),_c('v-btn',{attrs:{\"to\":\"/category\"}},[_c('v-icon',[_vm._v(\"$profileAddGames\")]),_vm._v(_vm._s(_vm.$t(\"profile.library.empty.button\")))],1)],1)]),_c('TapBar')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport { format } from \"date-fns\";\nimport { green300 } from \"../../common/styles/colors.scss\";\n\nimport { Game, SubscriptionAccess, Subscription } from \"@/store/modules/games\";\nimport ListedGame from \"@/components/ListedGame.vue\";\nimport TapBar from \"@/components/TapBar.vue\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport { UserPermission } from \"@/store/modules/authentication\";\n\n@Component({\n components: { ListedGame, TapBar },\n})\nexport default class ProfileView extends Vue {\n loaded = false;\n\n get games(): Game[] {\n return this.$store.direct.state.games.favoriteGames;\n }\n\n get isAbleNotification(): boolean {\n return this.$store.direct.getters.mobile.isAbleNotification;\n }\n\n get hasFullSubscription(): boolean {\n return this.highestSubscription?.access === SubscriptionAccess.FULL;\n }\n\n get hasDiscoverySubscription(): boolean {\n return this.highestSubscription?.access === SubscriptionAccess.DISCOVERY;\n }\n\n get highestSubscription(): Subscription | undefined {\n return this.$store.direct.getters.games.getHighestSubscription;\n }\n\n get switchColor(): string {\n return green300;\n }\n\n get showAsterisk(): boolean {\n return (\n /^true$/i.test(process.env.VUE_APP_PROFILE_SHOW_ASTERISK) &&\n !!this.highestSubscription &&\n !this.hasDiscoverySubscription &&\n this.highestSubscription?.access != \"visible\"\n );\n }\n\n get showSupportEmail(): boolean {\n return (\n /^true$/i.test(process.env.VUE_APP_PROFILE_SHOW_SUPPORT_EMAIL) &&\n !!this.highestSubscription &&\n !this.hasDiscoverySubscription\n );\n }\n\n get showFaq(): boolean {\n return /^true$/i.test(process.env.VUE_APP_SHOW_FAQ) && !!this.highestSubscription && !this.hasDiscoverySubscription;\n }\n\n get showTnC(): boolean {\n return /^true$/i.test(process.env.VUE_APP_PROFILE_SHOW_TNC);\n }\n\n get isBigscreenResolution(): boolean {\n return this.$store.direct.state.mobile.isBigScreenResolution;\n }\n\n set isBigscreenResolution(value: boolean) {\n this.$store.direct.dispatch.mobile.setBigScreenResolution(value);\n }\n\n get hasBigScreenPermission(): boolean {\n return this.$store.direct.getters.authentication.hasPermission(UserPermission.BIGSCREEN);\n }\n\n get hasNotif(): boolean {\n return this.$store.direct.state.mobile.pushNotifEnabled;\n }\n\n set hasNotif(value: boolean) {\n if (value) {\n if (Notification.permission == \"denied\") {\n // TODO: something\n }\n this.$store.direct.dispatch.mobile.createNotificationSubscription();\n } else {\n this.$store.direct.dispatch.mobile.removeNotificationSubscription();\n }\n StatsManager.SendButtonClickStats(location.href, \"toggle_push_notification\", {\n newValue: value,\n });\n }\n\n get endSubDate(): string {\n if (!this.highestSubscription) return \"\";\n try {\n return format(\n new Date(this.highestSubscription.endOfSubscriptionDate),\n this.$t(\"profile.subscription.status.dateFormat\").toString()\n );\n } catch (e) {\n console.error(e);\n return new Date(this.highestSubscription.endOfSubscriptionDate).toLocaleDateString();\n }\n }\n\n get isTempAccount(): boolean {\n return this.$store.direct.state.authentication.user?.tempAccount ?? false;\n }\n\n get isAuthPartner(): boolean {\n return this.$store.direct.getters.authentication.isAuthPartner ?? false;\n }\n\n needAccess(): void {\n this.$store.direct.dispatch.authentication.needAccess();\n this.clickedLink(\"alreadyGotPartnerAccount\");\n }\n\n clickedLink(link: string): void {\n StatsManager.SendButtonClickStats(location.href, link);\n }\n\n async created(): Promise {\n await this.$store.direct.dispatch.games.getFavoriteGames();\n await this.$store.direct.dispatch.mobile.fetchBigScreenResolution();\n this.loaded = true;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=baff5c52&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts&\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=baff5c52&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"baff5c52\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VBtn,VContainer,VIcon,VSwitch})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"container no-gutters\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"leaderboard\"},[_c('div',{staticClass:\"leaderboardContainer\"},[_c('div',{staticClass:\"content\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"leaderboard.comingSoon\")))])])])]),_c('OGLTapBar',{attrs:{\"bordered\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-bottom-navigation',{staticClass:\"tapbar\",class:{ bordered: _vm.bordered }},[_c('div',{staticClass:\"tapbarBottom\"},[_c('v-btn',{staticClass:\"button\",class:_vm.$router.currentRoute.name === 'Home' ? 'active' : '',attrs:{\"ripple\":false,\"active-class\":\"\"},on:{\"click\":function($event){return _vm.move('/')}}},[_c('v-icon',[_vm._v(\"$tapBarHome\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.home\")))])],1),_c('v-btn',{staticClass:\"button\",class:_vm.$router.currentRoute.name === 'Leaderboard' ? 'active' : '',attrs:{\"ripple\":false,\"active-class\":\"\"},on:{\"click\":function($event){return _vm.move('/leaderboard')}}},[_c('v-icon',[_vm._v(\"$tapBarLeaderboard\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.leaderboard\")))])],1),_c('v-btn',{staticClass:\"button\",class:_vm.$router.currentRoute.name === 'Profile' ? 'active' : '',attrs:{\"ripple\":false,\"active-class\":\"\"},on:{\"click\":function($event){return _vm.move('/profile')}}},[_c('v-icon',[_vm._v(\"$tapBarProfile\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"tapBar.profile\")))])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class TapBar extends Vue {\n @Prop({ type: Boolean, default: false }) bordered: boolean;\n @Prop({ type: Boolean, default: false }) checkBeforeMove: boolean;\n\n async move(location: string): Promise {\n // don't move if we are already there\n if (this.$router.currentRoute.path === location) return;\n let doMove = true;\n if (this.checkBeforeMove) {\n doMove = await new Promise((res, _rej) => {\n this.$emit(\"beforeMove\", location, res);\n });\n }\n if (doMove) this.$router.push(location);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OGLTapBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OGLTapBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OGLTapBar.vue?vue&type=template&id=52b1db22&scoped=true&\"\nimport script from \"./OGLTapBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./OGLTapBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OGLTapBar.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./OGLTapBar.vue?vue&type=style&index=1&id=52b1db22&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52b1db22\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBottomNavigation } from 'vuetify/lib/components/VBottomNavigation';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBottomNavigation,VBtn,VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport OGLTapBar from \"@/components/OGLTapBar.vue\";\n\n@Component({\n components: {\n OGLTapBar,\n },\n})\nexport default class Leaderboard extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Leaderboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Leaderboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Leaderboard.vue?vue&type=template&id=53713ed1&scoped=true&\"\nimport script from \"./Leaderboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Leaderboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Leaderboard.vue?vue&type=style&index=0&id=53713ed1&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53713ed1\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\n@Component\nexport default class Play extends Vue {\n mounted(): void {\n this.$store.direct.dispatch.authentication.logout();\n // reload page to home\n window.location.href = \"/\";\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=bb371312&\"\nimport script from \"./Logout.vue?vue&type=script&lang=ts&\"\nexport * from \"./Logout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"handle-status-bar\",class:{ 'non-subscribed': !_vm.subscribed },attrs:{\"no-gutters\":\"\",\"fluid\":\"\"}},[_c('div',{staticClass:\"logoBox\"},[_c('v-img',{staticClass:\"logo\",attrs:{\"alt\":\"CareGame Logo\",\"src\":require('@/assets/logo.png'),\"eager\":\"\",\"contain\":\"\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"width\":\"250px\",\"min-height\":\"30.75\"}})]},proxy:true}])})],1),_c('span',{staticClass:\"tagline\"},[_vm._v(_vm._s(_vm.$t(\"home.subtitle\")))]),_vm._l((_vm.filteredHomeSections),function(section){return _c('HomeSectionComponent',{key:section._id,staticClass:\"homesection\",attrs:{\"data\":section},on:{\"video-card-ready\":_vm.observeVideoCard}})}),_c('TapBar',{attrs:{\"showSubBanner\":\"\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('div',{class:{ firstSection: _vm.isFirst }},[(_vm.isTypeBig && _vm.atLeastOneGame)?_c('HomeScroller',{staticClass:\"bigTitle\",attrs:{\"title\":_vm.title,\"subTitle\":_vm.subTitle,\"stepper\":\"\"}},_vm._l((_vm.games),function(game){return _c('CardGameXL',{key:game._id,attrs:{\"game\":game,\"showPlayButton\":_vm.showPlayButton}})}),1):(_vm.isTypeNormal && _vm.atLeastOneGame)?_c('HomeScroller',{attrs:{\"title\":_vm.title,\"subTitle\":_vm.subTitle}},_vm._l((_vm.games),function(game){return _c('CardGameL',{key:game._id,attrs:{\"game\":game,\"showPlayButton\":_vm.showPlayButton}})}),1):(_vm.isTypeFavorite && _vm.atLeastOneGame)?_c('HomeScroller',{attrs:{\"title\":_vm.title,\"subTitle\":_vm.subTitle}},_vm._l((_vm.games),function(game){return _c('CardGameL',{key:game._id,attrs:{\"game\":game,\"showPlayButton\":_vm.showPlayButton}})}),1):(_vm.isTypeLastPlayed && _vm.atLeastOneGame)?_c('HomeScroller',{attrs:{\"title\":_vm.title,\"subTitle\":_vm.subTitle}},_vm._l((_vm.games),function(game){return _c('CardGameL',{key:game._id,attrs:{\"game\":game,\"showPlayButton\":_vm.showPlayButton}})}),1):(_vm.isTypeGameSingle && _vm.atLeastOneGame)?_c('HomeScroller',{staticClass:\"bigTitle\",attrs:{\"title\":_vm.title,\"stepper\":\"\"}},[_c('CardGameXL',{staticClass:\"solo\",attrs:{\"subTitle\":_vm.subTitle,\"game\":_vm.games[0],\"showPlayButton\":_vm.showPlayButton}})],1):(_vm.isTypeCategorySingle)?_c('CardShowtime',{attrs:{\"title\":_vm.title,\"subTitle\":_vm.subTitle,\"link\":_vm.data.link,\"imageLink\":_vm.data.image}}):(_vm.isTypeGameVideo && _vm.atLeastOneGame)?_c('HomeCardGameVideo',{ref:\"videoCard\",attrs:{\"game\":_vm.games[0],\"subTitle\":_vm.subTitle,\"showPlayButton\":_vm.showPlayButton},on:{\"hook:updated\":_vm.transmitVideoCardUpdate,\"hook:mounted\":_vm.transmitVideoCard}}):(_vm.isTypeCategoryList)?_c('CategoryList',{attrs:{\"title\":_vm.title,\"data\":_vm.data}}):_vm._e()],1):_c('HomeScroller',{attrs:{\"title\":\"‎\"}},_vm._l(([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),function(game){return _c('Banner',{key:game,attrs:{\"game\":undefined}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{staticClass:\"card\",attrs:{\"to\":_vm.to}},[_c('v-img',{staticClass:\"banner rounded-sm\",attrs:{\"src\":_vm.game.bannerSmall},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"150\"}})]},proxy:true}],null,false,3885132061)}),_c('div',{staticClass:\"name rounded\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".name\"))))])],1):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"card\",\"min-width\":\"150\",\"height\":\"105\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\nimport { Game } from \"@/store/modules/games\";\n\n@Component\nexport default class Banner extends Vue {\n @Prop(Object) readonly game: Game;\n @Prop(String) readonly to: string | undefined;\n\n get loaded(): boolean {\n return !!this.game;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Banner.vue?vue&type=template&id=3cd4a59c&scoped=true&\"\nimport script from \"./Banner.vue?vue&type=script&lang=ts&\"\nexport * from \"./Banner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Banner.vue?vue&type=style&index=0&id=3cd4a59c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cd4a59c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{attrs:{\"to\":_vm.to}},[_c('div',{staticClass:\"box\"},[_c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.game.bannerBigWithTitle},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"240\"}})]},proxy:true}],null,false,1267472767)},[(_vm.showPlayButton)?_c('v-btn',{attrs:{\"fab\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clickPlayButton.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"$playButton\")])],1):_vm._e()],1),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"description\",domProps:{\"innerHTML\":_vm._s(_vm.description)}})])],1)]):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"image\",\"min-width\":\"240\",\"height\":\"256\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport CardGame from \"../../CardGame.vue\";\n\n@Component\nexport default class CardGameXL extends CardGame {\n @Prop(String) readonly subTitle: string;\n\n get description(): string {\n return this.subTitle ?? (this.$t(`games.${this.game._id}.shortDescription`) as string);\n }\n\n @Prop({ type: Boolean, default: false }) showPlayButton: boolean;\n\n clickPlayButton(): void {\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n return;\n }\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: false });\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameXL.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameXL.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardGameXL.vue?vue&type=template&id=30c297de&scoped=true&\"\nimport script from \"./CardGameXL.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardGameXL.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardGameXL.vue?vue&type=style&index=0&id=30c297de&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30c297de\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VIcon,VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{attrs:{\"to\":_vm.to}},[_c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.imageLink,\"contain\":\"\",\"position\":\"right\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"150\"}})]},proxy:true}])},[_c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"subTitle\"},[_vm._v(_vm._s(_vm.subTitle))])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {},\n})\nexport default class CardShowtime extends Vue {\n @Prop(String) readonly title: string;\n @Prop(String) readonly subTitle: string;\n @Prop(String) readonly link: string;\n @Prop(String) readonly imageLink: string;\n\n get to(): string {\n return this.link ?? \"\";\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardShowtime.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardShowtime.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardShowtime.vue?vue&type=template&id=78f79f02&scoped=true&\"\nimport script from \"./CardShowtime.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardShowtime.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardShowtime.vue?vue&type=style&index=0&id=78f79f02&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78f79f02\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"list\"},_vm._l((_vm.categories),function(cat,index){return _c('CardCategory',{key:index,attrs:{\"data\":cat}})}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{attrs:{\"to\":_vm.to}},[_c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.data.image,\"contain\":\"\",\"position\":\"right\"}},[_c('div',{staticClass:\"box\",style:({ backgroundImage: _vm.backgroundColor })},[_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.data.title))])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport { HomeSectionListedCategory } from \"@/store/modules/homesections\";\n\n@Component({\n components: {},\n})\nexport default class CardCategory extends Vue {\n @Prop(Object) readonly data: HomeSectionListedCategory;\n\n get to(): string {\n return this.data.link ?? \"\";\n }\n\n get backgroundColor(): string {\n return `radial-gradient(\n 49.03% 62.83% at 68.14% 68.02%,\n ${this.data.colorGradient1} 15.07%,\n ${this.data.colorGradient2} 59.18%,\n ${this.data.colorGradient3} 100%\n ),\n linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(14, 15, 24, 0.78) 73.01%)`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardCategory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardCategory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardCategory.vue?vue&type=template&id=d79be916&scoped=true&\"\nimport script from \"./CardCategory.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardCategory.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardCategory.vue?vue&type=style&index=0&id=d79be916&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d79be916\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VImg})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport { HomeSectionCategoryList, HomeSectionListedCategory } from \"@/store/modules/homesections\";\n\nimport CardCategory from \"@/components/CardCategory.vue\";\n\n@Component({\n components: {\n CardCategory,\n },\n})\nexport default class CategoryList extends Vue {\n @Prop(Object) readonly data: HomeSectionCategoryList;\n @Prop(String) readonly title: string;\n\n get categories(): HomeSectionListedCategory[] {\n return this.data.listedCategories.slice().sort((a, b) => a.order - b.order);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryList.vue?vue&type=template&id=b625e0e0&scoped=true&\"\nimport script from \"./CategoryList.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryList.vue?vue&type=style&index=0&id=b625e0e0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b625e0e0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('div',{staticClass:\"box\"},[_c('router-link',{staticClass:\"link\",class:{ 'disabled-link': _vm.disableLink },attrs:{\"to\":_vm.to}},[_c('div',{staticClass:\"parent\"},[_c('img',{staticClass:\"image1 pic\",attrs:{\"src\":_vm.game.bannerBigNoTitle}}),(_vm.videoURL)?_c('video',{staticClass:\"image2 pic lazy need-load\",attrs:{\"preload\":\"metadata\",\"loop\":\"\",\"playsinline\":\"\",\"muted\":\"\",\"hidden\":_vm.hidden},domProps:{\"muted\":true},on:{\"playing\":function($event){_vm.hidden = false},\"pause\":function($event){_vm.hidden = true}}},[_c('source',{attrs:{\"data-src\":_vm.videoURL,\"type\":\"video/mp4\"}})]):_vm._e()]),_c('HomeListedGame',{staticClass:\"gameInfo\",attrs:{\"game\":_vm.game,\"disableLink\":_vm.disableLink,\"subTitle\":_vm.subTitle}},[_c('v-btn',{staticClass:\"button play landscapeOnly\",class:{\n lock: _vm.noActiveSub,\n 'small-button-text': _vm.playButtonText().length > 10,\n 'coming-soon': _vm.game.isComingSoon,\n },on:{\"click\":_vm.play}},[(!_vm.noActiveSub && !_vm.game.isComingSoon)?_c('v-icon',[_vm._v(\"$playButton\")]):(!_vm.game.isComingSoon)?_c('v-icon',{staticStyle:{\"padding-right\":\"2px\"}},[_vm._v(\"$lockIcon\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.playButtonText())+\" \")],1),_vm._t(\"default\")],2)],1)],1):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"image\",\"min-width\":\"240\",\"height\":\"256\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{class:{ disableLink: _vm.disableLink },attrs:{\"to\":_vm.to}},[_c('div',{staticClass:\"box\"},[_c('CardGameM',{attrs:{\"game\":_vm.game}}),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".name\"))))]),_c('div',{staticClass:\"description\"},[_vm._v(_vm._s(_vm.subTitle && _vm.subTitle.length > 0 ? _vm.subTitle : _vm.$t((\"games.\" + (_vm.game._id) + \".shortDescription\"))))])]),_vm._t(\"default\")],2)]):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"card\",\"min-width\":\"88\",\"height\":\"72\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loaded)?_c('router-link',{attrs:{\"to\":_vm.to}},[_c('CardM',{attrs:{\"image\":_vm.game.homeBannerSmall && _vm.game.homeBannerSmall.length > 0 ? _vm.game.homeBannerSmall : _vm.game.bannerSmall}},[(_vm.showPlayButton)?_c('v-btn',{attrs:{\"fab\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clickPlayButton.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"$playButton\")])],1):_vm._e()],1)],1):_c('v-skeleton-loader',{staticClass:\"card\",attrs:{\"type\":\"image\",\"min-width\":\"104\",\"height\":\"76\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.image},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"min-width\":\"85\"}})]},proxy:true}])},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class CardM extends Vue {\n @Prop(String) readonly image: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardM.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardM.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardM.vue?vue&type=template&id=fcf0c436&scoped=true&\"\nimport script from \"./CardM.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardM.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardM.vue?vue&type=style&index=0&id=fcf0c436&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fcf0c436\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VImg,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop } from \"vue-property-decorator\";\nimport CardGame from \"./CardGame.vue\";\nimport CardM from \"./CardM.vue\";\n\n@Component({\n components: {\n CardM,\n },\n})\nexport default class CardGameM extends CardGame {\n @Prop({ type: Boolean, default: false }) showPlayButton: boolean;\n\n clickPlayButton(): void {\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n return;\n }\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: false });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameM.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameM.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardGameM.vue?vue&type=template&id=67f18a9b&scoped=true&\"\nimport script from \"./CardGameM.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardGameM.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardGameM.vue?vue&type=style&index=0&id=67f18a9b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67f18a9b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VIcon,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport CardGameM from \"./CardGameM.vue\";\n\nimport { Game } from \"@/store/modules/games\";\n\n@Component({\n components: {\n CardGameM,\n },\n})\nexport default class HomeListedGame extends Vue {\n @Prop(Boolean) readonly fake: boolean;\n @Prop(Object) readonly game: Game;\n @Prop(Boolean) readonly disableLink: boolean;\n @Prop(String) readonly subTitle: string;\n\n get loaded(): boolean {\n return !this.fake || !!this.game;\n }\n\n get to(): string {\n return `/game/${this.game.appID}`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeListedGame.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeListedGame.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HomeListedGame.vue?vue&type=template&id=880f26b0&scoped=true&\"\nimport script from \"./HomeListedGame.vue?vue&type=script&lang=ts&\"\nexport * from \"./HomeListedGame.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HomeListedGame.vue?vue&type=style&index=0&id=880f26b0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"880f26b0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport CardGame from \"@/components/CardGame.vue\";\nimport HomeListedGame from \"@/components/HomeListedGame.vue\";\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport { SubscriptionAccess } from \"@/store/modules/games\";\n\n@Component({\n components: {\n HomeListedGame,\n },\n})\nexport default class HomeCardGameVideo extends CardGame {\n @Prop(Boolean) readonly disableLink: boolean;\n @Prop(Boolean) readonly small: boolean;\n\n accessUpdateInterval: number | null = null;\n @Prop(String) readonly subTitle: string;\n hidden = true;\n\n get videoURL(): string {\n return this.game.headerVideo;\n }\n\n playButtonText(): string {\n if (this.game.isComingSoon) return this.$t(`game.buttons.play.coming-soon`).toString();\n if (!this.gameSubscription) return \"\";\n return this.$t(`game.buttons.play.${this.gameSubscription}`).toString();\n }\n\n get noActiveSub(): boolean {\n return this.gameSubscription === SubscriptionAccess.VISIBLE;\n }\n\n get gameSubscription(): SubscriptionAccess | undefined {\n if (!this.game) return undefined;\n return this.$store.direct.getters.games.getGameSubscription(this.game) || undefined;\n }\n\n async play(e: Event): Promise {\n e.preventDefault();\n e.stopPropagation();\n\n StatsManager.SendButtonClickStats(location.href, \"play\");\n\n if (!this.game) return;\n if (this.game?.isComingSoon) return;\n\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n return;\n }\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: false });\n }\n\n setupAccessUpdate(): void {\n if (this.accessUpdateInterval) return;\n this.accessUpdateInterval = setInterval(() => {\n if (this.game) this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game, force: true });\n }, parseInt(process.env.VUE_APP_GAME_ACCESS_UPDATE_INTERVAL) || 1000 * 60);\n }\n\n activated(): void {\n if (this.game) this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game, force: true });\n this.setupAccessUpdate();\n }\n\n deactivated(): void {\n this.$el.querySelector(\"video\")?.pause();\n if (this.accessUpdateInterval) {\n clearInterval(this.accessUpdateInterval);\n this.accessUpdateInterval = null;\n }\n }\n\n async created(): Promise {\n if (this.game) await this.$store.direct.dispatch.games.checkGameSubscription({ game: this.game });\n this.setupAccessUpdate();\n }\n\n mounted(): void {\n const t = this.$el.querySelector(\"video\");\n t?.addEventListener(\"canplay\", (event) => {\n StatsManager.SendArbitraryStats(\"home-video-canplay\", {\n appId: this.game.appID,\n videoUrl: this.game.headerVideo,\n });\n });\n t?.addEventListener(\"canplaythrough\", (event) => {\n StatsManager.SendArbitraryStats(\"home-video-canplaythrough\", {\n appId: this.game.appID,\n videoUrl: this.game.headerVideo,\n });\n });\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCardGameVideo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCardGameVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HomeCardGameVideo.vue?vue&type=template&id=37a981aa&scoped=true&\"\nimport script from \"./HomeCardGameVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./HomeCardGameVideo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HomeCardGameVideo.vue?vue&type=style&index=0&id=37a981aa&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37a981aa\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VIcon,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport HomeScroller from \"@/components/HomeScroller.vue\";\nimport Banner from \"@/components/Banner.vue\";\n\nimport { Game } from \"@/store/modules/games\";\nimport { HomeSection, Type } from \"@/store/modules/homesections\";\nimport CardGameXL from \"@/components/Home/HomeSections/CardGameXL.vue\";\nimport CardGameL from \"@/components/CardGameL.vue\";\nimport CardShowtime from \"@/components/Home/HomeSections/CardShowtime.vue\";\nimport CategoryList from \"@/components/CategoryList.vue\";\nimport HomeCardGameVideo from \"./HomeSections/HomeCardGameVideo.vue\";\n\n@Component({\n components: {\n CardGameXL,\n CardGameL,\n CardShowtime,\n CategoryList,\n HomeScroller,\n Banner,\n HomeCardGameVideo,\n },\n})\nexport default class HomeSectionComponent extends Vue {\n @Prop(Object) readonly data: HomeSection;\n loaded = false;\n\n getGamesFromHomeSection(): Game[] {\n // Get a copy of the HomeSection games\n let homeSectionGames = this.data.games.slice();\n // Sort them based on the order defined in database\n homeSectionGames = homeSectionGames.sort((a, b) => a.order - b.order);\n\n // Fetch the actual games from the IDs\n let res = homeSectionGames.map(\n (g) => this.$store.direct.state.games.games.find((game) => game._id === g.game) as Game\n );\n // Remove null references (games that would have been deleted for example)\n res = res.filter((g) => g);\n return res;\n }\n\n get games(): Game[] {\n switch (this.data.type) {\n case Type.FAVORITE:\n return this.$store.direct.state.games.favoriteGames.slice(0, 10);\n case Type.LAST_PLAYED:\n return this.$store.direct.state.games.lastPlayedGames.slice(0, 10);\n default:\n return this.getGamesFromHomeSection();\n }\n }\n\n get atLeastOneGame(): boolean {\n return this.games.length > 0;\n }\n\n get isTypeBig(): boolean {\n return this.data.type === Type.BIG;\n }\n\n get isTypeFavorite(): boolean {\n return this.data.type === Type.FAVORITE;\n }\n\n get isTypeLastPlayed(): boolean {\n return this.data.type === Type.LAST_PLAYED;\n }\n\n get isTypeNormal(): boolean {\n return this.data.type === Type.NORMAL;\n }\n\n get isTypeCategoryList(): boolean {\n return this.data.type === Type.CATEGORY_LIST;\n }\n\n get isTypeCategorySingle(): boolean {\n return this.data.type === Type.CATEGORY_SINGLE;\n }\n\n get isTypeGameSingle(): boolean {\n return this.data.type === Type.GAME_SINGLE;\n }\n\n get isTypeGameVideo(): boolean {\n return this.data.type === Type.GAME_VIDEO;\n }\n\n get title(): string {\n return this.$te(`homeSections.${this.data._id}.title`)\n ? this.$t(`homeSections.${this.data._id}.title`).toString()\n : \"\";\n }\n\n get subTitle(): string {\n return this.$te(`homeSections.${this.data._id}.subTitle`)\n ? this.$t(`homeSections.${this.data._id}.subTitle`).toString()\n : \"\";\n }\n\n get isFirst(): boolean {\n return this.$store.direct.state.homeSections.homeSections[0]._id === this.data._id;\n }\n\n get showPlayButton(): boolean {\n return this.data.showPlayButton || false;\n }\n\n async created(): Promise {\n if (this.data.name === \"$fake\") return;\n if (this.data.games.length > 0)\n await this.$store.direct.dispatch.games.getGamesByIds(this.data.games.map((g) => g.game));\n this.loaded = true;\n }\n\n transmitVideoCard() {\n let videoCard = this.$refs.videoCard;\n if (videoCard) {\n this.$emit('video-card-ready', (videoCard as Vue).$el);\n }\n }\n\n transmitVideoCardUpdate() {\n let videoCard = this.$refs.videoCard;\n if (videoCard) {\n this.$emit('video-card-update', (videoCard as Vue).$el);\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeSection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeSection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HomeSection.vue?vue&type=template&id=853da194&\"\nimport script from \"./HomeSection.vue?vue&type=script&lang=ts&\"\nexport * from \"./HomeSection.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Watch } from \"vue-property-decorator\";\n\nimport HomeSectionComponent from \"@/components/Home/HomeSection.vue\";\nimport TapBar from \"@/components/TapBar.vue\";\nimport { HomeSection, Type } from \"@/store/modules/homesections\";\nimport { SubscriptionAccess } from \"@/store/modules/games\";\n\nlet everyVideoElement: Element[] = [];\nconst intersectSquareHeight = 20;\nconst screenMiddle = (window.innerHeight / 2) - 40;\n\nfunction videoNeedsLoading(videoElement: HTMLVideoElement): boolean {\n return videoElement.classList.contains(\"need-load\");\n}\n\nfunction loadVideo(videoElement: HTMLVideoElement): void {\n if (videoElement.classList.contains(\"need-load\")) {\n for (var source in videoElement.children) {\n var videoSource = videoElement.children[source];\n if (typeof videoSource.tagName === \"string\" && videoSource.tagName === \"SOURCE\") {\n (videoSource as any).src = (videoSource as any).dataset.src;\n }\n }\n videoElement.load();\n videoElement.classList.remove(\"need-load\");\n }\n}\n\nfunction pauseVideo(videoElement: HTMLVideoElement) {\n videoElement.pause();\n}\n\nfunction playVideo(videoElement: HTMLVideoElement) {\n videoElement.pause();\n videoElement.play();\n}\n\nfunction restartVideo(videoElement: HTMLVideoElement) {\n videoElement.currentTime = 0;\n}\n\nfunction checkIntersection() {\n const top = screenMiddle;\n const bottom = top + intersectSquareHeight;\n\n let intersectingVideos: Element[] = [];\n let firstVideo: Element | null = null;\n\n // Get video intersecting with middle and get the first video element\n for (const elem of everyVideoElement) {\n const videoRect = elem.getBoundingClientRect();\n if (!firstVideo) firstVideo = elem;\n else {\n const firstVideoRect = firstVideo.getBoundingClientRect();\n if (videoRect.y < firstVideoRect.y) firstVideo = elem;\n }\n const rectA = { y1: top, y2: bottom };\n const rectB = { y1: videoRect.y, y2: videoRect.bottom };\n if ((rectA.y1 > rectB.y1 && rectA.y1 < rectB.y2) || (rectA.y2 > rectB.y1 && rectA.y2 < rectB.y2)) {\n intersectingVideos.push(elem);\n }\n }\n\n // If the client is scrolled less than 20 pixels, play the first video and return\n if (window.scrollY <= 20 && firstVideo) {\n const video = firstVideo.querySelector(\"video\");\n if (video) {\n if (video === playing) return;\n if (videoNeedsLoading(video)) {\n loadVideo(video);\n playVideo(video);\n } else {\n playVideo(video);\n }\n if (playing) {\n restartVideo(playing)\n pauseVideo(playing);\n }\n playing = video;\n return;\n }\n }\n\n // If no video is intersecting, stop playing video and return\n if (intersectingVideos.length === 0) {\n if (playing) {\n restartVideo(playing);\n pauseVideo(playing);\n playing === null;\n }\n return;\n }\n\n // Play first intersecting video, play old playing video\n const video = intersectingVideos[0].querySelector(\"video\");\n if (video) {\n if (video === playing) return;\n if (videoNeedsLoading(video)) {\n loadVideo(video);\n playVideo(video);\n } else {\n playVideo(video);\n }\n if (playing) {\n restartVideo(playing)\n pauseVideo(playing);\n }\n playing = video;\n }\n}\n\nlet playing: HTMLVideoElement | null = null;\n\nwindow.addEventListener(\"scroll\", (event) => {\n checkIntersection();\n});\n\n@Component({\n components: {\n HomeSectionComponent,\n TapBar,\n },\n})\nexport default class HomeView extends Vue {\n\n get anonymous(): boolean {\n return this.username === \"\";\n }\n\n get username(): string {\n return this.$store.direct.state.authentication.user?.username ?? \"\";\n }\n\n get filteredHomeSections(): HomeSection[] {\n return this.$store.direct.state.homeSections.homeSections.filter((h) => h.type && h.type !== Type.OLD);\n }\n\n get subscribed(): boolean {\n const sub = this.$store.direct.getters.games.getHighestSubscription;\n return !sub || sub.access === SubscriptionAccess.FULL;\n }\n\n async created(): Promise {\n this.$store.direct.dispatch.homeSections.getHomeSections();\n if (this.$store.direct.getters.mobile.isWebApp)\n await this.$store.direct.dispatch.mobile.createNotificationSubscription();\n }\n\n mounted() {\n checkIntersection();\n }\n\n unmounted() {\n if (playing) {\n restartVideo(playing)\n pauseVideo(playing);\n playing = null;\n }\n everyVideoElement = [];\n }\n\n // When come back to this page, restart and pause every video, then start intersecting video\n activated() {\n playing = null;\n everyVideoElement.forEach((element: Element) => {\n const video = element.querySelector(\"video\");\n if (video) {\n restartVideo(video);\n pauseVideo(video);\n }\n });\n checkIntersection();\n }\n\n // When we quit this page, restart and pause every video\n deactivated() {\n playing = null;\n everyVideoElement.forEach((element: Element) => {\n const video = element.querySelector(\"video\");\n if (video) {\n restartVideo(video);\n pauseVideo(video);\n }\n });\n }\n\n // Observe video for playing / pause\n observeVideoCard(element: Element) {\n if (!everyVideoElement.includes(element)) {\n everyVideoElement.push(element);\n }\n if (everyVideoElement.length > 2) {\n checkIntersection();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=2ffb3c63&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=2ffb3c63&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ffb3c63\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VContainer,VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"container no-gutters\",attrs:{\"fluid\":\"\"}},[_c('v-img',{staticClass:\"logo\",attrs:{\"alt\":\"CareGame Logo\",\"src\":require('@/assets/logo.png'),\"eager\":\"\",\"contain\":\"\",\"position\":\"left\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"height\":\"64px\"}})]},proxy:true}])}),_c('div',{staticClass:\"header\"},[_c('v-img',{staticClass:\"card\",attrs:{\"src\":_vm.game.bannerBigNoTitle},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})]},proxy:true}])},[_c('div',{staticClass:\"fill-height gradient\"})]),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".name\"))))]),_c('div',{staticClass:\"description\"},[_vm._v(_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".shortDescription\"))))]),_c('div',{staticClass:\"third\"},[_c('v-btn',{staticClass:\"category\"},[_vm._v(_vm._s(_vm.genreName))]),_c('span',{staticClass:\"pegi\"},[_vm._v(\" \"+_vm._s(_vm.contentRating))])],1)])],1),_c('CoolLightBox',{attrs:{\"items\":_vm.screenshots,\"index\":_vm.currentSShot,\"effect\":\"fade\",\"slideshow\":false,\"gallery\":false,\"closeOnClickOutsideMobile\":true},on:{\"close\":function($event){_vm.currentSShot = null}}}),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"actions\"},[_c('v-btn',{staticClass:\"play\",on:{\"click\":_vm.play}},[_c('v-icon',[_vm._v(\"$playButton\")]),_vm._v(_vm._s(_vm.$t(\"game.playbutton\")))],1),(_vm.canShare)?_c('v-btn',{on:{\"click\":_vm.share}},[_c('v-icon',[_vm._v(\"$shareButton\")])],1):_vm._e()],1),_c('div',{staticClass:\"welcome section\",domProps:{\"innerHTML\":_vm._s(_vm.$t('game.oneGameLobby.welcome'))}}),(_vm.screenshots.length > 0)?_c('HomeScroller',{staticClass:\"screenshotsSection section\",attrs:{\"title\":_vm.$t('game.sections.gallery.sectionTitle')}},_vm._l((_vm.game.screenshots),function(screenshot,i){return _c('CardScreenshot',{key:screenshot.url,class:{ portrait: _vm.isPortrait },attrs:{\"image\":screenshot.url},on:{\"click\":function($event){_vm.currentSShot = i}}})}),1):_vm._e(),_c('div',{staticClass:\"descriptionSection section\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"game.sections.description.sectionTitle\")))]),_c('div',{staticClass:\"description\",class:{ short: !_vm.fullDescription },domProps:{\"innerHTML\":_vm._s(_vm.$t((\"games.\" + (_vm.game._id) + \".description\")))}}),_c('div',{staticClass:\"seeMoreLess\"},[_c('v-btn',{attrs:{\"text\":\"\",\"ripple\":false},on:{\"click\":function($event){_vm.fullDescription = !_vm.fullDescription}}},[(!_vm.fullDescription)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"game.sections.description.showMore\"))+\" \"),_c('v-icon',[_vm._v(\"$showMore\")])],1):_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"game.sections.description.showLess\"))+\" \"),_c('v-icon',[_vm._v(\"$showLess\")])],1)])],1)]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"data section\"},_vm._l((_vm.info),function(i){return _c('div',{key:i.key,staticClass:\"dataline\"},[_c('div',{staticClass:\"key\"},[_vm._v(_vm._s(i.key))]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(i.value))])])}),0)],1),_c('OGLTapBar',{attrs:{\"bordered\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport CoolLightBox from \"vue-cool-lightbox\";\nimport \"vue-cool-lightbox/dist/vue-cool-lightbox.min.css\";\n\nimport { Game } from \"@/store/modules/games\";\n\nimport CardScreenshot from \"@/components/CardScreenshot.vue\";\nimport CardGameL from \"@/components/CardGameL.vue\";\nimport HomeScroller from \"@/components/HomeScroller.vue\";\nimport OGLTapBar from \"@/components/OGLTapBar.vue\";\nimport { Genre } from \"@/store/modules/genres\";\n\n@Component({\n components: {\n CardScreenshot,\n CardGameL,\n CoolLightBox,\n HomeScroller,\n OGLTapBar,\n },\n})\nexport default class GameView extends Vue {\n currentSShot = null;\n fullDescription = false;\n\n get info() {\n return [\n {\n key: this.$t(\"game.sections.info.publisher\"),\n value: this.publisher,\n },\n ];\n }\n\n get screenshots(): string[] {\n return this.game?.screenshots?.map((screenshot) => screenshot.url) || [];\n }\n\n get favorite(): boolean {\n if (!this.game) return false;\n return this.$store.direct.state.games.favoriteGamesIds.includes(this.game._id);\n }\n\n get isPortrait(): boolean {\n return this.game?.orientation === \"PORTRAIT\";\n }\n\n async play(): Promise {\n if (!this.game) return;\n if (!this.$store.direct.getters.mobile.isBrowserValid) {\n this.$store.direct.commit.SHOW_ALERT({\n text: this.$t(\"alert.alerts.bad-browser.text\").toString(),\n title: this.$t(\"alert.alerts.bad-browser.title\").toString(),\n });\n return;\n }\n this.$store.direct.dispatch.games.play({ game: this.game, playOnBigScreen: false });\n }\n\n async toggleFavorite(): Promise {\n if (!this.game) return;\n if (this.favorite) await this.$store.direct.dispatch.games.removeFromFavorite(this.game);\n else await this.$store.direct.dispatch.games.addToFavorite(this.game);\n }\n\n get pegiRating(): number {\n return this.game?.contentRating?.pegi?.rating || 3;\n }\n\n get game(): Game | undefined {\n return this.$store.direct.getters.games.getGame(process.env.VUE_APP_ONE_GAME_LOBBY);\n }\n\n get publisher(): string {\n return this.$store.direct.state.publishers.publishers.find((p) => p._id === this.game?.publisher)?.name || \"\";\n }\n\n get genre(): Genre | undefined {\n return this.$store.direct.state.genres.genres.find((p) => p._id === this.game?.genre);\n }\n\n get genreName(): string {\n return this.$te(`genres.${this.genre?._id}.name`) ? this.$t(`genres.${this.genre?._id}.name`).toString() : \"\";\n }\n\n get genreLink(): string {\n return `/category/${this.genre?.urlSegment || this.genre?.name.toLowerCase()}`;\n }\n\n get contentRating(): string {\n if (this.game?.contentRating.pegi.rating) return `PEGI ${this.game?.contentRating.pegi.rating}`;\n return \"\";\n }\n\n get canShare(): boolean {\n return this.$store.direct.getters.mobile.canShare;\n }\n\n async share(): Promise {\n if (!this.game) return;\n return this.$store.direct.dispatch.mobile.share({ game: this.game });\n }\n\n async created(): Promise {\n await this.$store.direct.dispatch.games.getGameByAppID(process.env.VUE_APP_ONE_GAME_LOBBY);\n if (!this.game) return;\n await this.$store.direct.dispatch.genres.getGenres();\n await this.$store.direct.dispatch.publishers.getPublishers();\n\n if (this.$store.direct.getters.mobile.isWebApp)\n await this.$store.direct.dispatch.mobile.createNotificationSubscription();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameLobby.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameLobby.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OneGameLobby.vue?vue&type=template&id=19e7239c&scoped=true&\"\nimport script from \"./OneGameLobby.vue?vue&type=script&lang=ts&\"\nexport * from \"./OneGameLobby.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OneGameLobby.vue?vue&type=style&index=0&id=19e7239c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19e7239c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VBtn,VContainer,VIcon,VImg,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"no-gutters\":\"\",\"fluid\":\"\"}},[_c('div',{staticClass:\"topBlock\"},[_c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"left\"},[_c('v-icon',[_vm._v(\"$tapBarProfile\")]),_c('span',[_vm._v(_vm._s(_vm.isRegistered ? _vm.username : _vm.$t(\"profile.title\")))])],1)]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"subscription\"},[_c('span',{staticClass:\"left\"},[_vm._v(_vm._s(_vm.$t(\"profile.subscription.title\")))]),_c('span',{staticClass:\"right\"},[_c('span',{staticClass:\"active\"}),_vm._v(_vm._s(_vm.$t(\"profile.subscription.status.active\")))])]),_c('div',{staticClass:\"subscription\"},[_c('span',{staticClass:\"left\"},[_vm._v(_vm._s(_vm.$t(\"profile.settings.pushNotifs.label\")))]),_c('v-switch',{model:{value:(_vm.hasNotif),callback:function ($$v) {_vm.hasNotif=$$v},expression:\"hasNotif\"}})],1)]),(!_vm.isRegistered)?_c('div',[(_vm.showLogin)?_c('LoginForm',{staticClass:\"login\",on:{\"close\":function($event){_vm.showLogin = false}}}):(_vm.showRegister)?_c('RegisterForm',{staticClass:\"register\",on:{\"close\":function($event){_vm.showRegister = false}}}):_c('div',{staticClass:\"welcome\"},[_c('div',{staticClass:\"content\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.registration.newUser.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":function($event){_vm.showLogin = true}}},[_vm._v(_vm._s(_vm.$t(\"profile.registration.newUser.buttons.login\")))]),_c('span',{staticClass:\"button important\",on:{\"click\":function($event){_vm.showRegister = true}}},[_vm._v(_vm._s(_vm.$t(\"profile.registration.newUser.buttons.register\")))])])])],1):_c('div'),(_vm.showBeforeMoveWarning)?_c('TapBarMoveWarning',{on:{\"leave\":_vm.beforeMoveLeave,\"continue\":_vm.beforeMoveContinue}}):_vm._e(),_c('OGLTapBar',{attrs:{\"checkBeforeMove\":!_vm.isRegistered && (_vm.showLogin || _vm.showRegister)},on:{\"beforeMove\":_vm.beforeMove}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_vm._v(\" Are you sure you want to leave this page? \"),_c('br'),_vm._v(\"Your changes won't be saved. \")]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":function($event){return _vm.$emit('leave')}}},[_vm._v(\"Leave\")]),_c('span',{staticClass:\"button important\",on:{\"click\":function($event){return _vm.$emit('continue')}}},[_vm._v(\"Continue\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\n@Component\nexport default class TapParMoveWarning extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBarMoveWarning.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBarMoveWarning.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TapBarMoveWarning.vue?vue&type=template&id=b0939d12&scoped=true&\"\nimport script from \"./TapBarMoveWarning.vue?vue&type=script&lang=ts&\"\nexport * from \"./TapBarMoveWarning.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TapBarMoveWarning.vue?vue&type=style&index=0&id=b0939d12&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b0939d12\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-form',{ref:\"form\",model:{value:(_vm.form.valid),callback:function ($$v) {_vm.$set(_vm.form, \"valid\", $$v)},expression:\"form.valid\"}},[_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.login.label\")))]),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.login.description\")))]),_c('v-text-field',{attrs:{\"rules\":[_vm.formRules.required],\"maxlength\":\"64\",\"error-messages\":_vm.form.error,\"solo\":\"\",\"dense\":\"\",\"placeholder\":_vm.$t('profile.registration.login.form.login.placeholder'),\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"autocomplete\":\"username\"},on:{\"input\":_vm.resetError},model:{value:(_vm.form.login),callback:function ($$v) {_vm.$set(_vm.form, \"login\", $$v)},expression:\"form.login\"}}),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.password.label\")))]),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.password.description\")))]),_c('v-text-field',{attrs:{\"append-outer-icon\":_vm.form.showPassword ? '$visibility' : '$visibilityOff',\"rules\":[_vm.formRules.required],\"type\":_vm.form.showPassword ? 'text' : 'password',\"maxlength\":\"64\",\"error-messages\":_vm.form.error,\"solo\":\"\",\"dense\":\"\",\"placeholder\":_vm.$t('profile.registration.login.form.password.placeholder'),\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"autocomplete\":\"current-password\"},on:{\"click:append-outer\":function($event){_vm.form.showPassword = !_vm.form.showPassword},\"input\":_vm.resetError},model:{value:(_vm.form.password),callback:function ($$v) {_vm.$set(_vm.form, \"password\", $$v)},expression:\"form.password\"}}),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.buttons.back\")))]),_c('span',{staticClass:\"button important\",class:{ disabled: !_vm.form.valid || _vm.form.working },on:{\"click\":_vm.login}},[(_vm.form.working)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\"}}):_c('span',[_vm._v(_vm._s(_vm.$t(\"profile.registration.login.form.buttons.login\")))])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport i18n from \"@/plugins/i18n\";\n\n@Component\nexport default class LoginForm extends Vue {\n form = {\n valid: false,\n working: false,\n login: \"\",\n password: \"\",\n showPassword: false,\n error: \"\",\n };\n\n formRules = {\n required: (value: string) => !!value || i18n.t(\"profile.registration.login.form.errors.required\"),\n };\n\n $refs!: {\n form: HTMLFormElement;\n };\n\n resetError(): void {\n this.form.error = \"\";\n }\n\n async login(): Promise {\n this.$refs.form.validate();\n if (!this.form.valid) return;\n\n if (this.form.working) return;\n this.form.working = true;\n\n const [_, loginResult] = await Promise.all([\n new Promise((resolve) => setTimeout(resolve, 1000)),\n this.$store.direct.dispatch.authentication.login({\n login: this.form.login,\n password: this.form.password,\n }),\n ]);\n if (!loginResult) {\n this.form.error = this.$t(\"profile.registration.login.form.errors.invalid\").toString();\n }\n this.form.working = false;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=4fe3fb88&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=4fe3fb88&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4fe3fb88\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VForm,VProgressCircular,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-form',{ref:\"form\",model:{value:(_vm.form.valid),callback:function ($$v) {_vm.$set(_vm.form, \"valid\", $$v)},expression:\"form.valid\"}},[_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.username.label\")))]),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.username.description\")))]),_c('v-text-field',{attrs:{\"rules\":[_vm.formRules.required, _vm.formRules.min(1), _vm.formRules.validationRegex],\"maxlength\":\"64\",\"error-messages\":_vm.form.userNameAlreadyTakenError,\"solo\":\"\",\"dense\":\"\",\"placeholder\":_vm.$t('profile.registration.register.form.username.placeholder'),\"autocorrect\":\"off\",\"autocapitalize\":\"off\"},on:{\"input\":_vm.checkUsernameDebounced},model:{value:(_vm.form.username),callback:function ($$v) {_vm.$set(_vm.form, \"username\", $$v)},expression:\"form.username\"}}),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.login.label\")))]),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.login.description\")))]),_c('v-text-field',{attrs:{\"rules\":[_vm.formRules.required, _vm.formRules.min(3), _vm.formRules.validationRegex],\"maxlength\":\"64\",\"error-messages\":_vm.form.loginAlreadyTakenError,\"solo\":\"\",\"dense\":\"\",\"placeholder\":_vm.$t('profile.registration.register.form.login.placeholder'),\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"autocomplete\":\"username\"},on:{\"input\":_vm.checkLoginDebounced},model:{value:(_vm.form.login),callback:function ($$v) {_vm.$set(_vm.form, \"login\", $$v)},expression:\"form.login\"}}),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.password.label\")))]),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.password.description\")))]),_c('v-text-field',{attrs:{\"append-outer-icon\":_vm.form.showPassword ? '$visibility' : '$visibilityOff',\"rules\":[_vm.formRules.required, _vm.formRules.min(6)],\"type\":_vm.form.showPassword ? 'text' : 'password',\"maxlength\":\"64\",\"solo\":\"\",\"dense\":\"\",\"placeholder\":_vm.$t('profile.registration.register.form.password.label'),\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\"},on:{\"click:append-outer\":function($event){_vm.form.showPassword = !_vm.form.showPassword}},model:{value:(_vm.form.password),callback:function ($$v) {_vm.$set(_vm.form, \"password\", $$v)},expression:\"form.password\"}}),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(_vm._s(_vm.$t(\"profile.registration.register.form.buttons.back\")))]),_c('span',{staticClass:\"button important\",class:{ disabled: !_vm.form.valid },on:{\"click\":_vm.register}},[_vm._v(\" \"+_vm._s(_vm.$t(\"profile.registration.register.form.buttons.register\"))+\" \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport i18n from \"@/plugins/i18n\";\n\n@Component\nexport default class LoginForm extends Vue {\n form = {\n valid: false,\n working: false,\n username: \"\",\n login: \"\",\n password: \"\",\n showPassword: false,\n userNameAlreadyTakenError: \"\",\n loginAlreadyTakenError: \"\",\n };\n\n formRules = {\n required: (value: string) => !!value || i18n.t(\"profile.registration.register.form.errors.required\"),\n min: (min: number) => (v: string) =>\n v.length >= min || i18n.t(\"profile.registration.register.form.errors.minCharacters\", { n: min }),\n validationRegex: (value: string) =>\n /^[A-Za-zÀ-ÖØ-öø-ÿ0-9_-]*$/.test(value) || i18n.t(\"profile.registration.register.form.errors.format\"),\n };\n\n $refs!: {\n form: HTMLFormElement;\n };\n\n timerId: number | null = null;\n\n async checkUsernameDebounced(): Promise {\n if (this.timerId) clearTimeout(this.timerId);\n this.timerId = setTimeout(() => this.checkUsername(this.form.username), 200);\n }\n\n async checkUsername(username: string): Promise {\n if (!username) return;\n const valid = await this.$store.direct.dispatch.authentication.usernameValidity({ username });\n if (!valid)\n this.form.userNameAlreadyTakenError = this.$t(\n \"profile.registration.register.form.errors.usernameTaken\"\n ).toString();\n else this.form.userNameAlreadyTakenError = \"\";\n }\n\n async checkLoginDebounced(): Promise {\n if (this.timerId) clearTimeout(this.timerId);\n this.timerId = setTimeout(() => this.checkLogin(this.form.login), 200);\n }\n\n async checkLogin(login: string): Promise {\n if (!login) return;\n const valid = await this.$store.direct.dispatch.authentication.loginValidity({ login });\n if (!valid)\n this.form.loginAlreadyTakenError = this.$t(\"profile.registration.register.form.errors.loginTaken\").toString();\n else this.form.loginAlreadyTakenError = \"\";\n }\n\n async register(): Promise {\n this.$refs.form.validate();\n if (!this.form.valid) return;\n\n if (this.form.working) return;\n this.form.working = true;\n\n await Promise.all([\n new Promise((resolve) => setTimeout(resolve, 1000)),\n await this.$store.direct.dispatch.authentication.tempRegister({\n username: this.form.username,\n login: this.form.login,\n password: this.form.password,\n }),\n ]);\n this.form.working = false;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisterForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisterForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegisterForm.vue?vue&type=template&id=5ab9ff5c&scoped=true&\"\nimport script from \"./RegisterForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegisterForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RegisterForm.vue?vue&type=style&index=0&id=5ab9ff5c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ab9ff5c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VForm,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport { User } from \"@/store/modules/authentication\";\nimport { Game } from \"@/store/modules/games\";\nimport ListedGame from \"@/components/ListedGame.vue\";\nimport OGLTapBar from \"@/components/OGLTapBar.vue\";\nimport TapBarMoveWarning from \"../components/TapBarMoveWarning.vue\";\nimport LoginForm from \"../components/Profile/LoginForm.vue\";\nimport RegisterForm from \"../components/Profile/RegisterForm.vue\";\n\n@Component({\n components: { ListedGame, OGLTapBar, LoginForm, RegisterForm, TapBarMoveWarning },\n})\nexport default class ProfileView extends Vue {\n loaded = false;\n // username: string | undefined = \"\";\n friendID = \"\";\n showLogin = false;\n showRegister = false;\n beforeMovePromise?: (value: boolean | PromiseLike) => void = undefined;\n showBeforeMoveWarning = false;\n\n get games(): Game[] {\n return this.$store.direct.state.games.favoriteGames;\n }\n\n get hasNotif(): boolean {\n return this.$store.direct.state.mobile.pushNotifEnabled;\n }\n\n set hasNotif(value: boolean) {\n if (value) {\n if (Notification.permission == \"denied\") {\n // TODO: something\n }\n this.$store.direct.dispatch.mobile.createNotificationSubscription();\n } else {\n this.$store.direct.dispatch.mobile.removeNotificationSubscription();\n }\n }\n\n get friendList(): User[] {\n return this.$store.direct.state.authentication.friendList || [];\n }\n\n get isRegistered(): boolean {\n return this.$store.direct.state.authentication.user?.isRegistered || false;\n }\n\n get username(): string {\n return this.$store.direct.state.authentication.user?.username || \"Anonymous\";\n }\n\n /*\n updateUsername(): void {\n if (!this.username) return;\n this.$store.direct.dispatch.authentication.updateUsername(this.username);\n }\n */\n\n async addFriend(): Promise {\n await this.$store.direct.dispatch.authentication.addFriend({\n id: this.friendID,\n });\n }\n\n async removeFriend(friend: User): Promise {\n await this.$store.direct.dispatch.authentication.removeFriend(friend);\n }\n\n async created(): Promise {\n // await this.$store.direct.dispatch.games.getFavoriteGames();\n // this.username = this.$store.direct.state.authentication.user?.username;\n this.loaded = true;\n }\n\n deactivated(): void {\n this.showLogin = false;\n this.showRegister = false;\n }\n\n beforeMoveLeave(): void {\n this.showBeforeMoveWarning = false;\n this.beforeMovePromise?.(true);\n }\n\n beforeMoveContinue(): void {\n this.showBeforeMoveWarning = false;\n this.beforeMovePromise?.(false);\n }\n\n beforeMove(location: string, res: (value: boolean | PromiseLike) => void): void {\n this.beforeMovePromise = res;\n this.showBeforeMoveWarning = true;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameProfile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OneGameProfile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OneGameProfile.vue?vue&type=template&id=e8721862&scoped=true&\"\nimport script from \"./OneGameProfile.vue?vue&type=script&lang=ts&\"\nexport * from \"./OneGameProfile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OneGameProfile.vue?vue&type=style&index=0&id=e8721862&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e8721862\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VContainer,VIcon,VSwitch})\n","import { RouteConfig } from \"vue-router\";\n\nimport { isValidAndroidAppID } from \"@/../common/utils/utils\";\nimport Game from \"@/views/Game.vue\";\nimport PlayIframe from \"@/views/PlayIframe.vue\";\nimport Categories from \"@/views/Categories.vue\";\nimport Profile from \"@/views/Profile.vue\";\nimport Leaderboard from \"@/views/Leaderboard.vue\";\nimport Logout from \"@/views/Logout.vue\";\nimport Home from \"@/views/Home.vue\";\nimport OneGameLobby from \"@/views/OneGameLobby.vue\";\nimport OneGameProfile from \"@/views/OneGameProfile.vue\";\n\ninterface MyRouteConfigInterface {\n meta?: {\n noHandleNotch?: boolean;\n skipAuth?: boolean;\n };\n}\n\ntype MyRouteConfig = MyRouteConfigInterface & RouteConfig;\n\nconst routes: MyRouteConfig[] = [];\n\nroutes.push(\n ...[\n {\n path: \"/game/:game\",\n name: \"Game\",\n component: Game,\n meta: {\n noHandleNotch: false,\n },\n },\n {\n path: \"/playiframe/:game\",\n name: \"PlayIframe\",\n component: PlayIframe,\n meta: {\n noHandleNotch: true,\n },\n },\n {\n path: \"/category/:tab?\",\n name: \"Categories\",\n component: Categories,\n meta: {\n noHandleNotch: true,\n },\n },\n {\n path: \"/profile/\",\n name: \"Profile\",\n component: isValidAndroidAppID(process.env.VUE_APP_ONE_GAME_LOBBY) ? OneGameProfile : Profile,\n },\n {\n path: \"/leaderboard/\",\n name: \"Leaderboard\",\n component: Leaderboard,\n },\n {\n path: \"/logout/\",\n name: \"Logout\",\n component: Logout,\n },\n {\n path: \"/fakepartnerauth\",\n name: \"FakePartnerAuth\",\n component: () => import(\"@/views/FakePartnerAuth.vue\"),\n meta: {\n skipAuth: true,\n },\n },\n {\n path: \"/fakepartnersub\",\n name: \"FakePartnerSub\",\n component: () => import(\"@/views/FakePartnerSub.vue\"),\n meta: {\n title: \"Subscribe\",\n subscription: {\n type: \"subscribe\",\n },\n },\n },\n {\n path: \"/fakepartnersubtemp\",\n name: \"FakePartnerSubTemp\",\n component: () => import(\"@/views/FakePartnerSub.vue\"),\n meta: {\n title: \"Subscribe (New)\",\n subscription: {\n type: \"subscribe\",\n },\n },\n },\n {\n path: \"/fakepartnerunsub\",\n name: \"FakePartnerUnsub\",\n component: () => import(\"@/views/FakePartnerSub.vue\"),\n meta: {\n title: \"Unsubscribe\",\n subscription: {\n type: \"unsubscribe\",\n },\n },\n },\n {\n path: \"/:cgtoken?\",\n name: \"Home\",\n component: isValidAndroidAppID(process.env.VUE_APP_ONE_GAME_LOBBY) ? OneGameLobby : Home,\n },\n ]\n);\n\nroutes.push(\n ...[\n {\n path: \"*\",\n redirect: { name: \"Home\" },\n },\n ]\n);\n\nexport default routes;\n","import Vue from \"vue\";\nimport VueRouter, { Route, RouterOptions, RawLocation, Location } from \"vue-router\";\n\nimport Store from \"@/store/\";\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\nimport routes from \"@/router/routes\";\nimport { LAST_SEEN_DATE_KEY } from \"../apm\";\nimport { delay } from \"@/../common/utils/utils\";\n\nVue.use(VueRouter);\n\nclass MyRouter extends VueRouter {\n private routeHistory: Route[] = [];\n private get hasMoved(): boolean {\n return this.routeHistory.length > 1;\n }\n\n constructor(options?: RouterOptions) {\n super(options);\n\n this.afterEach((to, _from) => {\n this.routeHistory.push(to);\n });\n }\n\n /**\n * Go back to the previous route in the history.\n * @param fallback The fallback route to go to if there is no history. Default is \"/\".\n */\n public async back(fallback: RawLocation = \"/\"): Promise {\n const routeBeforeBack = this.currentRoute.fullPath;\n\n const MAX_BACK_ATTEMPTS = 10;\n let attempts = 0;\n\n let backWorked = false;\n do {\n this.hasMoved ? this.go(-1) : this.push(fallback);\n await delay(100);\n const routeAfterBack = this.currentRoute.fullPath;\n\n backWorked = routeBeforeBack !== routeAfterBack;\n\n attempts++;\n } while (!backWorked && attempts < MAX_BACK_ATTEMPTS);\n }\n}\n\nconst router = new MyRouter({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) return savedPosition;\n else return { x: 0, y: 0 };\n },\n});\n\nrouter.beforeEach(async (to, _from, next) => {\n if (to.meta.skipAuth) return next();\n if (to.params.cgtoken) await Store.dispatch.authentication.setJWT(to.params.cgtoken);\n if (to.query.cgtoken) await Store.dispatch.authentication.setJWT(to.query.cgtoken as string);\n if (to.query.referrer) await Store.dispatch.authentication.setReferrer(to.query.referrer as string);\n\n if (!Store.getters.authentication.isAuthenticated) {\n // Need to retrieve the cgtoken here because it is deleted in whoami() if it's invalid.\n const hadCGToken = !!Store.getters.authentication.jwt;\n await Store.dispatch.authentication.whoami();\n if (!Store.getters.authentication.isAuthenticated) {\n // Only create a temp account if there's no cgtoken. If it's expired or invalid (if it exists) we show needAccess.\n if (/^TRUE$/i.test(process.env.VUE_APP_CREATE_TEMP_ACCOUNT) && !hadCGToken)\n await Store.dispatch.authentication.createTempAccount();\n else Store.dispatch.authentication.needAccess();\n }\n }\n next();\n});\n\nfunction hasQueryParams(route: Route): boolean {\n return !!Object.keys(route.query).length;\n}\n\nrouter.beforeEach((to, from, next) => {\n if (to.path === from.path) return next();\n if (!hasQueryParams(to) && hasQueryParams(from)) {\n const location: Location = { query: from.query };\n next(Object.assign({}, to, location));\n } else next();\n});\n\nrouter.afterEach((to, from) => {\n localStorage.setItem(LAST_SEEN_DATE_KEY, new Date().toISOString());\n StatsManager.SendNavigationStats(from.fullPath, to.fullPath);\n});\n\nrouter.afterEach(() => {\n Store.dispatch.mobile.updateAndSetManifest();\n});\n\nexport default router;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WrongBrowserPopup.vue?vue&type=style&index=0&id=a3aa9d36&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4b94b3d0&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=42b04bba&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardGameXL.vue?vue&type=style&index=0&id=30c297de&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardCategory.vue?vue&type=style&index=0&id=d79be916&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=style&index=0&id=3cd4a59c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{staticClass:\"gp-full-height\",class:{ noHandleNotch: _vm.$route.meta.noHandleNotch }},[_c('v-main',[_c('keep-alive',{attrs:{\"exclude\":_vm.shouldKeepAlive}},[_c('router-view',{key:_vm.$route.fullPath})],1),_c('AlertDialog',{attrs:{\"dialog\":_vm.$store.direct.state.alert.show,\"title\":_vm.$store.direct.state.alert.title,\"text\":_vm.$store.direct.state.alert.text,\"buttonText\":_vm.$t('alert.buttons.close')},on:{\"close\":_vm.$store.direct.commit.CLOSE_ALERT}}),_c('NeedAccessPopup',{attrs:{\"show\":_vm.$store.direct.state.authentication.showNeedAccessPopup}}),_c('NeedPartnerAuthenticationPopup',{attrs:{\"show\":_vm.$store.direct.state.authentication.showNeedPartnerAuthenticationPopup},on:{\"close\":true}}),_c('WrongBrowserPopup',{attrs:{\"show\":_vm.$store.state.showWrongBrowserPopup}}),(_vm.$store.direct.state.add2HomeTuto.show)?_c('Add2HomeTuto'):_vm._e(),(_vm.$store.direct.state.mobile.add2HomeAndroidIntercept.show)?_c('Add2HomeAndroidIntercept'):_vm._e(),(_vm.$store.direct.state.mobile.showUpdateModal && _vm.$route.name !== 'PlayIframe')?_c('UpdateModal'):_vm._e(),(_vm.$store.direct.state.mobile.showSubscribeTutoPopup)?_c('SubscribeTutoPopup'):_vm._e(),(_vm.$store.direct.state.mobile.showRenewTutoPopup)?_c('RenewTutoPopup'):_vm._e(),(_vm.$store.direct.state.mobile.showAgreementPopup)?_c('AgreementPopup'):_vm._e(),(_vm.$store.direct.state.mobile.showSharePopup)?_c('SharePopup'):_vm._e(),(_vm.$store.direct.state.mobile.showSubscribeBannerPopup)?_c('SubscribeBannerPopup'):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"persistent\":\"\",\"overlay-color\":\"#07071B\",\"overlay-opacity\":\"0.93\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"description\",domProps:{\"innerHTML\":_vm._s(_vm.text)}})]),_c('div',{staticClass:\"cta\"},[(_vm.showCloseButton)?_c('div',{staticClass:\"button\",on:{\"click\":function($event){_vm.show = false}}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")]):_vm._e()])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class AlertDialog extends Vue {\n @Prop(Boolean) dialog: boolean;\n\n @Prop({ type: String }) title: string;\n @Prop({ type: String }) text: string;\n @Prop({ type: String, default: \"Ok\" }) buttonText: string;\n @Prop({ type: Boolean, default: true }) showCloseButton: boolean;\n\n get show(): boolean {\n return this.dialog;\n }\n\n set show(value: boolean) {\n this.$emit(\"close\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertDialog.vue?vue&type=template&id=5e9b5ee5&scoped=true&\"\nimport script from \"./AlertDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertDialog.vue?vue&type=style&index=0&id=5e9b5ee5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e9b5ee5\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\ninstallComponents(component, {VCard,VDialog})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"hide-overlay\":\"\",\"fullscreen\":\"\",\"transition\":\"\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-container',{staticClass:\"fill-height\"},[_c('v-row',{staticClass:\"text-center\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-img',{staticClass:\"logo\",attrs:{\"alt\":\"CareGame Logo\",\"src\":require('@/assets/logo.png'),\"eager\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-img',{staticClass:\"picture\",attrs:{\"alt\":\"Incompatible browser\",\"src\":require('@/assets/incomp_browser.png'),\"eager\":\"\"}}),_c('h1',[_vm._v(_vm._s(_vm.$t(\"wrongBrowser.title\")))])],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"px-5\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"wrongBrowser.text.start\"))+\" \"),_c('span',{staticClass:\"imp\"},[_vm._v(\"Safari iOS\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"wrongBrowser.text.or\"))+\" \"),_c('span',{staticClass:\"imp\"},[_vm._v(\"Chrome Android\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"wrongBrowser.text.end\"))+\" \")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class WrongBrowserPopup extends Vue {\n @Prop(Boolean) show: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WrongBrowserPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WrongBrowserPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WrongBrowserPopup.vue?vue&type=template&id=a3aa9d36&scoped=true&\"\nimport script from \"./WrongBrowserPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./WrongBrowserPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WrongBrowserPopup.vue?vue&type=style&index=0&id=a3aa9d36&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a3aa9d36\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VDialog,VImg,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"hide-overlay\":\"\",\"fullscreen\":\"\",\"transition\":\"\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('div',{staticClass:\"box\"},[_c('div',[_c('v-img',{staticClass:\"caregame-icon\",attrs:{\"alt\":\"CareGame Icon\",\"src\":require('@/assets/icon.png'),\"eager\":\"\"}}),_c('span',[_c('p',[_vm._v(_vm._s(_vm.$t(\"needAccess.text.first\")))]),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('needAccess.text.second'))}})])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class AccountLimitReachedPopup extends Vue {\n @Prop(Boolean) show: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedAccessPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedAccessPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NeedAccessPopup.vue?vue&type=template&id=c0222c96&scoped=true&\"\nimport script from \"./NeedAccessPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./NeedAccessPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NeedAccessPopup.vue?vue&type=style&index=0&id=c0222c96&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0222c96\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VDialog,VImg})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"fullscreen\":\"\",\"transition\":\"\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-container',{staticClass:\"fill-height\"},[_c('v-row',{staticClass:\"text-center\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-img',{staticClass:\"logo\",attrs:{\"alt\":\"CareGame Logo\",\"src\":require('@/assets/logo.png'),\"eager\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card-actions',{staticClass:\"pa-3 px-10\"},[_c('v-btn',{staticClass:\"caregame-background rounded-lg\",attrs:{\"block\":\"\",\"depressed\":\"\",\"disabled\":_vm.disabled},on:{\"click\":_vm.openAuthPopup}},[_vm._v(_vm._s(_vm.$t(\"need-auth-popup.text\")))])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Prop } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class AccountSuspendedPopup extends Vue {\n @Prop(Boolean) show: boolean;\n disabled = false;\n\n openAuthPopup(): void {\n this.disabled = true;\n this.$store.direct.dispatch.authentication.openAuthPopup({\n onClose: () => {\n this.disabled = false;\n if (this.$store.direct.getters.authentication.isAuthenticated) this.$emit(\"close\");\n },\n });\n StatsManager.SendButtonClickStats(\"NEED_PARTNER_AUTHENTICATION_POPUP\", \"open\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedPartnerAuthenticationPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedPartnerAuthenticationPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NeedPartnerAuthenticationPopup.vue?vue&type=template&id=2245ace5&scoped=true&\"\nimport script from \"./NeedPartnerAuthenticationPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./NeedPartnerAuthenticationPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NeedPartnerAuthenticationPopup.vue?vue&type=style&index=0&id=2245ace5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2245ace5\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCardActions,VCol,VContainer,VDialog,VImg,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_c('i18n',{attrs:{\"path\":\"add2hometuto.title\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('v-img',{staticClass:\"icon\",attrs:{\"alt\":\"CareGame Icon\",\"src\":require('@/assets/icon.png'),\"eager\":\"\",\"contain\":\"\",\"width\":\"26px\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"width\":\"26px\"}})]},proxy:true}])})]},proxy:true}])})],1),_c('div',{staticClass:\"tutoPanel\"},_vm._l((_vm.tutoLines),function(step,index){return _c('div',{key:index,staticClass:\"step\"},[_c('span',{staticClass:\"icon\"},[(step.icon)?_c('v-icon',[_vm._v(_vm._s(step.icon))]):(step.useLogo)?_c('v-img',{attrs:{\"alt\":\"CareGame Icon\",\"src\":require('@/assets/icon.png'),\"eager\":\"\",\"contain\":\"\",\"width\":\"24px\"},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})]},proxy:true}],null,true)}):_vm._e()],1),_c('div',{staticClass:\"text\"},[_c('span',{staticClass:\"stepTitle\"},[_vm._v(_vm._s(_vm.$t(\"add2hometuto.tuto.stepWord\"))+\" \"+_vm._s(index + 1))]),_c('span',{staticClass:\"stepDescription\",domProps:{\"innerHTML\":_vm._s(step.text)}})])])}),0)]),_c('div',{staticClass:\"cta\"},[(_vm.showButtonSkip)?_c('span',{staticClass:\"button\",on:{\"click\":_vm.skip}},[_vm._v(_vm._s(_vm.$t(\"add2hometuto.skip\")))]):_vm._e(),(_vm.showButtonClose)?_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t(\"add2hometuto.close\")))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\ninterface TutoLine {\n icon?: string;\n useLogo?: boolean;\n text: string;\n}\n\n@Component\nexport default class Add2HomeTuto extends Vue {\n showButtonClose = true;\n\n get isChrome(): boolean {\n return this.$store.direct.getters.mobile.isChrome;\n }\n\n get isAndroid(): boolean {\n return this.$store.direct.getters.mobile.isAndroid;\n }\n\n get isSafari(): boolean {\n return this.$store.direct.getters.mobile.isSafari;\n }\n\n get isiOS(): boolean {\n return this.$store.direct.getters.mobile.isiOS;\n }\n\n get showButtonSkip(): boolean {\n if (this.isAndroid) return /^true$/i.test(process.env.VUE_APP_PWA_TUTO_SKIP_BUTTON_ANDROID);\n if (this.isiOS) return /^true$/i.test(process.env.VUE_APP_PWA_TUTO_SKIP_BUTTON_IOS);\n return false;\n }\n\n get tutoLines(): TutoLine[] {\n const res: TutoLine[] = [];\n if (this.isAndroid) {\n res.push(\n {\n icon: \"$add2HomeTutoAndroidChromeStep1\",\n text: this.$t(\"add2hometuto.tuto.android.chrome.step1\").toString(),\n },\n {\n icon: \"$add2HomeTutoAndroidChromeStep2\",\n text: this.$t(\"add2hometuto.tuto.android.chrome.step2\").toString(),\n }\n );\n } else if (this.isiOS) {\n res.push(\n {\n icon: \"$add2HomeTutoOtherStep1\",\n text: this.$t(\"add2hometuto.tuto.other.step1\").toString(),\n },\n {\n icon: \"$add2HomeTutoOtherStep2\",\n text: this.$t(\"add2hometuto.tuto.other.step2\").toString(),\n }\n );\n }\n res.push({\n useLogo: true,\n text: this.$t(\"add2hometuto.tuto.lastStep\").toString(),\n });\n return res;\n }\n\n skip(): void {\n this.$store.direct.state.add2HomeTuto.onSkip?.();\n this.$store.direct.commit.CLOSE_ADD2HOME_TUTO();\n StatsManager.SendButtonClickStats(\"ADD2HOME_TUTO\", \"skip\");\n }\n\n close(): void {\n StatsManager.SendButtonClickStats(\"ADD2HOME_TUTO\", \"close\");\n this.$store.direct.commit.CLOSE_ADD2HOME_TUTO();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeTuto.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeTuto.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Add2HomeTuto.vue?vue&type=template&id=61ad20b7&scoped=true&\"\nimport script from \"./Add2HomeTuto.vue?vue&type=script&lang=ts&\"\nexport * from \"./Add2HomeTuto.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Add2HomeTuto.vue?vue&type=style&index=0&id=61ad20b7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61ad20b7\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VIcon,VImg,VOverlay,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('add2homeAndroidIntercept.text'))}})]),_c('div',{staticClass:\"cta\"},[(_vm.showButtonSkip)?_c('span',{staticClass:\"button\",on:{\"click\":_vm.skip}},[_vm._v(\" \"+_vm._s(_vm.$t(\"add2homeAndroidIntercept.buttons.skip\"))+\" \")]):_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t(\"add2homeAndroidIntercept.buttons.close\"))+\" \")]),_c('span',{staticClass:\"button important\",on:{\"click\":_vm.install}},[_vm._v(_vm._s(_vm.$t(\"add2homeAndroidIntercept.buttons.install\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\ninterface TutoLine {\n icon?: string;\n useLogo?: boolean;\n text: string;\n}\n\n@Component\nexport default class Add2HomeTuto extends Vue {\n showButtonClose = true;\n\n get showButtonSkip(): boolean {\n return /^true$/i.test(process.env.VUE_APP_PWA_TUTO_SKIP_BUTTON_ANDROID);\n }\n\n skip(): void {\n this.$store.direct.state.mobile.add2HomeAndroidIntercept.onSkip?.();\n this.$store.direct.commit.mobile.CLOSE_SHOW_ADD2HOME_ANDROID_INTERCEPT();\n StatsManager.SendButtonClickStats(\"ADD2HOME_ANDROID_INTERCEPT\", \"skip\");\n }\n\n close(): void {\n this.$store.direct.state.mobile.add2HomeAndroidIntercept.onClose?.();\n this.$store.direct.commit.mobile.CLOSE_SHOW_ADD2HOME_ANDROID_INTERCEPT();\n StatsManager.SendButtonClickStats(\"ADD2HOME_ANDROID_INTERCEPT\", \"close\");\n }\n\n install(): void {\n this.$store.direct.commit.mobile.SHOW_DEFERRED_PWA_PROMPT();\n this.$store.direct.commit.mobile.CLOSE_SHOW_ADD2HOME_ANDROID_INTERCEPT();\n StatsManager.SendButtonClickStats(\"ADD2HOME_ANDROID_INTERCEPT\", \"install\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeAndroidIntercept.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeAndroidIntercept.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Add2HomeAndroidIntercept.vue?vue&type=template&id=5b854ce2&scoped=true&\"\nimport script from \"./Add2HomeAndroidIntercept.vue?vue&type=script&lang=ts&\"\nexport * from \"./Add2HomeAndroidIntercept.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Add2HomeAndroidIntercept.vue?vue&type=style&index=0&id=5b854ce2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b854ce2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_c('i18n',{attrs:{\"path\":\"updateModal.title\"}})],1)]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":_vm.reload}},[_vm._v(_vm._s(_vm.$t(\"updateModal.reload\")))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class UpdateModal extends Vue {\n async reload(): Promise {\n await this.$store.direct.dispatch.mobile.reloadPWA();\n StatsManager.SendButtonClickStats(\"UPDATE_POPUP\", \"reload\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UpdateModal.vue?vue&type=template&id=b71ed6a4&scoped=true&\"\nimport script from \"./UpdateModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./UpdateModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UpdateModal.vue?vue&type=style&index=0&id=b71ed6a4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b71ed6a4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"agreementPopup.title\")))]),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('agreementPopup.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button important\",on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t(\"agreementPopup.buttons.close\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class SharePopup extends Vue {\n close(): void {\n this.$store.direct.dispatch.authentication.giveAgreement();\n this.$store.direct.commit.mobile.CLOSE_AGREEMENT_POPUP();\n StatsManager.SendButtonClickStats(\"AGREEMENT_POPUP\", \"close\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgreementPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgreementPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AgreementPopup.vue?vue&type=template&id=8640b678&scoped=true&\"\nimport script from \"./AgreementPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AgreementPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AgreementPopup.vue?vue&type=style&index=0&id=8640b678&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8640b678\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"sharePopup.title\")))]),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('sharePopup.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t(\"sharePopup.buttons.close\"))+\" \")]),_c('span',{staticClass:\"button important\",on:{\"click\":_vm.share}},[_vm._v(_vm._s(_vm.$t(\"sharePopup.buttons.share\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class SharePopup extends Vue {\n close(): void {\n this.$store.direct.commit.mobile.CLOSE_SHARE_POPUP();\n StatsManager.SendButtonClickStats(\"SHARE_POPUP\", \"close\");\n }\n\n share(): void {\n this.$store.direct.dispatch.mobile.share();\n this.$store.direct.commit.mobile.CLOSE_SHARE_POPUP();\n StatsManager.SendButtonClickStats(\"SHARE_POPUP\", \"share\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SharePopup.vue?vue&type=template&id=31bd09a6&scoped=true&\"\nimport script from \"./SharePopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./SharePopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SharePopup.vue?vue&type=style&index=0&id=31bd09a6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31bd09a6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"subscribeTutoPopup.title\")))]),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('subscribeTutoPopup.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t(\"subscribeTutoPopup.buttons.close\"))+\" \")]),_c('span',{staticClass:\"button important\",on:{\"click\":_vm.subscribe}},[_vm._v(_vm._s(_vm.$t(\"subscribeTutoPopup.buttons.subscribe\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class SubscribeTutoPopup extends Vue {\n close(): void {\n this.$store.direct.commit.mobile.CLOSE_SUBSCRIBE_TUTO_POPUP();\n StatsManager.SendButtonClickStats(\"SUBSCRIBE_TUTO_POPUP\", \"close\");\n }\n\n subscribe(): void {\n this.$store.direct.commit.mobile.CLOSE_SUBSCRIBE_TUTO_POPUP();\n StatsManager.SendButtonClickStats(\"SUBSCRIBE_TUTO_POPUP\", \"subscribe\");\n if (\n !process.env.VUE_APP_POPUP_HOW_TO_SUB_REDIRECT_URL ||\n /^FALSE$/i.test(process.env.VUE_APP_POPUP_HOW_TO_SUB_REDIRECT_URL)\n )\n return;\n const url = process.env.VUE_APP_POPUP_HOW_TO_SUB_REDIRECT_URL;\n StatsManager.SendNavigationStats(location.href, url);\n location.replace(url);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeTutoPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeTutoPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SubscribeTutoPopup.vue?vue&type=template&id=48bcc126&scoped=true&\"\nimport script from \"./SubscribeTutoPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./SubscribeTutoPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SubscribeTutoPopup.vue?vue&type=style&index=0&id=48bcc126&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48bcc126\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"renewTutoPopup.title\")))]),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('renewTutoPopup.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t(\"renewTutoPopup.buttons.close\"))+\" \")]),_c('span',{staticClass:\"button important\",on:{\"click\":_vm.subscribe}},[_vm._v(_vm._s(_vm.$t(\"renewTutoPopup.buttons.subscribe\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class RenewTutoPopup extends Vue {\n close(): void {\n this.$store.direct.commit.mobile.CLOSE_RENEW_TUTO_POPUP();\n StatsManager.SendButtonClickStats(\"RENEW_TUTO_POPUP\", \"close\");\n }\n\n subscribe(): void {\n this.$store.direct.commit.mobile.CLOSE_RENEW_TUTO_POPUP();\n StatsManager.SendButtonClickStats(\"RENEW_TUTO_POPUP\", \"subscribe\");\n if (\n !process.env.VUE_APP_POPUP_HOW_TO_RENEW_REDIRECT_URL ||\n /^FALSE$/i.test(process.env.VUE_APP_POPUP_HOW_TO_RENEW_REDIRECT_URL)\n )\n return;\n const url = process.env.VUE_APP_POPUP_HOW_TO_RENEW_REDIRECT_URL;\n StatsManager.SendNavigationStats(location.href, url);\n location.replace(url);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RenewTutoPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RenewTutoPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RenewTutoPopup.vue?vue&type=template&id=1b217f14&scoped=true&\"\nimport script from \"./RenewTutoPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./RenewTutoPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RenewTutoPopup.vue?vue&type=style&index=0&id=1b217f14&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b217f14\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-overlay',{attrs:{\"opacity\":\"0.75\",\"z-index\":\"200\",\"color\":\"#000000\"}},[_c('div',{staticClass:\"tutoContainer\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"subscribeBannerPopup.title\")))]),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('subscribeBannerPopup.text'))}})]),_c('div',{staticClass:\"cta\"},[_c('span',{staticClass:\"button\",on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t(\"subscribeBannerPopup.buttons.close\"))+\" \")]),_c('span',{staticClass:\"button important\",on:{\"click\":_vm.subscribe}},[_vm._v(_vm._s(_vm.$t(\"subscribeBannerPopup.buttons.subscribe\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\n\nimport * as StatsManager from \"@/../common/stats/StatsManager\";\n\n@Component\nexport default class SubscribeBannerPopup extends Vue {\n close(): void {\n StatsManager.SendButtonClickStats(\"SUBSCRIBE_BANNER_POPUP\", \"close\");\n this.$store.direct.commit.mobile.CLOSE_SUBSCRIBE_BANNER_POPUP();\n }\n\n subscribe(): void {\n StatsManager.SendButtonClickStats(\"SUBSCRIBE_BANNER_POPUP\", \"subscribe\");\n this.$store.direct.dispatch.games.openSubPopup();\n this.$store.direct.commit.mobile.CLOSE_SUBSCRIBE_BANNER_POPUP();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBannerPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBannerPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SubscribeBannerPopup.vue?vue&type=template&id=1be7917b&scoped=true&\"\nimport script from \"./SubscribeBannerPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./SubscribeBannerPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SubscribeBannerPopup.vue?vue&type=style&index=0&id=1be7917b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1be7917b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\ninstallComponents(component, {VOverlay})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport debounce from \"lodash/debounce\";\n\nimport i18n from \"@/plugins/i18n\";\n\nimport AlertDialog from \"@/components/AlertDialog.vue\";\nimport WrongBrowserPopup from \"@/components/WrongBrowserPopup.vue\";\nimport NeedAccessPopup from \"@/components/NeedAccessPopup.vue\";\nimport NeedPartnerAuthenticationPopup from \"@/components/NeedPartnerAuthenticationPopup.vue\";\nimport Add2HomeTuto from \"@/components/Add2HomeTuto.vue\";\nimport Add2HomeAndroidIntercept from \"@/components/Add2HomeAndroidIntercept.vue\";\nimport UpdateModal from \"@/components/UpdateModal.vue\";\nimport AgreementPopup from \"@/components/AgreementPopup.vue\";\nimport SharePopup from \"@/components/SharePopup.vue\";\nimport SubscribeTutoPopup from \"./components/SubscribeTutoPopup.vue\";\nimport RenewTutoPopup from \"./components/RenewTutoPopup.vue\";\nimport SubscribeBannerPopup from \"./components/SubscribeBannerPopup.vue\";\nimport EnterCodePopup from \"./components/Bigscreen/EnterCodePopup.vue\";\n\nimport { axiosInstance } from \"./store\";\n\nimport { ErrorCode } from \"../sdk/src/engine/types/\";\nimport { ApmBase } from \"@elastic/apm-rum\";\nimport { initApm } from \"./apm\";\n\n@Component({\n name: \"App\",\n components: {\n AlertDialog,\n WrongBrowserPopup,\n NeedAccessPopup,\n NeedPartnerAuthenticationPopup,\n Add2HomeTuto,\n Add2HomeAndroidIntercept,\n UpdateModal,\n SubscribeTutoPopup,\n RenewTutoPopup,\n AgreementPopup,\n SharePopup,\n SubscribeBannerPopup,\n EnterCodePopup,\n },\n})\nexport default class App extends Vue {\n showGetTempAccountPopup = false;\n apm: ApmBase;\n\n get shouldKeepAlive(): RegExp | string {\n const shouldKeepAlive = process.env.NODE_ENV === \"production\";\n return shouldKeepAlive ? \"Play\" : /.+/;\n }\n\n async handleRouterParameters(): Promise {\n const store = this.$store.direct;\n\n if (this.$route.params.cgtoken) await store.dispatch.authentication.setJWT(this.$route.params.cgtoken as string);\n if (this.$route.query.cgtoken) await store.dispatch.authentication.setJWT(this.$route.query.cgtoken as string);\n if (!store.getters.authentication.isAuthenticated) await store.dispatch.authentication.whoami();\n }\n\n async waitForRouterReady(): Promise {\n return new Promise((res, _rej) => {\n this.$router.onReady(res, (err) => {\n console.warn(err);\n res();\n });\n });\n }\n\n showError(exitCode: ErrorCode): void {\n switch (exitCode) {\n case ErrorCode.BROWSER_INCOMPATIBLE:\n this.Alert(\n this.$t(\"alert.alerts.bad-browser.text\").toString(),\n this.$t(\"alert.alerts.bad-browser.title\").toString()\n );\n break;\n case ErrorCode.CONNECTION_LOST:\n this.Alert(\n this.$t(\"alert.alerts.host-error.text\").toString(),\n this.$t(\"alert.alerts.host-error.title\").toString()\n );\n break;\n case ErrorCode.CONNECTION_TIMEOUT:\n this.Alert(\n this.$t(\"alert.alerts.connection-too-long.text\").toString(),\n this.$t(\"alert.alerts.connection-too-long.title\").toString()\n );\n break;\n case ErrorCode.NO_CAPACITY_AVAILABLE:\n this.Alert(this.$t(\"alert.alerts.full.text\").toString(), this.$t(\"alert.alerts.full.title\").toString());\n break;\n case ErrorCode.PWA_REQUIRED:\n this.Alert(\n this.$t(\"alert.alerts.pwa-required.text\").toString(),\n this.$t(\"alert.alerts.pwa-required.title\").toString()\n );\n break;\n case ErrorCode.SAVE_PENDING:\n this.Alert(\n this.$t(\"alert.alerts.previous-save-pending.text\").toString(),\n this.$t(\"alert.alerts.previous-save-pending.title\").toString()\n );\n break;\n case ErrorCode.SAVE_RESTORE_ERROR:\n this.Alert(\n this.$t(\"alert.alerts.save-restore-fail.text\").toString(),\n this.$t(\"alert.alerts.save-restore-fail.title\").toString()\n );\n break;\n case ErrorCode.SERVICE_NOT_AVAILABLE:\n this.Alert(\n this.$t(\"alert.alerts.server-error.text\").toString(),\n this.$t(\"alert.alerts.server-error.title\").toString()\n );\n break;\n case ErrorCode.SPEEDTEST_FAILED:\n this.Alert(\n this.$t(\"alert.alerts.speedtest-fail.text\").toString(),\n this.$t(\"alert.alerts.speedtest-fail.title\").toString()\n );\n break;\n case ErrorCode.BS_SPEEDTEST_FAILED:\n this.Alert(\n this.$t(\"alert.alerts.bs-speedtest-fail.text\").toString(),\n this.$t(\"alert.alerts.bs-speedtest-fail.title\").toString()\n );\n break;\n case ErrorCode.USER_AFK:\n this.Alert(this.$t(\"alert.alerts.afk.text\").toString(), this.$t(\"alert.alerts.afk.title\").toString());\n break;\n case ErrorCode.USER_ALREADY_PAIRED:\n this.Alert(\n this.$t(\"alert.alerts.user-already-paired.text\").toString(),\n this.$t(\"alert.alerts.user-already-paired.title\").toString()\n );\n break;\n case ErrorCode.USER_NOT_AUTHORIZED:\n this.Alert(\n this.$t(\"alert.alerts.not-authorized.text\").toString(),\n this.$t(\"alert.alerts.not-authorized.title\").toString()\n );\n break;\n case ErrorCode.USER_UNFOCUS_AFK:\n this.Alert(this.$t(\"alert.alerts.unfocus.text\").toString(), this.$t(\"alert.alerts.unfocus.title\").toString());\n break;\n case ErrorCode.USER_NEW_SESSION:\n this.Alert(\n this.$t(\"alert.alerts.new-session.text\").toString(),\n this.$t(\"alert.alerts.new-session.title\").toString()\n );\n break;\n case ErrorCode.QUEUE_TIMEOUT:\n this.Alert(\n this.$t(\"alert.alerts.queue-timeout.text\").toString(),\n this.$t(\"alert.alerts.queue-timeout.title\").toString()\n );\n break;\n case ErrorCode.BS_DISCONNECTED:\n this.Alert(\n this.$t(\"alert.alerts.bs-disconnected.text\").toString(),\n this.$t(\"alert.alerts.bs-disconnected.title\").toString()\n );\n break;\n }\n }\n\n async listenToMessages(): Promise {\n window.addEventListener(\n \"message\",\n (event) => {\n if (event.data.exitCode !== undefined) {\n this.showError(event.data.exitCode);\n const source = event.source as Window;\n const isIframe = source !== source.top;\n const isPopup = !!source.opener;\n if (isIframe) this.$router.back();\n source.close();\n }\n },\n false\n );\n }\n\n async created(): Promise {\n this.listenToMessages();\n this.dostuff();\n\n this.apm = await this.setUpApm();\n\n const pageLoadTransansaction = this.apm.getCurrentTransaction();\n const loadingSpan = pageLoadTransansaction?.startSpan(\"Loading Animation\");\n this.$store.direct.commit.SET_LOADING(true);\n this.$store.direct.dispatch.language.init();\n await this.waitForRouterReady();\n this.$store.direct.commit.SET_LOADING(false);\n\n const promises: Promise[] = [];\n const subscriptionStatusPromise = this.$store.direct.dispatch.games.checkAllsubscriptions();\n const expiredSubscriptionsPromise = this.$store.direct.dispatch.games.getExpiredSubscriptions();\n setInterval(() => {\n this.$store.direct.dispatch.games.checkAllsubscriptions();\n }, parseInt(process.env.VUE_APP_GLOBAL_ACCESS_UPDATE_INTERVAL) || 1000 * 60);\n promises.push(subscriptionStatusPromise);\n promises.push(expiredSubscriptionsPromise);\n promises.push(this.$store.direct.dispatch.mobile.init());\n\n subscriptionStatusPromise.then(() => {\n if (!this.$store.direct.getters.games.hasSubscription)\n this.$store.direct.dispatch.authentication.needSubscription();\n });\n\n if (!this.$store.direct.getters.mobile.gaveAgreement) {\n this.$store.direct.commit.mobile.SHOW_AGREEMENT_POPUP();\n }\n\n axiosInstance.get(\"/server-status\").catch((err) => {\n if (!err.response) {\n this.$store.direct.commit.SHOW_ALERT({\n title: i18n.t(\"maintenance-alert.title\").toString(),\n text: i18n.t(\"maintenance-alert.text\").toString(),\n onClose: () => {\n location.reload();\n },\n });\n return;\n }\n });\n\n try {\n await Promise.all(promises);\n } catch (e) {\n console.error(e);\n }\n\n const exitCode = new URL(window.location.href).searchParams.get(\"exitCode\");\n if (exitCode) {\n this.showError(parseInt(exitCode, 10));\n let query = Object.assign({}, this.$route.query);\n delete query.exitCode;\n this.$router.replace({ query });\n }\n this.$store.direct.commit.SET_LOADING(false);\n loadingSpan?.end();\n const loadedLobby = this.apm.startTransaction(\"Loaded-lobby\", \"usage-tracking\");\n setTimeout(() => {\n loadedLobby?.end();\n }, 10);\n\n if (this.$store.direct.getters.mobile.isWebApp) {\n setInterval(this.checkPWANeedReload, 1000);\n this.checkPWANeedReload();\n\n this.$store.direct.commit.mobile.INCREMENT_PWA_LAUNCHES();\n const countPWALaunches = this.$store.direct.getters.mobile.countPWALaunches;\n\n if (process.env.VUE_APP_HIDE_NATIVE_PWA_BANNER > 0) {\n if (countPWALaunches > 0 && countPWALaunches % process.env.VUE_APP_PWA_LAUNCHES_FOR_SHARE_POPUP == 0) {\n this.$store.direct.commit.mobile.SHOW_SHARE_POPUP();\n }\n }\n }\n\n window.addEventListener(\"beforeinstallprompt\", (e: BeforeInstallPromptEvent) => {\n const hideNativePWABanner = /^true$/i.test(process.env.VUE_APP_HIDE_NATIVE_PWA_BANNER);\n if (hideNativePWABanner) e.preventDefault();\n this.$store.direct.commit.mobile.SET_DEFERRED_PWA_PROMPT(e);\n });\n }\n\n async checkPWANeedReload(): Promise {\n await this.$store.direct.dispatch.mobile.checkPWAChanged();\n }\n\n dostuff(): void {\n this.setViewHeight();\n\n const debouncedSetHeight = debounce(this.setViewHeight, 50);\n\n window.addEventListener(\"resize\", debouncedSetHeight);\n\n this.$once(\"destroyed\", () => {\n window.removeEventListener(\"resize\", debouncedSetHeight);\n });\n }\n\n setViewHeight(): void {\n const vh = window.innerHeight * 0.01;\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\n }\n\n private Alert(message: string, title = \"\"): void {\n this.$store.direct.commit.SHOW_ALERT({\n title,\n text: message,\n });\n }\n\n private async setUpApm(): Promise {\n const sessionExpirationDuration = !isNaN(Number(process.env.VUE_APP_SESSION_EXPIRATION_DURATION))\n ? Number(process.env.VUE_APP_SESSION_EXPIRATION_DURATION)\n : 300;\n const apmEndpoint = process.env.VUE_APP_APM_ENDPOINT ? process.env.VUE_APP_APM_ENDPOINT : \"https://localhost:8200\";\n const active = process.env.VUE_APP_APM_ACTIVE ? process.env.VUE_APP_APM_ACTIVE : false;\n return initApm(apmEndpoint, sessionExpirationDuration, [this.$store.direct.state.apiEndpoint], active);\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5cca5c0e&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VMain})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M222 801q63-40 124.5-60.5T480 720q72 0 134 20.5T739 801q44-54 62.5-109T820 576q0-145-97.5-242.5T480 236q-145 0-242.5 97.5T140 576q0 61 19 116t63 109Zm257.814-195Q422 606 382.5 566.314q-39.5-39.686-39.5-97.5t39.686-97.314q39.686-39.5 97.5-39.5t97.314 39.686q39.5 39.686 39.5 97.5T577.314 566.5q-39.686 39.5-97.5 39.5Zm-.219 370q-83.146 0-156.275-31.5t-127.225-86Q142 804 111 731.159 80 658.319 80 575.5q0-82.819 31.5-155.659Q143 347 197.5 293t127.341-85.5Q397.681 176 480.5 176q82.819 0 155.659 31.5Q709 239 763 293t85.5 127Q880 493 880 575.734q0 82.734-31.5 155.5T763 858.5q-54 54.5-127.129 86T479.595 976Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./account_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=153a7d04&scoped=true&\"\nvar script = {}\nimport style0 from \"./account_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=153a7d04&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"153a7d04\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M320 853V293l440 280-440 280Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./play_arrow_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=3ba5c15b&scoped=true&\"\nvar script = {}\nimport style0 from \"./play_arrow_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=3ba5c15b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ba5c15b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 -960 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"m383-310 267-170-267-170v340Zm97 230q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./play_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=65b4a04a&scoped=true&\"\nvar script = {}\nimport style0 from \"./play_circle_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=65b4a04a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65b4a04a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M796 935 533 672q-30 26-69.959 40.5T378 727q-108.162 0-183.081-75Q120 577 120 471t75-181q75-75 181.5-75t181 75Q632 365 632 471.15 632 514 618 554q-14 40-42 75l264 262-44 44ZM377 667q81.25 0 138.125-57.5T572 471q0-81-56.875-138.5T377 275q-82.083 0-139.542 57.5Q180 390 180 471t57.458 138.5Q294.917 667 377 667Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./search_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=4b94b3d0&scoped=true&\"\nvar script = {}\nimport style0 from \"./search_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4b94b3d0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b94b3d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"24px\",\"viewBox\":\"0 0 24 24\",\"width\":\"24px\",\"fill\":\"#FFFFFF\"}},[_c('path',{attrs:{\"d\":\"M0 0h24v24H0V0z\",\"fill\":\"none\",\"opacity\":\".87\"}}),_c('path',{attrs:{\"d\":\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./arrow_back_ios_white_24dp.vue?vue&type=template&id=bdda68ce&scoped=true&\"\nvar script = {}\nimport style0 from \"./arrow_back_ios_white_24dp.vue?vue&type=style&index=0&id=bdda68ce&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bdda68ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M450 856V606H200v-60h250V296h60v250h250v60H510v250h-60Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=4c3cfd58&scoped=true&\"\nvar script = {}\nimport style0 from \"./add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4c3cfd58&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c3cfd58\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M480 712 240 472l43-43 197 197 197-197 43 43-240 240Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=template&id=5ef5f9ab&scoped=true&\"\nvar script = {}\nimport style0 from \"./keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=style&index=0&id=5ef5f9ab&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ef5f9ab\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"m283 699-43-43 240-240 240 240-43 43-197-197-197 197Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=template&id=72559e7a&scoped=true&\"\nvar script = {}\nimport style0 from \"./keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=style&index=0&id=72559e7a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72559e7a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M200 936V271q0-24 18-42t42-18h290v60H260v574l220-93 220 93V511h60v425L480 816 200 936Zm60-665h290-290Zm440 180v-90h-90v-60h90v-90h60v90h90v60h-90v90h-60Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./bookmark_add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=055b5941&scoped=true&\"\nvar script = {}\nimport style0 from \"./bookmark_add_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=055b5941&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"055b5941\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M716 451 610 345l42-43 64 64 148-149 43 43-191 191ZM200 936V271q0-24 18-42t42-18h336q-23 26-34.5 55.5T550 331q0 67 43 117t107 61q17 2 30 2t30-2v427L480 816 200 936Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./bookmark_added_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=50377930&scoped=true&\"\nvar script = {}\nimport style0 from \"./bookmark_added_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=50377930&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50377930\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M160 936V456l320-240 320 240v480H560V656H400v280H160Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./home_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=4d8df3e4&scoped=true&\"\nvar script = {}\nimport style0 from \"./home_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4d8df3e4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d8df3e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M220 1016q-24 0-42-18t-18-42V447q0-24 18-42t42-18h169v60H220v509h520V447H569v-60h171q24 0 42 18t18 42v509q0 24-18 42t-42 18H220Zm229-307V252l-88 88-43-43 161-161 161 161-43 43-88-88v457h-60Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./ios_share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=5eb0eae8&scoped=true&\"\nvar script = {}\nimport style0 from \"./ios_share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=5eb0eae8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5eb0eae8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M207.858 624Q188 624 174 609.858q-14-14.141-14-34Q160 556 174.142 542q14.141-14 34-14Q228 528 242 542.142q14 14.141 14 34Q256 596 241.858 610q-14.141 14-34 14Zm272 0Q460 624 446 609.858q-14-14.141-14-34Q432 556 446.142 542q14.141-14 34-14Q500 528 514 542.142q14 14.141 14 34Q528 596 513.858 610q-14.141 14-34 14Zm272 0Q732 624 718 609.858q-14-14.141-14-34Q704 556 718.142 542q14.141-14 34-14Q772 528 786 542.142q14 14.141 14 34Q800 596 785.858 610q-14.141 14-34 14Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./more_horiz_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=437f224d&scoped=true&\"\nvar script = {}\nimport style0 from \"./more_horiz_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=437f224d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"437f224d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M479.858 896Q460 896 446 881.858q-14-14.141-14-34Q432 828 446.142 814q14.141-14 34-14Q500 800 514 814.142q14 14.141 14 34Q528 868 513.858 882q-14.141 14-34 14Zm0-272Q460 624 446 609.858q-14-14.141-14-34Q432 556 446.142 542q14.141-14 34-14Q500 528 514 542.142q14 14.141 14 34Q528 596 513.858 610q-14.141 14-34 14Zm0-272Q460 352 446 337.858q-14-14.141-14-34Q432 284 446.142 270q14.141-14 34-14Q500 256 514 270.142q14 14.141 14 34Q528 324 513.858 338q-14.141 14-34 14Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./more_vert_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=07de4529&scoped=true&\"\nvar script = {}\nimport style0 from \"./more_vert_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=07de4529&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07de4529\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M450 776h60V606h170v-60H510V376h-60v170H280v60h170v170ZM180 936q-24 0-42-18t-18-42V276q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./add_box_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=06250b52&scoped=true&\"\nvar script = {}\nimport style0 from \"./add_box_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=06250b52&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06250b52\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 96 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M300 1016q-24.75 0-42.375-17.625T240 956V810h60v56h440V286H300v56h-60V196q0-24.75 17.625-42.375T300 136h440q24.75 0 42.375 17.625T800 196v760q0 24.75-17.625 42.375T740 1016H300ZM163 763l-43-43 245-244H200v-60h269v269h-60V518L163 763Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=4c1ee3ee&scoped=true&\"\nvar script = {}\nimport style0 from \"./add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=4c1ee3ee&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c1ee3ee\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 -960 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M480.118-330Q551-330 600.5-379.618q49.5-49.617 49.5-120.5Q650-571 600.382-620.5q-49.617-49.5-120.5-49.5Q409-670 359.5-620.382q-49.5 49.617-49.5 120.5Q310-429 359.618-379.5q49.617 49.5 120.5 49.5Zm-.353-58Q433-388 400.5-420.735q-32.5-32.736-32.5-79.5Q368-547 400.735-579.5q32.736-32.5 79.5-32.5Q527-612 559.5-579.265q32.5 32.736 32.5 79.5Q592-453 559.265-420.5q-32.736 32.5-79.5 32.5ZM480-200q-146 0-264-83T40-500q58-134 176-217t264-83q146 0 264 83t176 217q-58 134-176 217t-264 83Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./visibility_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=d8fa4484&scoped=true&\"\nvar script = {}\nimport style0 from \"./visibility_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=d8fa4484&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d8fa4484\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 -960 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M816-64 648-229q-35 14-79 21.5t-89 7.5q-146 0-265-81.5T40-500q20-52 55.5-101.5T182-696L56-822l42-43 757 757-39 44ZM480-330q14 0 30-2.5t27-7.5L320-557q-5 12-7.5 27t-2.5 30q0 72 50 121t120 49Zm278 40L629-419q10-16 15.5-37.5T650-500q0-71-49.5-120.5T480-670q-22 0-43 5t-38 16L289-760q35-16 89.5-28T485-800q143 0 261.5 81.5T920-500q-26 64-67 117t-95 93ZM585-463 443-605q29-11 60-4.5t54 28.5q23 23 32 51.5t-4 66.5Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./visibility_off_FILL1_wght400_GRAD0_opsz48.vue?vue&type=template&id=7d2b005d&scoped=true&\"\nvar script = {}\nimport style0 from \"./visibility_off_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=7d2b005d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d2b005d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 -960 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M150-190h180v-340H150v340Zm240 0h180v-580H390v580Zm240 0h180v-260H630v260ZM90-130v-460h240v-240h300v320h240v380H90Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./leaderboard_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=34424502&scoped=true&\"\nvar script = {}\nimport style0 from \"./leaderboard_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=34424502&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34424502\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"48\",\"viewBox\":\"0 -960 960 960\",\"width\":\"48\"}},[_c('path',{attrs:{\"d\":\"M727-80q-47.5 0-80.75-33.346Q613-146.693 613-194.331q0-6.669 1.5-16.312T619-228L316-404q-15 17-37 27.5T234-366q-47.5 0-80.75-33.25T120-480q0-47.5 33.25-80.75T234-594q23 0 44 9t38 26l303-174q-3-7.071-4.5-15.911Q613-757.75 613-766q0-47.5 33.25-80.75T727-880q47.5 0 80.75 33.25T841-766q0 47.5-33.25 80.75T727-652q-23.354 0-44.677-7.5T646-684L343-516q2 8 3.5 18.5t1.5 17.741q0 7.242-1.5 15Q345-457 343-449l303 172q15-14 35-22.5t46-8.5q47.5 0 80.75 33.25T841-194q0 47.5-33.25 80.75T727-80Zm.035-632Q750-712 765.5-727.535q15.5-15.535 15.5-38.5T765.465-804.5q-15.535-15.5-38.5-15.5T688.5-804.465q-15.5 15.535-15.5 38.5t15.535 38.465q15.535 15.5 38.5 15.5Zm-493 286Q257-426 272.5-441.535q15.5-15.535 15.5-38.5T272.465-518.5q-15.535-15.5-38.5-15.5T195.5-518.465q-15.5 15.535-15.5 38.5t15.535 38.465q15.535 15.5 38.5 15.5Zm493 286Q750-140 765.5-155.535q15.5-15.535 15.5-38.5T765.465-232.5q-15.535-15.5-38.5-15.5T688.5-232.465q-15.5 15.535-15.5 38.5t15.535 38.465q15.535 15.5 38.5 15.5ZM727-766ZM234-480Zm493 286Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=template&id=18cd8ef8&scoped=true&\"\nvar script = {}\nimport style0 from \"./share_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=18cd8ef8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18cd8ef8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"20px\",\"viewBox\":\"0 -960 960 960\",\"width\":\"20px\",\"fill\":\"#000000\"}},[_c('path',{attrs:{\"d\":\"m380-340 280-180-280-180v360Zm-60 220v-80H160q-33 0-56.5-23.5T80-280v-480q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v480q0 33-23.5 56.5T800-200H640v80H320ZM160-280h640v-480H160v480Zm0 0v-480 480Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=template&id=42b04bba&scoped=true&\"\nvar script = {}\nimport style0 from \"./live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=42b04bba&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42b04bba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"20px\",\"viewBox\":\"0 -960 960 960\",\"width\":\"20px\",\"fill\":\"#FF4500\"}},[_c('path',{attrs:{\"d\":\"m339-288 141-141 141 141 51-51-141-141 141-141-51-51-141 141-141-141-51 51 141 141-141 141 51 51ZM480-96q-79 0-149-30t-122.5-82.5Q156-261 126-331T96-480q0-80 30-149.5t82.5-122Q261-804 331-834t149-30q80 0 149.5 30t122 82.5Q804-699 834-629.5T864-480q0 79-30 149t-82.5 122.5Q699-156 629.5-126T480-96Zm0-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./cancel_20dp_FILL0_wght400_GRAD0_opsz20.vue?vue&type=template&id=5b0097c3&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"20px\",\"viewBox\":\"0 -960 960 960\",\"width\":\"20px\",\"fill\":\"#33CF8E\"}},[_c('path',{attrs:{\"d\":\"m429-336 238-237-51-51-187 186-85-84-51 51 136 135Zm51 240q-79 0-149-30t-122.5-82.5Q156-261 126-331T96-480q0-80 30-149.5t82.5-122Q261-804 331-834t149-30q80 0 149.5 30t122 82.5Q804-699 834-629.5T864-480q0 79-30 149t-82.5 122.5Q699-156 629.5-126T480-96Zm0-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./check_circle_20dp_FILL0_wght400_GRAD0_opsz20.vue?vue&type=template&id=244b9f86&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"m21.707 11.293-8-8A1 1 0 0 0 12 4v3.545A11.015 11.015 0 0 0 2 18.5V20a1 1 0 0 0 1.784.62 11.456 11.456 0 0 1 7.887-4.049c.05-.006.175-.016.329-.026V20a1 1 0 0 0 1.707.707l8-8a1 1 0 0 0 0-1.414ZM14 17.586V15.5a1 1 0 0 0-1-1c-.255 0-1.296.05-1.562.085a14.005 14.005 0 0 0-7.386 2.948A9.013 9.013 0 0 1 13 9.5a1 1 0 0 0 1-1V6.414L19.586 12Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./shareIcon.vue?vue&type=template&id=84742512&scoped=true&\"\nvar script = {}\nimport style0 from \"./shareIcon.vue?vue&type=style&index=0&id=84742512&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84742512\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"24px\",\"viewBox\":\"0 -960 960 960\",\"width\":\"24px\"}},[_c('path',{attrs:{\"d\":\"m233-120 65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./star_24dp_FILL1_wght400_GRAD0_opsz24.vue?vue&type=template&id=8e41b09c&scoped=true&\"\nvar script = {}\nimport style0 from \"./star_24dp_FILL1_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=8e41b09c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8e41b09c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"height\":\"24px\",\"viewBox\":\"0 -960 960 960\",\"width\":\"24px\",\"fill\":\"#5f6368\"}},[_c('path',{attrs:{\"d\":\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./star_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=template&id=78b3fb73&scoped=true&\"\nvar script = {}\nimport style0 from \"./star_24dp_FILL0_wght400_GRAD0_opsz24.vue?vue&type=style&index=0&id=78b3fb73&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78b3fb73\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,9V7c0-2.8-2.2-5-5-5S7,4.2,7,7v2c-1.7,0-3,1.3-3,3v7c0,1.7,1.3,3,3,3h10c1.7,0,3-1.3,3-3v-7C20,10.3,18.7,9,17,9z M9,7\\n\\tc0-1.7,1.3-3,3-3s3,1.3,3,3v2H9V7z M13.1,15.5c0,0-0.1,0.1-0.1,0.1V17c0,0.6-0.4,1-1,1s-1-0.4-1-1v-1.4c-0.6-0.6-0.7-1.5-0.1-2.1\\n\\tc0.6-0.6,1.5-0.7,2.1-0.1C13.6,13.9,13.7,14.9,13.1,15.5z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./lockIcon.vue?vue&type=template&id=6fa0d682&scoped=true&\"\nvar script = {}\nimport style0 from \"./lockIcon.vue?vue&type=style&index=0&id=6fa0d682&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6fa0d682\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,13a1.49,1.49,0,0,0-1,2.61V17a1,1,0,0,0,2,0V15.61A1.49,1.49,0,0,0,12,13Zm5-4H9V7a3,3,0,0,1,5.12-2.13,3.08,3.08,0,0,1,.78,1.38,1,1,0,1,0,1.94-.5,5.09,5.09,0,0,0-1.31-2.29A5,5,0,0,0,7,7V9a3,3,0,0,0-3,3v7a3,3,0,0,0,3,3H17a3,3,0,0,0,3-3V12A3,3,0,0,0,17,9Zm1,10a1,1,0,0,1-1,1H7a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H17a1,1,0,0,1,1,1Z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./unlockIcon.vue?vue&type=template&id=2ffbb87a&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib\";\nimport fr from \"vuetify/src/locale/fr\";\n\nimport account_circle from \"@/assets/icons/material_symbols/account_circle_FILL1_wght400_GRAD0_opsz48.vue\";\nimport play_arrow from \"@/assets/icons/material_symbols/play_arrow_FILL1_wght400_GRAD0_opsz48.vue\";\nimport play_circle_filled from \"@/assets/icons/material_symbols/play_circle_FILL1_wght400_GRAD0_opsz48.vue\";\nimport search from \"@/assets/icons/material_symbols/search_FILL0_wght400_GRAD0_opsz48.vue\";\n// import sports_esports from \"@/assets/icons/material_symbols/sports_esports_FILL1_wght400_GRAD0_opsz48.vue\";\nimport arrow_back_ios_white from \"@/assets/icons/material_icons/arrow_back_ios_white_24dp.vue\";\nimport add from \"@/assets/icons/material_symbols/add_FILL0_wght400_GRAD0_opsz48.vue\";\nimport keyboard_arrow_down from \"@/assets/icons/material_symbols/keyboard_arrow_down_FILL0_wght0_GRAD0_opszNaN.vue\";\nimport keyboard_arrow_up from \"@/assets/icons/material_symbols/keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue\";\n// import bookmark from \"@/assets/icons/material_symbols/bookmark_FILL0_wght0_GRAD0_opszNaN.vue\";\n// import bookmark_filled from \"@/assets/icons/material_symbols/bookmark_FILL1_wght400_GRAD0_opsz48.vue\";\nimport bookmark_add from \"@/assets/icons/material_symbols/bookmark_add_FILL0_wght400_GRAD0_opsz48.vue\";\n// import bookmark_remove from \"@/assets/icons/material_symbols/bookmark_remove_FILL1_wght400_GRAD0_opsz48.vue\";\nimport bookmark_added from \"@/assets/icons/material_symbols/bookmark_added_FILL1_wght400_GRAD0_opsz48.vue\";\nimport home from \"@/assets/icons/material_symbols/home_FILL1_wght400_GRAD0_opsz48.vue\";\nimport ios_share from \"@/assets/icons/material_symbols/ios_share_FILL0_wght400_GRAD0_opsz48.vue\";\nimport more_horiz from \"@/assets/icons/material_symbols/more_horiz_FILL0_wght400_GRAD0_opsz48.vue\";\nimport more_vert from \"@/assets/icons/material_symbols/more_vert_FILL0_wght400_GRAD0_opsz48.vue\";\nimport add_box from \"@/assets/icons/material_symbols/add_box_FILL1_wght400_GRAD0_opsz48.vue\";\nimport add_to_home_screen from \"@/assets/icons/material_symbols/add_to_home_screen_FILL1_wght400_GRAD0_opsz48.vue\";\nimport visibility from \"@/assets/icons/material_symbols/visibility_FILL1_wght400_GRAD0_opsz48.vue\";\nimport visibility_off from \"@/assets/icons/material_symbols/visibility_off_FILL1_wght400_GRAD0_opsz48.vue\";\nimport leaderboard from \"@/assets/icons/material_symbols/leaderboard_FILL0_wght400_GRAD0_opsz48.vue\";\nimport share from \"@/assets/icons/material_symbols/share_FILL0_wght400_GRAD0_opsz48.vue\";\nimport tv from \"@/assets/icons/material_symbols/live_tv_24dp_FILL0_wght400_GRAD0_opsz24.vue\";\nimport failed from \"@/assets/icons/material_symbols/cancel_20dp_FILL0_wght400_GRAD0_opsz20.vue\";\nimport valid from \"@/assets/icons/material_symbols/check_circle_20dp_FILL0_wght400_GRAD0_opsz20.vue\";\nimport newShare from \"@/assets/icons/material_symbols/shareIcon.vue\";\nimport filledStar from \"@/assets/icons/material_symbols/star_24dp_FILL1_wght400_GRAD0_opsz24.vue\";\nimport notFilledStar from \"@/assets/icons/material_symbols/star_24dp_FILL0_wght400_GRAD0_opsz24.vue\";\nimport lock from \"@/assets/icons/material_symbols/lockIcon.vue\";\nimport unlock from \"@/assets/icons/material_symbols/unlockIcon.vue\";\n\nVue.use(Vuetify);\n\nconst customIcons = {\n \"material-symbols-account-circle\": account_circle,\n \"material-symbols-play-arrow\": play_arrow,\n \"material-symbols-play-circle\": play_circle_filled,\n \"material-symbols-live-tv\": tv,\n \"material-symbols-search\": search,\n // \"material-symbols-sports-esports\": sports_esports,\n \"material-symbols-add\": add,\n \"material-symbols-keyboard-arrow-down\": keyboard_arrow_down,\n \"material-symbols-keyboard-arrow-up\": keyboard_arrow_up,\n // \"material-symbols-bookmark\": bookmark,\n // \"material-symbols-bookmark-filled\": bookmark_filled,\n \"material-symbols-bookmark-add\": bookmark_add,\n // \"material-symbols-bookmark-remove\": bookmark_remove,\n \"material-symbols-bookmark-added\": bookmark_added,\n \"material-symbols-home\": home,\n \"material-symbols-ios-share\": ios_share,\n \"material-symbols-more-horiz\": more_horiz,\n \"material-symbols-more-vert\": more_vert,\n \"material-symbols-add-box\": add_box,\n \"material-symbols-check-circle\": valid,\n \"material-symbols-cancel\": failed,\n \"mdi-back\": arrow_back_ios_white,\n \"material-symbols-add-to-home-screen\": add_to_home_screen,\n \"material-symbols-visibility\": visibility,\n \"material-symbols-visibility-off\": visibility_off,\n \"material-symbols-leaderboard\": leaderboard,\n \"material-symbols-share\": share,\n share: newShare,\n \"material-symbols-star\": notFilledStar,\n \"material-symbols-star-filled\": filledStar,\n lock: lock,\n unlock: unlock,\n};\nexport default new Vuetify({\n icons: {\n iconfont: \"mdiSvg\",\n values: {\n tapBarHome: { component: customIcons[\"material-symbols-home\"] },\n tapBarCategory: { component: customIcons[\"material-symbols-search\"] },\n tapBarProfile: { component: customIcons[\"material-symbols-account-circle\"] },\n tapBarLeaderboard: { component: customIcons[\"material-symbols-leaderboard\"] },\n playButton: { component: customIcons[\"material-symbols-play-arrow\"] },\n playCircleButton: { component: customIcons[\"material-symbols-play-circle\"] },\n tvButton: { component: customIcons[\"material-symbols-live-tv\"] },\n backButton: { component: customIcons[\"mdi-back\"] },\n favoriteButton: { component: customIcons[\"material-symbols-bookmark-add\"] },\n favoriteButtonAdded: { component: customIcons[\"material-symbols-bookmark-added\"] },\n showMore: { component: customIcons[\"material-symbols-keyboard-arrow-down\"] },\n showLess: { component: customIcons[\"material-symbols-keyboard-arrow-up\"] },\n profileAddGames: { component: customIcons[\"material-symbols-add\"] },\n add2HomeTutoOtherStep1: { component: customIcons[\"material-symbols-ios-share\"] },\n add2HomeTutoOtherStep2: { component: customIcons[\"material-symbols-add-box\"] },\n add2HomeTutoAndroidChromeStep1: { component: customIcons[\"material-symbols-more-vert\"] },\n add2HomeTutoAndroidChromeStep2: { component: customIcons[\"material-symbols-add-to-home-screen\"] },\n visibility: { component: customIcons[\"material-symbols-visibility\"] },\n visibilityOff: { component: customIcons[\"material-symbols-visibility-off\"] },\n shareButton: { component: customIcons[\"material-symbols-share\"] },\n newShareButton: { component: customIcons[\"share\"] },\n starButton: { component: customIcons[\"material-symbols-star\"] },\n unstarButton: { component: customIcons[\"material-symbols-star-filled\"] },\n lockIcon: { component: customIcons[\"lock\"] },\n unlockIcon: { component: customIcons[\"unlock\"] },\n validIcon: { component: customIcons[\"material-symbols-check-circle\"] },\n failedIcon: { component: customIcons[\"material-symbols-cancel\"] },\n },\n },\n theme: {\n dark: true,\n },\n lang: {\n current: \"fr\",\n locales: { fr },\n },\n});\n","import Vue from \"vue\";\n\nimport App from \"@/App.vue\";\n// import \"@/registerServiceWorker\";\nif (window.isSecureContext)\n navigator?.serviceWorker?.register(\"/serviceworker.js\").catch((err) => {\n console.warn(\"Service Worker Registration Failed: \", err);\n });\nelse console.warn(\"Service Worker Registration Failed: Not a secure context\");\n\nimport router from \"@/router\";\nimport store from \"@/store\";\n\nimport vuetify from \"@/plugins/vuetify\";\nimport i18n from \"@/plugins/i18n\";\n\nVue.config.productionTip = false;\n\nVue.config.errorHandler = function (err, _vm, _info) {\n console.error(err);\n};\n\nnew Vue({\n router,\n store: store.original,\n vuetify,\n i18n,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","module.exports = \"data:image/png;base64,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\"","import type { ApmBase } from \"@elastic/apm-rum\";\n\nimport { WebRTCStatsHandler } from \"../old-client-stuff/WebRTCController\";\nimport { ErrorCode } from \"./ErrorCodes\";\nimport { NetworkState } from \"./NetworkState\";\nimport { TrialEndReason } from \"./TrialEndReason\";\nimport { InAppPurchaseEvent, StreamingMode } from \"../old-client-stuff/WebSocketConnection\";\n\nexport { ErrorCode, NetworkState, TrialEndReason };\nexport * from \"../WebRTC/WebRTCStatsParser\";\nexport * from \"../WebRTC/DefaultRTCStatsTypes\";\n\nexport interface VirtualGamepadButton {\n pressed: boolean;\n touched: boolean;\n value: number;\n}\n\nexport interface VirtualGamepad {\n axes: number[];\n buttons: VirtualGamepadButton[];\n connected: boolean;\n id: string;\n index: number;\n}\n\nexport type SkipSpeedtest = {\n dl?: number;\n ping?: number;\n jitter?: number;\n};\n\nexport interface SDKSettings {\n debug?: boolean;\n skipPWACheck?: boolean;\n skipBrowserCheck?: boolean;\n apmActive?: boolean;\n touchRate?: number;\n queueEnabled?: boolean;\n skipSpeedtest?: SkipSpeedtest;\n speedTestDlUrl?: string;\n bigscreenWsToken?: string;\n}\n\nexport type TrialStatus =\n /**\n * @param isTrial - Whether or not the game has been launched in trial mode.\n * @param duration - The duration of the trial, **in seconds**. 0 for no duration.\n */\n {\n isTrial: boolean;\n duration?: number;\n };\n\nexport type ErrorHandler =\n /**\n * Handler for {@link onError}.\n *\n * @param errorCode - The error code defining the error.\n */\n (errorCode: ErrorCode) => void;\n\nexport type BsErrorHandler =\n /**\n * Handler for {@link onError}.\n *\n * @param string - The error.\n * @param unpair - Whether to unpair the BigScreen.\n */\n (errorCode: string, unpair: boolean) => void;\n\nexport type TrialEndHandler =\n /**\n * Handler for {@link onTrialEnd}.\n *\n * @param reason The reason for the trial end.\n */\n (reason: TrialEndReason) => void;\n\nexport type LoadingProgressHandler =\n /**\n * Handler for {@link onLoadingProgress}.\n *\n * @param progress - The current progress of the loading, **in percentage**, from 0 to 1.\n */\n (progress: number) => void;\n\nexport type BsPairingCodeHandler =\n /**\n * Handler for {@link onPairingCode}.\n *\n * @param code - The new 6 digits code to be displayed by the bigscreen and typed by the user on the mobile\n */\n (code: string) => void;\n\nexport type BsPairedToHostHandler =\n /**\n * Handler for {@link onPairedToHost}.\n *\n * @param gamingSessionId - The mobile gamingSessionId\n * @param host - The paired host id\n * @param game - The game app id\n */\n (gamingSessionId: string, host: string, game: string) => void;\n\nexport type BsPairedToMobileHandler =\n /**\n * Handler for {@link onPairedToMobile}.\n *\n * @param cgToken - The user cgtoken\n */\n (cgToken: string) => void;\n\nexport type BsDisconnectedHandler =\n /**\n * Handler for {@link onBsDisconnected}.\n *\n */\n () => void;\n\nexport type QueueProgressHandler =\n /**\n * Handler for {@link onQueueProgress}.\n *\n * @param remainingTime - The estimated remaining time before launching a session.\n * @param savePending - Whether the previous save is retrieved or not.\n */\n (remainingTime: number, savePending: boolean) => void;\n\nexport type NetworkStateHandler =\n /**\n * Handler for {@link onNetworkState}.\n *\n * @param progress - The current state of the network.\n */\n (networkState: NetworkState) => void;\n\nexport type DeviceRotationHandler =\n /**\n * Handler for {@link onDeviceRotation}.\n *\n * @param progress - Whether the current rotation of the device is the correct one for the game currently being played.\n *\n * @remark If no game is currently played, the parameter will always be true.\n */\n (isCurrentModeValid: boolean) => void;\n\nexport type ReservedHostHandler =\n /**\n * Handler for {@link onReservedHost}.\n *\n * @param hostId - The ID of the reserved Host.\n * @param game - The game that is still playing on the host.\n *\n */\n (hostId: string, game: string) => void;\n\nexport type VisualMonitorEventHandler =\n /**\n * Handler for {@link onVisualMonitorEvent}.\n *\n * @param event - The event.\n */\n (event: string) => void;\n\nexport type PurchaseEventHandler =\n /**\n * Handler for {@link onPurchaseEvent}.\n *\n * @param event - The event.\n */\n (event: InAppPurchaseEvent) => void;\n\nexport type QueuePositionHandler =\n /**\n * Handler for {@link onQueuePosition}.\n *\n * @param position - The user's position in the queue.\n *\n */\n (position: number) => void;\n\nexport interface SDKEngine {\n readonly isInit: boolean;\n\n init(\n partnerKey: string,\n videoElem: HTMLVideoElement,\n audioElem: HTMLAudioElement,\n settings?: SDKSettings\n ): Promise;\n\n connectBigscreen(): Promise;\n\n startPairing(): void;\n\n startGame(\n cgToken: string,\n appId: string,\n streamingMode?: StreamingMode,\n host?: string,\n fetchedData?: {\n gameData: any;\n userData: any;\n subStatus: any;\n }\n ): Promise;\n\n resumeGame(host: string, appId: string): void;\n\n killReservedHostAndStartNewSession(host: string, appId: string): void;\n\n stopGame(): void;\n\n isMuted(): boolean;\n\n toggleMute(): void;\n\n downgrade(): void;\n\n upgrade(): void;\n\n isFullscreen(): boolean;\n\n toggleFullscreen(): void;\n\n connectVirtualGamepad(virtualGamepad: VirtualGamepad): void;\n\n updateVirtualGamepad(virtualGamepad: VirtualGamepad): void;\n\n isPWA(): boolean;\n\n setOnError(handler: ErrorHandler): void;\n\n setOnBsError(handler: BsErrorHandler): void;\n\n setOnTrialEnd(handler: TrialEndHandler): void;\n\n setOnLoadingProgress(handler: LoadingProgressHandler): void;\n\n setOnPairingCode(handler: BsPairingCodeHandler): void;\n\n setOnPairedToHost(handler: BsPairedToHostHandler): void;\n\n setOnPairedToMobile(handler: BsPairedToMobileHandler): void;\n\n setOnBsDisconnected(handler: BsDisconnectedHandler): void;\n\n setOnQueueProgress(handler: QueueProgressHandler): void;\n\n setOnNetworkState(handler: NetworkStateHandler): void;\n\n setOnVideoWebRTCStats(handler: WebRTCStatsHandler): void;\n\n setOnAudioWebRTCStats(handler: WebRTCStatsHandler): void;\n\n setOnDeviceRotation(handler: DeviceRotationHandler): void;\n\n setOnReservedHost(handler: ReservedHostHandler): void;\n\n setOnVisualMonitorEvent(handler: VisualMonitorEventHandler): void;\n\n setOnPurchaseEvent(handler: PurchaseEventHandler): void;\n\n setOnQueuePosition(handler: QueuePositionHandler): void;\n\n isBrowserCompatible(): boolean;\n\n getWebRTCID(): string | undefined;\n\n getAPM(): ApmBase;\n\n sendTransaction(name: string, type: string, context?: Record, labels?: Labels): void;\n\n startPressToPlaySpan(): void;\n\n endPressToPlaySpan(): void;\n\n sendIAPSignal(signal: \"iframe_closed\"): void;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Add2HomeAndroidIntercept.vue?vue&type=style&index=0&id=5b854ce2&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./visibility_off_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=7d2b005d&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertDialog.vue?vue&type=style&index=0&id=5e9b5ee5&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./keyboard_arrow_up_FILL0_wght0_GRAD0_opszNaN.vue?vue&type=style&index=0&id=72559e7a&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RenewTutoPopup.vue?vue&type=style&index=0&id=1b217f14&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OGLTapBar.vue?vue&type=style&index=1&id=52b1db22&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=baff5c52&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TapBar.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add_box_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=06250b52&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./leaderboard_FILL0_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=34424502&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscribeBanner.vue?vue&type=style&index=0&id=68ac3cb0&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bookmark_added_FILL1_wght400_GRAD0_opsz48.vue?vue&type=style&index=0&id=50377930&lang=scss&scoped=true&\"","export enum NetworkState {\n /**\n * The network is very good.\n *
The quality is at maximum.\n */\n MAX = 1,\n\n /**\n * The network is good.\n *
The quality is good but not at maximum.\n */\n GOOD = 0.66,\n\n /**\n * The network is bad.\n *
The quality is medium and the user should be alerted to check their internet connection.\n */\n MEDIUM = 0.33,\n\n /**\n * The network is very bad.\n *
The quality is at minimum and the user should be alerted to check their internet connection.\n */\n BAD = 0,\n}\n","module.exports = __webpack_public_path__ + \"img/sword.92227e4b.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCardGameVideo.vue?vue&type=style&index=0&id=37a981aa&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NeedAccessPopup.vue?vue&type=style&index=0&id=c0222c96&lang=scss&scoped=true&\"","import Vue from \"vue\";\nimport VueI18n, { LocaleMessages } from \"vue-i18n\";\n\nVue.use(VueI18n);\n\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context(\"../locales\", true, /[A-Za-z0-9-_,\\s]+\\.json$/i);\n const messages: LocaleMessages = {};\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || \"en\",\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || \"en\",\n messages: loadLocaleMessages(),\n});\n"],"sourceRoot":""}