{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/SearchPriorityBook.vue?6162","webpack:///./src/components/SearchHistory.vue?f0be","webpack:///./src/components/bottom-bar/BottomBarControl.vue?1898","webpack:///./src/views/nav/NewBooks.vue?9b21","webpack:///./src/layouts/CommonLayout.vue?06d7","webpack:///./src/components/SwitchLang.vue?cf3c","webpack:///./src/components/mobile/MobileBookmarks.vue?f590","webpack:///./src/components/nav/NavItemEntriesCount.vue?bf93","webpack:///./src/components/ui/Loader.vue?aac5","webpack:///./src/components/NewsList.vue?db23","webpack:///./src/components/presentation/PresentationControls.vue?4d9e","webpack:///./src/components/mobile/MobileBookmarkSheet.vue?f74f","webpack:///./src/components/Header.vue?e697","webpack:///./src/components/settings/SettingsExample.vue?7e6d","webpack:///./src/components/ui/Collapsible.vue?e6ec","webpack:///./src/components/TabsBar.vue?5e6b","webpack:///./src/views/content/BookContent.vue?cb74","webpack:///./src/components/ui/ConnectionStatus.vue?2b8f","webpack:///./src/components/Search.vue?903d","webpack:///./src/components/ui/AccordionControl.vue?b3d0","webpack:///./src/components/ContextMenu.vue?54f3","webpack:///./src/App.vue?8880","webpack:///./src/views/content/BookCover.vue?4600","webpack:///./src/components/ui/SearchInput.vue?db70","webpack:///./src/views/content/Home.vue?ac9f","webpack:///./src/components/bottom-bar/BottomBarBookInfo.vue?740c","webpack:///./src/components/nav/NavItemFolder.vue?eba6","webpack:///./src/views/content/SearchResults.vue?e82b","webpack:///./src/components/TextTypesFilter.vue?6dda","webpack:///./src/components/UserRecentBooks.vue?258b","webpack:///./src/components/mobile/MobileReaderThemePicker.vue?f345","webpack:///./src/layouts/AuthLayout.vue?0614","webpack:///./src/views/nav/Catalog.vue?3489","webpack:///./src/components/SearchPriorityAuthor.vue?1dde","webpack:///./src/components/ui/Overlay.vue?7808","webpack:///./src/views/content/Help.vue?ce90","webpack:///./src/views/Login.vue?a8a0","webpack:///./src/components/ui/InputText.vue?0d96","webpack:///./src/components/bottom-bar/BottomBarControlValue.vue?6073","webpack:///./src/components/mobile/MobileNavigation.vue?a04b","webpack:///./src/views/content/NewTab.vue?0db0","webpack:///./src/components/nav/NavItemLink.vue?66cc","webpack:///./src/components/nav/NavRubrics.vue?39a9","webpack:///./src/views/content/AuthorBio.vue?42db","webpack:///./src/components/BookNoteOverlay.vue?b212","webpack:///./src/components/bottom-bar/BottomBarTooltip.vue?39cc","webpack:///./src/components/ui/AccordionContent.vue?6eaf","webpack:///./src/views/Reader.vue?3833","webpack:///./src/components/LoginForm.vue?dd2e","webpack:///./src/components/SearchPriorityBookSection.vue?30a1","webpack:///./src/components/nav/NavItemText.vue?3c67","webpack:///./src/components/Profile.vue?c0d4","webpack:///./src/App.vue?ab81","webpack:///./src/components/ui/Loader.vue?a477","webpack:///./src/components/ui/Spinner.vue?595f","webpack:///./src/components/ui/Spinner.vue","webpack:///./src/components/ui/Loader.vue","webpack:///./src/components/ui/Loader.vue?ae3c","webpack:///./src/components/ui/Loader.vue?7b9d","webpack:///./src/components/ui/ConnectionStatus.vue?ffdb","webpack:///./src/assets/icons/info.svg","webpack:///./src/services/CookieService.ts","webpack:///./src/services/Api/ApiService.ts","webpack:///./src/services/Api/AuthService/index.ts","webpack:///./src/store/modules/auth.ts","webpack:///./src/views/content/Home.vue?b6b7","webpack:///./src/constants.ts","webpack:///./src/services/Api/NewsService/index.ts","webpack:///./src/services/Api/UserService/index.ts","webpack:///./src/components/NewsList.vue?1b6d","webpack:///./src/components/NewsList.vue","webpack:///./src/components/NewsList.vue?c84e","webpack:///./src/components/NewsList.vue?98d7","webpack:///./src/components/UserRecentBooks.vue?6067","webpack:///./src/services/UrlBuilderService.ts","webpack:///./src/components/UserRecentBooks.vue","webpack:///./src/components/UserRecentBooks.vue?25ce","webpack:///./src/components/UserRecentBooks.vue?5d63","webpack:///./src/components/SearchHistory.vue?7865","webpack:///./src/services/Api/SearchService/index.ts","webpack:///./src/components/SearchHistory.vue","webpack:///./src/components/SearchHistory.vue?450b","webpack:///./src/components/SearchHistory.vue?565b","webpack:///./src/views/content/Home.vue","webpack:///./src/views/content/Home.vue?2ea2","webpack:///./src/views/content/Home.vue?f6fc","webpack:///./src/views/Login.vue?e1bd","webpack:///./src/layouts/AuthLayout.vue?1e7e","webpack:///./src/assets/icons/logo.svg","webpack:///./src/components/SwitchLang.vue?b1c4","webpack:///./src/components/SwitchLang.vue","webpack:///./src/components/SwitchLang.vue?8f81","webpack:///./src/components/SwitchLang.vue?3c1e","webpack:///./src/layouts/AuthLayout.vue","webpack:///./src/layouts/AuthLayout.vue?2b18","webpack:///./src/layouts/AuthLayout.vue?0cd0","webpack:///./src/components/LoginForm.vue?8f46","webpack:///./src/components/ui/Checkbox.vue?414c","webpack:///./src/components/ui/Checkbox.vue","webpack:///./src/components/ui/Checkbox.vue?df7a","webpack:///./src/components/ui/Checkbox.vue?1fc8","webpack:///./src/components/ui/InputText.vue?9f6c","webpack:///./src/components/ui/InputText.vue","webpack:///./src/components/ui/InputText.vue?e3bc","webpack:///./src/components/ui/InputText.vue?a556","webpack:///./src/components/LoginForm.vue","webpack:///./src/components/LoginForm.vue?ffd3","webpack:///./src/components/LoginForm.vue?bace","webpack:///./src/views/Login.vue","webpack:///./src/views/Login.vue?2a6a","webpack:///./src/views/Login.vue?b680","webpack:///./src/views/ForgotPassword.vue?7fbe","webpack:///./src/views/ForgotPassword.vue","webpack:///./src/views/ForgotPassword.vue?5fe2","webpack:///./src/views/ForgotPassword.vue?caa4","webpack:///./src/views/ResetPassword.vue?f717","webpack:///./src/views/ResetPassword.vue","webpack:///./src/views/ResetPassword.vue?10c1","webpack:///./src/views/ResetPassword.vue?48ed","webpack:///./src/views/Registration.vue?d9a6","webpack:///./src/views/Registration.vue","webpack:///./src/views/Registration.vue?b3a1","webpack:///./src/views/Registration.vue?54f4","webpack:///./src/views/VerifyEmail.vue?94bd","webpack:///./src/views/VerifyEmail.vue","webpack:///./src/views/VerifyEmail.vue?7e77","webpack:///./src/views/VerifyEmail.vue?5c4f","webpack:///./src/views/content/Help.vue?5bea","webpack:///./src/services/Api/HelpService/index.ts","webpack:///./src/views/content/Help.vue","webpack:///./src/views/content/Help.vue?fe8d","webpack:///./src/views/content/Help.vue?21b2","webpack:///./src/views/Reader.vue?6e97","webpack:///./src/layouts/CommonLayout.vue?659d","webpack:///./src/components/Header.vue?6520","webpack:///./src/assets/icons/logout.svg","webpack:///./src/components/ui/Overlay.vue?47a4","webpack:///./src/assets/icons/cross-bolder.svg","webpack:///./src/components/ui/Overlay.vue","webpack:///./src/components/ui/Overlay.vue?2fe9","webpack:///./src/components/ui/Overlay.vue?e105","webpack:///./src/components/Profile.vue?76c9","webpack:///./src/components/Profile.vue","webpack:///./src/components/Profile.vue?fc8e","webpack:///./src/components/Profile.vue?2244","webpack:///./src/assets/icons/arrow-down.svg","webpack:///./src/assets/icons/book.svg","webpack:///./src/assets/icons/text-settings-icon.svg","webpack:///./src/assets/icons/return.svg","webpack:///./src/assets/icons/list.svg","webpack:///./src/assets/icons/zoom.svg","webpack:///./src/assets/icons/bookmark-nav.svg","webpack:///./src/assets/icons/more.svg","webpack:///./src/services/RelatedNavigationService.ts","webpack:///./src/components/Header.vue","webpack:///./src/components/Header.vue?02df","webpack:///./src/components/Header.vue?aac8","webpack:///./src/components/Sidebar.vue?28b0","webpack:///./src/assets/icons/star.svg","webpack:///./src/assets/icons/bookmark.svg","webpack:///./src/assets/icons/settings.svg","webpack:///./src/assets/icons/help.svg","webpack:///./src/assets/icons/catalog-ru.svg","webpack:///./src/assets/icons/catalog-en.svg","webpack:///./src/assets/icons/catalog-st.svg","webpack:///./src/components/Sidebar.vue","webpack:///./src/components/Sidebar.vue?a4a5","webpack:///./src/components/Sidebar.vue?ce67","webpack:///./src/layouts/CommonLayout.vue","webpack:///./src/layouts/CommonLayout.vue?6609","webpack:///./src/layouts/CommonLayout.vue?cbe2","webpack:///./src/components/TabsBar.vue?024d","webpack:///./src/components/ui/Tab.vue?1b13","webpack:///./src/assets/icons/cross.svg","webpack:///./src/components/ui/Tab.vue","webpack:///./src/components/ui/Tab.vue?a691","webpack:///./src/components/ui/Tab.vue?7809","webpack:///./src/assets/icons/plus.svg","webpack:///./src/components/TabsBar.vue","webpack:///./src/components/TabsBar.vue?7182","webpack:///./src/components/TabsBar.vue?866c","webpack:///./src/components/Search.vue?baa6","webpack:///./src/assets/icons/search-settings.svg","webpack:///./src/assets/icons/history.svg","webpack:///./src/assets/icons/arrow-search-left.svg","webpack:///./src/assets/icons/arrow-search-right.svg","webpack:///./src/components/ui/SearchInput.vue?3035","webpack:///./src/services/SearchScopeService.ts","webpack:///./src/components/ui/SearchInput.vue","webpack:///./src/components/ui/SearchInput.vue?618b","webpack:///./src/components/ui/SearchInput.vue?11d7","webpack:///./src/components/ui/AccordionControl.vue?a7f0","webpack:///./src/components/ui/AccordionControl.vue","webpack:///./src/components/ui/AccordionControl.vue?167a","webpack:///./src/components/ui/AccordionControl.vue?bf97","webpack:///./src/components/ui/AccordionContent.vue?2660","webpack:///./src/components/ui/AccordionContent.vue","webpack:///./src/components/ui/AccordionContent.vue?619d","webpack:///./src/components/ui/AccordionContent.vue?168f","webpack:///./src/components/Search.vue","webpack:///./src/components/Search.vue?c3c1","webpack:///./src/components/Search.vue?a5f2","webpack:///./src/views/content/NewTab.vue?0547","webpack:///./src/views/content/NewTab.vue","webpack:///./src/views/content/NewTab.vue?49d9","webpack:///./src/views/content/NewTab.vue?dba0","webpack:///./src/components/TextTypesFilter.vue?293e","webpack:///./src/components/TextTypesFilter.vue","webpack:///./src/components/TextTypesFilter.vue?36a2","webpack:///./src/components/TextTypesFilter.vue?6e38","webpack:///./src/services/StorageService.ts","webpack:///./src/views/nav/Catalog.vue?2c59","webpack:///./src/components/nav/NavRubrics.vue?c76c","webpack:///./src/components/nav/NavRubrics.vue","webpack:///./src/components/nav/NavRubrics.vue?62d4","webpack:///./src/components/nav/NavRubrics.vue?0e08","webpack:///./src/components/nav/NavCategory.vue?55e7","webpack:///./src/components/nav/NavItemLink.vue?cb17","webpack:///./src/components/nav/NavItemIcon.vue?575c","webpack:///./src/assets/icons/minus.svg","webpack:///./src/assets/icons/nav-book.svg","webpack:///./src/components/nav/NavItemIcon.vue","webpack:///./src/components/nav/NavItemIcon.vue?57e5","webpack:///./src/components/nav/NavItemIcon.vue?e239","webpack:///./src/components/nav/NavItemText.vue?e29e","webpack:///./src/services/StringService.ts","webpack:///./src/components/nav/NavItemText.vue","webpack:///./src/components/nav/NavItemText.vue?ae03","webpack:///./src/components/nav/NavItemText.vue?19e7","webpack:///./src/components/nav/NavItemEntriesCount.vue?7b09","webpack:///./src/components/nav/NavItemEntriesCount.vue","webpack:///./src/components/nav/NavItemEntriesCount.vue?0df8","webpack:///./src/components/nav/NavItemEntriesCount.vue?2836","webpack:///./src/components/nav/NavItemLink.vue","webpack:///./src/components/nav/NavItemLink.vue?38f4","webpack:///./src/components/nav/NavItemLink.vue?03fd","webpack:///./src/components/nav/NavItemFolder.vue?71f8","webpack:///./src/components/nav/NavItemFolder.vue","webpack:///./src/components/nav/NavItemFolder.vue?9566","webpack:///./src/components/nav/NavItemFolder.vue?f0ba","webpack:///./src/components/nav/NavBook.vue?e457","webpack:///./src/components/nav/NavBookSection.vue?d7fd","webpack:///./src/services/Navigation/constants.ts","webpack:///./src/components/nav/NavBookSection.vue","webpack:///./src/components/nav/NavBookSection.vue?5f1c","webpack:///./src/components/nav/NavBookSection.vue?94f5","webpack:///./src/components/nav/NavBook.vue","webpack:///./src/components/nav/NavBook.vue?684f","webpack:///./src/components/nav/NavBook.vue?9a80","webpack:///./src/components/nav/NavCategory.vue","webpack:///./src/components/nav/NavCategory.vue?cb70","webpack:///./src/components/nav/NavCategory.vue?4491","webpack:///./src/components/nav/NavLetter.vue?6793","webpack:///./src/components/nav/NavAuthor.vue?c16f","webpack:///./src/components/nav/NavAuthor.vue","webpack:///./src/components/nav/NavAuthor.vue?f936","webpack:///./src/components/nav/NavAuthor.vue?2800","webpack:///./src/components/nav/NavLetter.vue","webpack:///./src/components/nav/NavLetter.vue?6718","webpack:///./src/components/nav/NavLetter.vue?8db8","webpack:///./src/services/Navigation/Helpers.ts","webpack:///./src/assets/icons/collapse-list.svg","webpack:///./src/views/nav/Catalog.vue","webpack:///./src/views/nav/Catalog.vue?5c59","webpack:///./src/views/nav/Catalog.vue?1bed","webpack:///./src/views/nav/NewBooks.vue?aab7","webpack:///./src/services/Api/BooksService/index.ts","webpack:///./src/views/nav/NewBooks.vue","webpack:///./src/views/nav/NewBooks.vue?5b06","webpack:///./src/views/nav/NewBooks.vue?bebf","webpack:///./src/components/settings/Settings.vue?9a6a","webpack:///./src/components/settings/SettingsExample.vue?539a","webpack:///./src/components/settings/SettingsExample.vue","webpack:///./src/components/settings/SettingsExample.vue?7c4c","webpack:///./src/components/settings/SettingsExample.vue?4fad","webpack:///./src/components/settings/Settings.vue","webpack:///./src/components/settings/Settings.vue?6777","webpack:///./src/components/settings/Settings.vue?7b55","webpack:///./src/components/mobile/MobileNavigation.vue?faec","webpack:///./src/components/mobile/MobileNavigation.vue","webpack:///./src/components/mobile/MobileNavigation.vue?9544","webpack:///./src/components/mobile/MobileNavigation.vue?8af0","webpack:///./src/components/mobile/MobileBookmarks.vue?4c75","webpack:///./src/components/mobile/MobileBookmarks.vue","webpack:///./src/components/mobile/MobileBookmarks.vue?332e","webpack:///./src/components/mobile/MobileBookmarks.vue?ba5d","webpack:///./src/components/mobile/MobileReaderThemePicker.vue?b874","webpack:///./src/components/mobile/MobileReaderThemePicker.vue","webpack:///./src/components/mobile/MobileReaderThemePicker.vue?5535","webpack:///./src/components/mobile/MobileReaderThemePicker.vue?2790","webpack:///./src/components/mobile/MobileBookmarkSheet.vue?0e25","webpack:///./src/assets/icons/note.svg","webpack:///./src/components/mobile/MobileBookmarkSheet.vue","webpack:///./src/components/mobile/MobileBookmarkSheet.vue?e6ec","webpack:///./src/components/mobile/MobileBookmarkSheet.vue?ee9f","webpack:///./src/components/presentation/PresentationControls.vue?47c0","webpack:///./src/assets/icons/nav-arrow-left.svg","webpack:///./src/assets/icons/nav-arrow-right.svg","webpack:///./src/assets/icons/presentation.svg","webpack:///./src/components/presentation/PresentationControls.vue","webpack:///./src/components/presentation/PresentationControls.vue?d3f6","webpack:///./src/components/presentation/PresentationControls.vue?d5d9","webpack:///./src/store/modules/tabs.ts","webpack:///./src/store/modules/bookmarks.ts","webpack:///./src/views/Reader.vue","webpack:///./src/views/Reader.vue?687d","webpack:///./src/views/Reader.vue?67a5","webpack:///./src/views/content/BookContent.vue?0080","webpack:///./src/components/bottom-bar/BottomBar.vue?4f4b","webpack:///./src/assets/icons/globe.svg","webpack:///./src/assets/icons/book-cover.svg","webpack:///./src/components/bottom-bar/BottomBarControl.vue?be31","webpack:///./src/components/bottom-bar/BottomBarControlValue.vue?c704","webpack:///./src/components/bottom-bar/BottomBarControlValue.vue","webpack:///./src/components/bottom-bar/BottomBarControlValue.vue?a613","webpack:///./src/components/bottom-bar/BottomBarControlValue.vue?e72b","webpack:///./src/components/bottom-bar/BottomBarControl.vue","webpack:///./src/components/bottom-bar/BottomBarControl.vue?575a","webpack:///./src/components/bottom-bar/BottomBarControl.vue?f600","webpack:///./src/components/bottom-bar/BottomBarRelated.vue?9fe6","webpack:///./src/components/bottom-bar/BottomBarRelated.vue","webpack:///./src/components/bottom-bar/BottomBarRelated.vue?e4d4","webpack:///./src/components/bottom-bar/BottomBarRelated.vue?c38b","webpack:///./src/components/bottom-bar/BottomBarTooltip.vue?42b8","webpack:///./src/components/bottom-bar/BottomBarTooltip.vue","webpack:///./src/components/bottom-bar/BottomBarTooltip.vue?57c2","webpack:///./src/components/bottom-bar/BottomBarTooltip.vue?f0bb","webpack:///./src/components/bottom-bar/BottomBarBookInfo.vue?c8e9","webpack:///./src/components/bottom-bar/BottomBarBookInfo.vue","webpack:///./src/components/bottom-bar/BottomBarBookInfo.vue?3513","webpack:///./src/components/bottom-bar/BottomBarBookInfo.vue?5606","webpack:///./src/components/bottom-bar/BottomBar.vue","webpack:///./src/components/bottom-bar/BottomBar.vue?326c","webpack:///./src/components/bottom-bar/BottomBar.vue?c21e","webpack:///./src/components/BookNoteOverlay.vue?4fa9","webpack:///./src/components/BookNoteOverlay.vue","webpack:///./src/components/BookNoteOverlay.vue?9d69","webpack:///./src/components/BookNoteOverlay.vue?883a","webpack:///./src/components/ContextMenu.vue?06e3","webpack:///./src/components/ContextMenu.vue","webpack:///./src/components/ContextMenu.vue?9762","webpack:///./src/components/ContextMenu.vue?6c87","webpack:///./src/views/content/BookContent.vue","webpack:///./src/views/content/BookContent.vue?44b2","webpack:///./src/views/content/BookContent.vue?24f6","webpack:///./src/views/content/BookCover.vue?7a39","webpack:///./src/assets/icons/download.svg","webpack:///./src/components/BooksWithTranslations.vue?ccb4","webpack:///./src/components/ui/Collapsible.vue?bd78","webpack:///./src/components/ui/Collapsible.vue","webpack:///./src/components/ui/Collapsible.vue?1ba2","webpack:///./src/components/ui/Collapsible.vue?281d","webpack:///./src/components/BooksWithTranslationsList.vue?6e71","webpack:///./src/components/BooksWithTranslationsList.vue","webpack:///./src/components/BooksWithTranslationsList.vue?a39e","webpack:///./src/components/BooksWithTranslationsList.vue?0faa","webpack:///./src/components/BooksWithTranslations.vue","webpack:///./src/components/BooksWithTranslations.vue?6bd8","webpack:///./src/components/BooksWithTranslations.vue?d25a","webpack:///./src/views/content/BookCover.vue","webpack:///./src/views/content/BookCover.vue?10f2","webpack:///./src/views/content/BookCover.vue?69bd","webpack:///./src/views/content/AuthorBio.vue?bddd","webpack:///./src/services/Api/AuthorsService/index.ts","webpack:///./src/views/content/AuthorBio.vue","webpack:///./src/views/content/AuthorBio.vue?ee96","webpack:///./src/views/content/AuthorBio.vue?b29e","webpack:///./src/views/content/SearchResults.vue?5a5c","webpack:///./src/services/ArrayService.ts","webpack:///./src/components/SearchPriorityBook.vue?6fa7","webpack:///./src/components/SearchPriorityBook.vue","webpack:///./src/components/SearchPriorityBook.vue?be92","webpack:///./src/components/SearchPriorityBook.vue?08c8","webpack:///./src/components/SearchPriorityAuthor.vue?4d38","webpack:///./src/components/SearchPriorityAuthor.vue","webpack:///./src/components/SearchPriorityAuthor.vue?16d1","webpack:///./src/components/SearchPriorityAuthor.vue?e710","webpack:///./src/components/SearchPriorityBookSection.vue?96c5","webpack:///./src/components/SearchPriorityBookSection.vue","webpack:///./src/components/SearchPriorityBookSection.vue?0c41","webpack:///./src/components/SearchPriorityBookSection.vue?d3e8","webpack:///./src/views/content/SearchResults.vue","webpack:///./src/views/content/SearchResults.vue?b200","webpack:///./src/views/content/SearchResults.vue?e3a2","webpack:///./src/router.ts","webpack:///./src/services/Navigation/HighlightService.ts","webpack:///./src/services/Navigation/ProcessService.ts","webpack:///./src/services/Navigation/PagingService.ts","webpack:///./src/services/Api/NavigationService/index.ts","webpack:///./src/services/Navigation/CheckService.ts","webpack:///./src/services/Navigation/ExpandService.ts","webpack:///./src/store/modules/navigation.ts","webpack:///./src/store/modules/user.ts","webpack:///./src/store/modules/reader.ts","webpack:///./src/store/modules/search.ts","webpack:///./src/store/modules/settings.ts","webpack:///./src/store/index.ts","webpack:///./src/translations/ru.ts","webpack:///./src/translations/en.ts","webpack:///./src/translations/index.ts","webpack:///./src/services/Translation.ts","webpack:///./src/components/ui/ConnectionStatus.vue","webpack:///./src/components/ui/ConnectionStatus.vue?a61a","webpack:///./src/components/ui/ConnectionStatus.vue?e0a2","webpack:///./src/App.vue","webpack:///./src/App.vue?aa3a","webpack:///./src/App.vue?3aea","webpack:///./src/main.ts","webpack:///./src/components/ui/Spinner.vue?8518","webpack:///./src/components/nav/NavItemIcon.vue?7248","webpack:///./src/components/Sidebar.vue?3aa7","webpack:///./src/components/settings/Settings.vue?44f4","webpack:///./src/components/bottom-bar/BottomBarRelated.vue?fc9f","webpack:///./src/components/bottom-bar/BottomBar.vue?12f4","webpack:///./src/components/ui/Tab.vue?2dcf","webpack:///./src/components/ui/Checkbox.vue?cde4"],"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","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","loading","staticClass","class","staticRenderFns","hidden","_l","index","script","component","components","Spinner","status","_v","_s","title","getTranslation","_e","functional","children","classNames","style","staticStyle","rest","assign","concat","getCookieDomain","hostname","location","sharedRootDomain","endsWith","match","document","cookie","RegExp","replace","decodeURIComponent","days","domain","domainAttribute","expires","Date","now","toUTCString","secure","protocol","encodeURIComponent","cacheStorage","GET_RETRY_DELAYS","isRetriableRequestError","method","error","String","toUpperCase","a","isCancel","response","Number","wait","delay","Promise","resolve","setTimeout","config","params","body","cancelPreviousRequests","cacheable","callsCount","endpoint","token","cancelTokenSource","cancel","send","FormData","JSON","stringify","abort","checkRequestData","url","reject","attempt","CancelToken","source","headers","withCredentials","VUE_APP_API_WITH_CREDENTIALS","timeout","cancelToken","ApiService","checkResponse","Error","success","message","email","password","auth","login","setEndpoint","setBody","post","logout","forgotPassword","passwordConfirmation","resetPassword","password_confirmation","payload","register","userId","hash","signature","verifyEmail","setToken","store","state","setParams","verifyEmailResend","syncInitialToken","authorized","actions","commit","root","id","mutations","set","remove","namespaced","tab","code","active","currentTab","on","$event","news","pagination","userRecentBooks","LANGUAGE_CODE_RUSSIAN","LANGUAGE_CODE_ENGLISH","LANGUAGE_CODE_SANSKRIT","LANGUAGE_CODE_DEFAULT","LANGUAGES","LIST_TYPE_DEFAULT","LIST_SCALE_AUTO","LIST_SCALE_DESKTOP","LIST_SCALE_TABLET","LIST_SCALE_DEFAULT","language","reader","interfaceLanguage","then","book","user","ownerKey","bookKey","request","previous","UserService","readingPositionRequests","queued","catch","clearQueuedRequest","closedReadingTabs","delete","readingTabKey","currentUser","res","fields","readingTabs","bookmarksApiEnabled","bookmarks","put","has","undefined","enqueueReadingTabRequest","fetch","credentials","keepalive","add","Set","getNews","items","date","item","text","image","src","preview","forEach","activeFrom","required","bookSlug","categorySlug","authorSlug","bookSectionSlug","query","returnTo","searchParams","slug","entries","filter","toString","URLSearchParams","searchItem","currentSearchLanguage","router","currentRoute","searchLanguage","resultLanguage","section_slug","UrlBuilderService","getBookSectionUrl","book_slug","getBookUrl","highlight","join","list","map","clearSearchHistory","nativeOn","$emit","options","search","autocomplete","history","priority","loaded","getSearchHistory","prepareList","$route","navigationLanguage","getSearchQueryUrl","namespace","tabs","current","total","$store","fetchNews","fetchUserRecentBooks","getUserRecentBooks","NewsList","UserRecentBooks","SearchHistory","onAuthorize","_t","setInterfaceLanguage","SwitchLang","Logo","errors","onChangeField","submit","rememberMe","checked","partiallyChecked","label","labelGreyText","directives","rawName","expression","placeholder","domProps","Array","isArray","_i","handleKeyUp","$$a","$$el","target","$$c","$$v","$$i","_q","type","composing","hint","errorFormatted","e","keyCode","default","dispatch","fieldName","InputText","AuthLayout","Checkbox","redirect","isAllowedRedirect","href","$router","parsed","URL","LoginForm","errorsByField","last_name","spiritual_name","access_code","registered","reloadPage","fail","verificationResent","resendingVerification","resendVerification","needPageReload","sendLogout","reload","Loader","Login","content","apiService","HelpService","instance","lang","getInstance","help","cache","actualizeContent","getHelp","html","_obj","mobileReader","readerChromeVisible","presentationMode","openReaderCatalog","openMobileBookSearch","mobileBookmarkSheetVisible","toggleMobileThemePicker","mobileThemePickerVisible","openMobileView","mobileView","isNarrowVisualViewport","mobileVisualViewportWidth","onPresentationActivity","readMode","mobileCatalogVisible","minWidth","leftColumnWidth","mobileLanguageMenuVisible","ref","toggleMobileLanguageMenu","currentCatalogLanguage","icon","tag","rotate","refInFor","navLanguage","changeCatalogLanguage","closeMobileSearchArea","selectedBooksCount","readerBook","bookSection","isCompactViewport","onMouseDown","mobileBookSearchName","openMobileSearchArea","closeMobileBookSearch","mobileSearchOverlayVisible","activeTab","addBookmarkAtCurrentPlace","moveBookmarkToCurrentPlace","updateBookmarkNote","removeBookmark","openMobileBookmark","returnToMobileReader","mobileSettingsReturnTo","showMobileContent","onContentInteraction","colorMode","link","mobileNavigationView","currentReadingSession","presentationControlsVisible","presentationBookTitle","presentationSectionTitle","presentationCurrentIndex","presentationSections","presentationHasPrevious","presentationHasNext","presentationScale","presentationAutoFit","presentationHideTextTypes","navigatePresentation","exitPresentationMode","onPresentationSettingsChange","updatePresentationScale","setPresentationAutoFit","setColorMode","switchPresentationTextTypeFilter","isSettingsVisible","hideSettings","homeUrl","onLogoClick","hasRelatedHistory","leaveMobileReader","setReadMode","mobileActionsVisible","openBookmarks","openThemePicker","openTextSettings","toggleTextSettings","isTextTypesFiltersVisible","showProfileOverlay","showLogoutOverlay","titleId","onKeydown","centered","overlayIndex","visible","focusDialog","restoreFocus","previouslyFocused","activeElement","$nextTick","dialog","$refs","focus","contains","event","preventDefault","focusable","from","querySelectorAll","element","tabIndex","getAttribute","offsetParent","first","last","shiftKey","CrossBolderIcon","subscribe_level","editMode","updateUser","setUser","RELATED_TRAIL_QUERY","MAX_RELATED_TRAIL_LENGTH","targetUrl","currentUrl","trailValue","trail","RelatedNavigationService","parseTrail","sourceUrl","withTrail","previousUrl","pop","raw","parse","startsWith","hashIndex","indexOf","withoutHash","queryIndex","path","queryString","compactViewport","setLanguage","relatedReturnUrl","getPreviousUrl","relatedTrail","reading","split","toggleTextTypesFilter","currentBook","currentBookSection","innerWidth","hasPrevious","Profile","Overlay","IconLogout","IconBook","IconList","IconSearch","IconBookmark","IconMore","IconReturn","IconTextSettings","IconArrowDown","navigation","updateLanguage","toggleSettings","openHelp","IconStar","IconSettings","IconHelp","Header","Sidebar","props","Boolean","dark","onTabClick","onTabDelete","className","stopPropagation","includes","CrossIcon","ZoomIcon","setActiveTab","fullPath","closeTab","find","Tab","IconPlus","mobileVisible","mobileBookName","onSearchSubmit","onSearchClear","goToSearchList","prevSearchResultUrl","nextSearchResultUrl","is_show_edit_link","editUrl","mobileBookSearch","inBookSearch","advancedSearch","advancedSearchPanelExpanded","toggleAdvancedSearch","openSearchAreaPicker","openSearchHistory","showSearchHistoryOverlay","searchBookSlug","onInBookSearchChange","dragging","mobileSheetDragging","startMobileSheetDrag","moveMobileSheetDrag","endMobileSheetDrag","cancelMobileSheetDrag","searchInPoem","resetSearchSettings","exact","considerDiacritics","equalizeWriting","showHelp","toggleHelp","mobileSheetLayerVisible","closing","closeMobilePanels","closeSearchHistory","onSearchHistoryState","loadingSuggestions","handleInputFocus","handleInputBlur","handleInputChange","handlePressEnter","handleClear","hasSuggestions","suggestions","suggestion","handleSuggestionClick","books","categories","book_sections","categoryId","branchIds","previousSize","size","category","parent_id","SearchScopeService","getBranchCategoryIds","is_books_exist","bookIds","requestedCategoryIds","mappings","requestedIds","mappingById","Map","mapping","selectedBookIds","bookId","suggestionsRequestId","actualizeSuggestions","resetSuggestions","suggestionTimeout","clearTimeout","fetchSuggestions","hasActiveScope","searchOptions","requestId","getSuggestions","scopeIsStillGlobal","suggestionIsCurrent","IconCross","expanded","collapsed","maxHeight","height","hasSearchHistory","searchQuery","mobileSheetDragStartY","mobileSheetDragOffset","mobileSheetPointerId","mobilePanelTrigger","mobileSheetCloseTimer","advancedSearchPanelVisible","actualizeSearchParams","actualizeShowAdvancedSearch","addEventListener","onDocumentKeydown","syncMobileSheetDocumentState","refreshSearchHistoryAvailability","removeEventListener","documentElement","classList","to","languageChanged","trim","setResults","setResultsCount","setPriorityResults","setNeedUpdate","updateUrl","toggle","emitMobileOverlayState","requestedMobileBookSearch","bookSearch","hasBookSlug","mobileBookSearchRoute","setInBookSearch","inBookOnly","hasItems","setShowSearchResultsFlag","searchBookId","newPath","setAdvancedSearch","checkedCategories","resetMobileSheetDrag","rememberMobilePanelTrigger","focusActiveMobilePanel","trapMobilePanelFocus","HTMLElement","panel","getActiveMobilePanel","searchHelpPanel","searchOptionsPanel","$el","pointerId","clientY","dragRegion","currentTarget","setPointerCapture","Math","max","cancelable","releasePointerCapture","hasPointerCapture","searchListUrl","parseInt","currentSearchResultIndex","searchResults","getSearchResultItemUrl","edit_link","transform","routeBookId","parsedBookId","val","AccordionControl","AccordionContent","SearchInput","IconSearchSettings","IconHistory","IconArrowSearchLeft","IconArrowSearchRight","close","dragOffset","startDrag","moveDrag","endDrag","cancelDrag","textType","hideTextTypes","switchTextTypeFilter","dragStartY","dragPointerId","dialogTrigger","textTypes","getTextTypes","trapFocus","requestAnimationFrame","setTextTypesFilterVisible","closest","storageName","storage","read","localStorage","setItem","getItem","onLanguage","showSearchResults","navLoading","lists","listType","changeListType","filterQuery","onSearch","mobileMode","collapseAll","returnToCatalog","light","searchLoading","searchResultsCount","foundBooks","keys","checkAll","uncheckAll","showCheckboxes","showEntriesCount","depth","letter","offset","searchMatch","toggleExpand","toggleCheck","child","level","primary","catalogListScale","paddingLeft","entriesCount","onNavigate","validator","MinusIcon","PlusIcon","NavBookIcon","textFormatted","str","charAt","string","obj","re","replaceAll","count","$root","NavItemEntriesCount","NavItemIcon","NavItemText","showCheckbox","bookIcon","checkboxChecked","checkboxPartiallyChecked","bookName","doc_count","bookSections","author","isCurrentSection","isInCurrentPath","is_parent","hasChildren","displayExpanded","catalogTree","activeSectionSlug","LEVEL_OFFSET_PX","LABEL_OFFSET_PX","toggleBookSectionExpand","bookSectionId","showSearchResultsFlag","toggleFoundBookSectionCheck","toggleBookSectionCheck","section","parentId","reduce","docCount","NavBookSection","NavItemLink","NavItemFolder","needBookSectionsLoad","loadBookSections","toggleFoundBookExpand","toggleBookExpand","toggleFoundBookCheck","toggleBookCheck","searchBookSections","fetchBookSections","needBooksLoad","loadBooks","toggleCategoryExpand","toggleCategorySelection","fetchCategoryBooks","navData","values","NavBook","NavCategory","authors","toggleAuthorExpand","fetchAuthorBooks","authorId","getAuthorUrl","loadBooksIfNeeded","actualizeHighlight","toggleBookLetterExpand","toggleAuthorLetterExpand","fetchLetterBooks","letterName","authorIds","NavAuthor","array","origin","one","startIndex","parents","initialDepth","previousDepth","callback","childrenPropName","isParent","Helpers","flatten","cancelPendingHighlightScroll","passive","isSearchResultsPage","setListType","parseListTypeFromUrl","fetchData","highlightScrollTimeout","scrollToHighlighted","getSearchParamsHash","highlightLetter","routeQuery","cachedData","hasCachedCatalog","booksAlphabet","authorsAlphabet","highlightLetterByBookSlug","route","searchParamNames","$forceUpdate","refTree","activeLinks","scroll","querySelector","parentElement","scrollTo","top","offsetTop","offsetHeight","behavior","beforeText","afterText","toLocaleLowerCase","capitalize","categoryIds","bookSlugs","navigationError","hasCatalogData","NavLetter","NavRubrics","CollapseListIcon","ReturnIcon","languages","currentLanguage","changeLanguage","month","BooksService","newBooks","cover","newBooksAll","all","ru","en","getNewBooks","previousMonth","newBook","created_at","prepareMonths","setCatalogListScale","isTextTypeVisible","scale","setScale","round","fontSize","_m","SettingsExample","readingAvailable","getItems","IconLibrary","IconReading","bookmark","languageLabel","note","theme","selectTheme","resetDrag","finishDrag","draftNote","resizeTextarea","addBookmark","manualBookmarks","editing","editingBookmarkId","progressLabel","openActionsBookmarkId","toggleActions","startEditing","moveBookmark","editingNote","saveNote","moveEditedBookmark","cancelEditing","position","textarea","HTMLTextAreaElement","eventOrElement","scrollHeight","overflowY","IconNote","settingsVisible","bookTitle","sectionTitle","hasNext","currentIndex","totalSections","min","autoFit","isTypeVisible","hiddenTextTypes","IconArrowLeft","IconArrowRight","IconMinus","IconPresentation","emptyTab","paragraphAnchor","updatedAt","sectionPositions","tabsStorageKey","closedTabsStorageKey","currentReadingStorageKey","save","closed","currentReading","getBookKeyFromLink","segments","isBookSectionLink","getLegacyBookDetails","parts","normalized","activeIndex","switchOwner","nextOwnerKey","updateCurrentReading","openTab","closingTab","wasActive","keepOnlyActiveTab","activateBookTab","existingIndex","findIndex","activeEmptyIndex","targetIndex","existingTab","keepSavedSection","preserveLastLocation","keepExistingPosition","savedSectionPosition","activateRouteTab","routeTabIndex","updateActiveTabLink","updateActiveTabName","updateActiveTabDetails","details","updateBookTabDetails","mergeServerReadingTabs","records","record","sectionSlug","serverUpdatedAt","updated_at","serverSession","section_name","scroll_ratio","paragraph_anchor","section_positions","existing","serverIsNewer","serverClearedStaleSection","storageKey","normalize","anchor","mapServerBookmark","mergeServerRecords","localBookmarks","serverBookmarks","sort","left","right","localeCompare","upsert","unshift","MOBILE_SECTION_ORDER","library","settings","MIN_LEFT_COLUMN_WIDTH","MAX_LEFT_COLUMN_WIDTH","LEFT_COLUMN_LOCAL_STORAGE_PARAM","MOBILE_SEARCH_ROUTE_LOCAL_STORAGE_PARAM","MOBILE_CATALOG_STATES_LOCAL_STORAGE_PARAM","SAVED_LEFT_COLUMN_WIDTH","SAVED_MOBILE_SEARCH_ROUTES","SAVED_MOBILE_CATALOG_STATES","scrollTop","bookLetters","authorLetters","sections","searchArea","BOOK_ROUTE_NAMES","BOOK_SECTION_ROUTE_NAMES","mobileTocInitializedBookKey","mobileBookSearchSlug","mobileReadingResumePending","mobileTransitionToken","mobileReaderNavigationKey","mobileSearchRoutes","mobileCatalogStates","mobileCatalogRestoreToken","readerScrollDirection","readerScrollDistance","readerEndPinToken","presentationSettingsOpen","presentationOwnsFullscreen","prevPageX","normalizeLeftColumnWidth","updateViewport","visualViewport","onFullscreenChange","$on","onReaderScroll","onReaderLinkSelected","onRouteChange","hydrateReadingState","mobileTransitionTimer","$off","presentationControlsTimer","setPresentationMode","syncPresentationModeWithRoute","resetReaderScrollIntent","scope","syncMobileViewWithRoute","objectToQueryString","routeName","openReadingTab","isSectionRoute","updateNavLanguage","ensureMobileReaderNavigation","wasLoading","restoreMobileCatalogState","setNavLanguage","cachedSection","navigationKey","mobileReaderNavigationRequest","prepareMobileReaderNavigation","finally","navigationData","cachedBook","hasRequestedSection","is_article","some","wasCompact","width","isBookSectionRoute","bookTab","preservedBookName","isBookRoute","view","previousView","readingReturnTo","captureMobileReadingReturnRoute","navigate","saveMobileCatalogState","resumeCurrentReading","libraryRoute","savedSearchRoute","searchRoute","sanitizeGlobalSearchRoute","fromIndex","toIndex","viewTransitionDocument","reduceMotion","matchMedia","matches","startViewTransition","transitionClass","transitionToken","mobileActiveTransition","skipTransition","transition","finishMobileViewTransition","ready","updateCallbackDone","finished","normalizedQuery","session","resume","currentBookId","currentBookmarkPayload","test","mobileLanguageOptions","selectedIndex","catalogLanguages","selected","trigger","mobileLanguageTrigger","closeMobileLanguageMenu","direction","nextIndex","requested","presentation","deactivatePresentation","toc","fullscreenElement","requestFullscreen","syncRoute","shouldExitFullscreen","exitFullscreen","open","setPresentationScale","toFixed","context","states","getMobileCatalogStates","scrollElement","getMobileCatalogScrollElement","captureMobileCatalogExpansion","restoreToken","$set","modeClass","getters","collectSections","scrollCurrentTocSectionIntoView","scrollLeft","scrollRect","getBoundingClientRect","currentRect","clientHeight","scrollEvent","delta","remaining","shouldPinEnd","pinReaderToEnd","startedAt","performance","pin","showReaderChrome","getReadingTabs","getBookmarks","contentView","livePosition","captureCurrentReadingPosition","bookmarkAnchor","candidates","anchorPrefix","toLowerCase","candidate","lastSegment","random","toISOString","local","localBookmark","createBookmark","saved","moved","updateBookmark","serverBookmark","updated","storedSection","resolvedSection","resolveBookmarkSection","bookmarkSection","bookmarkLink","replaceBookmarkSectionInLink","bookmarkRoute","sectionLink","pageX","onMouseMove","onMouseUp","currentBookSections","isSafeInternalRoute","MobileNavigation","MobileBookmarks","MobileBookmarkSheet","MobileReaderThemePicker","PresentationControls","Settings","NewBooks","Catalog","CommonLayout","Search","TabsBar","NewTab","TextTypesFilter","textTypeVisibilityClasses","mobilePaginationType","onClickOnNote","blockingError","loadingMore","currentBookSectionsWithContent","isPresentationCurrentSection","getPageStyle","formatBookTitle","book_title","entities","entity","getParagraphAnchor","properties","getContent","contextMenu","currentBookSectionWithContent","tabName","hasRelatedBooks","showBookInfo","showRelatedBooks","bookContent","related_archi_book_name","related_poem_in_books","currentSection","translation","getTranslationUrl","short_name","prevSectionUrl","nextSectionUrl","chapter","chapters","prevChapterUrl","nextChapterUrl","poem","poems","prevPoemUrl","nextPoemUrl","relatedBooksCount","prevUrl","nextUrl","canIncreaseScale","number","canDecreaseScale","listIsVisible","getItemUrl","handleClickOutside","refList","refButton","BottomBarControlValue","ArrowLeftIcon","ArrowRightIcon","returnToPrevious","textInOtherBooks","previousRelatedUrl","translations","createTargetUrl","bookDetails","getAuthorLink","commentators","categoriesChain","fetchBookDetails","getBookCover","getEntityIndex","pagingItem","number_code_chapter","number_code_poem","number_code_section","relatedBooks","getPrevUrl","getNextUrl","BottomBarBookInfo","BottomBarTooltip","BottomBarRelated","BottomBarControl","InfoIcon","GlobeIcon","BookCoverIcon","openLink","onClickOutside","refContextMenu","newTab","contentError","loadingSectionKey","preloadingSectionKeys","loadingContinuousSection","sectionContentRequests","bookSectionsWithContent","presentationFontSize","lastScrollPosition","suppressReaderScrollUntil","refScroll","onScroll","onViewportResize","flushCurrentReadingPosition","onScrollTimeout","readingPositionTimeout","viewportResizeTimeout","presentationFitFrame","cancelAnimationFrame","pendingReadingPosition","saveReadingPosition","bindLinksEvent","schedulePresentationFit","changedBook","changedSectionRoute","routeLoadKey","getRouteLoadKey","isCurrentBookSectionRoute","waitForReadingFonts","scrollToCurrentPage","updateTabName","ensureContinuousContentAhead","fetchContent","setContentError","sectionKey","initialLoadContent","fitPresentationContent","page","availableHeight","availableWidth","clientWidth","lower","upper","iteration","fits","scrollWidth","fittedSize","floor","abs","baseSize","manualSize","console","fetchBookSectionContent","adjacentContent","preloadAdjacentContent","getSavedReadingPosition","sectionId","fetchContentBeforeCurrent","fetchContentAfterCurrent","bookSectionsBefore","bookSectionsAfter","needFixScroll","wasBookSectionPreviouslyLoaded","fixScrollPosition","requestKey","getBookSectionContent","bestEffort","results","loadedIds","firstMissingIndex","currentBookSectionIndex","nextSection","doFetchContent","latest","continuousFillPromise","fillPromise","loadNextContinuousSection","preload","reverse","bookSectionLink","currentBookSectionElement","findPageElement","scrollToPage","dataset","currentScrollPosition","scrollPosition","pages","newPage","el","readingPosition","getReadingPosition","updateReadingPositionLocally","scheduleReadingPositionSave","pageElement","queryPosition","NaN","scrollToSectionHeading","isFinite","queryAnchor","savedAnchor","getSavedParagraphAnchor","scrollToParagraph","clearBookmarkOpeningFlag","fonts","heading","headingRect","paragraph","paragraphRect","relativeTop","canMeasureParagraphs","paragraphs","lastReadingPosition","getSavedSectionPositions","saveReadingPositionOnPageHide","decorateWordByWordTerms","word","template","createElement","innerHTML","nextSibling","separator","textContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","textNodes","currentNode","nextNode","textNode","parent","termPattern","fragment","createDocumentFragment","lastIndex","exec","appendChild","createTextNode","term","replaceWith","links","scrollOffsetTop","pageY","offsetLeft","bound","hiddenTypes","deep","immediate","ContextMenu","BookNoteOverlay","BottomBar","cover_image","download_files","file","extension","original_name","description","continueReadingUrl","bookSearchUrl","related_books","other_publications","publication","translator","editor","publisher","publishing_year","ISBN","pages_count","book_copies","collapseAfter","expandText","collapseText","BooksWithTranslationsList","Collapsible","fetchBook","navigationBook","prepareTranslations","first_section_slug","firstSectionUrl","getFirstBookSectionLink","validateSectionUrl","firstValidSection","savedTab","BooksWithTranslations","DownloadIcon","SearchIcon","statistics","AuthorsService","fetchAuthor","getAuthor","hasQuery","searchPriorityResults","person","getSearchItemUrl","paths","array1","array2","ArrayService","getIntersections","extractIds","bookUrl","bookAuthors","bookByLanguage","relation_books_quantity","IconBookCover","IconGlobe","authorUrl","authorBooks","bookSectionUrl","bookSectionTitle","contentOfSelectedLanguage","translate","switchContentLanguage","contentLanguageButtonText","contentLanguage","bookTranslations","patch","perPage","fetchResults","makeHashFromIds","navShowSearchResults","doFetchResults","refSearchResults","isScrolledToBottom","hasMorePages","fetchMore","SearchPriorityBookSection","SearchPriorityAuthor","SearchPriorityBook","use","entryUrl","guard","next","needEmailVerification","getUser","base","routes","Registration","beforeEnter","HighlightService","reset","highlightCategory","highlightAuthor","authorIndex","highlightAuthorLetter","highlightBookLetter","needBookHighlight","highlightBook","highlightBookSection","resetEntitiesArray","resetBooks","resetBookSections","bookSectionIndex","routeCategory","highlightedCategory","highlightParents","routeAuthor","routeBook","routeBookSection","highlightedIndex","updateParents","ProcessService","processCategories","processAuthors","makeAuthorsAlphabet","processBooksAlphabet","books_first_letter","collapseBooks","preloadBookSectionAmount","loadBookSectionsBefore","loadBookSectionsAfter","processedBooks","bookSectionEntries","processedBookSections","parent_code","quantity","letters","currentBooks","entityId","mappedAuthors","alphabet","PagingService","getChapters","getSections","getPoems","NavigationService","catalog","categoryBooks","booksByCategories","letterBooks","bookParams","filterCategories","filterAuthors","filterLetters","searchBooks","searchBookSectionEntries","checkedBooks","checkBooks","checkBookSections","checkedFoundBooks","uncheckedBooks","uncheckBooks","uncheckBookSections","uncheckedFoundBooks","categoryIndex","branchCategoryIds","branchBookIds","branchCategory","CheckService","actualizeParentCategories","actualizeCategory","updateChildren","childBookSection","actualizeEntryFlags","categoryBookIds","childCategory","checkedChildren","partiallyCheckedChildren","letterId","initialData","st","getNavigation","navigationDataRaw","processNavigation","getCategoryBooks","processBooks","concatBooks","mapBookIds","fetchCategoriesBooks","getCategoriesBooks","applyCategoryBookMappings","shouldLoadBookIds","unloadedCategoryIds","getUnloadedBookCategoryIds","getAuthorBooks","getLetterBooks","getBookSections","processBookSections","needBookSectionHighlight","getBookParams","fallbackBranches","action","branch","directBooks","related_books_count","sectionsEntity","filterData","stateData","stateBooks","rootState","hasCheckedEntities","updateNavigationData","setLoading","setError","toggleFoundBookSectionExpand","toggleLetterExpand","collapseBookTree","collapseSections","collapseBook","restoreExpansionState","snapshot","bookLetterIds","authorLetterIds","foundBookSlugs","sectionKeys","applySections","toggleCategoryCheck","updatePreloadFlag","clearFoundBooks","resetFilter","updateFilterQuery","dataFromStateLanguage","dataFromRouteLanguage","routeLanguage","getPaging","checkedCategoriesIds","hasIntersections","getSelectedBookIds","checkedBookSections","checkedBookIds","checkedFoundBookSections","foundBookSections","unset","defaultState","storedState","latestSearchRequestId","hasSelectedScope","getPriorityResults","total_results","resultsCount","priorityResults","needUpdate","needUpdated","rootGetters","navigationBooks","routeRequestsBookSearch","useBookScope","useSelectedScope","scopedBook","scopedBookId","booksIds","search_in_poem","consider_diacritics","equalize_writing","show","hide","Store","startLoading","stopLoading","defaultErrorMessage","onLanguageRu","onLanguageEn","onLanguageSt","onLanguageCatalogRu","onLanguageCatalogEn","onLanguageCatalogSt","russian","english","change","profile","edit","refresh","continueReading","addBookmarkHere","moveBookmarkHere","deleteBookmark","bookmarkNotePlaceholder","moreActions","noBookmarks","tableOfContents","searchInBook","backToBook","backToPreviousText","backToReading","connectionLost","connectionLostDescription","connectionRestored","loginCaption","yourEmail","enterYourEmail","repeatPassword","signIn","registration","registrationVerifyEmail","authorization","verifyEmailIsNotVerified","verifyEmailFail","lastName","spiritualName","fillIfExists","accessCode","tooManyRequests","catalogsUpdate","bookInCategories","errorOccurred","tryToRefreshPage","selectSearchAreaInCatalog","showBooksCatalog","found","selectAll","collapse","collapseAllBranches","catalogSearch","filterBooks","useSearch","orOpenBookInCatalog","above","onLeft","noSearchResults","changeQuery","downloadFile","linkedBooks","otherPublishings","outputData","bookOriginalTitle","bookTranslation","publishingYear","pagesAmount","printRun","commentator","wordByWordTranslation","comment","sanskrit","diacritic","booksSelected","searchScope","searchEverywhere","searchPoems","resetSettings","exactPhrase","searchOperatorsHelper","aboutBook","bookChapter","bookPoem","colorTheme","colorThemeLight","colorThemeMixed","colorThemeDark","clearList","enterNewAddress","newPassword","repeatNewPassword","toChangePasswordEnterNewPassword","enterPersonalData","changePassword","exitReadingMode","presentationSettings","fitToScreen","previousSection","textSettings","logOutAreYouSure","recentlyViewedBooks","searchQueries","enterSearchQuery","inNewTab","inCurrentTab","structureScale","textScale","textExample","tablet","pc","auto","booksInWhichPoemWasMentioned","searchHistory","searchHistoryEmpty","allResults","showAllList","showOnEnglishLanguage","showOnRussianLanguage","textInOtherBooksAction","searchHelp","wasOffline","handleOffline","handleOnline","navigator","onLine","clearRestoreTimer","restoreTimer","IconInfo","subscribe","mutation","ConnectionStatus","productionTip","render","h","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,IAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,+HCvJT,yBAAqpB,EAAG,G,oCCAxpB,yBAAgpB,EAAG,G,6DCAnpB,yBAAwqB,EAAG,G,oCCA3qB,yBAAgqB,EAAG,G,oCCAnqB,yBAA+oB,EAAG,G,oCCAlpB,yBAA6oB,EAAG,G,6DCAhpB,yBAAuqB,EAAG,G,6DCA1qB,yBAA2qB,EAAG,G,oCCA9qB,yBAA8pB,EAAG,G,kCCAjqB,yBAA2oB,EAAG,G,kCCA9oB,yBAA4qB,EAAG,G,oFCA/qB,yBAA2qB,EAAG,G,oCCA9qB,yBAAyoB,EAAG,G,2DCA5oB,yBAAuqB,EAAG,G,oCCA1qB,yBAAmqB,EAAG,G,2DCAtqB,yBAA0oB,EAAG,G,6DCA7oB,yBAAmqB,EAAG,G,+JCAtqB,yBAAwqB,EAAG,G,oCCA3qB,yBAAyoB,EAAG,G,wICA5oB,yBAAwqB,EAAG,G,oCCA3qB,yBAA8oB,EAAG,G,sFCAjpB,yBAAylB,EAAG,G,kFCA5lB,yBAAiqB,EAAG,G,2DCApqB,yBAAmqB,EAAG,G,oCCAtqB,yBAA4pB,EAAG,G,oCCA/pB,yBAAyqB,EAAG,G,oCCA5qB,yBAAqqB,EAAG,G,oCCAxqB,yBAAqqB,EAAG,G,oCCAxqB,yBAAkpB,EAAG,G,2DCArpB,yBAAkpB,EAAG,G,oCCArpB,yBAA+qB,EAAG,G,6DCAlrB,yBAA6oB,EAAG,G,6DCAhpB,yBAA+pB,EAAG,G,oCCAlqB,yBAAupB,EAAG,G,oCCA1pB,yBAA+pB,EAAG,G,2DCAlqB,yBAA4pB,EAAG,G,oCCA/pB,yBAAwoB,EAAG,G,2DCA3oB,yBAAiqB,EAAG,G,oCCApqB,yBAA6qB,EAAG,G,6DCAhrB,yBAAwqB,EAAG,G,oCCA3qB,yBAA8pB,EAAG,G,2DCAjqB,yBAAmqB,EAAG,G,oCCAtqB,yBAAkqB,EAAG,G,qJCArqB,yBAAiqB,EAAG,G,kCCApqB,yBAAkpB,EAAG,G,4KCArpB,yBAAwqB,EAAG,G,yDCA3qB,yBAAwqB,EAAG,G,kCCA3qB,yBAAyoB,EAAG,G,kCCA5oB,yBAA4oB,EAAG,G,kCCA/oB,yBAA4pB,EAAG,G,yDCA/pB,yBAAmqB,EAAG,G,qJCAtqB,yBAA0oB,EAAG,G,wHCAzoB,EAAS,WAAa,IAAIyC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAACF,EAAG,SAAS,CAACE,MAAM,CAAC,QAAUN,EAAIO,WAAWH,EAAG,MAAM,CAACI,YAAY,YAAYC,MAAM,CAAE,qBAAsBT,EAAIO,UAAW,CAACH,EAAG,gBAAgB,GAAGA,EAAG,qBAAqB,IACtSM,EAAkB,G,8FCDlB,EAAS,WAAa,IAAIV,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,SAASC,MAAM,CAAEE,OAAQX,EAAIW,SAAU,CAACP,EAAG,YAAY,IACzK,EAAkB,G,wBCDlB,EAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,WAAWR,EAAIY,GAAG,GAAK,SAASC,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAIuB,MAAU,IACxL,EAAkB,G,wBCAlBC,EAAS,GAMTC,EAAY,eACdD,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAC,E,QCHM,EAArB,kJAAoC,QAElC,gBADC,kB,6BADkB,EAAM,gBAH1B,eAAU,CACTC,WAAY,CAAEC,cAEK,WCfwd,ICQze,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBX,EAAS,WAAa,IAAIjB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACE,MAAM,CAAC,KAAO,sBAAsB,CAAEN,EAAU,OAAEI,EAAG,QAAQ,CAACI,YAAY,oBAAoBC,MAAO,sBAAwBT,EAAIkB,OAAQZ,MAAM,CAAC,KAAO,SAAS,YAAY,SAAS,cAAc,SAAS,CAACF,EAAG,OAAO,CAACI,YAAY,yBAAyBF,MAAM,CAAC,cAAc,SAAS,CAACF,EAAG,aAAa,GAAGA,EAAG,OAAO,CAACI,YAAY,0BAA0B,CAACJ,EAAG,SAAS,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIqB,UAA0B,YAAfrB,EAAIkB,OAAsBd,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iCAAiCtB,EAAIuB,SAASvB,EAAIuB,QAChnB,EAAkB,GCAD,GACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,IAAI,GAAK,IAAI,EAAI,MAAM,OAAS,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,0EAA0E,KAAO,uB,4ECvBzM,SAAU0B,IAA2D,IAA3CC,EAA2C,uDAAxBpC,OAAOqC,SAASD,SAC3DE,EAAmB,cACzB,OAAIF,IAAaE,GAAoBF,EAASG,SAAT,WAAsBD,IACzD,WAAWA,GAEN,G,IAGH,E,kGACA5D,GACF,IAAM8D,EAAQC,SAASC,OAAOF,MAC5B,IAAIG,OAAO,WAAajE,EAAKkE,QAAQ,yBAA0B,QAAU,aAE3E,OAAOJ,EAAQK,mBAAmBL,EAAM,IAAM,O,0BAG5C9D,EAAcS,GAAiC,IAAlB2D,EAAkB,uDAAH,IACxCC,EAASZ,IACTa,EAAkBD,EAAS,YAAH,OAAeA,GAAW,GAClDE,EAAU,IAAIC,KAAKA,KAAKC,MAAe,GAAPL,EAAY,GAAK,GAAK,KAAMM,cAC5DC,EAAsC,WAA7BrD,OAAOqC,SAASiB,SAAwB,WAAa,GACpEb,SAASC,OAAT,UAAqBhE,EAArB,YAA6B6E,mBAC3BpE,GADF,mBAEY6D,EAFZ,qBAEwCC,EAFxC,0BAEiEI,K,6BAG5D3E,GACL,IAAMqE,EAASZ,IACTa,EAAkBD,EAAS,YAAH,OAAeA,GAAW,GAClDM,EAAsC,WAA7BrD,OAAOqC,SAASiB,SAAwB,WAAa,GACpEb,SAASC,OAAT,UAAqBhE,EAArB,oBAAqCsE,EAArC,iEAA6GK,O,KAIlG,MAAI,E,+oBC1BnB,IAAMG,EAAkD,GAClDC,EAAmB,CAAC,IAAK,KAEzB,SAAUC,EAAwBC,EAA4BC,GAClE,GAA2C,QAAvCC,OAAOF,GAAU,IAAIG,eAA2B,EAAAC,EAAMC,SAASJ,GACjE,OAAO,EAET,IAAMvC,EAASuC,GAASA,EAAMK,UAAYC,OAAON,EAAMK,SAAS5C,QAChE,OAAQA,GAAqB,MAAXA,GAA6B,MAAXA,GAAkBA,GAAU,IAGlE,SAAS8C,EAAKC,GACZ,OAAO,IAAIC,QAAQ,SAAAC,GAAO,OAAIC,WAAWD,EAASF,KAG7C,IAAM,EAAb,WAiBE,WAAYI,GAAkB,uBAdpB,KAAAC,OAAiB,GAEjB,KAAAC,KAA0B,GAI1B,KAAAC,wBAAkC,EAIlC,KAAAC,WAAqB,EAExB,KAAAC,WAAqB,EAGtBL,IACFpE,KAAKuE,uBAAyBH,EAAOG,yBAA0B,GAnBrE,2DAuBqBG,GAEjB,OADA1E,KAAK0E,SAAWA,EACT1E,OAzBX,gCA4BmBqE,GAEf,OADArE,KAAKqE,OAASA,EACPrE,OA9BX,8BAiCiBsE,GAEb,OADAtE,KAAKsE,KAAOA,EACLtE,OAnCX,+BAsCkB2E,GAEd,OADA3E,KAAK2E,MAAQA,EACN3E,OAxCX,8BA6CI,OADAA,KAAKwE,WAAY,EACVxE,OA7CX,8BAiDQA,KAAK4E,mBACP5E,KAAK4E,kBAAkBC,WAlD7B,+LAuDW7E,KAAK8E,KAAK,CAAEvB,OAAQ,MAAOc,OAAQrE,KAAKqE,UAvDnD,uSA2DWrE,KAAK8E,KAAK,CACfvB,OAAQ,OACRrH,KAAM8D,KAAKsE,gBAAgBS,SAAW/E,KAAKsE,KAAOU,KAAKC,UAAUjF,KAAKsE,SA7D5E,wSAkEWtE,KAAK8E,KAAK,CACfvB,OAAQ,QACRrH,KAAM8D,KAAKsE,gBAAgBS,SAAW/E,KAAKsE,KAAOU,KAAKC,UAAUjF,KAAKsE,SApE5E,sSAyEWtE,KAAK8E,KAAK,CACfvB,OAAQ,MACRrH,KAAM8D,KAAKsE,gBAAgBS,SAAW/E,KAAKsE,KAAOU,KAAKC,UAAUjF,KAAKsE,SA3E5E,ySAgFWtE,KAAK8E,KAAK,CAAEvB,OAAQ,SAAUc,OAAQrE,KAAKqE,UAhFtD,4LAoGuBD,GApGvB,6FAqGQpE,KAAKuE,wBAA0BvE,KAAK4E,mBAEtC5E,KAAKkF,QAEPlF,KAAKmF,mBACCC,EAAMpF,KAAKoF,IACZA,EA3GT,yCA4GanB,QAAQoB,UA5GrB,WA8GQjC,EAAagC,GA9GrB,yCA+GanB,QAAQC,QAAQd,EAAagC,KA/G1C,OAiHIpF,KAAKyE,YAAc,EAjHvB,SAoHea,EAAU,EApHzB,eAqHQtF,KAAK4E,kBAAoB,EAAAjB,EAAM4B,YAAYC,SArHnD,oBAuH2B,IAAM,EAAD,CACpBJ,MACAK,QAASzF,KAAKyF,QACdC,gBAA8D,UAA7C,qKAAYC,6BAC7BC,QAAS,KACNxB,EALiB,CAMpByB,YAAa7F,KAAK4E,kBAAkBD,SA7HhD,eAuHUd,EAvHV,uEAiIcyB,GAAWjC,EAAiB3G,SAAW4G,EAAwBc,EAAOb,OAAR,MAjI5E,qDAoIgBQ,EAAKV,EAAiBiC,IApItC,QAoH8BA,GAAW,EApHzC,yCAwIMtF,KAAKyE,YAAc,EAxIzB,wBA0IIqB,EAAWC,cAAclC,GACnBA,GAAYA,EAAS3H,KA3I/B,0CA4Ia+H,QAAQoB,UA5IrB,eA8IQrF,KAAKwE,YACPpB,EAAagC,GAAOvB,GA/I1B,kBAiJWI,QAAQC,QAAQL,IAjJ3B,uKAqJI,IAAK7D,KAAK0E,SACR,MAAM,IAAIsB,MAAM,6BAtJtB,0BAoFI,GAAIhG,KAAK0E,SACP,MAAO,0BAA8B1E,KAAK0E,WArFhD,8BA2FI,IAAMe,EAAqC,CACzC,eAAgB,oBAKlB,OAHIzF,KAAK2E,QACPc,EAAQ,qBAAuBzF,KAAK2E,OAE/Bc,KAjGX,qCA0JiC5B,GAC7B,GAAwB,WAApB,eAAOA,GACT,MAAM,IAAImC,MAAM,GAAe,wBAEjC,GAA6B,WAAzB,eAAOnC,EAAS3H,MAClB,MAAM,IAAI8J,MAAJ,0EAAqEnC,EAAS3H,QAEtF,IAAK2H,EAAS3H,KAAK+J,QACjB,MAAM,IAAID,MAAMnC,EAAS3H,KAAKgK,aAlKpC,K,YCnBqB,E,mKACAC,EAAeC,G,6FAC1B1B,EAAW,OAAU2B,KAAKC,M,mBACzB,IAAI,GACRC,YAAY7B,GACZ8B,QAAQ,CACPL,QACAC,aAEDK,Q,2RAIG/B,EAAW,OAAU2B,KAAKK,O,mBACzB,IAAI,GAAaH,YAAY7B,GAAU/F,O,iMAGpBwH,G,6FACpBzB,EAAW,OAAU2B,KAAKM,e,mBACzB,IAAI,GACRJ,YAAY7B,GACZ8B,QAAQ,CACPL,UAEDM,Q,iMAGsB9B,EAAewB,EAAeC,EAAkBQ,G,6FACnElC,EAAW,OAAU2B,KAAKQ,c,mBACzB,IAAI,GACRN,YAAY7B,GACZ8B,QAAQ,CACP7B,QACAwB,QACAC,WACAU,sBAAuBF,IAExBH,Q,kMAGiBM,G,6FACdrC,EAAW,OAAU2B,KAAKW,S,mBACzB,IAAI,GACRT,YAAY7B,GACZ8B,QAAQO,GACRN,Q,+LAGoBQ,EAAgBC,EAAcrE,EAAiBsE,G,6FAChEzC,EAAW,OAAU2B,KAAKe,YAAY5E,QAAQ,UAAWyE,GAAQzE,QAAQ,QAAS0E,G,mBACjF,IAAI,GACRG,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B4B,YAAY7B,GACZ8C,UAAU,CAAE3E,UAASsE,cACrBxI,O,0SAIG+F,EAAW,OAAU2B,KAAKoB,kB,mBACzB,IAAI,GACRJ,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B4B,YAAY7B,GACZ+B,Q,yGCxDP,SAASiB,IACP,IAAM/C,EAAQ,EAAchG,IAAI,cAAgB,GAChD,OAAOgG,EAAQ,CAAEA,QAAOgD,YAAY,GAAS,CAAEhD,MAAO,GAAIgD,YAAY,GAGxE,IAAM,EAAmBD,IAEnBE,EAA4C,CAC1CtB,MAD0C,2KAClCuB,EADkC,EAClCA,OAAY1B,EADsB,EACtBA,MAAOC,EADe,EACfA,SADe,SAEvB,EAAYE,MAAMH,EAAOC,GAFF,OAExCvC,EAFwC,OAG9CgE,EAAO,QAAShE,EAAS4B,QAAQ,cACjCoC,EAAO,WAAYhE,EAAS3H,KAAKA,KAAM,CAAE4L,MAAM,IAC/CD,EAAO,mBAAoBpE,OAAOI,EAAS3H,KAAKA,KAAK6L,IAAMlE,EAAS3H,KAAKA,KAAKiK,OAAQ,CAAE2B,MAAM,IAC9FD,EAAO,wBAAyBpE,OAAOI,EAAS3H,KAAKA,KAAK6L,IAAMlE,EAAS3H,KAAKA,KAAKiK,OAAQ,CACzF2B,MAAM,IAPsC,oGAUhDpB,OAVgD,YAU/B,IAARmB,EAAQ,EAARA,OACPA,EAAO,eAAgB,KAAM,CAAEC,MAAM,IAIrCD,EAAO,UACPA,EAAO,mBAAoB,QAAS,CAAEC,MAAM,IAC5CD,EAAO,wBAAyB,QAAS,CAAEC,MAAM,IACjDD,EAAO,aAAc,KAAM,CAAEC,MAAM,IACnCD,EAAO,cAAe,KAAM,CAAEC,MAAM,MAIlCE,EAAqC,CACzC1B,MADyC,SACnCiB,EAAkB5C,GACtB4C,EAAM5C,MAAQA,EACd4C,EAAMI,YAAa,EACfhD,GACF,EAAcsD,IAAI,YAAatD,IAGnC+B,OARyC,SAQlCa,GACLA,EAAM5C,MAAQ,GACd4C,EAAMI,YAAa,EACnB,EAAcO,OAAO,eAIZ,EAAS,CACpBC,YAAY,EACZZ,MAAA,EACAK,UACAI,a,sIC3DE,GAAS,WAAa,IAAIjI,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,QAAQR,EAAIY,GAAIZ,EAAQ,KAAE,SAASqI,GAAK,OAAOjI,EAAG,SAAS,CAACd,IAAI+I,EAAIC,KAAK9H,YAAY,MAAMC,MAAM,CAAE8H,OAAQvI,EAAIwI,aAAeH,EAAIC,MAAOhI,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIwI,WAAaH,EAAIC,QAAQ,CAACtI,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGiH,EAAI9J,MAAM,cAAc,GAAuB,SAAnByB,EAAIwI,YAAyBxI,EAAI2I,KAAKhM,OAAQyD,EAAG,WAAW,CAACE,MAAM,CAAC,KAAON,EAAI2I,KAAK,WAAa3I,EAAI4I,cAAc5I,EAAIuB,KAAyB,0BAAnBvB,EAAIwI,WAAwCpI,EAAG,kBAAkB,CAACE,MAAM,CAAC,KAAON,EAAI6I,mBAAmB7I,EAAIuB,KAAyB,mBAAnBvB,EAAIwI,WAAiCpI,EAAG,gBAAgB,CAACI,YAAY,mBAAmBR,EAAIuB,MAAM,IAC7tB,GAAkB,GCDTuH,GAAwB,KACxBC,GAAwB,KACxBC,GAAyB,KACzBC,GAAwBH,GACxBI,GAAY,CAACJ,GAAuBC,GAAuBC,IAE3DG,GAAoB,aAEpBC,GAAkB,OAClBC,GAAqB,UACrBC,GAAoB,SACpBC,GAAqBH,GCLb,G,oQAEXzE,EAAW,OAAUgE,K,mBACpB,IAAI,GACRnC,YAAY7B,GACZ8C,UAAU,CACT+B,SAAUjC,GAAMC,MAAMiC,OAAOC,mBAAqBT,KAEnD3B,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,Q,yGCXZ,G,iHASUqN,EAAkBI,GAC7C,IAAMC,EAAOtC,GAAMC,MAAMqC,KAAK1N,KACxB2N,EAAWD,EAAK7B,IAAM6B,EAAKzD,OAAS,QAC1C,gBAAU0D,EAAV,YAAsBN,EAAtB,YAAkCI,K,+CAGIG,EAAiBC,GACvD,IAAMC,EAAWC,EAAYC,wBAAwBJ,IAAY7F,QAAQC,UACnEiG,EAASH,EAASI,MAAM,cAAiBV,KAAKK,GACpDE,EAAYC,wBAAwBJ,GAAWK,EAC/C,IAAME,EAAqB,WACrBJ,EAAYC,wBAAwBJ,KAAaK,UAC5CF,EAAYC,wBAAwBJ,IAI/C,OADAK,EAAOT,KAAKW,EAAoBA,GACzBF,I,qCAGaZ,EAAkBI,GACtCM,EAAYK,kBAAkBC,OAAON,EAAYO,cAAcjB,EAAUI,M,gCAIzE,IAAMjF,EAAW,OAAUkF,KAAKa,YAChC,OAAO,IAAI,GACRlE,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAAgB,GAAG,OAAIA,EAAIxO,KAAKA,S,iCAGRyO,GAChB,IAAMjG,EAAW,OAAUkF,KAAKa,YAChC,OAAO,IAAI,GACRlE,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQmE,GACRlE,OACAiD,KAAK,SAAAgB,GAAG,OAAIA,EAAIxO,KAAKA,S,kMAIlBwI,EAAW,OAAUkF,KAAKhB,gB,mBACzB,IAAI,GACRrC,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,gSAI5BwI,EAAW,OAAUkF,KAAKgB,Y,mBACzB,IAAI,GACRrE,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,0RAI7B+N,EAAYY,oB,yCACR,I,cAEHnG,EAAW,OAAUkF,KAAKkB,U,mBACzB,IAAI,GACRvE,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,iMAGR6K,G,mFAQrBkD,EAAYY,oB,yCACR,M,iCAEF,IAAI,GACRtE,YAAY,OAAUqD,KAAKkB,WAC3BzD,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQO,GACRN,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,kMAIlC6L,EACAhB,G,mFASKkD,EAAYY,oB,yCACR,M,iCAEF,IAAI,GACRtE,YADI,UACW,OAAUqD,KAAKkB,UAD1B,YACuC/C,IAC3CV,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQO,GACRgE,MACArB,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,oMAGR6L,G,mFACrBkC,EAAYY,oB,yCACR,M,iCAEF,IAAI,GACRtE,YADI,UACW,OAAUqD,KAAKkB,UAD1B,YACuC/C,IAC3CV,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B4F,SACAb,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,uMAGH6K,G,6FAOzB+C,EAAUG,EAAYO,cAAczD,EAAQwC,SAAUxC,EAAQ4C,OAChEM,EAAYK,kBAAkBU,IAAIlB,G,8CAC7BmB,G,cAEHvG,EAAW,OAAUkF,KAAKgB,YAC1BjG,EAAQ2C,GAAMC,MAAMlB,KAAK1B,M,kBACxBsF,EAAYiB,yBAAyBpB,EAAS,kBACnD,IAAI,GACDvD,YAAY7B,GACZ2C,SAAS1C,GACT6B,QAAQO,GACRN,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,U,uJAID6K,GAOnC,IAAM+C,EAAUG,EAAYO,cAAczD,EAAQwC,SAAUxC,EAAQ4C,MACpE,GAAIM,EAAYK,kBAAkBU,IAAIlB,GACpC,OAAO7F,QAAQC,aAAQ+G,GAEzB,IAAMxF,EAAsC,CAC1C,eAAgB,oBAKlB,OAHI6B,GAAMC,MAAMlB,KAAK1B,QACnBc,EAAQ,qBAAuB6B,GAAMC,MAAMlB,KAAK1B,OAE3CwG,MAAM,GAAD,OAAI,2BAAJ,OAAkC,OAAUvB,KAAKgB,aAAe,CAC1ErH,OAAQ,OACRkC,UACA2F,YAAa,UACbC,WAAW,EACX/G,KAAMU,KAAKC,UAAU8B,KACpBqD,MAAM,gB,gGAGkBb,EAAkBI,G,iGACvCG,EAAUG,EAAYO,cAAcjB,EAAUI,GACpDM,EAAYK,kBAAkBgB,IAAIxB,GAC5BpF,EAAW,OAAUkF,KAAKgB,YAC1BjG,EAAQ2C,GAAMC,MAAMlB,KAAK1B,M,kBACxBsF,EAAYiB,yBAAyBpB,EAAS,kBACnD,IAAI,GACDvD,YAAY7B,GACZ2C,SAAS1C,GACT6C,UAAU,CAAE+B,WAAUI,SACtBY,SACAb,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,U,+IA3LpC,OAAO,M,KALM,GAAAgO,wBAA+D,GAE/D,GAAAI,kBAAiC,IAAIiB,ICRtD,IAAI,GAAS,WAAa,IAAIxL,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAMJ,EAAIY,GAAIZ,EAAIyL,UAAW,SAASC,EAAMC,GAAM,OAAOvL,EAAG,MAAM,CAACd,IAAIqM,GAAM,CAACvL,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGuK,MAAS3L,EAAIY,GAAG,EAAQ,SAASgL,EAAK/K,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAIuB,EAAML,YAAY,QAAQ,CAACJ,EAAG,MAAM,CAACI,YAAY,SAAS,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKvK,UAAUjB,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKC,SAASzL,EAAG,MAAM,CAACI,YAAY,UAAUR,EAAIY,GAAIgL,EAAW,OAAE,SAASE,GAAO,OAAO1L,EAAG,MAAM,CAACd,IAAIwM,EAAMC,IAAIvL,YAAY,SAAS,CAACJ,EAAG,MAAM,CAACE,MAAM,CAAC,IAAMwL,EAAME,QAAQ,IAAM,UAAU,QAAQ,KAAK,IAC3mB,GAAkB,GCsBD,GAArB,iMAQI,IAAMrD,EAA+B,GAMrC,OALA1I,KAAK0I,KAAKsD,QAAQ,SAACL,GACjB,IAAMM,EAAaN,EAAK,eACxBjD,EAAKuD,GAAcvD,EAAKuD,IAAe,GACvCvD,EAAKuD,GAAYjP,KAAK2O,KAEjBjD,MAdX,GAAsC,QAEpC,gBADC,eAAK,CAAEwD,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,kCAJC,GAAQ,gBAD5B,QACoB,cCvBwc,MCQzd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAMJ,EAAIY,GAAIZ,EAAS,MAAE,SAAS4J,GAAM,OAAOxJ,EAAG,MAAM,CAACd,IAAK,QAAWsK,EAAQ,IAAGpJ,YAAY,QAAQ,CAACJ,EAAG,cAAc,CAACI,YAAY,QAAQF,MAAM,CAAC,GAAKsJ,EAAKvE,MAAM,CAACrF,EAAImB,GAAGnB,EAAIoB,GAAGwI,EAAKrL,SAAS6B,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGwI,EAAK,mBAAmB,KAAK,IAC5W,GAAkB,G,imBCmCD,G,iHAC8D,IAA7DJ,EAA6D,EAA7DA,SAAU4C,EAAmD,EAAnDA,SAAUC,EAAyC,EAAzCA,aAAcC,EAA2B,EAA3BA,WACpD,OAAID,EACF,WAAW7C,EAAX,uBAAkC6C,EAAlC,YAAkDD,GAEhDE,EACF,WAAW9C,EAAX,oBAA+B8C,EAA/B,YAA6CF,GAE/C,WAAW5C,EAAX,kBAA6B4C,K,2CASR,IALrB5C,EAKqB,EALrBA,SACA4C,EAIqB,EAJrBA,SACAG,EAGqB,EAHrBA,gBACAF,EAEqB,EAFrBA,aACAC,EACqB,EADrBA,WAEA,OAAID,EACF,WAAW7C,EAAX,uBAAkC6C,EAAlC,YAAkDD,EAAlD,YAA8DG,GAE5DD,EACF,WAAW9C,EAAX,oBAA+B8C,EAA/B,YAA6CF,EAA7C,YAAyDG,GAE3D,WAAW/C,EAAX,kBAA6B4C,EAA7B,YAAyCG,K,sCAGkB,IAAvC/C,EAAuC,EAAvCA,SAAU8C,EAA6B,EAA7BA,WAC9B,iBAAW9C,EAAX,oBAA+B8C,K,2CAGyD,IAA/D9C,EAA+D,EAA/DA,SAAUgD,EAAqD,EAArDA,MAAOJ,EAA8C,EAA9CA,SAAUK,EAAoC,EAApCA,SAAa5K,EAAuB,6DAClF6K,EAA0C,CAAEF,SAYlD,OAXIJ,IACFM,EAAaC,KAAOP,GAElBK,IACFC,EAAaD,SAAWA,GAE1B7P,OAAOgQ,QAAQ/K,GACZgL,OAAO,uCAAO7N,GAAP,kBAAkBA,IACzBiN,QAAQ,YAAiB,2BAAf3M,EAAe,KAAVN,EAAU,KACxB0N,EAAapN,GAAOyE,OAAO/E,GAAO8N,aAEtC,WAAWtD,EAAX,mBAA8B,IAAIuD,gBAAJ,MAAyBL,IAAgBI,c,6CAG3CE,EAAwBnM,GACpD,IAAIwE,EAAM,GACJ4H,EACgD,kBAA7CC,GAAOC,aAAaX,MAAMY,eAC7BF,GAAOC,aAAaX,MAAMY,eAC1BF,GAAOC,aAAa7I,OAAOkF,SAC3B6D,EAAiBL,EAAWxD,UAAY0D,GAAOC,aAAa7I,OAAOkF,SAazE,GAXEnE,EADE2H,EAAWM,aACPC,EAAkBC,kBAAkB,CACxChE,SAAU6D,EACVjB,SAAUY,EAAWS,UACrBlB,gBAAiBS,EAAWM,eAGxBC,EAAkBG,WAAW,CACjClE,SAAU6D,EACVjB,SAAUY,EAAWS,YAGsB,kBAApCP,GAAOC,aAAaX,MAAMA,MAAoB,CACvD,IAAME,EAAe,IAAIK,gBASzB,OARAnQ,OAAOgQ,QAAQM,GAAOC,aAAaX,OAAOP,QAAQ,YAAkB,2BAAhB1N,EAAgB,KAAVS,EAAU,KACrD,UAATT,GAAqC,kBAAVS,GAC7B0N,EAAaxE,IAAI3J,EAAMS,KAG3B0N,EAAaxE,IAAI,QAASrH,EAAMiM,YAChCJ,EAAaxE,IAAI,YAAa8E,EAAWW,UAAUC,KAAK,MACxDlB,EAAaxE,IAAI,iBAAkB+E,GACnC,UAAU5H,EAAV,YAAiBqH,EAAaI,YAEhC,OAAOzH,I,yCAWR,IAPCmH,EAOD,EAPCA,MACA3L,EAMD,EANCA,MAMD,IALC8M,iBAKD,MALa,GAKb,EACC,OAAO,IAAIZ,gBAAgB,CAAEP,QAAO3L,MAAOA,EAAMiM,WAAYa,kB,+jBCtGjE,IAAqB,GAArB,6LAKI,OAAO1N,KAAK4N,KAAKC,IAAI,SAAClE,GAAD,WACnBvE,IAAK,GAAkBqI,WAAW,CAAElE,SAAUI,EAAKJ,SAAU4C,SAAUxC,EAAK+C,QACzE/C,SAPT,GAA6C,QAE3C,gBADC,eAAK,CAAEuC,UAAU,K,4BADC,GAAe,gBADnC,QACoB,cCxB+c,MCQhe,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAI6N,KAAW,OAAEzN,EAAG,SAAS,CAACI,YAAY,qBAAqBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+N,wBAAwB,CAAC/N,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAc,UAAUtB,EAAIuB,KAAMvB,EAAI6N,MAAQ7N,EAAI6N,KAAKlR,OAAQyD,EAAG,MAAMJ,EAAIY,GAAIZ,EAAQ,KAAE,SAAS4L,GAAM,OAAOxL,EAAG,MAAM,CAACd,IAAIsM,EAAKY,MAAMhM,YAAY,QAAQ,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKsL,EAAKvG,KAAK2I,SAAS,CAAC,MAAQ,SAAStF,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAACjO,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKY,WAAW,KAAK,GAAIxM,EAAS,MAAEI,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAsBtB,EAAU,OAAEI,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,0BAA0BtB,EAAIuB,QACpzB,GAAkB,G,8jBC8BD,G,mRAEjBiI,E,+BAAmBP,GACnBuD,E,uBACA0B,E,+BAAkC,G,mBAE3B,IAAI,GACR1H,YAAY,OAAU2H,OAAO3B,MAAM/J,QAAQ,QAAS+G,IACpDlC,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAHI,IAIH+C,WACAgD,SACG0B,IAEJxH,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,Q,gTAI7BqN,E,+BAAmBP,GACnBuD,E,uBACA0B,E,+BAAsC,G,mBAE/B,IAAI,GACR1H,YAAY,OAAU2H,OAAOC,aAAa3L,QAAQ,QAAS+G,IAC3DlC,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAHI,IAIH+C,WACAgD,SACG0B,IAEJxH,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,Q,kSAIvBwI,EAAW,OAAUwJ,OAAOE,Q,mBAC3B,IAAI,GACR7H,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,oSAI5BwI,EAAW,OAAUwJ,OAAOE,Q,mBAC3B,IAAI,GACR7H,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B4F,SACAb,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,oTAGJqN,E,+BAAmBP,GAAuBuD,E,uBAClE7H,EAAW,OAAUwJ,OAAOG,SAAS7L,QAAQ,QAAS+G,G,mBACrD,IAAI,GACRhD,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQ,CACP+F,UAED9F,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,grBCpEtC,IAAqB,GAArB,6D,+DACE,EAAA0R,KAA8C,GAE9C,EAAApK,OAAiB,EAEjB,EAAA8K,QAAkB,EAElB,EAAAjN,eAAiB,GAPnB,sOAaIrB,KAAK4N,KAAO,GACZ5N,KAAKwD,OAAQ,EAdjB,kBAgBuD,GAAc+K,mBAhBrE,OAgBY1K,EAhBZ,OAiBUA,GAAYA,EAASnH,SACvBsD,KAAK4N,KAAO5N,KAAKwO,YAAY3K,IAlBrC,mDAqBM7D,KAAKwD,OAAQ,EArBnB,yBAuBMxD,KAAKsO,QAAS,EACdtO,KAAKgO,MAAM,eAAgBhO,KAAK4N,KAAKlR,OAAS,GAxBpD,qUA6BIsD,KAAK4N,KAAO,GACZ5N,KAAKwD,OAAQ,EA9BjB,kBAgC6B,GAAcsK,qBAhC3C,OAgCYjK,EAhCZ,OAiCUA,GAAYA,EAASnH,SACvBsD,KAAK4N,KAAO5N,KAAKwO,YAAY3K,IAE/B7D,KAAKgO,MAAM,eAAgBhO,KAAK4N,KAAKlR,OAAS,GAC9CsD,KAAKgO,MAAM,WArCjB,qDAuCMhO,KAAKwD,OAAQ,EAvCnB,mJA2CcoK,GACV,IAAMrE,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK0O,oBAAsB1F,GAC3E,OAAO4E,EAAKC,IAAI,SAAAlC,GAAI,aACfA,EADe,CAElBvG,IAAK,GAAkBuJ,kBAAkB,CAAEpF,WAAUgD,MAAOZ,EAAKY,gBA/CvE,GAA2C,QAUzC,gBADC,gBAAM,WAAY,CAAEqC,UAAW,gB,0CATb,GAAa,gBADjC,QACoB,cCzB6c,MCQ9d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCgBM,GAArB,6D,+DACE,EAAAC,KAAO,CACL,CACExG,KAAM,OACN/J,KAAM,GAAe,SAEvB,CACE+J,KAAM,wBACN/J,KAAM,GAAe,wBAEvB,CACE+J,KAAM,iBACN/J,KAAM,GAAe,mBAIzB,EAAAiK,WAAqB,OACrB,EAAAG,KAAmB,GACnB,EAAAE,gBAA8B,GAC9B,EAAAD,WAAa,CACXmG,QAAS,EACTC,MAAO,GArBX,gOA4BI/O,KAAKgP,OAAOnH,OAAO,2BAA4B,YA5BnD,SA6BU7H,KAAKiP,YA7Bf,uBA8BUjP,KAAKkP,uBA9Bf,sSAmCIlP,KAAK6O,KAAO,CACV,CACExG,KAAM,OACN/J,KAAM,GAAe,SAEvB,CACE+J,KAAM,wBACN/J,KAAM,GAAe,wBAEvB,CACE+J,KAAM,iBACN/J,KAAM,GAAe,mBA9C7B,SAiDU0B,KAAKiP,YAjDf,6SAqDuC,GAAYzD,UArDnD,gBAqDYtP,EArDZ,EAqDYA,KAAMyM,EArDlB,EAqDkBA,WACd3I,KAAK0I,KAAOxM,EACRyM,IACF3I,KAAK2I,WAAaA,GAxDxB,8SA6DiC,GAAYwG,qBA7D7C,OA6DInP,KAAK4I,gBA7DT,mHAAkC,QAyBhC,gBADC,gBAAM,oBAAqB,CAAEgG,UAAW,Y,yCAUzC,gBADC,eAAM,sB,qCAiBN,MAlDkB,GAAI,gBAHxB,eAAU,CACT7N,WAAY,CAAEqO,SAAA,GAAUC,gBAAA,GAAiBC,cAAA,OAEtB,cCnCsd,MCQve,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIvP,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACA,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoBlB,EAAG,YAAY,CAACqI,GAAG,CAAC,WAAazI,EAAIwP,eAAepP,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,cAAc,CAACI,YAAY,2CAA2CF,MAAM,CAAC,GAAK,iBAAiB,CAACN,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiB,aAAa,IAAI,IACvd,GAAkB,GCDlB,GAAS,WAAa,IAAItB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,UAAU,CAACJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACJ,EAAG,OAAO,CAACE,MAAM,CAAC,QAAU,iBAAiB,GAAGF,EAAG,MAAM,CAACI,YAAY,WAAW,CAACR,EAAIyP,GAAG,YAAY,KAAKrP,EAAG,eAAe,IAClS,GAAkB,GCAD,IACboB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,MAAM,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACpGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,qxEAAqxE,KAAO,kBCvB30E,GAAS,WAAa,IAAIN,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,eAAe,CAAER,EAAI0J,oBAAsB1J,EAAI8I,sBAAuB1I,EAAG,SAAS,CAACI,YAAY,OAAOiI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI0P,qBAAqB1P,EAAI+I,0BAA0B,CAAC/I,EAAImB,GAAG,yCAAyCf,EAAG,SAAS,CAACI,YAAY,OAAOiI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI0P,qBAAqB1P,EAAI8I,0BAA0B,CAAC9I,EAAImB,GAAG,4CACve,GAAkB,GCqBD,GAArB,6D,+DAOE,EAAA2H,sBAAwBA,GACxB,EAAAC,sBAAwBA,GAR1B,gCAAwC,QAEtC,gBADC,gBAAM,oBAAqB,CAAE8F,UAAW,Y,yCAIzC,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,Y,4CAJ5B,GAAU,gBAD9B,QACoB,cCtB0c,MCQ3d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCMA,IACb7N,WAAY,CAAE2O,WAAA,GAAYC,KAAA,KC1Bmc,MCQ3d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI5P,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,uBAAuB,MAAQN,EAAIsB,eAAe,aAAa,MAAQtB,EAAIgH,QAAQZ,MAAM,MAAQpG,EAAI6P,OAAOzJ,OAAOqC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,QAAS9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAACJ,EAAG,QAAQ,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAiBtB,EAA0B,uBAAEI,EAAG,cAAc,CAACI,YAAY,uBAAuBF,MAAM,CAAC,GAAK,oBAAoB,CAACN,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsBtB,EAAIuB,MAAM,GAAGnB,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIgH,QAAQX,SAAS,MAAQrG,EAAI6P,OAAOxJ,UAAUoC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,WAAY9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,yDAAyD,CAACJ,EAAG,WAAW,CAACE,MAAM,CAAC,QAAUN,EAAIgQ,YAAYvH,GAAG,CAAC,OAAS,SAASC,GAAQ1I,EAAIgQ,YAAchQ,EAAIgQ,cAAc,CAAChQ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAe,cAAclB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+P,YAAY,CAAC/P,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,eAAe,KAAKlB,EAAG,MAAM,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIyD,aAChkD,GAAkB,GCDlB,GAAS,WAAa,IAAIzD,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,SAAS,CAACI,YAAY,WAAWC,MAAM,CAAE,aAAcT,EAAIiQ,QAAS,uBAAwBjQ,EAAIkQ,kBAAmB5P,MAAM,CAAC,KAAO,SAAS,KAAO,WAAW,eAAeN,EAAIkQ,iBAAmB,QAAUxM,SAAS1D,EAAIiQ,UAAUxH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAa,CAAC7N,EAAG,MAAM,CAACI,YAAY,iBAAiBC,MAAM,CAAEwP,QAASjQ,EAAIiQ,QAAS,gBAAiBjQ,EAAIkQ,mBAAoB,CAAC9P,EAAG,OAAO,CAACI,YAAY,4BAA4BF,MAAM,CAAC,cAAc,SAAS,CAAEN,EAAIiQ,UAAYjQ,EAAIkQ,iBAAkB9P,EAAG,MAAM,CAACE,MAAM,CAAC,QAAU,cAAc,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,gCAAiCN,EAAoB,iBAAEI,EAAG,OAAO,CAACI,YAAY,4BAA4BR,EAAIuB,OAAOvB,EAAIyP,GAAG,YAAY,MAC9yB,GAAkB,GC0BD,GAArB,kJAAsC,QAEpC,gBADC,eAAK,CAAEtD,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAJC,GAAQ,gBAD5B,QACoB,cC3B0d,MCQ3e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,cAAc,CAACJ,EAAG,QAAQ,CAACI,YAAY,SAAS,CAAER,EAAS,MAAEI,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAImQ,OAAO,YAAanQ,EAAiB,cAAEI,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIoQ,kBAAkBpQ,EAAIuB,OAAOvB,EAAIuB,KAAmB,aAAZvB,EAAQ,KAAgBI,EAAG,QAAQ,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,QAAQ+R,QAAQ,UAAUtR,MAAOgB,EAAQ,KAAEuQ,WAAW,SAAS/P,YAAY,QAAQC,MAAM,CAAEgD,MAAOzD,EAAIyD,OAAQnD,MAAM,CAAC,YAAcN,EAAIwQ,YAAY,aAAexQ,EAAIoO,aAAe,GAAK,eAAe,KAAO,YAAYqC,SAAS,CAAC,QAAUC,MAAMC,QAAQ3Q,EAAI6L,MAAM7L,EAAI4Q,GAAG5Q,EAAI6L,KAAK,OAAO,EAAG7L,EAAQ,MAAGyI,GAAG,CAAC,MAAQzI,EAAI6Q,YAAY,KAAO,SAASnI,GAAQ,OAAO1I,EAAIiO,MAAM,SAAS,MAAQ,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,UAAU,OAAS,SAASvF,GAAQ,IAAIoI,EAAI9Q,EAAI6L,KAAKkF,EAAKrI,EAAOsI,OAAOC,IAAIF,EAAKd,QAAuB,GAAGS,MAAMC,QAAQG,GAAK,CAAC,IAAII,EAAI,KAAKC,EAAInR,EAAI4Q,GAAGE,EAAII,GAAQH,EAAKd,QAASkB,EAAI,IAAInR,EAAI6L,KAAKiF,EAAI/O,OAAO,CAACmP,KAAYC,GAAK,IAAInR,EAAI6L,KAAKiF,EAAI/Q,MAAM,EAAEoR,GAAKpP,OAAO+O,EAAI/Q,MAAMoR,EAAI,UAAWnR,EAAI6L,KAAKoF,MAAuB,UAAZjR,EAAQ,KAAaI,EAAG,QAAQ,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,QAAQ+R,QAAQ,UAAUtR,MAAOgB,EAAQ,KAAEuQ,WAAW,SAAS/P,YAAY,QAAQC,MAAM,CAAEgD,MAAOzD,EAAIyD,OAAQnD,MAAM,CAAC,YAAcN,EAAIwQ,YAAY,aAAexQ,EAAIoO,aAAe,GAAK,eAAe,KAAO,SAASqC,SAAS,CAAC,QAAUzQ,EAAIoR,GAAGpR,EAAI6L,KAAK,OAAOpD,GAAG,CAAC,MAAQzI,EAAI6Q,YAAY,KAAO,SAASnI,GAAQ,OAAO1I,EAAIiO,MAAM,SAAS,MAAQ,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,UAAU,OAAS,SAASvF,GAAQ1I,EAAI6L,KAAK,SAASzL,EAAG,QAAQ,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,QAAQ+R,QAAQ,UAAUtR,MAAOgB,EAAQ,KAAEuQ,WAAW,SAAS/P,YAAY,QAAQC,MAAM,CAAEgD,MAAOzD,EAAIyD,OAAQnD,MAAM,CAAC,YAAcN,EAAIwQ,YAAY,aAAexQ,EAAIoO,aAAe,GAAK,eAAe,KAAOpO,EAAIqR,MAAMZ,SAAS,CAAC,MAASzQ,EAAQ,MAAGyI,GAAG,CAAC,MAAQzI,EAAI6Q,YAAY,KAAO,SAASnI,GAAQ,OAAO1I,EAAIiO,MAAM,SAAS,MAAQ,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,UAAU,MAAQ,SAASvF,GAAWA,EAAOsI,OAAOM,YAAqBtR,EAAI6L,KAAKnD,EAAOsI,OAAOhS,aAAagB,EAAQ,KAAEI,EAAG,MAAM,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIuR,MAAM,UAAUvR,EAAIuB,KAAMvB,EAAS,MAAEI,EAAG,MAAM,CAACI,YAAY,aAAaiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIwR,mBAAmBxR,EAAIuB,QAClzE,GAAkB,GCgCD,GAArB,YA2BE,iDACE,oDACA,EAAKsK,KAAO,EAAK7M,OAAS,GAF5B,EA3BF,mFAkCIiB,KAAK4L,KAAO5L,KAAKjB,OAAS,KAlC9B,kCAyCcyS,GACQ,KAAdA,EAAEC,QACJzR,KAAKgO,MAAM,QAAShO,KAAK4L,MAEzB5L,KAAKgO,MAAM,SAAUhO,KAAK4L,QA7ChC,qCAsCI,OAAO5L,KAAKwD,iBAAiBiN,MAAQzQ,KAAKwD,MAAMmK,KAAK,SAAW3N,KAAKwD,UAtCzE,GAAuC,QAErC,gBADC,eAAK,CAAE0I,UAAU,EAAOwF,QAAS,M,mCAIlC,gBADC,eAAK,CAAExF,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,K,qCAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,U,4BAIlC,gBADC,eAAK,CAAExF,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,SAAS,K,oCAWlC,gBADC,eAAM,U,6BAGN,MAnCkB,GAAS,gBAD7B,QACoB,cCjC2d,MCQ5e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCmCM,GAArB,6D,+DACE,EAAApR,SAAmB,EACnB,EAAA6F,MAAgB,GAChB,EAAAC,SAAmB,GACnB,EAAA5C,MAAgB,GAChB,EAAAoM,OAA6C,GAC7C,EAAA7I,QAA2C,CACzCZ,MAAO,GACPC,SAAU,IAEZ,EAAA2J,YAAsB,EAKtB,EAAA1O,eAAiB,GAfnB,4NAkBQrB,KAAKM,QAlBb,wDAqBIN,KAAKwD,MAAQ,GACbxD,KAAK4P,OAAS,GACd5P,KAAKM,SAAU,EAvBnB,kBAyBYN,KAAKgP,OAAO2C,SAAS,aAAc3R,KAAK+G,SAzBpD,OA0BM/G,KAAKgO,MAAM,cA1BjB,qDA4BU,KAAEnK,UAAY,KAAEA,SAAS3H,MAC3B8D,KAAKwD,MAAQ,KAAEK,SAAS3H,KAAKgK,SAAW,GAAe,uBACvDlG,KAAK4P,OAAS,KAAE/L,SAAS3H,KAAK0T,QAE9B5P,KAAKwD,MAAQ,KAAE0C,SAAW,GAAe,uBAhCjD,yBAmCMlG,KAAKM,SAAU,EAnCrB,kOAuCsBsR,EAAmB7S,GAvCzC,gFAwCIiB,KAAK+G,QAAQ6K,GAAa7S,EAxC9B,+GAAuC,QAarC,gBADC,eAAK,CAAE2S,SAAS,K,8CAZE,GAAS,gBAH7B,eAAU,CACT3Q,WAAY,CAAE8Q,UAAA,GAAWC,cAAYC,SAAA,OAElB,cCtDyc,MCQ1d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCGM,GAArB,6D,+DACE,EAAA1Q,eAAiB,GADnB,mFAII,IAAM2Q,EAAWhS,KAAKyO,OAAOlC,MAAMyF,SAC/BA,GAAYhS,KAAKiS,kBAAkBD,GACrCpS,OAAOqC,SAASiQ,KAAOF,EAGzBhS,KAAKmS,QAAQnV,KAAK,KAAKoN,MAAM,gBATjC,wCAY4BhF,GACxB,IACE,IAAMgN,EAAS,IAAIC,IAAIjN,GACvB,OAAOgN,EAAOpQ,SAASG,SAAS,iBAAuC,gBAApBiQ,EAAOpQ,SAC1D,SACA,OAAO,OAjBb,GAAmC,QAAd,GAAK,gBAHzB,eAAU,CACTjB,WAAY,CAAEuR,UAAA,GAAWR,kBAEN,cCtBqc,MCQtd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI/R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACA,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAuBtB,EAAIxC,QAAUwC,EAAIxC,OAAOrB,KAAMiE,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIxC,OAAOrB,KAAKgK,SAAS,UAAU,CAAC/F,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,YAAc,uBAAuB,MAAQN,EAAIsB,eAAe,kBAAkB,cAAe,GAAOmH,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAQgB,EAAIoG,MAAQpH,GAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK,WAAW,CAACN,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,MAAM,CAACA,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+P,YAAY,CAAC/P,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,qBAAqB,KAAKlB,EAAG,MAAM,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIyD,YAAY,IACxkC,GAAkB,GCyCD,GAArB,6D,+DACE,EAAAlD,SAAU,EACV,EAAA6F,MAAQ,GACR,EAAA3C,MAAQ,GACR,EAAAjG,OAAc,KAEd,EAAA8D,eAAiB,GANnB,4NASQrB,KAAKM,QATb,wDAYIN,KAAKM,SAAU,EAZnB,kBAc0B,EAAYqG,eAAe3G,KAAKmG,OAd1D,OAcMnG,KAAKzC,OAdX,OAeMyC,KAAKM,SAAU,EAfrB,qDAiBMN,KAAKM,SAAU,EACfN,KAAKwD,MACH,KAAEK,UAAY,KAAEA,SAAS3H,MAAQ,KAAE2H,SAAS3H,KAAKgK,QAC7C,KAAErC,SAAS3H,KAAKgK,QAChB,KAAEA,SAAW,GAAe,uBArBxC,sHAA4C,QAAvB,GAAc,gBAHlC,eAAU,CACTnF,WAAY,CAAE8Q,UAAA,GAAWC,kBAEN,cC1C8c,MCO/d,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAI/R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACA,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,YAAc,uBAAuB,MAAQN,EAAIsB,eAAe,aAAa,MAAQtB,EAAIoG,MAAM,cAAe,EAAM,MAAQpG,EAAIwS,cAAgBxS,EAAIwS,cAAcpM,MAAQ,MAAMqC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAQgB,EAAIoG,MAAQpH,GAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIsB,eAAe,YAAY,cAAe,EAAM,MAAQtB,EAAIwS,cAAgBxS,EAAIwS,cAAcnM,SAAW,MAAMoC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAQgB,EAAIqG,SAAWrH,GAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIsB,eAAe,kBAAkB,cAAe,EAAM,MAAQtB,EAAIwS,cAAgBxS,EAAIwS,cAAczL,sBAAwB,MAAM0B,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAQgB,EAAI6G,qBAAuB7H,GAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK,WAAW,CAACN,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+P,YAAY,CAAC/P,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,eAAe,KAAKlB,EAAG,MAAM,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIyD,aACvoD,GAAkB,GCwDD,GAArB,6D,+DACE,EAAAlD,SAAU,EACV,EAAAqE,MAAQ,GACR,EAAAwB,MAAQ,GACR,EAAAC,SAAW,GACX,EAAAQ,qBAAuB,GACvB,EAAApD,MAAQ,GACR,EAAA+O,cAAgB,KAEhB,EAAAlR,eAAiB,GATnB,+EAYIrB,KAAK2E,MAAQ3E,KAAKyO,OAAOpK,OAAOM,MAChC3E,KAAKmG,MAA2C,kBAA5BnG,KAAKyO,OAAOlC,MAAMpG,MAAqBnG,KAAKyO,OAAOlC,MAAMpG,MAAQ,KAbzF,6KAiBQnG,KAAKM,QAjBb,wDAoBIN,KAAKM,SAAU,EApBnB,kBAsBY,EAAYuG,cAAc7G,KAAK2E,MAAO3E,KAAKmG,MAAOnG,KAAKoG,SAAUpG,KAAK4G,sBAtBlF,OAuBM5G,KAAKM,SAAU,EACfN,KAAKmS,QAAQnV,KAAK,KAAKoN,MAAM,cAxBnC,qDA0BMpK,KAAKM,SAAU,EACfN,KAAKuS,cAAgB,KAAE1O,UAAY,KAAEA,SAAS3H,MAAQ,KAAE2H,SAAS3H,KAAK0T,OACtE5P,KAAKwD,MACH,KAAEK,UAAY,KAAEA,SAAS3H,MAAQ,KAAE2H,SAAS3H,KAAKgK,QAC7C,KAAErC,SAAS3H,KAAKgK,QAChB,KAAEA,SAAW,GAAe,uBA/BxC,sHAA2C,QAAtB,GAAa,gBAHjC,eAAU,CACTnF,WAAY,CAAE8Q,UAAA,GAAWC,kBAEN,cCzD6c,MCO9d,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAI/R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACA,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAqBtB,EAAc,WAAEI,EAAG,MAAM,CAACJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,4BAA4B,UAAU,CAAClB,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,uBAAuB,MAAQN,EAAIsB,eAAe,aAAa,MAAQtB,EAAIgH,QAAQZ,MAAM,MAAQpG,EAAI6P,OAAOzJ,OAAOqC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,QAAS9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIsB,eAAe,YAAY,MAAQtB,EAAIgH,QAAQX,SAAS,MAAQrG,EAAI6P,OAAOxJ,UAAUoC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,WAAY9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,OAAO,MAAQN,EAAIsB,eAAe,QAAQ,MAAQtB,EAAIgH,QAAQzI,KAAK,MAAQyB,EAAI6P,OAAOtR,MAAMkK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,OAAQ9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,SAAS,MAAQN,EAAIsB,eAAe,YAAY,MAAQtB,EAAIgH,QAAQyL,UAAU,MAAQzS,EAAI6P,OAAO4C,WAAWhK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,YAAa9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,cAAc,MAAQN,EAAIsB,eAAe,iBAAiB,cAAgBtB,EAAIsB,eAAe,gBAAgB,MAAQtB,EAAIgH,QAAQ0L,eAAe,MAAQ1S,EAAI6P,OAAO6C,gBAAgBjK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,iBAAkB9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,OAAO,YAAc,OAAO,MAAQN,EAAIsB,eAAe,cAAc,cAAgBtB,EAAIsB,eAAe,gBAAgB,MAAQtB,EAAIgH,QAAQ2L,YAAY,MAAQ3S,EAAI6P,OAAO8C,aAAalK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,cAAe9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK,WAAW,CAACN,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+P,YAAY,CAAC/P,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,iBAAiB,KAAKlB,EAAG,MAAM,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIyD,YAAY,IACnxF,GAAkB,GCiGD,GAArB,6D,+DACE,EAAAlD,SAAU,EACV,EAAAqS,YAAa,EACb,EAAAnP,MAAQ,GACR,EAAAoM,OAA6C,GAC7C,EAAA7I,QAA2C,CACzCZ,MAAO,GACP7H,KAAM,GACNkU,UAAW,GACXpM,SAAU,GACVqM,eAAgB,GAChBC,YAAa,IAEf,EAAArR,eAAiB,GAbnB,4NAgBQrB,KAAKM,QAhBb,wDAmBIN,KAAKM,SAAU,EAnBnB,SAqBMN,KAAK+G,QAAQD,sBAAwB9G,KAAK+G,QAAQX,SArBxD,SAsBY,EAAYY,SAAShH,KAAK+G,SAtBtC,OAuBM/G,KAAK2S,YAAa,EAvBxB,qDAyBM3S,KAAKwD,MACH,KAAEK,UAAY,KAAEA,SAAS3H,MAAQ,KAAE2H,SAAS3H,KAAKgK,QAC7C,KAAErC,SAAS3H,KAAKgK,QAChB,KAAEA,SAAW,GAAe,uBAElClG,KAAK4P,OAAS,KAAE/L,SAAS3H,KAAK0T,OA9BpC,yBAgCM5P,KAAKM,SAAU,EAhCrB,kOAoCsBsR,EAAmB7S,GApCzC,gFAqCIiB,KAAK+G,QAAQ6K,GAAa7S,EArC9B,+GAA2C,QAAtB,GAAa,gBAHjC,eAAU,CACTgC,WAAY,CAAE+Q,cAAYD,UAAA,OAEP,cClG4c,MCO7d,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAI9R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAAEJ,EAAW,QAAEI,EAAG,UAAU,CAAEJ,EAAc,WAAE,CAACI,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAoBtB,EAAkB,eAAE,CAACI,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,uBAAuBlB,EAAG,SAAS,CAACI,YAAY,SAASiI,GAAG,CAAC,MAAQzI,EAAI6S,aAAa,CAAC7S,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,iBAAiB,CAAEtB,EAAQ,KAAEI,EAAG,IAAI,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,QAAQJ,EAAIuB,MAAOvB,EAAI8S,MAAQ9S,EAAI+S,mBAAoB3S,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,+BAA+BtB,EAAIuB,KAAOvB,EAAI+S,mBAAsc/S,EAAIuB,KAAtb,CAACnB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gCAAgClB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,SAAWN,EAAIgT,uBAAuBvK,GAAG,CAAC,MAAQzI,EAAIiT,qBAAqB,CAACjT,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,kBAAkBtB,EAAImB,GAAG,mBAAmBf,EAAG,SAAS,CAACI,YAAY,OAAOiI,GAAG,CAAC,MAAQzI,EAAI2G,SAAS,CAAC3G,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,qBAA8B,CAAClB,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,YAAY,CAACE,MAAM,CAAC,wBAAyB,GAAOmI,GAAG,CAAC,WAAazI,EAAIqH,kBAAkB,IACv1C,GAAkB,GC4DD,GAArB,6D,+DACE,EAAA9G,SAAU,EACV,EAAAuS,MAAO,EACP,EAAAE,uBAAwB,EACxB,EAAAD,oBAAqB,EACrB,EAAAG,gBAAiB,EAWjB,EAAA5R,eAAiB,GAhBnB,4NAmB6B,iBAArBrB,KAAKyO,OAAOnQ,KAnBpB,gCAoBY0B,KAAKoH,cApBjB,OAsBIpH,KAAKM,SAAU,EAtBnB,mSA2BIN,KAAKM,SAAU,EA3BnB,SA4BUN,KAAKoH,cA5Bf,OA6BIpH,KAAKM,SAAU,EA7BnB,6SAiCU2G,EAASjH,KAAKyO,OAAOpK,OAAO4C,OAC5BC,EAAOlH,KAAKyO,OAAOpK,OAAO6C,KAC1BrE,EAAU7C,KAAKyO,OAAOlC,MAAM1J,SAAW,GACvCsE,EAAYnH,KAAKyO,OAAOlC,MAAMpF,WAAa,GAG7CF,GAAUC,GAA0B,iBAAXrE,GAA4C,kBAAdsE,GAA0BtE,GAAWsE,EAvCpG,uBAyCMnH,KAAK6S,MAAO,EAzClB,0CA4CyB,EAAYzL,YAAYH,EAAQC,EAAMrE,EAASsE,GAAWiD,MAA1D,wDAAgE,WAAMoH,GAAN,mFACzD,MAAtBA,EAAE3N,SAAS5C,SACb,EAAKgS,gBAAiB,GAEE,MAAtBzB,EAAE3N,SAAS5C,OAJoE,gCAK3E,EAAKiS,aALsE,OAOnF,EAAKL,MAAO,EAPuE,yCAAhE,uDA5CzB,UA4CUtV,EA5CV,SAqDQA,GAAUA,EAAOrB,MAAQqB,EAAOrB,KAAK+J,SArD7C,kCAsDYjG,KAAKmS,QAAQ3P,QAAQ,KAtDjC,0CAyDMxC,KAAK6S,MAAO,EAzDlB,oSA8DI7S,KAAK+S,uBAAwB,EA9DjC,kBAgEY,EAAYtL,oBAhExB,OAiEMzH,KAAK6S,MAAO,EACZ7S,KAAK+S,uBAAwB,EAC7B/S,KAAK8S,oBAAqB,EAnEhC,mDAqEM9S,KAAK6S,MAAO,EArElB,mJA0EIjT,OAAOqC,SAASkR,WA1EpB,gLA8EInT,KAAKkT,aA9ET,SA+EUlT,KAAKmS,QAAQ3P,QAAQ,KA/E/B,4GAAyC,QAQvC,gBADC,gBAAM,aAAc,CAAEoM,UAAW,U,kCAIlC,gBADC,gBAAM,OAAQ,CAAEA,UAAW,U,4BAI5B,gBADC,gBAAO,SAAU,CAAEA,UAAW,U,kCAa/B,gBADC,eAAM,e,kCAKN,MA9BkB,GAAW,gBAH/B,eAAU,CACT7N,WAAY,CAAEqS,OAAA,EAAQd,UAAA,GAAWe,MAAA,GAAOvB,kBAErB,cC7D2c,MCO5d,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAI/R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACqQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIuT,aACvI,GAAkB,GCGD,G,WAArB,oCAGE,KAAAC,WAAyB,IAAI,E,kEAM3B,OAHKC,EAAYC,WACfD,EAAYC,SAAW,IAAID,GAEtBA,EAAYC,W,wFAGAC,G,6FACbD,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUqN,KAAKpR,QAAQ,QAASkR,IAC5CrM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BkP,QACAlV,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,+GCVjB,GAArB,6D,+DACE,EAAAoX,QAAU,GADZ,yOAOUtT,KAAK8T,mBAPf,mTAYU9T,KAAK8T,mBAZf,ySAgBI9T,KAAKgP,OAAOnH,OAAO,2BAA4B,GAAe,SAhBlE,SAiB2B,GAAYkM,QAAQ/T,KAAKyJ,mBAjBpD,gBAiBYuK,EAjBZ,EAiBYA,KACRhU,KAAKsT,QAAUU,EAlBnB,4GAAkC,QAIhC,gBADC,gBAAM,oBAAqB,CAAEpF,UAAW,Y,yCAQzC,gBADC,eAAM,sB,yCAGN,MAbkB,GAAI,gBADxB,QACoB,cCbsd,MCQve,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WACb,IAAIqF,EACAlU,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,eAAe,CAACE,MAAM,CAAC,gBAAgBN,EAAImU,aAAa,wBAAwBnU,EAAIoU,oBAAoB,oBAAoBpU,EAAIqU,kBAAkB5L,GAAG,CAAC,iBAAiBzI,EAAIsU,kBAAkB,cAActU,EAAIuU,qBAAqB,mBAAmB,SAAS7L,GAAQ1I,EAAIwU,4BAA6B,GAAM,eAAexU,EAAIyU,wBAAwB,uBAAuB,SAAS/L,GAAQ1I,EAAI0U,0BAA2B,GAAO,gBAAgB,SAAShM,GAAQ,OAAO1I,EAAI2U,eAAe,eAAe,CAACvU,EAAG,MAAM,CAACI,YAAY,eAAeC,MAAM,CAChmB,eAAiBT,EAAI4U,WACtB,CACE,gBAAiB5U,EAAImU,aACrB,uBAAwBnU,EAAI6U,uBAC5B,wBAAyB7U,EAAIoU,oBAC7B,oBAAqBpU,EAAIqU,mBAE3B1S,MAAM,CAAG,wBAA0B3B,EAAI8U,0BAA4B,MAASrM,GAAG,CAAC,UAAYzI,EAAI+U,uBAAuB,cAAc,SAASrM,GAAQ,OAAO1I,EAAI+U,uBAAuBrM,MAAW,CAACtI,EAAG,MAAM,CAACI,YAAY,OAAOC,MAAM,CACrOE,OAAQX,EAAIiP,OAAOzH,MAAMiC,OAAOuL,SAChC,cAAehV,EAAIiV,qBACnB,iBAAqC,YAAnBjV,EAAI4U,WACtB,qBAAyC,gBAAnB5U,EAAI4U,YAC1BjT,MAAM,CAAGuT,SAAWlV,EAAImV,gBAAkB,OAAU,CAAqB,YAAnBnV,EAAI4U,WAA0BxU,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAgBtB,EAA6B,0BAAEI,EAAG,SAAS,CAACI,YAAY,2BAA2BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIoV,2BAA4B,MAAUpV,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,SAAS,CAACiV,IAAI,wBAAwB7U,YAAY,0BAA0BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,mBAAmB,gBAAgBoC,OAAO1D,EAAIoV,2BAA2B,gBAAgB,UAAU,gBAAgB,gCAAgC3M,GAAG,CAAC,MAAQzI,EAAIsV,2BAA2B,CAAClV,EAAG,OAAO,CAACI,YAAY,yBAAyB,CAACJ,EAAGJ,EAAIuV,uBAAuBC,KAAK,CAACC,IAAI,cAAcrV,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIuV,uBAAuBpF,WAAW,GAAG/P,EAAG,gBAAgB,CAACK,MAAM,CAAEiV,OAAQ1V,EAAIoV,8BAA+B,GAAIpV,EAA6B,0BAAEI,EAAG,MAAM,CAACI,YAAY,uBAAuBF,MAAM,CAAC,GAAK,+BAA+B,KAAO,UAAU,aAAaN,EAAIsB,eAAe,qBAAqBtB,EAAIY,GAAIZ,EAAoB,iBAAE,SAASwJ,GAAU,OAAOpJ,EAAG,SAAS,CAACd,IAAIkK,EAASlB,KAAK+M,IAAI,wBAAwBM,UAAS,EAAKlV,MAAM,CAAE8H,OAAQiB,EAASlB,OAAStI,EAAI4V,aAActV,MAAM,CAAC,KAAO,SAAS,KAAO,SAAS,gBAAgBoD,OAAO8F,EAASlB,OAAStI,EAAI4V,cAAcnN,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI6V,sBAAsBrM,EAASlB,SAAS,CAAClI,EAAG,OAAO,CAACI,YAAY,yBAAyB,CAACJ,EAAGoJ,EAASgM,KAAK,CAACC,IAAI,cAAcrV,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGoI,EAAS2G,WAAW,OAAO,GAAGnQ,EAAIuB,SAA6B,gBAAnBvB,EAAI4U,WAA8BxU,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAACJ,EAAG,SAAS,CAACI,YAAY,mCAAmCF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,WAAWmH,GAAG,CAAC,MAAQzI,EAAI8V,wBAAwB,CAAC1V,EAAG,eAAe,GAAGA,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAACJ,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAclB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAsBtB,EAAsB,mBAAEI,EAAG,OAAO,CAACI,YAAY,4BAA4B,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAI+V,oBAAoB,gBAAgB/V,EAAIuB,OAAOvB,EAAIuB,KAAMvB,EAAgB,aAAEI,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACJ,EAAG,SAAS,CAACI,YAAY,qBAAqB,CAACJ,EAAG,MAAM,CAACA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,uBAAuBlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIgW,WAAahW,EAAIgW,WAAWzX,KAAO,SAAS6B,EAAG,SAAS,CAACI,YAAY,gCAAgCF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIiV,sBAAuB,KAAS,CAAC7U,EAAG,cAAc,KAAKA,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAAER,EAAc,WAAEA,EAAIY,GAAIZ,EAA0B,uBAAE,SAASiW,GAAa,OAAO7V,EAAG,iBAAiB,CAACd,IAAI2W,EAAYjO,GAAG1H,MAAM,CAAC,YAAc2V,EAAY,aAAejW,EAAIgW,WAAWvU,SAAS,MAAQ,EAAE,gBAAiB,EAAM,aAAc,EAAK,kBAAoBzB,EAAI0O,OAAOpK,OAAO2R,aAAe,QAAQ7V,EAAG,WAAW,KAAMJ,EAAIkW,mBAAqBlW,EAAI4V,aAAe5V,EAAI0O,OAAOpK,OAAOkF,SAAUpJ,EAAG,UAAU,CAACI,YAAY,aAAaF,MAAM,CAAC,cAAcN,EAAIkW,kBAC3uG,gBAAnBlW,EAAI4U,WACF,cACmB,YAAnB5U,EAAI4U,WACJ,UACA,GACF,MAAMxU,EAAG,WAAW,CAACI,YAAY,eAAeJ,EAAG,MAAM,CAACI,YAAY,cAAciI,GAAG,CAAC,UAAYzI,EAAImW,gBAAgB,GAAInW,EAAwB,qBAAEI,EAAG,SAAS,CAACI,YAAY,0BAA0BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIiV,sBAAuB,MAAUjV,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACJ,EAAG,SAAS,CAACE,MAAM,CAAC,iBAAoC,WAAnBN,EAAI4U,YAA8C,gBAAnB5U,EAAI4U,WAA6B,qBAAwC,gBAAnB5U,EAAI4U,WAA6B,mBAAmB5U,EAAIoW,sBAAsB3N,GAAG,CAAC,qBAAqBzI,EAAIqW,qBAAqB,oBAAoBrW,EAAIsW,sBAAsB,wBAAwB,SAAS5N,GAAQ1I,EAAIuW,2BAA6B7N,MAAWtI,EAAG,mBAAmBA,EAAG,0BAA0B,CAACE,MAAM,CAAC,QAAUN,EAAI0U,0BAA0BjM,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI0U,0BAA2B,MAAUtU,EAAG,sBAAsB,CAACE,MAAM,CAAC,QAAUN,EAAIwU,2BAA2B,cAAcxU,EAAIwW,WAAa,KAAK,UAAYxW,EAAIiP,OAAOzH,MAAMuD,UAAU8C,MAAMpF,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIwU,4BAA6B,GAAO,IAAMxU,EAAIyW,0BAA0B,KAAOzW,EAAI0W,2BAA2B,KAAO1W,EAAI2W,mBAAmB,OAAS3W,EAAI4W,kBAAkBxW,EAAG,WAA+B,cAAnBJ,EAAI4U,WAA4BxU,EAAG,kBAAkB,CAACI,YAAY,gBAAgBF,MAAM,CAAC,UAAYN,EAAIiP,OAAOzH,MAAMuD,UAAU8C,MAAMpF,GAAG,CAAC,KAAOzI,EAAI6W,mBAAmB,OAAS7W,EAAI4W,kBAAkB5W,EAAIuB,KAAyB,aAAnBvB,EAAI4U,WAA2BxU,EAAG,UAAU,CAACI,YAAY,iCAAiC,CAAER,EAA0B,uBAAEI,EAAG,SAAS,CAACI,YAAY,yBAAyBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAI8W,uBAAuB,CAAC1W,EAAG,OAAO,CAACI,YAAY,8BAA8BF,MAAM,CAAC,cAAc,SAAS,CAACF,EAAG,eAAe,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,uBAAuBtB,EAAIuB,KAAKnB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgBlB,EAAG,WAAW,CAACE,MAAM,CAAC,yBAAyBN,EAAI+W,2BAA2B,GAAG/W,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,UAAUC,MAAM,CAAE,yBAA0BT,EAAIgX,mBAAoBvO,GAAG,CAAC,MAAQzI,EAAIiX,uBAAuB,CAAC7W,EAAG,MAAM,CAACI,YAAY,gBAAgBC,OAAQyT,EAAO,GAAIA,EAAKlU,EAAIiP,OAAOzH,MAAMiC,OAAOuL,SAAWhV,EAAIiP,OAAOzH,MAAMiC,OAAOyN,UAAY,SAAWlX,EAAIwW,WAAaxW,EAAIwW,UAAUW,KAAMjD,IAAQ,CAAIlU,EAAIwW,WAAaxW,EAAIwW,UAAUW,KAAoBnX,EAAIuB,KAAjBnB,EAAG,UAAoBJ,EAAqB,kBAAEI,EAAG,aAAa,CAACE,MAAM,CAAC,QAAU,gBAAgB,CAAEN,EAAIwW,WAAaxW,EAAIwW,UAAUW,KAAM/W,EAAG,cAAc,CAACiV,IAAI,gBAAgBrV,EAAIuB,MAAM,GAAIvB,EAAIwW,WAAaxW,EAAIwW,UAAUW,KAAM/W,EAAG,cAAc,CAACiV,IAAI,gBAAgBrV,EAAIuB,MAAM,MAAM,GAAKvB,EAAImU,cAAmC,gBAAnBnU,EAAI4U,YAAiC5U,EAAIuW,2BAAkLvW,EAAIuB,KAA1JnB,EAAG,mBAAmB,CAACE,MAAM,CAAC,OAASN,EAAIoX,qBAAqB,sBAAsBpX,EAAIqX,uBAAuB5O,GAAG,CAAC,SAAWzI,EAAI2U,kBAA4B3U,EAAoB,iBAAEI,EAAG,uBAAuB,CAACE,MAAM,CAAC,QAAUN,EAAIsX,4BAA4B,aAAatX,EAAIuX,sBAAsB,gBAAgBvX,EAAIwX,yBAAyB,gBAAgBxX,EAAIyX,yBAAyB,iBAAiBzX,EAAI0X,qBAAqB/a,OAAO,eAAeqD,EAAI2X,wBAAwB,WAAW3X,EAAI4X,oBAAoB,MAAQ5X,EAAIiP,OAAOzH,MAAMiC,OAAOoO,kBAAkB,WAAW7X,EAAIiP,OAAOzH,MAAMiC,OAAOqO,oBAAoB,aAAa9X,EAAIiP,OAAOzH,MAAMiC,OAAOyN,UAAU,oBAAoBlX,EAAIiP,OAAOzH,MAAMiC,OAAOsO,2BAA2BtP,GAAG,CAAC,SAAW,SAASC,GAAQ,OAAO1I,EAAIgY,sBAAsB,IAAI,KAAO,SAAStP,GAAQ,OAAO1I,EAAIgY,qBAAqB,IAAI,KAAOhY,EAAIiY,qBAAqB,kBAAkBjY,EAAIkY,6BAA6B,MAAQlY,EAAImY,wBAAwB,WAAWnY,EAAIoY,uBAAuB,aAAapY,EAAIqY,aAAa,mBAAmBrY,EAAIsY,oCAAoCtY,EAAIuB,MAAM,GAAGnB,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,YAAY,QAAUtB,EAAIuY,mBAAmB9P,GAAG,CAAC,MAAQzI,EAAIwY,eAAe,CAACpY,EAAG,aAAa,IAAI,IACj/H,GAAkB,GCtBlB,I,kDAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,SAASC,MAAM,CACjI,gBAAiBT,EAAImU,aACrB,wBAAyBnU,EAAIoU,oBAC7B,oBAAqBpU,EAAIqU,mBACxB,CAAGrU,EAAIqU,iBAAufrU,EAAIuB,KAAzenB,EAAG,SAAS,CAACE,MAAM,CAAC,gBAAgBN,EAAImU,cAAc1L,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,mBAAmB,cAAc,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,gBAAgB,mBAAmB,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,qBAAqB,eAAe,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,iBAAiB,uBAAuB,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,yBAAyB,gBAAgB,SAASvF,GAAQ,OAAO1I,EAAIiO,MAAM,qBAA8B7N,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,WAAWJ,EAAIyP,GAAG,YAAY,IAAI,KAC/kB,GAAkB,GCLlB,GAAS,WAAa,IAAIzP,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,SAASC,MAAM,CAAE,gBAAiBT,EAAImU,eAAgB,CAAC/T,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACJ,EAAG,cAAc,CAACI,YAAY,YAAYF,MAAM,CAAC,GAAKN,EAAIyY,SAASzK,SAAS,CAAC,MAAQ,SAAStF,GAAQ,OAAO1I,EAAI0Y,YAAYhQ,MAAW,CAAC1I,EAAImB,GAAG,6BAA6B,GAAInB,EAAIiP,OAAOzH,MAAMiC,OAAe,SAAErJ,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,SAAS,CAACI,YAAY,yBAAyBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAImU,cAAgBnU,EAAI2Y,kBAC3iB3Y,EAAIsB,eAAe,sBACnBtB,EAAIsB,eAAe,oBAAoBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAImU,aAAenU,EAAI4Y,oBAAsB5Y,EAAI6Y,aAAY,MAAU,CAACzY,EAAG,OAAO,CAACI,YAAY,uBAAuB,CAAER,EAAgB,aAAEI,EAAG,cAAcA,EAAG,YAAYA,EAAG,OAAO,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwB,KAAMtB,EAAgB,aAAEI,EAAG,MAAM,CAACI,YAAY,uBAAuB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIgW,WAAahW,EAAIgW,WAAWzX,KAAO,OAAOyB,EAAIuB,KAAMvB,EAAgB,aAAEI,EAAG,SAAS,CAACI,YAAY,8CAA8CF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,qBAAqBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,qBAAqB,CAAC7N,EAAG,aAAa,GAAGJ,EAAIuB,KAAMvB,EAAgB,aAAEI,EAAG,SAAS,CAACI,YAAY,8CAA8CF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,iBAAiBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,kBAAkB,CAAC7N,EAAG,eAAe,GAAGJ,EAAIuB,KAAMvB,EAAgB,aAAEI,EAAG,SAAS,CAACI,YAAY,iEAAiEC,MAAM,CAAE8H,OAAQvI,EAAI8Y,sBAAuBxY,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,eAAe,gBAAgBoC,OAAO1D,EAAI8Y,sBAAsB,gBAAgB,QAAQrQ,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI8Y,sBAAwB9Y,EAAI8Y,wBAAwB,CAAC1Y,EAAG,aAAa,GAAGJ,EAAIuB,KAAMvB,EAAwB,qBAAEI,EAAG,SAAS,CAACI,YAAY,8BAA8BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI8Y,sBAAuB,MAAU9Y,EAAIuB,KAAMvB,EAAwB,qBAAEI,EAAG,MAAM,CAACI,YAAY,qBAAqBF,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQzI,EAAI+Y,gBAAgB,CAAC3Y,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACJ,EAAG,iBAAiB,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmBlB,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQzI,EAAIgZ,kBAAkB,CAAC5Y,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACJ,EAAG,OAAO,CAACI,YAAY,sBAAsBC,MAAMT,EAAIiP,OAAOzH,MAAMiC,OAAOyN,cAAc9W,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoBlB,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQzI,EAAIiZ,mBAAmB,CAAC7Y,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACJ,EAAG,qBAAqB,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwBtB,EAAIuB,KAAOvB,EAAImU,aAA0cnU,EAAIuB,KAAhcnB,EAAG,SAAS,CAACI,YAAY,yBAAyBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,iBAAiBmH,GAAG,CAAC,MAAQzI,EAAIkZ,qBAAqB,CAAC9Y,EAAG,OAAO,CAACI,YAAY,uBAAuB,CAACJ,EAAG,oBAAoBA,EAAG,OAAO,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiB,kBAAkBlB,EAAG,gBAAgB,CAACK,MAAM,CAAEiV,OAAQ1V,EAAIiP,OAAOzH,MAAMiC,OAAO0P,8BAA+B,IAAI,OAAgBnZ,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,SAAS,CAACI,YAAY,gBAAgBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIoZ,oBAAqB,KAAQ,CAACpZ,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAI6J,KAAK1N,KAAKuW,gBAAkB1S,EAAI6J,KAAK1N,KAAKoC,KAAO,IAAMyB,EAAI6J,KAAK1N,KAAKsW,WAAW,YAAYrS,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIqZ,mBAAoB,KAAQ,CAACjZ,EAAG,eAAe,KAAKA,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,WAAW,QAAUtB,EAAIoZ,oBAAoB3Q,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIoZ,oBAAqB,KAAS,CAAChZ,EAAG,YAAY,GAAGA,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,oBAAoB,QAAUtB,EAAIqZ,kBAAkB,UAAW,GAAM5Q,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIqZ,mBAAoB,KAAS,CAACjZ,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,SAAS,CAACI,YAAY,mBAAmBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIqZ,mBAAoB,KAAS,CAACrZ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,cAAclB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2G,YAAY,CAAC3G,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmB,IACzkI,GAAkB,GCFD,IACbE,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,6BAA6B,OAAS,eAAe,iBAAiB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,sHAAsH,KAAO,uBCvBnR,GAAS,WAAa,IAAIN,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,MAAM,CAACiV,IAAI,SAAS7U,YAAY,UAAUF,MAAM,CAAC,KAAO,SAAS,aAAa,OAAO,kBAAkBN,EAAIsZ,QAAQ,SAAW,MAAM7Q,GAAG,CAAC,QAAUzI,EAAIuZ,YAAY,CAACnZ,EAAG,MAAM,CAACI,YAAY,QAAQC,MAAM,CAAE+Y,SAAUxZ,EAAIwZ,WAAY,CAACpZ,EAAG,SAAS,CAACI,YAAY,KAAKF,MAAM,CAAC,KAAO,SAAS,SAAW,KAAK,cAAc,QAAQmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAa7N,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,SAAS,CAACI,YAAY,iBAAiBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,oBAAoB,GAAGA,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,KAAK,CAACI,YAAY,QAAQF,MAAM,CAAC,GAAKN,EAAIsZ,UAAU,CAACtZ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIqB,UAAUrB,EAAIyP,GAAG,YAAY,SAASzP,EAAIuB,MACr2B,GAAkB,GCAD,I,UAAA,CACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,4QAA4Q,KAAO,wBCelUmZ,GAAe,EAOE,GAArB,6D,+DACE,EAAAH,QAAA,0BAA6BG,IAI7B,EAAAnY,eAAiB,GALnB,+EAiBQrB,KAAKyZ,SACPzZ,KAAK0Z,gBAlBX,sCAuBI1Z,KAAK2Z,iBAvBT,sCA2BkBF,GACVA,EACFzZ,KAAK0Z,cAEL1Z,KAAK2Z,iBA/BX,oCAmCa,WACT3Z,KAAK4Z,kBAAoBvX,SAASwX,cAClC7Z,KAAK8Z,UAAU,WACb,IAAMC,EAAS,EAAKC,MAAMD,OACtBA,GACFA,EAAOE,YAxCf,qCA8CQja,KAAK4Z,mBAAqBvX,SAASiC,KAAK4V,SAASla,KAAK4Z,oBACxD5Z,KAAK4Z,kBAAkBK,QAEzBja,KAAK4Z,uBAAoB3O,IAjD7B,gCAoDYkP,GACR,GAAkB,WAAdA,EAAM9a,IAGR,OAFA8a,EAAMC,sBACNpa,KAAKgO,MAAM,SAGb,GAAkB,QAAdmM,EAAM9a,IAAV,CAGA,IAAM0a,EAAS/Z,KAAKga,MAAMD,OACpBM,EAAYN,EACbtJ,MAAM6J,KACLP,EAAOQ,iBACL,8IAEgB3N,OAClB,SAAA4N,GAAO,OACLA,EAAQC,UAAY,GACoB,SAAxCD,EAAQE,aAAa,gBACI,OAAzBF,EAAQG,eAEZ,GACJ,GAAKN,EAAU3d,OAAf,CAIA,IAAMke,EAAQP,EAAU,GAClBQ,EAAOR,EAAUA,EAAU3d,OAAS,GACtCyd,EAAMW,UAAYzY,SAASwX,gBAAkBe,GAC/CT,EAAMC,iBACNS,EAAKZ,SACKE,EAAMW,UAAYzY,SAASwX,gBAAkBgB,IACvDV,EAAMC,iBACNQ,EAAMX,cAVNE,EAAMC,sBA3EZ,GAAqC,QAQnC,gBADC,eAAK,CAAElO,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAclB,gBADC,eAAM,Y,+BAON,MAjCkB,GAAO,gBAL3B,eAAU,CACTnL,WAAY,CACVga,gBAAA,OAGiB,cC7Cyd,MCQ1e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIhb,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,WAAW,CAAER,EAAI6J,KAAoB,gBAAEzJ,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAI6J,KAAKoR,wBAAwBjb,EAAIuB,KAAKnB,EAAG,KAAK,CAACI,YAAY,OAAQR,EAAY,SAAEI,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,iBAAiB,MAAQtB,EAAI6J,KAAK6I,eAAe,MAAQ1S,EAAI6P,OAAO6C,eAAe,cAAe,GAAOjK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,iBAAkB9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,QAAQ,MAAQtB,EAAI6J,KAAKtL,KAAK,MAAQyB,EAAI6P,OAAOtR,KAAK,cAAe,GAAOkK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,OAAQ9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,YAAY,MAAQtB,EAAI6J,KAAK4I,UAAU,MAAQzS,EAAI6P,OAAO4C,UAAU,cAAe,GAAOhK,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,YAAa9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,KAAK,CAACI,YAAY,OAAOJ,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,MAAQN,EAAIsB,eAAe,aAAa,MAAQtB,EAAI6J,KAAKzD,MAAM,KAAOpG,EAAIsB,eAAe,mBAAmB,MAAQtB,EAAI6P,OAAOzJ,MAAM,cAAe,GAAOqC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,QAAS9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,KAAK,CAACI,YAAY,OAAOJ,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIsB,eAAe,eAAe,MAAQtB,EAAI6P,OAAOxJ,SAAS,cAAe,GAAOoC,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,WAAY9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAW,MAAQN,EAAIsB,eAAe,qBAAqB,KAAOtB,EAAIsB,eAAe,oCAAoC,MAAQtB,EAAI6P,OAAO9I,sBAAsB,cAAe,GAAO0B,GAAG,CAAC,OAAS,SAAUzJ,GAAS,OAAOgB,EAAI8P,cAAc,wBAAyB9Q,IAAU,MAAQ,SAAS0J,GAAQ,OAAO1I,EAAI+P,cAAc,GAAG3P,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,SAAS,CAACI,YAAY,mBAAmBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIkb,UAAW,KAAS,CAAClb,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,cAAclB,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+P,YAAY,CAAC/P,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,aAAa,KAAKlB,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI6J,KAAK6I,qBAAqBtS,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAYlB,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI6J,KAAKtL,WAAW6B,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgBlB,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI6J,KAAK4I,gBAAgBrS,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIkb,UAAW,KAAQ,CAAClb,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsB,gBAAgBlB,EAAG,KAAK,CAACI,YAAY,OAAOJ,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI6J,KAAKzD,YAAYhG,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIkb,UAAW,KAAQ,CAAClb,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,gBAAgBlB,EAAG,KAAK,CAACI,YAAY,OAAOJ,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIkb,UAAW,KAAQ,CAAClb,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmB,qBACrvI,GAAkB,GC6ID,GAArB,6D,+DACE,EAAA4Z,UAAoB,EAQpB,EAAAlU,QAA2C,GAE3C,EAAA6I,OAA6C,GAE7C,EAAAvO,eAAiB,GAbnB,+EAeS,WACLrB,KAAK+G,QAAU,GACfpK,OAAOgQ,QAAQ3M,KAAK4J,MACjBgD,OAAO,uCAAEgF,EAAF,WAA+B,OAAdA,IACxB5F,QAAQ,YAAuB,2BAArB4F,EAAqB,KAAV7S,EAAU,KAC9B,EAAKgI,QAAQ6K,GAAa7S,MApBlC,iMA0BYgI,EAAqC,GAC3CpK,OAAOgQ,QAAQ3M,KAAK+G,SACjB6F,OAAO,uCAAa7N,GAAb,mBAA0BA,IACjCiN,QAAQ,YAAuB,2BAArB4F,EAAqB,KAAV7S,EAAU,KAC9BgI,EAAQ6K,GAAa7S,IA9B/B,SAgCyB,GAAYmc,WAAWnU,GAhChD,OAgCY6C,EAhCZ,OAiCM5J,KAAKmb,QAAQvR,GACb5J,KAAKib,UAAW,EAlCtB,qDAoCMjb,KAAK4P,OAAS,KAAE/L,SAAS3H,KAAK0T,OApCpC,+MAwCsBgC,EAAmB7S,GAxCzC,gFAyCIiB,KAAK+G,QAAQ6K,GAAa7S,EAzC9B,+GAAqC,QAInC,gBADC,gBAAM,OAAQ,CAAE6P,UAAW,U,4BAI5B,gBADC,gBAAS,MAAO,CAAEA,UAAW,U,+BANX,GAAO,gBAH3B,eAAU,CACT7N,WAAY,CAAE8Q,UAAA,OAEK,cC9Iuc,MCQxd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QClBM,IACbtQ,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,IAAI,KAAO,OAAO,MAAQ,8BAA+BxB,MAClGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,eAAe,OAAS,eAAe,iBAAiB,gBCtBtF,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,KAAK,EAAI,KAAK,MAAQ,KAAK,OAAS,KAAK,GAAK,MAAM,OAAS,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8CAA8C,OAAS,eAAe,iBAAiB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,WAAW,OAAS,uBCtB/Q,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,MAAQ,8BAA+BxB,MACrFuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,29CAA29C,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,2BAA2B,OAAS,uBCtB5kD,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,QAASxB,MAC9DuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,+EAA+E,OAAS,eAAe,iBAAiB,gBCtBtJ,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,MAAOxB,MAChDuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,yCAAyC,OAAS,eAAe,iBAAiB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,IAAI,EAAI,IAAI,MAAQ,IAAI,OAAS,IAAI,GAAK,KAAK,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,IAAI,EAAI,IAAI,MAAQ,IAAI,OAAS,IAAI,GAAK,KAAK,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,IAAI,EAAI,KAAK,MAAQ,IAAI,OAAS,IAAI,GAAK,KAAK,KAAO,uBCtBpY,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,gbAAgb,KAAO,uBCtBrd,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BxB,MAC9FuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,6FAA6F,OAAS,eAAe,eAAe,MAAM,iBAAiB,QAAQ,kBAAkB,gBCtBnN,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BxB,MAC9FuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,IAAI,GAAK,KAAK,EAAI,MAAM,KAAO,kBAAkBF,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,MAAM,KAAO,kBAAkBF,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,EAAI,MAAM,KAAO,uBCvBrO+a,GAAsB,eACtBC,GAA2B,GAIZ,G,mHACIC,EAAmBC,EAAoBC,GAC5D,IAAMC,EAAQC,EAAyBC,WAAWH,GAC5CI,EAAYF,EAAyBG,UAAUN,EAAY,IAIjE,OAHIK,GAAaH,EAAMA,EAAM/e,OAAS,KAAOkf,GAC3CH,EAAMze,KAAK4e,GAENF,EAAyBG,UAAUP,EAAWG,EAAM3b,OAAOub,O,qCAG9CG,GACpB,IAAMC,EAAQC,EAAyBC,WAAWH,GAC5CM,EAAcL,EAAMM,MAC1B,OAAOD,EAAcJ,EAAyBG,UAAUC,EAAaL,GAAS,K,kCAG7DD,GACjB,OAAOE,EAAyBC,WAAWH,GAAY9e,OAAS,I,iCAGxCqC,GACxB,IAAMid,EAAMvL,MAAMC,QAAQ3R,GAASA,EAAM,GAAKA,EAC9C,IAAKid,GAAsB,kBAARA,EACjB,MAAO,GAET,IACE,IAAM5J,EAASpN,KAAKiX,MAAMD,GAC1B,OAAOvL,MAAMC,QAAQ0B,GACjBA,EAAOxF,OAAO,SAAAjB,GAAI,MAAoB,kBAATA,GAAqBA,EAAKuQ,WAAW,OAASvQ,EAAKuQ,WAAW,QAC3F,GACJ,MAAO1Y,GACP,MAAO,M,gCAIc4B,EAAaqW,GACpC,IAAKrW,IAAQA,EAAI8W,WAAW,MAAQ9W,EAAI8W,WAAW,MACjD,MAAO,GAET,IAAMC,EAAY/W,EAAIgX,QAAQ,KACxBlV,EAAOiV,GAAa,EAAI/W,EAAItF,MAAMqc,GAAa,GAC/CE,EAAcF,GAAa,EAAI/W,EAAItF,MAAM,EAAGqc,GAAa/W,EACzDkX,EAAaD,EAAYD,QAAQ,KACjCG,EAAOD,GAAc,EAAID,EAAYvc,MAAM,EAAGwc,GAAcD,EAC5D9P,EAAQ,IAAIO,gBAAgBwP,GAAc,EAAID,EAAYvc,MAAMwc,EAAa,GAAK,IACpFb,EAAM/e,OACR6P,EAAMtE,IAAImT,GAAqBpW,KAAKC,UAAUwW,IAE9ClP,EAAMhC,OAAO6Q,IAEf,IAAMoB,EAAcjQ,EAAMM,WAC1B,gBAAU0P,GAAV,OAAiBC,EAAc,IAAH,OAAOA,GAAgB,IAAnD,OAAwDtV,O,+jBC0G5D,IAAqB,GAArB,6D,+DACE,EAAA5G,SAAmB,EAEnB,EAAAe,eAAiB,GA6BjB,EAAA8X,oBAA8B,EAE9B,EAAAC,mBAA6B,EAE7B,EAAAP,sBAAgC,EApClC,mFA2DI7Y,KAAK4Y,aAAY,GACb5Y,KAAKyc,gBACPzc,KAAK0c,YAAY1c,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,IAEpEhJ,KAAK0c,YAAY,MA/DvB,kMAqEY1c,KAAKkT,aArEjB,OAsEMlT,KAAKmS,QAAQnV,KAAK,UAAUoN,MAAM,cAtExC,2MA6EI,IAAMuS,EAAmB,GAAyBC,eAAe5c,KAAKyO,OAAOlC,MAC1EsQ,cACH,GAAIF,EAGF,OAFA3c,KAAK6Y,sBAAuB,OAC5B7Y,KAAKmS,QAAQnV,KAAK2f,GAAkBvS,MAAM,cAI5C,GADApK,KAAK4Y,aAAY,GACsB,kBAA5B5Y,KAAKyO,OAAOlC,MAAMA,OAAsBvM,KAAKyO,OAAOlC,MAAMA,MAAO,CAC1E,IAAMA,EAAQ,MAAKvM,KAAKyO,OAAOlC,cACxBA,EAAM3L,aACN2L,EAAMmB,iBACNnB,EAAMuQ,QACb,IAAMrQ,EAAe,IAAIK,gBAOzB,OANAnQ,OAAOgQ,QAAQJ,GAAOP,QAAQ,YAAkB,2BAAhB1N,EAAgB,KAAVS,EAAU,KACzB,kBAAVA,GACT0N,EAAaxE,IAAI3J,EAAMS,UAG3BiB,KAAKmS,QAAQnV,KAAb,WAAsBgD,KAAKyO,OAAOpK,OAAOkF,SAAzC,mBAA4DkD,EAAaI,aAAczC,MAAM,cAG/F,IAAMmS,EAAOvc,KAAKyO,OAAO8N,KACtBQ,MAAM,KACNjd,MAAM,GAAI,GACV6N,KAAK,KACR3N,KAAKmS,QAAQnV,KAAKuf,GAAQ,KAAKnS,MAAM,gBAvGzC,2CA2GIpK,KAAKgO,MAAM,wBACXhO,KAAKgd,0BA5GT,sCAgHIhd,KAAK6Y,sBAAuB,EAC5B7Y,KAAKgO,MAAM,sBAjHf,wCAqHIhO,KAAK6Y,sBAAuB,EAC5B7Y,KAAKgO,MAAM,kBAtHf,yCA0HIhO,KAAK6Y,sBAAuB,EAC5B7Y,KAAKgO,MAAM,mBA3Hf,iCAuCI,OAAOhO,KAAKid,aAAgBjd,KAAKkd,oBAAsBld,KAAKkd,mBAAmBvT,OAvCnF,sCA2CI,MAAyB,qBAAX/J,QAA0BA,OAAOud,YAAc,OA3CjE,wCA+CI,OAAO,GAAyBC,YAAYpd,KAAKyO,OAAOlC,MAAMsQ,gBA/ClE,8BAmDI,IAAK7c,KAAKyc,gBACR,MAAO,IAET,IAAMlT,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,GACpE,iBAAWO,EAAX,gBAvDJ,GAAoC,QAMlC,gBADC,eAAK,CAAE2C,UAAU,EAAOwF,SAAS,K,oCAIlC,gBADC,gBAAO,cAAe,CAAE9C,UAAW,gB,mCAIpC,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAO,SAAU,CAAEA,UAAW,U,kCAI/B,gBADC,gBAAM,S,4BAIP,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAS,cAAe,CAAEA,UAAW,Y,mCAItC,gBADC,gBAAS,cAAe,CAAEA,UAAW,gB,mCAItC,gBADC,gBAAS,wBAAyB,CAAEA,UAAW,Y,6CA7B7B,GAAM,gBAf1B,eAAU,CACT7N,WAAY,CACVsc,QAAA,GACAC,QAAA,GACAC,WAAA,GACAC,SAAA,GACAC,SAAA,GACAC,WAAA,GACAC,aAAA,GACAC,SAAA,GACAC,WAAA,GACAC,iBAAA,GACAC,cAAA,OAGiB,cClKsc,MCQvd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIhe,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,WAAW,CAACR,EAAIY,GAAIZ,EAAa,UAAE,SAASwJ,GAAU,OAAOpJ,EAAG,SAAS,CAACd,IAAIkK,EAASlB,KAAK9H,YAAY,WAAWC,MAAM,CAAE8H,OAAQvI,EAAIiP,OAAOzH,MAAMyW,WAAWzU,WAAaA,EAASlB,MAAOhI,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIke,eAAe1U,EAASlB,SAAS,CAAClI,EAAGoJ,EAASgM,KAAK,CAACC,IAAI,eAAe,KAAKrV,EAAG,MAAM,CAACI,YAAY,cAAcJ,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIme,iBAAiB,CAAC/d,EAAG,iBAAiB,GAAGA,EAAG,SAAS,CAACI,YAAY,WAAWiI,GAAG,CAAC,MAAQzI,EAAIoe,WAAW,CAAChe,EAAG,aAAa,IAAI,IACvqB,GAAkB,GCAD,IACboB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,kTAAkT,OAAS,uBCtBzV,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BxB,MAC9FuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,yCAAyC,OAAS,eAAe,eAAe,OAAO,kBAAkB,gBCtBvI,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,0/BAA0/B,OAAS,uBCtBjiC,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,mwBAAmwB,OAAS,uBCtB1yB,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,GAAK,IAAI,KAAO,SAAS,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,2GAA2GF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8TAA8T,KAAO,eAAe,KAAO,aAAaF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,4zBAA4zB,KAAO,uBCtB54C,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,GAAK,IAAI,KAAO,SAAS,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,2GAA2GF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8TAA8T,KAAO,eAAe,KAAO,aAAaF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,oOAAoO,KAAO,uBCtBpzB,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,GAAK,IAAI,KAAO,SAAS,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,2GAA2GF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8TAA8T,KAAO,eAAe,KAAO,aAAaF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,mcAAmc,KAAO,uBC6BnhC,GAArB,sMA4BiBkJ,GACbvJ,KAAK4Y,aAAY,GACjB5Y,KAAK0c,YAAYnT,KA9BrB,iCAkCIvJ,KAAKgP,OAAOnH,OAAO,gBACnB7H,KAAKgP,OAAOnH,OAAO,2BAA4B,SAC/C7H,KAAKgP,OAAOnH,OAAO,2BAA4B,GAAe,SAC9D7H,KAAKmS,QAAQnV,KAAK,WArCtB,gCAWI,OAAOiM,GAAU4E,IAAI,SAAAxF,GACnB,IAAIkN,EACJ,OAAQlN,GACN,KAAKQ,GACH0M,EAAO,GACP,MACF,KAAKzM,GACHyM,EAAO,GACP,MACF,KAAKxM,GACHwM,EAAO,GACP,MAEJ,MAAO,CAAElN,OAAMkN,cAxBrB,GAAqC,QAEnC,gBADC,gBAAS,cAAe,CAAE3G,UAAW,Y,mCAItC,gBADC,gBAAS,cAAe,CAAEA,UAAW,gB,mCAItC,gBADC,gBAAS,SAAU,CAAEA,UAAW,c,sCAPd,GAAO,gBAR3B,eAAU,CACT7N,WAAY,CACVqd,SAAA,GACAT,aAAA,GACAU,aAAA,GACAC,SAAA,OAGiB,cCpDuc,MCQxd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCWA,IACbvd,WAAY,CAAEwd,OAAA,GAAQC,QAAA,IACtBC,MAAO,CACLvK,aAAc,CACZ9C,KAAMsN,QACNhN,SAAS,GAEXyC,oBAAqB,CACnB/C,KAAMsN,QACNhN,SAAS,GAEX0C,iBAAkB,CAChBhD,KAAMsN,QACNhN,SAAS,KC3Ckd,MCQ7d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI3R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,OAAOC,MAAM,CAC/Hme,KAAM5e,EAAIiP,OAAOzH,MAAMiC,OAAOuL,UAAkD,SAAtChV,EAAIiP,OAAOzH,MAAMiC,OAAOyN,YACjE,CAAClX,EAAIY,GAAIZ,EAAIiP,OAAOzH,MAAMsH,KAAS,KAAE,SAASzG,EAAIxH,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAIuB,EAAMP,MAAM,CAAC,KAAO+H,EAAI9J,MAAQyB,EAAIsB,eAAe,UAAU,KAAO+G,EAAI8O,KAAK,OAAS9O,EAAIE,QAAQE,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI6e,WAAWhe,EAAOwH,IAAM,OAAS,SAASK,GAAQ,OAAO1I,EAAI8e,YAAYje,SAAaT,EAAG,SAAS,CAACI,YAAY,sBAAsBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiP,OAAOnH,OAAO,mBAAmB,CAAC1H,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,aAAa,MAAM,IAChgB,GAAkB,GCHlB,GAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,MAAMC,MAAM,CAC9HT,EAAI+e,UACJ/e,EAAIuI,OAAS,SAAW,GACxBvI,EAAIiP,OAAOzH,MAAMiC,OAAOuL,UAAkD,SAAtChV,EAAIiP,OAAOzH,MAAMiC,OAAOyN,UAAuB,OAAS,IAC5FzO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,MAAM,CAACI,YAAY,YAAY,CAAER,EAAY,SAAEI,EAAG,WAAW,CAACI,YAAY,kBAAkBR,EAAIuB,KAAKvB,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIzB,MAAM,WAAW,KAAK6B,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOsW,kBAAyBhf,EAAIiO,MAAM,aAAa,CAAC7N,EAAG,cAAc,MAC5Z,GAAkB,GCJD,IACboB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,4PAA4P,KAAO,uBCSjS,GAArB,gMAcI,OAAOL,KAAKkX,MAAQlX,KAAKkX,KAAK8H,SAAS,eAd3C,GAAiC,QAE/B,gBADC,eAAK,CAAE9S,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,M,iCAIlC,gBADC,eAAK,CAAExF,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAVC,GAAG,gBAHvB,eAAU,CACTnL,WAAY,CAAEke,UAAA,GAAWC,SAAA,OAEN,cChCqd,MCQte,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QClBM,IACb3d,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,iBAAiB,OAAS,eAAe,iBAAiB,gBCaxF,GAArB,6D,+DAUE,EAAAgB,eAAiB,GAVnB,gFAYaT,EAAewH,GACpBA,EAAIE,SAGRtI,KAAKmf,aAAave,GACdwH,EAAIE,QAAUF,EAAI8O,MAAQlX,KAAKyO,OAAO2Q,WAAahX,EAAI8O,MACzDlX,KAAKmS,QAAQnV,KAAKoL,EAAI8O,SAlB5B,kCAsBctW,GACVZ,KAAKqf,SAASze,GACd,IAAM2V,EAAYvW,KAAK6O,KAAKyQ,KAAK,SAAAlX,GAAG,OAAIA,EAAIE,SACxCiO,GAAaA,EAAUW,MACzBlX,KAAKmS,QAAQnV,KAAKuZ,EAAUW,UA1BlC,GAAqC,QAEnC,gBADC,gBAAM,OAAQ,CAAEtI,UAAW,U,4BAI5B,gBADC,gBAAS,WAAY,CAAEA,UAAW,U,gCAInC,gBADC,gBAAS,eAAgB,CAAEA,UAAW,U,oCAPpB,GAAO,gBAH3B,eAAU,CACT7N,WAAY,CAAEwe,IAAA,GAAKC,SAAA,OAEA,cCpCuc,MCQxd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIzf,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAASF,EAAIgV,SAAmzQhV,EAAIuB,KAA7yQnB,EAAG,MAAM,CAACI,YAAY,SAASC,MAAM,CAAE,iBAAkBT,EAAI0f,gBAAiB,CAAE1f,EAAoB,iBAAEI,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACJ,EAAG,SAAS,CAACI,YAAY,mCAAmCF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,eAAemH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,wBAAwB,CAAC7N,EAAG,eAAe,GAAGA,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAACJ,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoBlB,EAAG,SAAS,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2f,uBAAuB3f,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,cAAc,CAACJ,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,YAAcN,EAAIsB,eAAe,oBAAoB,MAAQtB,EAAI0O,OAAOlC,MAAMA,MAAM,mBAAkB,GAAM/D,GAAG,CAAC,OAASzI,EAAI4f,eAAe,MAAQ5f,EAAI6f,iBAAkB7f,EAAsB,mBAAEI,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAI8f,iBAAiB,CAAC1f,EAAG,aAAa,GAAIJ,EAAuB,oBAAEI,EAAG,cAAc,CAACI,YAAY,cAAcF,MAAM,CAAC,GAAKN,EAAI+f,sBAAsB,CAAC3f,EAAG,wBAAwB,GAAGA,EAAG,MAAM,CAACI,YAAY,wBAAwB,CAACJ,EAAG,wBAAwB,GAAIJ,EAAuB,oBAAEI,EAAG,cAAc,CAACI,YAAY,cAAcF,MAAM,CAAC,GAAKN,EAAIggB,sBAAsB,CAAC5f,EAAG,yBAAyB,GAAGA,EAAG,MAAM,CAACI,YAAY,wBAAwB,CAACJ,EAAG,yBAAyB,IAAI,GAAGJ,EAAIuB,MAAM,KAAKnB,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAAER,EAAIkd,aAAeld,EAAIkd,YAAY+C,kBAAmB7f,EAAG,IAAI,CAACI,YAAY,qBAAqBF,MAAM,CAAC,KAAON,EAAIkgB,QAAQ,OAAS,WAAW,CAAClgB,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,cAActB,EAAIuB,KAA8B,MAAxBvB,EAAI0O,OAAO2Q,SAAkBjf,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI6Y,aAAY,MAAS,CAACzY,EAAG,aAAa,GAAGJ,EAAIuB,SAAWvB,EAAImgB,iBAA8lEngB,EAAIuB,KAAhlEnB,EAAG,MAAM,CAAEJ,EAAiB,cAAEI,EAAG,MAAM,CAACI,YAAY,wBAAwBF,MAAM,CAAC,KAAO,UAAU,aAAaN,EAAIsB,eAAe,YAAY,CAAGtB,EAAIogB,aAAwVpgB,EAAIuB,KAA9UnB,EAAG,SAAS,CAACI,YAAY,qDAAqDC,MAAM,CAAE8H,OAAQvI,EAAIqgB,gBAAiB/f,MAAM,CAAC,KAAO,SAAS,gBAAgBoD,OAAO1D,EAAIsgB,8BAA8B7X,GAAG,CAAC,MAAQzI,EAAIugB,uBAAuB,CAACngB,EAAG,sBAAsBA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,uBAAuB,GAActB,EAAIogB,aAA0WpgB,EAAIuB,KAAhWnB,EAAG,SAAS,CAACI,YAAY,kDAAkDF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIwgB,uBAAuB,CAACpgB,EAAG,YAAYA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAoBtB,EAAsB,mBAAEI,EAAG,OAAO,CAACI,YAAY,4BAA4B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI+V,uBAAuB/V,EAAIuB,MAAM,GAAavB,EAAoB,iBAAEI,EAAG,SAAS,CAACI,YAAY,oDAAoDF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIygB,oBAAoB,CAACrgB,EAAG,eAAeA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,GAAGtB,EAAIuB,OAAOnB,EAAG,MAAM,CAACI,YAAY,sDAAsD,CAACJ,EAAG,MAAM,CAAGJ,EAAIogB,aAAsNpgB,EAAIuB,KAA5MnB,EAAG,mBAAmB,CAACE,MAAM,CAAC,SAAWN,EAAIqgB,gBAAgB5X,GAAG,CAAC,MAAQzI,EAAIugB,uBAAuB,CAACngB,EAAG,sBAAsBJ,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmB,eAAe,IAAa,GAAGlB,EAAG,MAAM,CAACA,EAAG,SAAS,CAACI,YAAY,0BAA0BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI0gB,0BAA2B,KAAQ,CAACtgB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACJ,EAAG,eAAeJ,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,iBAAiB,KAAOtB,EAAI0f,gBAAkB1f,EAAIkd,cAAeld,EAAI2gB,eAA0T3gB,EAAIuB,KAA7SnB,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,WAAW,CAACF,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACJ,EAAG,WAAW,CAACE,MAAM,CAAC,QAAUN,EAAIogB,cAAc3X,GAAG,CAAC,OAASzI,EAAI4gB,uBAAuB,CAAC5gB,EAAImB,GAAG,mBAAmBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAe,qBAAqB,WAA6BlB,EAAG,mBAAmB,CAACiV,IAAI,qBAAqB7U,YAAY,uBAAuBC,MAAM,CAAEogB,SAAU7gB,EAAI8gB,qBAAsBnf,MAAO3B,EAAoB,iBAAEM,MAAM,CAAC,SAAWN,EAAIsgB,4BAA4B,KAAOtgB,EAAI0f,eAAiB1f,EAAIsgB,4BAA8B,cAAWpV,EAAU,aAAalL,EAAI0f,eAAiB1f,EAAIsgB,4BAA8B,YAASpV,EAAU,aAAalL,EAAI0f,eAAiB1f,EAAIsgB,4BAA8BtgB,EAAIsB,eAAe,uBAAoB4J,EAAU,SAAWlL,EAAI0f,eAAiB1f,EAAIsgB,6BAA+B,OAAIpV,EAAU,OAAS,QAAQ,CAAElL,EAAiB,cAAEI,EAAG,MAAM,CAACI,YAAY,kCAAkCiI,GAAG,CAAC,YAAczI,EAAI+gB,qBAAqB,YAAc/gB,EAAIghB,oBAAoB,UAAYhhB,EAAIihB,mBAAmB,cAAgBjhB,EAAIkhB,wBAAwB,CAAC9gB,EAAG,UAAUJ,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,MAAM,CAACI,YAAY,uBAAuB,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAAER,EAAsB,mBAAEI,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACR,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,kBAAkB,OAAOlB,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI+V,yBAAyB/V,EAAIuB,KAAKnB,EAAG,MAAM,CAACJ,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,OAAOlB,EAAG,SAAS,CAACI,YAAY,WAAWC,MAAM,CAAE8H,QAASvI,EAAImhB,cAAe7gB,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAImhB,cAAe,KAAS,CAACnhB,EAAImB,GAAG,mBAAmBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,oBAAoBtB,EAAImB,GAAG,iCAAiCf,EAAG,SAAS,CAACI,YAAY,WAAWC,MAAM,CAAE8H,OAAQvI,EAAImhB,cAAe7gB,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAImhB,cAAe,KAAQ,CAACnhB,EAAImB,GAAG,mBAAmBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,wBAAwBlB,EAAG,MAAM,CAACA,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIohB,sBAAsB,CAACphB,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,kBAAkB,sBAAsBlB,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,WAAW,CAACE,MAAM,CAAC,QAAUN,EAAIqhB,OAAO5Y,GAAG,CAAC,OAAS,SAASC,GAAQ1I,EAAIqhB,OAASrhB,EAAIqhB,SAAS,CAACrhB,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmBlB,EAAG,WAAW,CAACE,MAAM,CAAC,QAAUN,EAAIshB,oBAAoB7Y,GAAG,CAAC,OAAS,SAASC,GAAQ1I,EAAIshB,oBAAsBthB,EAAIshB,sBAAsB,CAACthB,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,uBAAuB,wBAAwBlB,EAAG,WAAW,CAACE,MAAM,CAAC,QAAUN,EAAIuhB,iBAAiB9Y,GAAG,CAAC,OAAS,SAASC,GAAQ1I,EAAIuhB,iBAAmBvhB,EAAIuhB,mBAAmB,CAACvhB,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoB,yBAAyBlB,EAAG,mBAAmB,CAACE,MAAM,CAAC,SAAWN,EAAIwhB,UAAU/Y,GAAG,CAAC,MAAQzI,EAAIyhB,aAAa,CAACzhB,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,0BAA0B,iBAAiB,OAAOlB,EAAG,mBAAmB,CAACiV,IAAI,kBAAkB7U,YAAY,oBAAoBC,MAAM,CAAEogB,SAAU7gB,EAAI8gB,qBAAsBnf,MAAO3B,EAAoB,iBAAEM,MAAM,CAAC,SAAWN,EAAIwhB,SAAS,KAAOxhB,EAAI0f,eAAiB1f,EAAIwhB,SAAW,cAAWtW,EAAU,aAAalL,EAAI0f,eAAiB1f,EAAIwhB,SAAW,YAAStW,EAAU,aAAalL,EAAI0f,eAAiB1f,EAAIwhB,SAAWxhB,EAAIsB,eAAe,8BAA2B4J,EAAU,SAAWlL,EAAI0f,eAAiB1f,EAAIwhB,UAAY,OAAItW,EAAU,OAAS,QAAQ,CAAElL,EAAiB,cAAEI,EAAG,MAAM,CAACI,YAAY,kCAAkCiI,GAAG,CAAC,YAAczI,EAAI+gB,qBAAqB,YAAc/gB,EAAIghB,oBAAoB,UAAYhhB,EAAIihB,mBAAmB,cAAgBjhB,EAAIkhB,wBAAwB,CAAC9gB,EAAG,UAAUJ,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,OAAOiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAqBtB,EAAI0f,eAAiB1f,EAAI0hB,wBAAyBthB,EAAG,SAAS,CAACI,YAAY,yBAAyBC,MAAM,CAAEkhB,SAAU3hB,EAAIsgB,8BAAgCtgB,EAAIwhB,UAAWlhB,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQzI,EAAI4hB,qBAAqB5hB,EAAIuB,KAAKnB,EAAG,UAAU,CAACI,YAAY,yBAAyBF,MAAM,CAAC,MAAQN,EAAIsB,eAAe,iBAAiB,QAAUtB,EAAI0gB,0BAA0BjY,GAAG,CAAC,MAAQzI,EAAI6hB,qBAAqB,CAACzhB,EAAG,gBAAgB,CAACI,YAAY,iBAAiBiI,GAAG,CAAC,MAAQzI,EAAI6hB,mBAAmB,QAAU,SAASnZ,GAAQ,OAAO1I,EAAI8hB,sBAAqB,IAAQ,eAAe9hB,EAAI8hB,yBAAyB,IAAI,IACl5Q,GAAkB,GCAD,IACbtgB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,sbAAsb,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,YAAY,UAAU,YAAY,UAAU,EAAI,69CAA69C,KAAO,uBCtBnhE,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,uBAAuB,OAAS,eAAe,iBAAiB,QAAQ,kBAAkB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,sKAAsK,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8HAA8H,KAAO,uBCtBnf,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,MAAOxB,MAChDuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8EAA8E,OAAS,eAAe,iBAAiB,gBCtBrJ,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,MAAOxB,MAChDuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,mFAAmF,OAAS,eAAe,iBAAiB,gBCvB3K,GAAS,WAAa,IAAIN,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,cAAcC,MAAM,CAAE,YAAaT,EAAIwM,OAASxM,EAAIwM,MAAM7P,OAAQ,aAAcqD,EAAI+hB,qBAAsB,CAAC3hB,EAAG,YAAY,CAACI,YAAY,eAAeF,MAAM,CAAC,YAAcN,EAAIwQ,YAAY,MAAQxQ,EAAIwM,OAAO/D,GAAG,CAAC,MAAQzI,EAAIgiB,iBAAiB,KAAOhiB,EAAIiiB,gBAAgB,OAASjiB,EAAIkiB,kBAAkB,MAAQliB,EAAImiB,oBAAoB/hB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,SAAS,CAACE,MAAM,CAAC,QAAUN,EAAI+hB,uBAAuB,GAAI/hB,EAAIwM,OAASxM,EAAIwM,MAAM7P,OAAQyD,EAAG,SAAS,CAACI,YAAY,gBAAgBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQzI,EAAIoiB,cAAc,CAAChiB,EAAG,OAAO,CAACI,YAAY,uBAAuB,CAACJ,EAAG,cAAc,KAAKJ,EAAIuB,KAAKnB,EAAG,SAAS,CAACI,YAAY,gBAAgBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,WAAWmH,GAAG,CAAC,MAAQzI,EAAImiB,mBAAmB,CAAC/hB,EAAG,OAAO,CAACI,YAAY,uBAAuB,CAACJ,EAAG,aAAa,OAAQJ,EAAIqiB,gBAAkBriB,EAAIsiB,YAAY3lB,OAAQyD,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACR,EAAIY,GAAIZ,EAAe,YAAE,SAASuiB,GAAY,OAAOniB,EAAG,SAAS,CAACd,IAAIijB,EAAWlhB,MAAMb,YAAY,0BAA0BF,MAAM,CAAC,KAAO,UAAUmQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGmhB,EAAWlhB,QAAQoH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIwiB,sBAAsBD,EAAWvjB,aAAaoB,EAAG,SAAS,CAACI,YAAY,8BAA8BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAImiB,mBAAmB,CAACniB,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAe,aAAa,GAAGtB,EAAIuB,MAAM,IACjlD,GAAkB,G,wkBCaD,G,oHACmC,IAAhC2M,EAAgC,uDAAF,GAClD,QACIA,EAAQT,cACPS,EAAQuU,QAASvU,EAAQuU,MAAM9lB,YAC/BuR,EAAQwU,aAAcxU,EAAQwU,WAAW/lB,YACzCuR,EAAQyU,gBAAiBzU,EAAQyU,cAAchmB,U,2CAI1B+lB,EAA6BE,GACvD,IAAMC,EAAY,IAAIrX,IAAY,CAACzH,OAAO6e,KACtCE,EAAe,EACnB,MAAOD,EAAUE,OAASD,EACxBA,EAAeD,EAAUE,KACzBL,EAAWzW,QAAQ,SAAA+W,GACbH,EAAU5X,IAAIlH,OAAOif,EAASC,aAChCJ,EAAUtX,IAAIxH,OAAOif,EAAShb,OAIpC,OAAO6a,I,iDAGyBH,EAA6BE,GAC7D,IAAMC,EAAYK,EAAmBC,qBAAqBT,EAAYE,GACtE,OAAOF,EACJ7V,OAAO,SAAAmW,GACN,OAAOH,EAAU5X,IAAIlH,OAAOif,EAAShb,MAAQgb,EAASI,iBAAmBJ,EAASK,QAAQ1mB,SAE3FmR,IAAI,SAAAkV,GAAQ,OAAIjf,OAAOif,EAAShb,Q,gDAInC0a,EACAY,EACAC,GAEA,IAAMC,EAAe,IAAIhY,IAAI8X,EAAqBxV,IAAI/J,SAChD0f,EAAc,IAAIC,IAAIH,EAASzV,IAAI,SAAA6V,GAAO,MAAI,CAAC5f,OAAO4f,EAAQ3b,IAAK2b,EAAQlB,MAAM3U,IAAI/J,YAC3F,OAAO2e,EAAW5U,IAAI,SAAAkV,GAAQ,OAC5BQ,EAAavY,IAAIlH,OAAOif,EAAShb,KAAjC,MAESgb,EAFT,CAGMK,QAASI,EAAY7kB,IAAImF,OAAOif,EAAShb,MAAQ,KAEnDgb,M,yCAIkBP,EAAoBC,GAC5C,IAAMkB,EAAkB,IAAIpY,IAK5B,OAJAiX,EAAMxW,QAAQ,SAAArC,GAAI,OAAIga,EAAgBrY,IAAIxH,OAAO6F,EAAK5B,OACtD0a,EAAWzW,QAAQ,SAAA+W,GACjBA,EAASK,QAAQpX,QAAQ,SAAA4X,GAAM,OAAID,EAAgBrY,IAAIxH,OAAO8f,QAEzDD,M,KCDU,GAArB,YAyBE,iDACE,oDArBF,EAAAtB,YAAqD,GAErD,EAAAP,oBAA8B,EAE9B,EAAA+B,qBAA+B,EAE/B,EAAAxiB,eAAiB,GAgBf,EAAKkL,MAAQ,EAAKxN,OAAS,GAF7B,EAzBF,mFAgCIiB,KAAKuM,MAAQvM,KAAKjB,OAAS,KAhC/B,wCAmCoBA,GAChBiB,KAAKuM,MAAQxN,EACbiB,KAAKgO,MAAM,SAAUjP,GACrBiB,KAAK8jB,yBAtCT,yCA0CI9jB,KAAKgO,MAAM,SAAUhO,KAAKuM,OAC1BvM,KAAK+jB,qBA3CT,oCA+CI/jB,KAAKuM,MAAQ,GACbvM,KAAKgO,MAAM,SACXhO,KAAK+jB,qBAjDT,yCAqDI/jB,KAAK8jB,yBArDT,wCAwDiB,WACb3f,WAAW,WACT,EAAK4f,oBACJ,OA3DP,4CA8DwBzB,GACpBtiB,KAAKgO,MAAM,SAAUsU,GACrBtiB,KAAK+jB,qBAhET,6CAmEsB,WACb/jB,KAAKoiB,iBAGNpiB,KAAKgkB,mBACPC,aAAajkB,KAAKgkB,mBAEpBhkB,KAAKgkB,kBAAoB7f,WAAU,uCAAC,mHACR,EAAK+f,mBADG,OAC5B7B,EAD4B,OAE9BA,IACF,EAAKA,YAAcA,GAHa,yCAKjC,QA/EP,sMAmFUriB,KAAKuM,OAASvM,KAAKuM,MAAM7P,OAAS,EAnF5C,yCAoFa,IApFb,WAsFQ,GAAmBynB,eAAenkB,KAAKokB,eAtF/C,uBAuFMpkB,KAAK8hB,oBAAqB,EAvFhC,kBAwFa,IAxFb,cA0FI9hB,KAAK8hB,oBAAqB,EACpBuC,IAAcrkB,KAAK6jB,qBACjBta,EAAavJ,KAAKyO,OAAOpK,OAAzBkF,SACAgD,EAAUvM,KAAVuM,MA7FZ,mBA+F6B,GAAc+X,eAAe/a,EAAUgD,EAAOvM,KAAKokB,eA/FhF,eA+FYvgB,EA/FZ,OAgGY0gB,GAAsB,GAAmBJ,eAAenkB,KAAKokB,eAC7DI,EACJxkB,KAAKuM,QAAUA,GAAS8X,IAAcrkB,KAAK6jB,sBAAwBU,EAlG3E,kBAmGaC,GAAuB3gB,EAAWA,EAAS3H,UAAO+O,GAnG/D,8DAqGa,IArGb,yBAuGUoZ,IAAcrkB,KAAK6jB,uBACrB7jB,KAAK8hB,oBAAqB,GAxGlC,6KA8GI9hB,KAAKqiB,YAAc,OA9GvB,GAAyC,QAcvC,gBADC,eAAK,CAAEnW,UAAU,EAAOwF,QAAS,M,mCAIlC,gBADC,eAAK,CAAExF,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,K,sCAIlB,gBADC,gBAAO,gBAAiB,CAAE0C,UAAW,Y,qCAStC,gBADC,eAAM,U,6BAGN,MAjCkB,GAAW,gBAH/B,eAAU,CACT7N,WAAY,CAAEqS,OAAA,EAAQvB,UAAA,GAAWqN,SAAA,GAAUuF,UAAA,OAExB,cCrE6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI1kB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAIyP,GAAG,WAAWzP,EAAImB,GAAG,KAAKf,EAAG,gBAAgB,CAACI,YAAY,QAAQC,MAAM,CAAE,cAAeT,EAAI2kB,aAAc,MACrX,GAAkB,GCkBD,GAArB,kJAA8C,QAE5C,gBADC,eAAK,CAAExY,UAAU,K,gCADC,GAAgB,gBALpC,eAAU,CACTnL,WAAY,CACVgd,cAAA,OAGiB,cCnBke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIhe,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,oBAAoBC,MAAM,CAAEmkB,WAAY5kB,EAAI2kB,UAAWhjB,MAAM,CAAGkjB,UAAY7kB,EAAI8kB,OAAS,OAAU,CAAC9kB,EAAIyP,GAAG,YAAY,IACzO,GAAkB,GCWD,GAArB,kJAA8C,QAE5C,gBADC,eAAK,CAAEtD,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,O,8BAJf,GAAgB,gBADpC,QACoB,cCZke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,kkBCkQf,IAAqB,GAArB,6D,+DAUE,EAAA6P,UAAoB,EAEpB,EAAAd,0BAAoC,EAEpC,EAAAqE,kBAA4B,EAE5B,EAAAC,YAA6B,KAE7B,EAAA7D,aAA+B,KAE/B,EAAAE,MAAwB,KAExB,EAAAC,mBAAqC,KAErC,EAAAC,gBAAkC,KAElC,EAAA0D,sBAAuC,KAEvC,EAAAC,sBAAgC,EAEhC,EAAApE,qBAA+B,EAE/B,EAAAqE,qBAAsC,KAEtC,EAAAC,mBAAyC,KAEzC,EAAAC,sBAAuC,KAEvC,EAAA3D,yBAAmC,EAEnC,EAAA4D,4BAAsC,EAEtC,EAAAhkB,eAAiB,GA1CnB,+EAsGIrB,KAAKslB,wBACLtlB,KAAKulB,8BACLljB,SAASmjB,iBAAiB,UAAWxlB,KAAKylB,mBAC1CzlB,KAAK0lB,+BACL1lB,KAAK2lB,qCA1GT,sCA8GItjB,SAASujB,oBAAoB,UAAW5lB,KAAKylB,mBACV,OAA/BzlB,KAAKolB,uBACPxlB,OAAOqkB,aAAajkB,KAAKolB,uBAE3B/iB,SAASwjB,gBAAgBC,UAAU5d,OAAO,2BAA4B,8BACtElI,KAAKgO,MAAM,yBAAyB,KAnHxC,oCAuHgB+X,EAASzL,GACrBta,KAAKslB,wBACLtlB,KAAKulB,8BACL,IAAMS,EAAkBtH,QACtBpE,GAAQyL,GAAMA,EAAG1hB,QAAUiW,EAAKjW,QAAU0hB,EAAG1hB,OAAOkF,WAAa+Q,EAAKjW,OAAOkF,UAG7Eyc,GACY,mBAAZD,EAAGznB,MACuB,kBAAnBynB,EAAGxZ,MAAMA,OAChBwZ,EAAGxZ,MAAMA,MAAM0Z,SAEfjmB,KAAKkmB,WAAW,IAChBlmB,KAAKmmB,gBAAgB,GACrBnmB,KAAKomB,mBAAmB,MACxBpmB,KAAKqmB,eAAc,MAtIzB,+FA+IuBN,EAAsBzL,GA/I7C,mFAgJ6B,mBAArBta,KAAKyO,OAAOnQ,MAAsC,OAATgc,EAhJjD,gCAiJYta,KAAKsmB,YAjJjB,gKAwJItmB,KAAK0lB,iCAxJT,sDA4JkCjM,GAC9BpX,SAASwjB,gBAAgBC,UAAUS,OAAO,6BAA8BvmB,KAAKyf,eAAiBhG,GAC9FzZ,KAAKwmB,2BA9JT,+CAkK2B/M,GACnBA,EACFzZ,KAAK2lB,mCAEL3lB,KAAK4hB,qBAEP5hB,KAAK0lB,iCAxKT,8CA8QI,GALA1lB,KAAK+kB,YAAe/kB,KAAKyO,OAAOlC,MAAMA,OAAS,GAC/CvM,KAAKkhB,aAAkD,MAAnClhB,KAAKyO,OAAOlC,MAAM2U,aACtClhB,KAAKohB,MAAoC,MAA5BphB,KAAKyO,OAAOlC,MAAM6U,MAC/BphB,KAAKqhB,mBAA8D,MAAzCrhB,KAAKyO,OAAOlC,MAAM8U,mBAC5CrhB,KAAKshB,gBAAwD,MAAtCthB,KAAKyO,OAAOlC,MAAM+U,gBAChB,mBAArBthB,KAAKyO,OAAOnQ,KAA2B,CACzC,IAAMme,EAAoC,qBAAX7c,QAA0BA,OAAOud,YAAc,KACxEsJ,EAA6D,MAAjCzmB,KAAKyO,OAAOlC,MAAMma,WAC9CC,EAAgD,kBAA3B3mB,KAAKyO,OAAOlC,MAAMG,KACvCka,EAAwBnK,GAAmBgK,GAA6BE,EAC9E3mB,KAAK6mB,gBACH7mB,KAAKkgB,kBACH0G,IACEnK,GAAoD,MAAjCzc,KAAKyO,OAAOlC,MAAMua,eAtRjD,+FA2RuB/B,GA3RvB,uFA4RI/kB,KAAK+kB,YAAcA,EACfA,EAAYkB,SACdjmB,KAAK8kB,kBAAmB,GA9R9B,SAgSU9kB,KAAKsmB,YAhSf,oTAoSStmB,KAAKyf,cApSd,0EAwS4B,GAAclR,mBAxS1C,OAwSYH,EAxSZ,OAySMpO,KAAK8kB,iBAAmBrU,MAAMC,QAAQtC,IAAYA,EAAQ1R,OAAS,EAzSzE,mDA4SMsD,KAAK8kB,kBAAmB,EA5S9B,0JAiTIziB,SAASwjB,gBAAgBC,UAAUxa,IAAI,8BACvCtL,KAAKygB,0BAA2B,EAChCzgB,KAAKwmB,2BAnTT,2CAuTIxmB,KAAKygB,0BAA2B,EAChCpe,SAASwjB,gBAAgBC,UAAU5d,OAAO,8BAC1ClI,KAAKwmB,2BAzTT,2CA4TuBO,GACnB/mB,KAAK8kB,iBAAmBiC,EACnBA,GACH/mB,KAAK4hB,uBA/TX,2LAoUI5hB,KAAK+kB,YAAc,GACnB/kB,KAAKkmB,WAAW,IAChBlmB,KAAKmmB,gBAAgB,GACrBnmB,KAAKomB,mBAAmB,MACxBpmB,KAAKqmB,eAAc,GACnBrmB,KAAKgnB,0BAAyB,GACL,mBAArBhnB,KAAKyO,OAAOnQ,OAA6B0B,KAAKyO,OAAOlC,MAAMA,MA1UnE,oBA2UYhD,EAAWvJ,KAAK2V,aAAe3V,KAAKyO,OAAOpK,OAAOkF,UAAYP,IAChEhJ,KAAKkgB,mBAAoBlgB,KAAK0gB,eA5UxC,wBA6UcnU,EAAQ,IAAIO,gBAAgB,CAChCJ,KAAM1M,KAAK0gB,eACXoG,WAAY,IACZJ,WAAY,MAEV1mB,KAAKinB,cACP1a,EAAMtE,IAAI,SAAUjI,KAAKinB,aAAapa,YAEE,kBAA/B7M,KAAKyO,OAAOlC,MAAMC,UAC3BD,EAAMtE,IAAI,WAAYjI,KAAKyO,OAAOlC,MAAMC,UAtVlD,UAwVcxM,KAAKmS,QAAQ3P,QAAb,WAAyB+G,EAAzB,mBAA4CgD,EAAMM,aAxVhE,iDA0Vc7M,KAAKmS,QAAQ3P,QAAb,WAAyB+G,EAAzB,YA1Vd,mSAgWUA,EAAWvJ,KAAK2V,aAAe3V,KAAKyO,OAAOpK,OAAOkF,UAAYP,GAC9DuD,EAAQvM,KAAK+kB,YACdxY,EAlWT,oDAqWU0B,EAAU,CACdiT,eAAgBlhB,KAAKkhB,aACrBE,QAASphB,KAAKohB,MACdC,qBAAsBrhB,KAAKqhB,mBAC3BC,kBAAmBthB,KAAKshB,iBAEpB4F,EAAU,GAAkBvY,kBAAlB,IACdpF,WACAgD,QACAJ,SAAUnM,KAAK0gB,qBAAkBzV,EACjC2Y,OAAQ5jB,KAAKinB,aACbH,WAAY9mB,KAAKmgB,aACjBuG,WAAY1mB,KAAKkgB,iBACjB1T,SACExM,KAAKkgB,kBAA0D,kBAA/BlgB,KAAKyO,OAAOlC,MAAMC,SAC9CxM,KAAKyO,OAAOlC,MAAMC,cAClBvB,GACHgD,IAEDjO,KAAKyO,OAAO2Q,WAAa8H,EAxXjC,2CA0XclnB,KAAKmS,QAAQnV,KAAKkqB,GA1XhC,gEA4Xc,MAA+C,yBAArC,KAA4B5oB,KA5XpD,oCAiYI0B,KAAKqmB,eAAc,GAjYvB,qKAqYIrmB,KAAKmnB,kBACHnnB,KAAKohB,OACHphB,KAAKqhB,oBACLrhB,KAAKshB,iBACLthB,KAAKkhB,cACLlhB,KAAK8V,mBAAqB,GACzB9V,KAAKonB,mBAAqBpnB,KAAKonB,kBAAkB1qB,OAAS,KA3YnE,0LAgZIsD,KAAK6mB,iBAAiB7mB,KAAKmgB,cACvBngB,KAAKmgB,eACPngB,KAAKkhB,cAAe,EACpBlhB,KAAKohB,OAAQ,EACbphB,KAAKqhB,oBAAqB,EAC1BrhB,KAAKshB,iBAAkB,EACvBthB,KAAKmnB,mBAAkB,KAErBnnB,KAAK+kB,YAxZb,gCAyZY/kB,KAAKsmB,YAzZjB,mJA8ZItmB,KAAKkhB,cAAe,EACpBlhB,KAAKohB,OAAQ,EACbphB,KAAKqhB,oBAAqB,EAC1BrhB,KAAKshB,iBAAkB,EACvBthB,KAAK6mB,iBAAgB,GACrB7mB,KAAKmnB,mBAAkB,GACvBnnB,KAAKqlB,4BAA6B,EAClCrlB,KAAKuhB,UAAW,EAChBvhB,KAAKgP,OAAOnH,OAAO,2BAtavB,6CA2aI,GADA7H,KAAKqnB,uBACDrnB,KAAKyf,cAQP,OAPKzf,KAAKqlB,6BACRrlB,KAAKsnB,6BACLtnB,KAAKmnB,mBAAkB,IAEzBnnB,KAAKqlB,4BAA8BrlB,KAAKqlB,2BACxCrlB,KAAKuhB,UAAW,OAChBvhB,KAAKunB,yBAGFvnB,KAAKogB,gBACRpgB,KAAKsnB,6BAEPtnB,KAAKmnB,mBAAmBnnB,KAAKogB,gBAC7BpgB,KAAKuhB,UAAW,EAChBvhB,KAAKunB,2BA1bT,mCA8bIvnB,KAAKqnB,uBACArnB,KAAKuhB,UACRvhB,KAAKsnB,6BAEPtnB,KAAKuhB,UAAYvhB,KAAKuhB,SACtBvhB,KAAKunB,2BAncT,6CAucIvnB,KAAKqnB,uBACLrnB,KAAKmnB,mBAAkB,GACvBnnB,KAAKqlB,4BAA6B,EAClCrlB,KAAKuhB,UAAW,EAChBvhB,KAAKgO,MAAM,wBA3cf,0CA8cmB,WACfhO,KAAKqnB,uBACLrnB,KAAKqlB,4BAA6B,EAClCrlB,KAAKuhB,UAAW,EAChBvhB,KAAK8Z,UAAU,WACT,EAAKqL,oBAAsB9iB,SAAS6X,SAAS,EAAKiL,qBACpD,EAAKA,mBAAmBlL,QAE1B,EAAKkL,mBAAqB,SAtdhC,wCA0doBhL,GACXna,KAAKyf,gBAAmBzf,KAAKqgB,6BAAgCrgB,KAAKuhB,YAGrD,WAAdpH,EAAM9a,IAIQ,QAAd8a,EAAM9a,KACRW,KAAKwnB,qBAAqBrN,GAJ1Bna,KAAK2hB,uBA/dX,mDAweI,GAAK3hB,KAAKyf,gBAAiBzf,KAAKmlB,mBAAhC,CAGA,IAAMtL,EAAgBxX,SAASwX,cAC3BA,aAAyB4N,aAAe5N,IAAkBxX,SAASiC,OACrEtE,KAAKmlB,mBAAqBtL,MA7ehC,+CAifwB,WACf7Z,KAAKyf,eAGVzf,KAAK8Z,UAAU,WACb,IAAM4N,EAAQ,EAAKC,uBACfD,GACFA,EAAMzN,YAxfd,6CA8fI,IAAM7E,EAAMpV,KAAKuhB,SAAWvhB,KAAKga,MAAM4N,gBAAkB5nB,KAAKga,MAAM6N,mBACpE,OAAKzS,EAGIA,EAAY0S,KAAO1S,EAFnB,OAhgBb,2CAqgBuB+E,GACnB,IAAMuN,EAAQ1nB,KAAK2nB,uBACnB,GAAKD,EAAL,CAGA,IAAMrN,EAAY5J,MAAM6J,KACtBoN,EAAMnN,iBACJ,oHAEF3N,OAAO,SAAA4N,GAAO,OAA6B,OAAzBA,EAAQG,eAC5B,IAAKN,EAAU3d,OAGb,OAFAyd,EAAMC,sBACNsN,EAAMzN,QAGR,IAAMW,EAAQP,EAAU,GAClBQ,EAAOR,EAAUA,EAAU3d,OAAS,IACtCyd,EAAMW,UAAazY,SAASwX,gBAAkBe,GAASvY,SAASwX,gBAAkB6N,EAG1EvN,EAAMW,UAAYzY,SAASwX,gBAAkBgB,IACvDV,EAAMC,iBACNQ,EAAMX,UAJNE,EAAMC,iBACNS,EAAKZ,YAxhBX,2CA+hBuBE,GACnBna,KAAKklB,qBAAuB/K,EAAM4N,UAClC/nB,KAAKglB,sBAAwB7K,EAAM6N,QACnChoB,KAAK6gB,qBAAsB,EAC3B,IAAMoH,EAAa9N,EAAM+N,cACrBD,EAAWE,mBACbF,EAAWE,kBAAkBhO,EAAM4N,aAriBzC,0CAyiBsB5N,GACiB,OAA/Bna,KAAKglB,uBAAkChlB,KAAKklB,uBAAyB/K,EAAM4N,YAG/E/nB,KAAKilB,sBAAwBmD,KAAKC,IAAI,EAAGlO,EAAM6N,QAAUhoB,KAAKglB,uBAC1DhlB,KAAKilB,sBAAwB,GAAK9K,EAAMmO,YAC1CnO,EAAMC,oBA/iBZ,yCAmjBqBD,GACjB,GAAIna,KAAKklB,uBAAyB/K,EAAM4N,UAAxC,CAGA,IAAME,EAAa9N,EAAM+N,cAEvBD,EAAWM,uBACXN,EAAWO,mBACXP,EAAWO,kBAAkBrO,EAAM4N,YAEnCE,EAAWM,sBAAsBpO,EAAM4N,WAErC/nB,KAAKilB,uBAAyB,GAChCjlB,KAAK2hB,oBAGP3hB,KAAKqnB,0BAnkBT,8CAukBIrnB,KAAKqnB,yBAvkBT,6CA2kBIrnB,KAAKglB,sBAAwB,KAC7BhlB,KAAKilB,sBAAwB,EAC7BjlB,KAAK6gB,qBAAsB,EAC3B7gB,KAAKklB,qBAAuB,OA9kBhC,qDAilB8B,WAC1B,OAAKllB,KAAKyf,eAMyB,OAA/Bzf,KAAKolB,wBACPxlB,OAAOqkB,aAAajkB,KAAKolB,uBACzBplB,KAAKolB,sBAAwB,MAE3BplB,KAAKqgB,6BAA+BrgB,KAAKuhB,UAC3CvhB,KAAKyhB,yBAA0B,EAC/Bpf,SAASwjB,gBAAgBC,UAAUxa,IAAI,iCACvCtL,KAAKwmB,+BAGPxmB,KAAKolB,sBAAwBxlB,OAAOuE,WAAW,WAC7C,EAAKsd,yBAA0B,EAC/Bpf,SAASwjB,gBAAgBC,UAAU5d,OAAO,4BAC1C,EAAKkd,sBAAwB,KAC7B,EAAKoB,0BACJ,QApBDxmB,KAAKyhB,yBAA0B,EAC/Bpf,SAASwjB,gBAAgBC,UAAU5d,OAAO,iCAC1ClI,KAAKwmB,4BArlBX,+CA2mBIxmB,KAAKgO,MACH,wBACAhO,KAAKyf,gBAAkBzf,KAAKyhB,yBAA2BzhB,KAAKygB,6BA7mBlE,uCA4nBIxT,GAAOjQ,KAAKgD,KAAKyoB,eACjBzoB,KAAKgnB,0BAAyB,KA7nBlC,yCA2KwB,IACZpmB,EAAUZ,KAAKyO,OAAOlC,MAAtB3L,MACR,MAAwB,kBAAVA,IA7KlB,+CAgL8B,IAClBA,EAAUZ,KAAKyO,OAAOlC,MAAtB3L,MACR,MAAqB,kBAAVA,EACF8nB,SAAS9nB,EAAO,IAElB,OArLX,0CAyLI,GAAsC,OAAlCZ,KAAK2oB,yBACP,MAAO,GAET,IAAM/nB,EAAQZ,KAAK2oB,yBAA2B,EACxC5b,EAAa/M,KAAK4oB,cAAchoB,GACtC,OAAKmM,EAGE,GAAkB8b,uBAAuB9b,EAAYnM,GAFnD,KA/Lb,0CAqMI,GAAsC,OAAlCZ,KAAK2oB,yBACP,MAAO,GAET,IAAM/nB,EAAQZ,KAAK2oB,yBAA2B,EACxC5b,EAAa/M,KAAK4oB,cAAchoB,GACtC,OAAKmM,EAGE,GAAkB8b,uBAAuB9b,EAAYnM,GAFnD,KA3Mb,oCAiNI,IAAM2L,EAAQ,IAAIO,gBACZK,EACwC,kBAArCnN,KAAKyO,OAAOlC,MAAMY,eACrBnN,KAAKyO,OAAOlC,MAAMY,eAClBnN,KAAKyO,OAAOpK,OAAOkF,SASzB,OARA5M,OAAOgQ,QAAQ3M,KAAKyO,OAAOlC,OAAOP,QAAQ,YAAkB,2BAAhB1N,EAAgB,KAAVS,EAAU,KAEvD,CAAC,QAAS,YAAa,UAAW,QAAS,kBAAkBigB,SAAS1gB,IACtD,kBAAVS,GAEPwN,EAAMtE,IAAI3J,EAAMS,KAGpB,WAAWoO,EAAX,mBAAoCZ,EAAMM,cA9N9C,8BAkOI,OAAM7M,KAAKid,aAAejd,KAAKkd,mBAGxBld,KAAKid,YAAY6L,UAAUtmB,QAAQ,UAAWxC,KAAKkd,mBAAmBtc,MAAMiM,YAF1E,KAnOb,uCAyOI,OAAO7M,KAAKilB,sBACR,CAAE8D,UAAW,mBAAF,OAAqB/oB,KAAKilB,sBAA1B,aACXha,IA3OR,kDA+OI,OAAOjL,KAAKyf,cAAgBzf,KAAKqlB,2BAA6BrlB,KAAKogB,iBA/OvE,qCAmPI,OAAIpgB,KAAKyf,gBAAkBzf,KAAKkgB,iBACvB,GAEFlgB,KAAKid,YAAcjd,KAAKid,YAAYvQ,KAAQ1M,KAAKyO,OAAOlC,MAAMG,MAAmB,KAtP5F,mCA0PI,IAAI1M,KAAKyf,eAAkBzf,KAAKkgB,iBAAhC,CAGA,GAAIlgB,KAAKid,aAAejd,KAAKid,YAAYvQ,OAAS1M,KAAK0gB,eACrD,OAAO1gB,KAAKid,YAAYlV,GAE1B,IAAMihB,EAAchpB,KAAKyO,OAAOlC,MAAMqX,OACtC,GAA2B,kBAAhBoF,EAAX,CAGA,IAAMC,EAAeP,SAASM,EAAa,IAC3C,OAAOC,EAAe,EAAIA,OAAehe,OArQ7C,yCAqnB2BzL,GACvB,OAAO7C,OAAOgQ,QAAQnN,GACnBqO,IAAI,uCAAExO,EAAF,KAAO6pB,EAAP,YAAiBA,EAAM,GAAH,OAAM7pB,EAAN,YAAa6pB,GAAQ7pB,IAC7CsO,KAAK,SAxnBZ,GAAoC,QAElC,gBADC,eAAK,CAAEzB,UAAU,EAAOwF,SAAS,K,qCAIlC,gBADC,eAAK,CAAExF,UAAU,EAAOwF,SAAS,K,wCAIlC,gBADC,eAAK,CAAExF,UAAU,EAAOwF,QAAS,M,sCAsClC,gBADC,gBAAM,UAAW,CAAE9C,UAAW,Y,qCAI/B,gBADC,gBAAM,eAAgB,CAAEA,UAAW,Y,oCAIpC,gBADC,gBAAM,iBAAkB,CAAEA,UAAW,Y,sCAItC,gBADC,gBAAM,WAAY,CAAEA,UAAW,Y,gCAIhC,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAM,oBAAqB,CAAEA,UAAW,Y,yCAIzC,gBADC,gBAAO,cAAe,CAAEA,UAAW,gB,mCAIpC,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAO,eAAgB,CAAEA,UAAW,gB,oCAIrC,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAS,cAAe,CAAEA,UAAW,Y,mCAItC,gBADC,gBAAS,kBAAmB,CAAEA,UAAW,Y,uCAI1C,gBADC,gBAAS,gBAAiB,CAAEA,UAAW,Y,qCAIxC,gBADC,gBAAS,aAAc,CAAEA,UAAW,Y,kCAIrC,gBADC,gBAAS,kBAAmB,CAAEA,UAAW,Y,uCAI1C,gBADC,gBAAS,qBAAsB,CAAEA,UAAW,Y,0CAI7C,gBADC,gBAAS,oBAAqB,CAAEA,UAAW,Y,yCAI5C,gBADC,gBAAS,2BAA4B,CAAEA,UAAW,gB,gDAqBnD,gBADC,eAAM,W,6BAkBN,MAOD,gBALC,eAAM,eACN,eAAM,gBACN,eAAM,SACN,eAAM,sBACN,eAAM,oB,8BAKN,MAID,gBAFC,eAAM,8BACN,eAAM,a,6CAGN,MAGD,gBADC,eAAM,6B,+CAIN,MAGD,gBADC,eAAM,kB,wCAQN,MAzKkB,GAAM,gBAjB1B,eAAU,CACT7N,WAAY,CACVuO,cAAA,GACA6Z,iBAAA,GACAC,iBAAA,GACArX,SAAA,GACAsX,YAAA,GACA7L,SAAA,GACA8L,mBAAA,GACAC,YAAA,GACAC,oBAAA,GACAC,qBAAA,GACAhM,SAAA,GACAI,WAAA,GACAP,QAAA,OAGiB,cCrRsc,MCQvd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIvd,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAclB,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAc,KAAKlB,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,OAAOlB,EAAG,MAAMJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwB,UAAUlB,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,YACniB,GAAkB,GCiBD,GAArB,6D,+DACE,EAAAA,eAAiB,GADnB,gCAAoC,QAAf,GAAM,gBAD1B,QACoB,cClBwd,MCQze,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAItB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIiP,OAAOzH,MAAMiC,OAAe,SAAErJ,EAAG,MAAM,CAACI,YAAY,yBAAyBC,MAAM,CAAEmkB,WAAY5kB,EAAIiP,OAAOzH,MAAMiC,OAAO0P,4BAA6B,CAAC/Y,EAAG,SAAS,CAACI,YAAY,wBAAwBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQzI,EAAI2pB,SAASvpB,EAAG,MAAM,CAACiV,IAAI,SAAS7U,YAAY,eAAeC,MAAM,CAAEogB,SAAU7gB,EAAI6gB,UAAWlf,MAAM,CAAGqnB,UAAWhpB,EAAI4pB,WAAc,mBAAqB5pB,EAAI4pB,WAAa,WAAS1e,GAAa5K,MAAM,CAAC,KAAO,SAAS,aAAa,OAAO,aAAaN,EAAIsB,eAAe,gBAAgB,SAAWtB,EAAIiP,OAAOzH,MAAMiC,OAAO0P,2BAA6B,OAAIjO,IAAY,CAAC9K,EAAG,SAAS,CAACI,YAAY,sBAAsBiI,GAAG,CAAC,YAAczI,EAAI6pB,UAAU,YAAc7pB,EAAI8pB,SAAS,UAAY9pB,EAAI+pB,QAAQ,cAAgB/pB,EAAIgqB,aAAa,CAAC5pB,EAAG,OAAO,CAACI,YAAY,wBAAwBJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAclB,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,OAAOtB,EAAIY,GAAIZ,EAAa,UAAE,SAASiqB,GAAU,OAAO7pB,EAAG,WAAW,CAACd,IAAI2qB,EAAS3hB,KAAK9H,YAAY,wBAAwBF,MAAM,CAAC,SAAWN,EAAIiP,OAAOzH,MAAMiC,OAAOygB,eACjxClqB,EAAIiP,OAAOzH,MAAMiC,OAAOygB,gBACtBlqB,EAAIiP,OAAOzH,MAAMiC,OAAOygB,cAAcjL,SAASgL,EAAS3hB,OAAQG,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO1I,EAAImqB,qBAAqBF,EAAS3hB,SAAS,CAACtI,EAAImB,GAAG,aAAanB,EAAIoB,GAAG6oB,EAAS1rB,MAAM,iBAAiB,OAAOyB,EAAIuB,MAClO,GAAkB,GC4DD,GAArB,6D,+DACE,EAAA6oB,WAA4B,KAE5B,EAAAR,WAAqB,EAErB,EAAA/I,UAAoB,EAEpB,EAAAwJ,cAA+B,KAE/B,EAAAC,cAAoC,KAWpC,EAAAC,UAAY,EAAKC,eAEjB,EAAAlpB,eAAiB,GAtBnB,+EAyBIgB,SAASmjB,iBAAiB,UAAWxlB,KAAKylB,qBAzB9C,sCA6BIpjB,SAASujB,oBAAoB,UAAW5lB,KAAKylB,qBA7BjD,wCAgCoBtL,GACXna,KAAKyZ,UAGQ,WAAdU,EAAM9a,IAIQ,QAAd8a,EAAM9a,KACRW,KAAKwqB,UAAUrQ,GAJfna,KAAK0pB,WArCX,yCAkDqBjQ,GAAgB,WACjC,GAAIA,EAAS,CACX,IAAMI,EAAgBxX,SAASwX,cAS/B,OARA7Z,KAAKqqB,cACHxQ,aAAyB4N,aAAe5N,IAAkBxX,SAASiC,KAAOuV,EAAgB,UAC5F7Z,KAAK8Z,UAAU,WACb,IAAMC,EAAS,EAAKC,MAAMD,OACtBA,GACFna,OAAO6qB,sBAAsB,kBAAM1Q,EAAOE,YAKhDja,KAAK8Z,UAAU,WACT,EAAKuQ,eAAiBhoB,SAAS6X,SAAS,EAAKmQ,gBAC/C,EAAKA,cAAcpQ,QAErB,EAAKoQ,cAAgB,SAnE3B,gCAuEYlQ,GACR,IAAMJ,EAAS/Z,KAAKga,MAAMD,OAC1B,GAAKA,EAAL,CAGA,IAAMM,EAAY5J,MAAM6J,KACtBP,EAAOQ,iBACL,mFAEF3N,OAAO,SAAA4N,GAAO,OAA6B,OAAzBA,EAAQG,eAC5B,IAAKN,EAAU3d,OAGb,OAFAyd,EAAMC,sBACNL,EAAOE,QAGT,IAAMW,EAAQP,EAAU,GAClBQ,EAAOR,EAAUA,EAAU3d,OAAS,IACtCyd,EAAMW,UAAazY,SAASwX,gBAAkBe,GAASvY,SAASwX,gBAAkBE,EAG1EI,EAAMW,UAAYzY,SAASwX,gBAAkBgB,IACvDV,EAAMC,iBACNQ,EAAMX,UAJNE,EAAMC,iBACNS,EAAKZ,YA1FX,qCAkGI,MAAO,CACL,CAAE5R,KAAM,WAAY/J,KAAM,GAAe,aACzC,CAAE+J,KAAM,YAAa/J,KAAM,GAAe,cAC1C,CAAE+J,KAAM,eAAgB/J,KAAM,GAAe,0BAC7C,CAAE+J,KAAM,YAAa/J,KAAM,GAAe,gBAC1C,CAAE+J,KAAM,UAAW/J,KAAM,GAAe,eAvG9C,8BA4GI0B,KAAKmqB,WAAa,KAClBnqB,KAAK2pB,WAAa,EAClB3pB,KAAK4gB,UAAW,EAChB5gB,KAAKoqB,cAAgB,KACrBpqB,KAAK0qB,2BAA0B,KAhHnC,gCAmHYvQ,GACR,IAAMpJ,EAASoJ,EAAMpJ,OACrB,IAAIA,EAAO4Z,QAAQ,UAAnB,CAGA3qB,KAAKoqB,cAAgBjQ,EAAM4N,UAC3B/nB,KAAKmqB,WAAahQ,EAAM6N,QACxBhoB,KAAK4gB,UAAW,EAChB,IAAMqH,EAAa9N,EAAM+N,cACrBD,EAAWE,mBACbF,EAAWE,kBAAkBhO,EAAM4N,cA7HzC,+BAiIW5N,GACiB,OAApBna,KAAKmqB,YAAuBnqB,KAAKoqB,gBAAkBjQ,EAAM4N,YAG7D/nB,KAAK2pB,WAAavB,KAAKC,IAAI,EAAGlO,EAAM6N,QAAUhoB,KAAKmqB,YAC/CnqB,KAAK2pB,WAAa,GAAKxP,EAAMmO,YAC/BnO,EAAMC,oBAvIZ,8BA2IUD,GACN,GAAIna,KAAKoqB,gBAAkBjQ,EAAM4N,UAAjC,CAGA,IAAME,EAAa9N,EAAM+N,cAEvBD,EAAWM,uBACXN,EAAWO,mBACXP,EAAWO,kBAAkBrO,EAAM4N,YAEnCE,EAAWM,sBAAsBpO,EAAM4N,WAErC/nB,KAAK2pB,YAAc,GACrB3pB,KAAK0pB,SAGP1pB,KAAKmqB,WAAa,KAClBnqB,KAAK2pB,WAAa,EAClB3pB,KAAK4gB,UAAW,EAChB5gB,KAAKoqB,cAAgB,SA9JzB,mCAkKIpqB,KAAKmqB,WAAa,KAClBnqB,KAAK2pB,WAAa,EAClB3pB,KAAK4gB,UAAW,EAChB5gB,KAAKoqB,cAAgB,OArKzB,8CA0KIpqB,KAAKsqB,UAAYtqB,KAAKuqB,iBA1K1B,8BA8CI,OAAOvqB,KAAKgP,OAAOzH,MAAMiC,OAAO0P,8BA9CpC,GAA6C,QAY3C,gBADC,gBAAM,oBAAqB,CAAEtK,UAAW,Y,yCAIzC,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,Y,4CAI/C,gBADC,gBAAS,4BAA6B,CAAEA,UAAW,Y,iDAiCpD,gBADC,eAAM,Y,kCAoBN,MAoGD,gBADC,eAAM,sB,qCAGN,MA3KkB,GAAe,gBAHnC,eAAU,CACT7N,WAAY,CAAEgR,SAAA,OAEK,cC/D+c,MCQhe,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBT,G,WAGJ,oCACE/R,KAAK4qB,YAAc,W,oDAGhBtsB,EAAcS,GACjB,IAAM8rB,EAAU7qB,KAAK8qB,OACrBD,EAAQvsB,GAAQS,EAChBgsB,aAAaC,QAAQhrB,KAAK4qB,YAAa5lB,KAAKC,UAAU4lB,M,0BAGpDvsB,GACF,OAAO0B,KAAK8qB,OAAOxsB,K,6BAInB,IAAMpC,EAAO6uB,aAAaE,QAAQjrB,KAAK4qB,cAAgB,KACvD,OAAO5lB,KAAKiX,MAAM/f,O,KAIP,OAAI,GCvBf,GAAS,WAAa,IAAI6D,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAACJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAImrB,eAAiBnrB,EAAIorB,mBAAsBprB,EAAIqrB,WAAsHrrB,EAAIuB,KAA9GnB,EAAG,aAAa,CAACE,MAAM,CAAC,WAAaN,EAAIsrB,MAAM,QAAUtrB,EAAIurB,UAAU9iB,GAAG,CAAC,OAASzI,EAAIwrB,mBAA4B,GAAIxrB,EAAc,WAAEI,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,WAAW,GAAIJ,EAA4B,yBAAEI,EAAG,MAAM,CAACI,YAAY,+BAA+B,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmBlB,EAAG,MAAMJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsBlB,EAAG,QAAQA,EAAG,MAAM,CAACI,YAAY,uBAAuB,CAAGR,EAAIorB,kBAA4pBprB,EAAIuB,KAA7oBnB,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,YAAcN,EAAIsB,eAAe,iBAAiB,MAAQtB,EAAIyrB,aAAahjB,GAAG,CAAC,OAASzI,EAAI0rB,SAAS,MAAQ,SAAShjB,GAAQ,OAAO1I,EAAI0rB,SAAS,QAA4B,YAAnB1rB,EAAI2rB,WAA0BvrB,EAAG,SAAS,CAACI,YAAY,+BAA+BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,uBAAuB,MAAQtB,EAAIsB,eAAe,wBAAwBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI4rB,iBAAiB,CAACxrB,EAAG,oBAAoBA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiB,GAAGtB,EAAIuB,MAAM,KAAevB,EAAqB,kBAAEI,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI6rB,qBAAqB,CAACzrB,EAAG,cAAcJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAetB,EAAIqgB,eAAiB,4BAA8B,qBAAqB,aAAa,KAAKrgB,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,4BAA4BC,MAAM,CAAEqrB,MAAO9rB,EAAIorB,oBAAqB,CAAEprB,EAAqB,kBAAEI,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACJ,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,kBAAmBtB,EAAI+rB,eAAiB/rB,EAAIqrB,WAAYjrB,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAACJ,EAAG,SAAS,CAACE,MAAM,CAAC,QAAS,MAAS,GAAGF,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIgsB,yBAAyB5rB,EAAG,MAAM,CAACJ,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAe,iBAAiBlB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI7D,KAAK8vB,WAAarvB,OAAOsvB,KAAKlsB,EAAI7D,KAAK8vB,YAAYtvB,OAAS,UAAUqD,EAAIuB,KAAMvB,EAAkB,eAAEI,EAAG,MAAM,CAACI,YAAY,qCAAqC,CAACJ,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAImsB,cAAc,CAACnsB,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIosB,gBAAgB,CAACpsB,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAetB,EAAIuB,KAAKnB,EAAG,MAAM,CAACiV,IAAI,OAAO7U,YAAY,oBAAoB,CAAER,EAAQ,KAAEI,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAAER,EAAqB,kBAAEI,EAAG,MAAMJ,EAAIY,GAAIZ,EAAI7D,KAAe,WAAE,SAASyN,GAAM,OAAOxJ,EAAG,MAAM,CAACd,IAAIsK,EAAK5B,IAAI,CAAC5H,EAAG,UAAU,CAACE,MAAM,CAAC,KAAOsJ,EAAK,eAAiB5J,EAAIqsB,eAAe,iBAAmBrsB,EAAIssB,qBAAqB,KAAK,GAAGlsB,EAAG,MAAM,CAAmB,eAAjBJ,EAAIurB,SAA2B,CAAEvrB,EAAe,YAAE,CAACA,EAAIY,GAAIZ,EAAsB,mBAAE,SAAS4L,GAAM,OAAOxL,EAAG,cAAc,CAACd,IAAIsM,EAAK5D,GAAG1H,MAAM,CAAC,SAAWsL,EAAK,eAAiB5L,EAAIqsB,oBAAoBrsB,EAAIY,GAAIZ,EAAiB,cAAE,SAAS4L,GAAM,OAAOxL,EAAG,UAAU,CAACd,IAAIsM,EAAK5D,GAAG1H,MAAM,CAAC,KAAOsL,EAAK,eAAiB5L,EAAIqsB,qBAAqBrsB,EAAIY,GAAIZ,EAAI7D,KAAe,WAAE,SAASyP,GAAM,OAAOxL,EAAG,MAAM,CAACd,IAAIsM,EAAK5D,IAAI,CAAiB,IAAf4D,EAAK2gB,MAAansB,EAAG,cAAc,CAACE,MAAM,CAAC,SAAWsL,EAAK,eAAiB5L,EAAIqsB,kBAAkBrsB,EAAIuB,MAAM,MAAwB,YAAjBvB,EAAIurB,SAAwB,CAAEvrB,EAAe,YAAEA,EAAIY,GAAIZ,EAAmB,gBAAE,SAAS4L,GAAM,OAAOxL,EAAG,YAAY,CAACd,IAAIsM,EAAK5D,GAAG1H,MAAM,CAAC,OAASsL,EAAK,eAAiB5L,EAAIqsB,oBAAoBrsB,EAAIY,GAAIZ,EAAI7D,KAAoB,gBAAE,SAASqwB,GAAQ,OAAOpsB,EAAG,YAAY,CAACd,IAAIktB,EAAOxkB,GAAG1H,MAAM,CAAC,OAASksB,EAAO,SAAWxsB,EAAIurB,SAAS,eAAiBvrB,EAAIqsB,qBAAuC,UAAjBrsB,EAAIurB,SAAsB,CAAEvrB,EAAe,YAAEA,EAAIY,GAAIZ,EAAiB,cAAE,SAAS4L,GAAM,OAAOxL,EAAG,UAAU,CAACd,IAAIsM,EAAK5D,GAAG1H,MAAM,CAAC,KAAOsL,EAAK,eAAiB5L,EAAIqsB,oBAAoBrsB,EAAIY,GAAIZ,EAAI7D,KAAkB,cAAE,SAASyP,GAAM,OAAOxL,EAAG,YAAY,CAACd,IAAIsM,EAAK5D,GAAG1H,MAAM,CAAC,OAASsL,EAAK,SAAW5L,EAAIurB,SAAS,eAAiBvrB,EAAIqsB,qBAAqBrsB,EAAIuB,MAAM,KAAKvB,EAAIuB,WAAWnB,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,SAAS,CAACI,YAAY,WAAWF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI4rB,iBAAiB,CAAC5rB,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwB,iBACt+I,GAAkB,GCDlB,GAAS,WAAa,IAAItB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,cAAcR,EAAIY,GAAIZ,EAAc,WAAE,SAASzB,EAAK+J,GAAM,OAAOlI,EAAG,SAAS,CAACd,IAAIgJ,EAAK9H,YAAY,WAAWC,MAAM,CAAE8H,OAAQD,IAAStI,EAAI+O,SAAUzO,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,SAAU3F,MAAS,CAACtI,EAAImB,GAAG,SAASnB,EAAIoB,GAAG7C,GAAM,YAAY,IAC1Y,GAAkB,GCoBD,GAArB,kJAAwC,QAEtC,gBADC,eAAK,CAAE4N,UAAU,K,kCAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAJC,GAAU,gBAD9B,QACoB,cCrB4d,MCQ7e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACE,MAAM,CAAC,KAAON,EAAIgjB,SAASzkB,KAAK,UAAYyB,EAAIgjB,SAASrV,UAAU,OAAS3N,EAAIysB,OAAO,SAAWzsB,EAAIgjB,SAAS2B,SAAS,SAAU,EAAK,YAAc3kB,EAAIgjB,SAAS0J,YAAY,aAAe1sB,EAAIqsB,eAAe,gBAAkBrsB,EAAIgjB,SAAS/S,QAAQ,yBAA2BjQ,EAAIgjB,SAAS9S,iBAAiB,QAAUlQ,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2sB,gBAAgB,MAAQ,SAASjkB,GAAQ,OAAO1I,EAAI4sB,kBAAmB5sB,EAAIyB,UAAYzB,EAAIyB,SAAS9E,OAAS,GAAKqD,EAAIgjB,SAAS2B,WAAa3kB,EAAIO,QAASH,EAAG,MAAMJ,EAAIY,GAAIZ,EAAY,SAAE,SAAS6sB,GAAO,OAAOzsB,EAAG,cAAc,CAACd,IAAIutB,EAAM7kB,GAAG1H,MAAM,CAAC,SAAWusB,EAAM,MAAQ7sB,EAAI8sB,MAAQ,EAAE,eAAiB9sB,EAAIqsB,oBAAoB,GAAGrsB,EAAIuB,KAAMvB,EAAIyiB,MAAM9lB,OAAS,GAAKqD,EAAIgjB,SAAS2B,WAAa3kB,EAAIO,QAASH,EAAG,MAAMJ,EAAIY,GAAIZ,EAAS,MAAE,SAAS4J,GAAM,OAAOxJ,EAAG,UAAU,CAACd,IAAIsK,EAAK5B,GAAG1H,MAAM,CAAC,KAAOsJ,EAAK,MAAQ5J,EAAI8sB,MAAQ,EAAE,SAAW9sB,EAAIgjB,SAAS,eAAiBhjB,EAAIqsB,oBAAoB,GAAGrsB,EAAIuB,MAAM,IAC7jC,GAAkB,GCDlB,GAAS,WAAa,IAAIvB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,gBAAgBC,MAAM,CACxIkN,UAAW3N,EAAI2N,UACfof,QAAS/sB,EAAI+sB,QACbL,YAAa1sB,EAAI0sB,YACjB,cAAe1sB,EAAIgtB,mBAAqBhtB,EAAIsJ,kBAC5C,YAAatJ,EAAIgtB,mBAAqBhtB,EAAIoJ,iBAC1CzH,MAAM,CAAGsrB,YAAcjtB,EAAIysB,OAAS,OAAU,CAAEzsB,EAAoB,iBAAEI,EAAG,sBAAsB,CAACE,MAAM,CAAC,MAAQN,EAAIktB,gBAAgBltB,EAAIuB,KAAKnB,EAAG,cAAc,CAACE,MAAM,CAAC,KAAO,SAASF,EAAG,cAAc,CAACI,YAAY,qBAAqBF,MAAM,CAAC,GAAKN,EAAIgmB,IAAIhY,SAAS,CAAC,MAAQ,SAAStF,GAAQ,OAAO1I,EAAImtB,WAAWzkB,MAAW,CAACtI,EAAG,cAAc,CAACE,MAAM,CAAC,KAAON,EAAI6L,SAAS,IAAI,IAClX,GAAkB,GCPlB,GAAS,WAAa,IAAI7L,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,OAAOC,MAAO,QAAUT,EAAIwV,MAAO,CAAe,SAAbxV,EAAIwV,KAAiBpV,EAAG,YAAYJ,EAAIuB,KAAmB,UAAbvB,EAAIwV,KAAkBpV,EAAG,aAAaJ,EAAIuB,KAAmB,SAAbvB,EAAIwV,KAAiBpV,EAAG,cAAc,CAACI,YAAY,cAAcR,EAAIuB,KAAmB,QAAbvB,EAAIwV,KAAgBpV,EAAG,MAAM,CAACI,YAAY,OAAO,CAACR,EAAImB,GAAG,OAAOnB,EAAIuB,MAAM,IAC1Y,GAAkB,GCAD,IACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,UAAU,OAAS,eAAe,iBAAiB,gBCtBjF,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,kJAAkJ,OAAS,eAAe,iBAAiB,QAAQ,kBAAkB,gBCHnP,GAArB,kJAAyC,QAKvC,gBAJC,eAAK,CACJ6L,UAAU,EACVihB,UAAW,SAACpuB,GAAD,OAAwE,IAArD,CAAC,OAAQ,QAAS,MAAO,QAAQqd,QAAQrd,O,4BAHtD,GAAW,gBAH/B,eAAU,CACTgC,WAAY,CAAEqsB,UAAA,GAAWC,SAAA,GAAUC,YAAA,OAEhB,cCpB6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIvtB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,gBAAgBiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIwtB,mBACnK,GAAkB,GCDD,G,8GAMDC,GAChB,OAAOA,EAAIC,OAAO,GAAG/pB,cAAgB8pB,EAAI1tB,MAAM,K,iCAG/B4tB,EAAgBxf,EAAgB1L,GAChD,OAAOkrB,EAAO3Q,MAAM7O,GAAQP,KAAKnL,K,0CAORmrB,GACzB,IAAMH,EAAM,GACZ,IAAK,IAAMnuB,KAAOsuB,EACZA,EAAI9wB,eAAewC,IACrBmuB,EAAIxwB,KAAKmG,mBAAmB9D,GAAO,IAAM8D,mBAAmBwqB,EAAItuB,GAAKwN,aAEzE,OAAO2gB,EAAI7f,KAAK,S,KCZC,GAArB,qMAQI,GAAI3N,KAAKwrB,YAAa,CACpB,IAAIoC,EAAK5tB,KAAKwrB,YA2Bd,OAzBAoC,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SAEvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,WACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,UACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,QACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,UACvCA,EAAK,GAAcC,WAAWD,EAAI,IAAK,SAEhC5tB,KAAK4L,KAAKpJ,QAAQ,IAAID,OAAJ,WAAeqrB,EAAf,KAAsB,MAAO,aAExD,OAAO5tB,KAAK4L,SAtChB,GAAyC,QAEvC,gBADC,eAAK,CAAEM,UAAU,K,4BAIlB,gBADC,gBAAM,cAAe,CAAE0C,UAAW,gB,mCAJhB,GAAW,gBAD/B,QACoB,cCZ6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI7O,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAACR,EAAImB,GAAG,OAAOnB,EAAIoB,GAAGpB,EAAI+tB,OAAO,SACvK,GAAkB,GCWD,GAArB,kJAAiD,QAE/C,gBADC,eAAK,CAAE5hB,UAAU,K,6BADC,GAAmB,gBADvC,QACoB,cCZqe,MCQtf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCeM,GAArB,6D,+DACE,EAAA/C,gBAAkBA,GAElB,EAAAE,kBAAoBA,GAHtB,kFAmCY,WACRrJ,KAAK8Z,UAAU,WACb,EAAKiU,MAAM/f,MAAM,uBAAwB,CAAEkJ,KAAM,EAAK6O,GAAIznB,KAAM,EAAKsN,aArC3E,GAAyC,QAMvC,gBADC,eAAK,CAAEM,UAAU,K,iCAIlB,gBADC,eAAK,CAAEA,UAAU,K,mCAIlB,gBADC,eAAK,CAAEA,UAAU,K,0BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,eAAK,CAAEA,UAAU,K,oCAIlB,gBADC,gBAAM,mBAAoB,CAAE0C,UAAW,Y,wCAhCrB,GAAW,gBAH/B,eAAU,CACT7N,WAAY,CAAEitB,oBAAA,GAAqBjc,SAAA,GAAUkc,YAAA,GAAaC,YAAA,OAEvC,cClC6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInuB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,kBAAkBC,MAAM,CAC1I,cAAeT,EAAIgtB,mBAAqBhtB,EAAIsJ,kBAC5C,YAAatJ,EAAIgtB,mBAAqBhtB,EAAIoJ,kBACzC,CAAChJ,EAAG,MAAM,CAACI,YAAY,sBAAsBC,MAAM,CAAE,gBAAiBT,EAAIouB,cAAezsB,MAAM,CAAGsrB,YAAcjtB,EAAIysB,OAAS,OAAU,CAAEzsB,EAAoB,iBAAEI,EAAG,sBAAsB,CAACE,MAAM,CAAC,MAAQN,EAAIktB,gBAAgBltB,EAAIuB,KAAKnB,EAAG,SAAS,CAACI,YAAY,kBAAkBC,MAAM,CACnRkN,UAAW3N,EAAI2N,UACfof,QAAS/sB,EAAI+sB,QACbL,YAAa1sB,EAAI0sB,aACjBpsB,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAEjO,EAAW,QAAEI,EAAG,SAAS,CAACI,YAAY,qBAAqBJ,EAAG,cAAc,CAACE,MAAM,CAAC,KAAON,EAAIquB,SAAW,OAASruB,EAAI2kB,SAAW,QAAU,WAAW,GAAI3kB,EAAgB,aAAEI,EAAG,WAAW,CAACI,YAAY,WAAWC,MAAM,CAC7S,YAAaT,EAAIgtB,mBAAqBhtB,EAAIoJ,gBAC1C,cAAepJ,EAAIgtB,mBAAqBhtB,EAAIsJ,mBAC5ChJ,MAAM,CAAC,QAAUN,EAAIsuB,gBAAgB,oBAAoBtuB,EAAIuuB,0BAA0B9lB,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAajO,EAAIuB,KAAMvB,EAAQ,KAAEI,EAAG,cAAc,CAACI,YAAY,gBAAgBC,MAAM,CAC3NkN,UAAW3N,EAAI2N,UACfof,QAAS/sB,EAAI+sB,QACbL,YAAa1sB,EAAI0sB,aACjBpsB,MAAM,CAAC,GAAKN,EAAImX,MAAMnJ,SAAS,CAAC,MAAQ,SAAStF,GAAQ,OAAO1I,EAAImtB,WAAWzkB,MAAW,CAACtI,EAAG,cAAc,CAACE,MAAM,CAAC,KAAON,EAAI6L,SAAS,GAAGzL,EAAG,SAAS,CAACI,YAAY,kBAAkBC,MAAM,CAC5LkN,UAAW3N,EAAI2N,UACfof,QAAS/sB,EAAI+sB,QACbL,YAAa1sB,EAAI0sB,aACjBpsB,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,cAAc,CAACE,MAAM,CAAC,KAAON,EAAI6L,SAAS,IAAI,MACxI,GAAkB,GCgED,GAArB,6D,+DACE,EAAAvC,kBAAoBA,GACpB,EAAAF,gBAAkBA,GAFpB,kFAkDInJ,KAAK+tB,MAAM/f,MAAM,uBAAwB,CAAEkJ,KAAMlX,KAAKkX,KAAM5Y,KAAM0B,KAAK4L,WAlD3E,GAA2C,QAKzC,gBADC,eAAK,CAAEM,UAAU,K,iCAIlB,gBADC,eAAK,CAAEA,UAAU,K,mCAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,oCAIlB,gBADC,eAAK,CAAEA,UAAU,K,uCAIlB,gBADC,eAAK,CAAEA,UAAU,K,gDAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,eAAK,CAAEA,UAAU,K,oCAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,gBAAM,mBAAoB,CAAE0C,UAAW,Y,wCA9CrB,GAAa,gBAHjC,eAAU,CACT7N,WAAY,CAAEqS,OAAA,EAAQrB,SAAA,GAAUkc,YAAA,GAAaC,YAAA,GAAaF,oBAAA,OAEvC,cCnF+d,MCQhf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIjuB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI4J,KAAY,QAAExJ,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACE,MAAM,CAAC,KAAON,EAAIwuB,SAAS,UAAYxuB,EAAI2N,UAAU,OAAS3N,EAAIysB,OAAO,SAAWzsB,EAAI4J,KAAK+a,SAAS,SAAU,EAAK,YAAc3kB,EAAI4J,KAAK8iB,YAAY,UAAW,EAAK,KAAO1sB,EAAIqF,IAAI,aAAerF,EAAIqsB,eAAe,gBAAkBrsB,EAAI4J,KAAKqG,QAAQ,yBAA2BjQ,EAAI4J,KAAKsG,iBAAiB,iBAAmBlQ,EAAIssB,iBAAiB,aAAetsB,EAAI4J,KAAK6kB,UAAU,QAAUzuB,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2sB,gBAAgB,MAAQ,SAASjkB,GAAQ,OAAO1I,EAAI4sB,kBAAmB5sB,EAAI0uB,cAAgB1uB,EAAI0uB,aAAa/xB,OAAS,GAAKqD,EAAI4J,KAAK+a,SAAUvkB,EAAG,MAAMJ,EAAIY,GAAIZ,EAAgB,aAAE,SAASiW,GAAa,OAAO7V,EAAG,MAAM,CAACd,IAAI2W,EAAYjO,IAAI,CAAwB,IAAtBiO,EAAYsW,MAAansB,EAAG,iBAAiB,CAACE,MAAM,CAAC,YAAc2V,EAAY,aAAejW,EAAI0uB,aAAa,MAAQ1uB,EAAI8sB,MAAQ,EAAE,SAAW9sB,EAAIgjB,SAAS,OAAShjB,EAAI2uB,OAAO,eAAiB3uB,EAAIqsB,eAAe,iBAAmBrsB,EAAIssB,oBAAoBtsB,EAAIuB,MAAM,KAAK,GAAGvB,EAAIuB,MAAM,GAAGvB,EAAIuB,MACvlC,GAAkB,GCDlB,GAAS,WAAa,IAAIvB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIiW,YAAmB,QAAE7V,EAAG,MAAM,CAACI,YAAY,cAAcC,MAAM,CAChK,kBAAmBT,EAAI4uB,iBACvB,uBAAwB5uB,EAAI6uB,kBAAoB7uB,EAAI4uB,kBACpDtuB,MAAM,CAAC,oBAAoBN,EAAIiW,YAAYtJ,OAAO,CAAE3M,EAAIiW,YAAY6Y,WAAa9uB,EAAI+uB,YAAa3uB,EAAG,gBAAgB,CAACE,MAAM,CAAC,KAAON,EAAIiW,YAAY1X,KAAK,UAAYyB,EAAI2N,UAAU,OAAS3N,EAAIysB,OAAO,SAAWzsB,EAAIgvB,gBAAgB,aAAehvB,EAAIqsB,eAAe,gBAAkBrsB,EAAIiW,YAAYhG,QAAQ,yBAA2BjQ,EAAIiW,YAAY/F,iBAAiB,SAAU,EAAM,YAAclQ,EAAIiW,YAAYyW,YAAY,iBAAmB1sB,EAAIssB,iBAAiB,aAAetsB,EAAIktB,cAAczkB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2sB,gBAAgB,MAAQ,SAASjkB,GAAQ,OAAO1I,EAAI4sB,kBAAkBxsB,EAAG,cAAc,CAACE,MAAM,CAAC,UAAYN,EAAI2N,UAAU,GAAK3N,EAAIqF,IAAI,KAAOrF,EAAIiW,YAAY1X,KAAK,QAAUyB,EAAIiW,YAAYhG,QAAQ,OAASjQ,EAAIysB,OAAO,SAAU,EAAM,YAAczsB,EAAIiW,YAAYyW,YAAY,iBAAmB1sB,EAAIssB,iBAAiB,aAAetsB,EAAIktB,gBAAiBltB,EAAI+uB,aAAe/uB,EAAIgvB,gBAAiB5uB,EAAG,MAAMJ,EAAIY,GAAIZ,EAAY,SAAE,SAAS6sB,GAAO,OAAOzsB,EAAG,iBAAiB,CAACd,IAAIutB,EAAM7kB,GAAG1H,MAAM,CAAC,YAAcusB,EAAM,aAAe7sB,EAAI0uB,aAAa,MAAQ1uB,EAAI8sB,MAAQ,EAAE,SAAW9sB,EAAIgjB,SAAS,OAAShjB,EAAI2uB,OAAO,eAAiB3uB,EAAIqsB,eAAe,iBAAmBrsB,EAAIssB,iBAAiB,YAActsB,EAAIivB,YAAY,kBAAoBjvB,EAAIkvB,uBAAuB,GAAGlvB,EAAIuB,MAAM,GAAGvB,EAAIuB,MACjyC,GAAkB,GCJT4tB,GAAkB,GAClBC,GAAkB,GCsEV,GAArB,sMAkHInvB,KAAKovB,wBAAwB,CAC3BC,cAAervB,KAAKgW,YAAYjO,GAChCoE,SAAUnM,KAAKgW,YAAYrM,KAAK+C,KAChCsiB,YAAahvB,KAAKgvB,gBArHxB,oCA0HQhvB,KAAKsvB,sBACPtvB,KAAKuvB,4BAA4B,CAC/BF,cAAervB,KAAKgW,YAAYjO,GAChCoE,SAAUnM,KAAKgW,YAAYrM,KAAK+C,OAGlC1M,KAAKwvB,uBAAuB,CAC1BH,cAAervB,KAAKgW,YAAYjO,GAChCoE,SAAUnM,KAAKgW,YAAYrM,KAAK+C,SAlIxC,6BA+CI,OAAK1M,KAAK6sB,MAGH7sB,KAAK6sB,MAAQqC,GAAkBC,GAF7BA,KAhDb,+BAqDc,WACV,OAAOnvB,KAAKyuB,aAAa7hB,OAAO,SAAA6iB,GAAO,OAAIA,EAAQC,UAAYD,EAAQC,WAAa,EAAK1Z,YAAYjO,OAtDzG,0BA0DI,IAAM3C,EAAM,GAAkBmI,kBAAkB,CAC9ChE,SAAUvJ,KAAKgW,YAAYrM,KAAKJ,SAChC6C,aAAcpM,KAAK+iB,SAAW/iB,KAAK+iB,SAASrW,KAAO,GACnDL,WAAYrM,KAAK0uB,OAAS1uB,KAAK0uB,OAAOhiB,KAAO,GAC7CP,SAAUnM,KAAKgW,YAAYrM,KAAK+C,KAChCJ,gBAAiBtM,KAAKgW,YAAYtJ,OAEpC,OAAO1M,KAAKgvB,YAAL,UAAsB5pB,EAAtB,oBAA8CA,IAjEzD,gCAqEI,GAAIpF,KAAKgvB,aAAehvB,KAAKivB,kBAC3B,OAAOjvB,KAAK4uB,gBAFH,IAIH7L,EAAa/iB,KAAKyO,OAAOpK,OAAzB0e,SACR,QAAI/iB,KAAK+iB,WAAYA,GAAY/iB,KAAK+iB,SAASrW,OAASqW,IAGjD/iB,KAAKgW,YAAYtI,YA5E5B,uCAgFI,SAAU1N,KAAKgvB,cAAehvB,KAAKivB,mBAAqBjvB,KAAKgW,YAAYtJ,OAAS1M,KAAKivB,qBAhF3F,sCAmFqB,WACjB,IAAMjvB,KAAKgvB,cAAehvB,KAAKivB,kBAC7B,OAAO,EAET,IAAIQ,EAAUzvB,KAAKyuB,aAAanP,KAAK,SAAA3T,GAAI,OAAIA,EAAKe,OAAS,EAAKuiB,oBAChE,MAAOQ,EAAS,CACd,GAAIA,EAAQ1nB,KAAO/H,KAAKgW,YAAYjO,GAClC,OAAO,EAET0nB,EAAUA,EAAQC,SAAW1vB,KAAKyuB,aAAanP,KAAK,SAAA3T,GAAI,OAAIA,EAAK5D,KAAO0nB,EAASC,gBAAYzkB,EAE/F,OAAO,IA9FX,sCAkGI,OAAOjL,KAAKgW,YAAY0O,UAAY1kB,KAAK4uB,kBAlG7C,kCAsGI,OAAO5uB,KAAKwB,UAAYxB,KAAKwB,SAAS9E,SAtG1C,mCA0GI,OAAKsD,KAAK8uB,YAIH9uB,KAAKwB,SAASmuB,OAAO,SAACC,EAAU5Z,GAAX,OAA2B4Z,GAAY5Z,EAAYwY,WAAa,IAAI,GAHvFxuB,KAAKgW,YAAYwY,cA3G9B,GAA4C,QAE1C,gBADC,eAAK,CAAEtiB,UAAU,K,oCAIlB,gBADC,eAAK,CAAEA,UAAU,K,mCAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,K,6BAIlC,gBADC,eAAK,CAAExF,UAAU,K,sCAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,SAAS,K,mCAIlC,gBADC,eAAK,CAAExF,UAAU,EAAOwF,QAAS,M,yCAIlC,gBADC,gBAAO,wBAAyB,CAAE9C,UAAW,gB,+BAI9C,gBADC,gBAAS,0BAA2B,CAAEA,UAAW,gB,+CAIlD,gBADC,gBAAS,yBAA0B,CAAEA,UAAW,gB,8CAIjD,gBADC,gBAAS,8BAA+B,CAAEA,UAAW,gB,mDAItD,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAM,wBAAyB,CAAEA,UAAW,gB,6CA3C1B,GAAc,gBAJlC,eAAU,CACTtQ,KAAM,iBACNyC,WAAY,CAAE8uB,eAAA,GAAgBC,YAAA,GAAaC,cAAA,OAExB,cCvEge,MCOjf,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,kkBCmCf,IAAqB,GAArB,6D,+DAiDE,EAAAzvB,SAAmB,EAjDrB,6NAoDQN,KAAKgwB,qBApDb,gCAqDYhwB,KAAKiwB,mBArDjB,oMA0DqBlK,EAAazL,GA1DlC,mFA2DQyL,IAAOzL,IAAQta,KAAKgwB,qBA3D5B,gCA6DYhwB,KAAKiwB,mBA7DjB,+IA2GQjwB,KAAKmrB,kBACPnrB,KAAKkwB,sBAAsBlwB,KAAK2J,KAAK+C,MAErC1M,KAAKmwB,iBAAiBnwB,KAAK2J,KAAK+C,QA9GtC,oCAmHQ1M,KAAKmrB,kBACPnrB,KAAKowB,qBAAqBpwB,KAAK2J,KAAK+C,MAEpC1M,KAAKqwB,gBAAgBrwB,KAAK2J,KAAK+C,QAtHrC,sLA2HI1M,KAAKM,SAAU,EA3HnB,UA6HUN,KAAKmrB,kBA7Hf,gCA+HcnrB,KAAKswB,mBAAL,IACJ/mB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvCgD,MAAOvM,KAAKyO,OAAOlC,MAAMA,MACzBJ,SAAUnM,KAAK2J,KAAK+C,MACjB1M,KAAKokB,gBAnIlB,6CAuIcpkB,KAAKuwB,kBAAkB,CAC3BhnB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvC4C,SAAUnM,KAAK2J,KAAK+C,OAzI9B,uBA6IM1M,KAAKM,SAAU,EA7IrB,6JAkEI,OAAKN,KAAK6sB,MAGH7sB,KAAK6sB,MAAQqC,GAAkBC,GAF7BA,KAnEb,0BAyEI,OAAO,GAAkB1hB,WAAW,CAClClE,SAAUvJ,KAAK2J,KAAKJ,SACpB6C,aAAcpM,KAAK+iB,SAAW/iB,KAAK+iB,SAASrW,KAAO,GACnDL,WAAYrM,KAAK0uB,OAAS1uB,KAAK0uB,OAAOhiB,KAAO,GAC7CP,SAAUnM,KAAK2J,KAAK+C,SA7E1B,gCAiFe,MACkB1M,KAAKyO,OAAOpK,OAAjC0e,EADG,EACHA,SAAU2L,EADP,EACOA,OAClB,QAAI1uB,KAAK+iB,WAAYA,GAAY/iB,KAAK+iB,SAASrW,OAASqW,OAIpD/iB,KAAK0uB,SAAUA,GAAU1uB,KAAK0uB,OAAOhiB,OAASgiB,IAI3C1uB,KAAK2J,KAAK+D,aA3FrB,mCA+FI,OAAO1N,KAAK2J,KAAKnI,WA/FrB,2CAmGI,OAAOxB,KAAK2J,KAAK+a,WAAa1kB,KAAKyuB,aAAa/xB,SAnGpD,+BAuGI,OAAQsD,KAAK2J,KAAK1I,OAAV,WAAuBjB,KAAK2J,KAAK1I,OAAjC,MAA8C,IAAMjB,KAAK2J,KAAKrL,SAvG1E,GAAqC,QAEnC,gBADC,eAAK,CAAE4N,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,K,6BAIlC,gBADC,eAAK,CAAExF,UAAU,K,sCAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,gBAAO,wBAAyB,CAAE0C,UAAW,gB,+BAI9C,gBADC,gBAAO,gBAAiB,CAAEA,UAAW,Y,qCAItC,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAS,mBAAoB,CAAEA,UAAW,gB,wCAI3C,gBADC,gBAAS,wBAAyB,CAAEA,UAAW,gB,6CAIhD,gBADC,gBAAS,kBAAmB,CAAEA,UAAW,gB,uCAI1C,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,gB,4CAY/C,gBADC,eAAM,kB,4BAMN,MA/DkB,GAAO,gBAH3B,eAAU,CACT7N,WAAY,CAAE8uB,eAAA,GAAgBC,YAAA,GAAaC,cAAA,OAExB,cCrDyd,MCO1e,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QCmCM,GAArB,6D,+DAsBE,EAAAzvB,SAAmB,EAtBrB,6NAyBQN,KAAKwwB,cAzBb,gCA0BYxwB,KAAKywB,YA1BjB,wMA+ByB1K,EAAazL,GA/BtC,mFAgCQyL,IAAOzL,IAAQta,KAAKwwB,cAhC5B,gCAkCYxwB,KAAKywB,YAlCjB,+IA+DIzwB,KAAK0wB,qBAAqB1wB,KAAK+iB,SAAShb,MA/D5C,oCAmEI/H,KAAK2wB,wBAAwB3wB,KAAK+iB,SAAShb,MAnE/C,mLAuEI/H,KAAKM,SAAU,EAvEnB,SAwEUN,KAAK4wB,mBAAmB,CAC5BrnB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvCoZ,WAAY3iB,KAAK+iB,SAAShb,KA1EhC,OA4EI/H,KAAKM,SAAU,EA5EnB,oIAuCI,OAAKN,KAAK6sB,MAGH7sB,KAAK6sB,MAAQqC,GAAkBC,GAF7BA,KAxCb,+BA6Cc,WACF1M,EAAeziB,KAAK6wB,QAApBpO,WACR,OAAIziB,KAAK+iB,SAAS8L,UACTpM,EAAW7V,OAAO,SAAAmW,GAAQ,OAAIA,EAASC,YAAc,EAAKD,SAAShb,KAErE,KAlDX,4BAqDW,WACCya,EAAUxiB,KAAK6wB,QAAfrO,MACR,OAAO7lB,OAAOm0B,OAAOtO,GAAO5V,OAAO,SAACjD,GAAD,OAAgB,EAAKoZ,SAASK,QAAQpE,SAASrV,EAAK5B,QAvD3F,oCA2DI,OAAO/H,KAAK+iB,SAAS2B,UAAY1kB,KAAK+iB,SAASI,iBAAmBnjB,KAAKwiB,MAAM9lB,WA3DjF,GAAyC,QAEvC,gBADC,eAAK,CAAEwP,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,K,6BAIlC,gBADC,eAAK,CAAExF,UAAU,K,sCAIlB,gBADC,gBAAO,wBAAyB,CAAE0C,UAAW,gB,+BAI9C,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,gB,4CAI/C,gBADC,gBAAO,0BAA2B,CAAEA,UAAW,gB,+CAYhD,gBADC,eAAM,sB,gCAMN,MApCkB,GAAW,gBAJ/B,eAAU,CACTtQ,KAAM,cACNyC,WAAY,CAAEgwB,QAAA,GAASC,YAAA,GAAalB,YAAA,GAAaC,cAAA,OAE9B,cCrD6d,MCO9e,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIhwB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIwsB,OAAc,QAAEpsB,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACE,MAAM,CAAC,UAAYN,EAAIwsB,OAAO7e,UAAU,KAAO3N,EAAIwsB,OAAOjuB,KAAK,OAAS,KAAK,SAAWyB,EAAIwsB,OAAO7H,SAAS,SAAU,EAAK,YAAc3kB,EAAIwsB,OAAOE,YAAY,QAAU1sB,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2sB,mBAAqC,UAAjB3sB,EAAIurB,UAAwBvrB,EAAIyiB,MAAM9lB,OAAS,GAAKqD,EAAIwsB,OAAO7H,SAAUvkB,EAAG,MAAMJ,EAAIY,GAAIZ,EAAS,MAAE,SAAS4J,GAAM,OAAOxJ,EAAG,UAAU,CAACd,IAAIsK,EAAK5B,GAAG1H,MAAM,CAAC,KAAOsJ,EAAK,MAAQ,EAAE,eAAiB5J,EAAIqsB,oBAAoB,GAAGrsB,EAAIuB,KAAuB,YAAjBvB,EAAIurB,UAA0BvrB,EAAIkxB,SAAWlxB,EAAIkxB,QAAQv0B,OAAS,GAAKqD,EAAIwsB,OAAO7H,SAAUvkB,EAAG,MAAMJ,EAAIY,GAAIZ,EAAW,QAAE,SAAS2uB,GAAQ,OAAOvuB,EAAG,YAAY,CAACd,IAAIqvB,EAAO3mB,GAAG1H,MAAM,CAAC,OAASquB,EAAO,MAAQ,EAAE,eAAiB3uB,EAAIqsB,oBAAoB,GAAGrsB,EAAIuB,MAAM,GAAGvB,EAAIuB,MACx3B,GAAkB,GCDlB,GAAS,WAAa,IAAIvB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI2uB,OAAc,QAAEvuB,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACE,MAAM,CAAC,KAAON,EAAI2uB,OAAOpwB,KAAK,UAAYyB,EAAI2uB,OAAOhhB,UAAU,OAAS3N,EAAIysB,OAAO,SAAWzsB,EAAI2uB,OAAOhK,SAAS,SAAU,EAAK,YAAc3kB,EAAI2uB,OAAOjC,YAAY,KAAO1sB,EAAIqF,IAAI,QAAUrF,EAAIO,SAASkI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI2sB,mBAAoB3sB,EAAIyiB,MAAM9lB,OAAS,GAAKqD,EAAI2uB,OAAOhK,SAAUvkB,EAAG,MAAMJ,EAAIY,GAAIZ,EAAS,MAAE,SAAS4J,GAAM,OAAOxJ,EAAG,UAAU,CAACd,IAAIsK,EAAK5B,GAAG1H,MAAM,CAAC,KAAOsJ,EAAK,MAAQ5J,EAAI8sB,MAAQ,EAAE,OAAS9sB,EAAI2uB,OAAO,eAAiB3uB,EAAIqsB,oBAAoB,GAAGrsB,EAAIuB,MAAM,GAAGvB,EAAIuB,MAC1oB,GAAkB,GCwCD,GAArB,6D,+DAmBE,EAAAhB,SAAmB,EAnBrB,6NAsBQN,KAAKwwB,cAtBb,gCAuBYxwB,KAAKywB,YAvBjB,sMA4BuB1K,EAAazL,GA5BpC,mFA6BQyL,IAAOzL,IAAQta,KAAKwwB,cA7B5B,gCA+BYxwB,KAAKywB,YA/BjB,+IA2DIzwB,KAAKkxB,mBAAmBlxB,KAAK0uB,OAAO3mB,MA3DxC,mLA+DI/H,KAAKM,SAAU,EA/DnB,SAgEUN,KAAKmxB,iBAAiB,CAC1B5nB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvC6nB,SAAUpxB,KAAK0uB,OAAO3mB,KAlE5B,OAoEI/H,KAAKM,SAAU,EApEnB,oIAoCI,OAAKN,KAAK6sB,MAGH7sB,KAAK6sB,MAAQqC,GAAkBC,GAF7BA,KArCb,4BA0CW,IACC3M,EAAUxiB,KAAK6wB,QAAfrO,MACR,OAAOxiB,KAAK0uB,OAAOtL,QAAQvV,IAAI,SAAA+V,GAAM,OAAIjnB,OAAOm0B,OAAOtO,GAAOlD,KAAK,SAAA3V,GAAI,OAAIA,EAAK5B,KAAO6b,QA5C3F,0BAgDI,OAAO,GAAkByN,aAAa,CACpC9nB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvC8C,WAAYrM,KAAK0uB,OAAOhiB,SAlD9B,oCAuDI,OAAO1M,KAAK0uB,OAAOhK,WAAa1kB,KAAKwiB,MAAM9lB,WAvD/C,GAAuC,QAErC,gBADC,eAAK,CAAEwP,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,QAAS,K,6BAIlC,gBADC,eAAK,CAAExF,UAAU,K,sCAIlB,gBADC,gBAAO,wBAAyB,CAAE0C,UAAW,gB,+BAI9C,gBADC,gBAAO,mBAAoB,CAAEA,UAAW,gB,wCAIzC,gBADC,gBAAS,qBAAsB,CAAEA,UAAW,gB,0CAY7C,gBADC,eAAM,oB,8BAMN,MAjCkB,GAAS,gBAH7B,eAAU,CACT7N,WAAY,CAAEgwB,QAAA,GAAShB,cAAA,OAEJ,cCzC2d,MCO5e,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QC6BM,GAArB,6D,+DAyBE,EAAAzvB,SAAmB,EAzBrB,yOA4BUN,KAAKsxB,oBA5Bf,sMAgCuBvL,EAAazL,GAhCpC,mFAiCQyL,IAAOzL,EAjCf,gCAkCYta,KAAKsxB,oBAlCjB,iSAuCStxB,KAAKwwB,cAvCd,iEA0CUxwB,KAAKywB,YA1Cf,OA2CIzwB,KAAKuxB,qBA3CT,4IA6D0B,UAAlBvxB,KAAKsrB,SACPtrB,KAAKwxB,uBAAuBxxB,KAAKusB,OAAOxkB,IAExC/H,KAAKyxB,yBAAyBzxB,KAAKusB,OAAOxkB,MAhEhD,mLAqEI/H,KAAKM,SAAU,EArEnB,kBAuEYN,KAAK0xB,iBAAiB,CAC1BnoB,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvCooB,WAAY3xB,KAAKusB,OAAOjuB,OAzEhC,uBA4EM0B,KAAKM,SAAU,EA5ErB,0JA8CW,WACCkiB,EAAUxiB,KAAK6wB,QAAfrO,MACR,OAAO7lB,OAAOm0B,OAAOtO,GAAO5V,OAAO,SAAAjD,GAAI,OAAK,EAAK4iB,OAAsBnJ,QAAQpE,SAASrV,EAAK5B,QAhDjG,8BAmDa,WACDkpB,EAAYjxB,KAAK6wB,QAAjBI,QACR,OAAOA,EAAQrkB,OAAO,SAAA8hB,GAAM,OAAK,EAAKnC,OAAwBqF,UAAU5S,SAAS0P,EAAO3mB,QArD5F,oCAyDI,OAAO/H,KAAKusB,OAAO7H,UAA8B,UAAlB1kB,KAAKsrB,WAA0BtrB,KAAKusB,OAAsBnJ,QAAQ1mB,WAzDrG,GAAuC,QAErC,gBADC,eAAK,CAAEwP,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,eAAK,CAAEA,UAAU,K,sCAIlB,gBADC,gBAAO,wBAAyB,CAAE0C,UAAW,gB,+BAI9C,gBADC,gBAAO,mBAAoB,CAAEA,UAAW,gB,wCAIzC,gBADC,gBAAS,qBAAsB,CAAEA,UAAW,gB,0CAI7C,gBADC,gBAAS,yBAA0B,CAAEA,UAAW,gB,8CAIjD,gBADC,gBAAS,2BAA4B,CAAEA,UAAW,gB,gDAUnD,gBADC,eAAM,oB,8BAKN,MApCkB,GAAS,gBAH7B,eAAU,CACT7N,WAAY,CAAEgwB,QAAA,GAASc,UAAA,GAAW/B,YAAA,GAAaC,cAAA,OAE5B,cC/C2d,MCO5e,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,skBCfM,G,+GAC+B+B,GAChD,OAAOA,EAAMjkB,IAAI,SAAAlC,GAAI,aAAUA,EAAV,CAAgB+Y,UAAU,Q,oCAGrBqN,GAC1B,IAAMvP,EAAQ,MAAKuP,GACnB,IAAK,IAAIrlB,KAAQ8V,EACfA,EAAM9V,GAAMgY,UAAW,EAEzB,OAAOlC,I,+BAGsCsP,GAC7C,OAAOA,EAAMjkB,IAAI,SAAAlC,GAAI,aAAUA,EAAV,CAAgBqE,SAAS,EAAMC,kBAAkB,Q,iCAG/C8hB,GACvB,IAAMvP,EAAQ,MAAKuP,GACnB,IAAK,IAAIrlB,KAAQ8V,EACfA,EAAM9V,GAAMsD,SAAU,EACtBwS,EAAM9V,GAAMuD,kBAAmB,EAEjC,OAAOuS,I,wCAGuBuP,GAC9B,IAAMvP,EAAQ,MAAKuP,GACnB,IAAK,IAAIrlB,KAAQ8V,EACfA,EAAM9V,GAAMlL,SAAWghB,EAAM9V,GAAMlL,SAASqM,IAAI,SAAAmkB,GAAG,aAC9CA,EAD8C,CAEjDhiB,SAAS,EACTC,kBAAkB,MAGtB,OAAOuS,I,iCAGwCsP,GAC/C,OAAOA,EAAMjkB,IAAI,SAAAlC,GAAI,aAAUA,EAAV,CAAgBqE,SAAS,EAAOC,kBAAkB,Q,mCAG9C8hB,GACzB,IAAMvP,EAAQ,MAAKuP,GACnB,IAAK,IAAIrlB,KAAQ8V,EACfA,EAAM9V,GAAMsD,SAAU,EACtBwS,EAAM9V,GAAMuD,kBAAmB,EAEjC,OAAOuS,I,0CAGyBuP,GAChC,IAAMvP,EAAQ,MAAKuP,GACnB,IAAK,IAAIrlB,KAAQ8V,EACf,IAAK,IAAI9kB,KAAK8kB,EAAM9V,GAAMlL,SACxBghB,EAAM9V,GAAMlL,SAAWghB,EAAM9V,GAAMlL,SAASqM,IAAI,SAAAmkB,GAAG,aAC9CA,EAD8C,CAEjDhiB,SAAS,EACTC,kBAAkB,MAIxB,OAAOuS,I,iCAGgBsP,EAAsCG,GAC7D,IAAMC,EAAyC,GACzCC,EAAeL,EAAMG,GAAY3F,MACnC8F,EAAgBD,EACpB,GAAsB,IAAlBC,EACF,OAAOF,EAET,IAAK,IAAI11B,EAAIy1B,EAAYz1B,GAAK,EAAGA,IAAK,CACpC,IAAMmP,EAAOmmB,EAAMt1B,GAOnB,GALImP,EAAK2gB,MAAQ6F,GAAgBxmB,EAAK2gB,MAAQ8F,IAC5CF,EAAQl1B,KAAK2O,GACbymB,EAAgBzmB,EAAK2gB,OAGJ,IAAf3gB,EAAK2gB,MACP,OAAO4F,EAGX,OAAOA,I,oCAIPJ,EACAG,EACAI,GAEA,IAAMF,EAAeL,EAAMG,GAAY3F,MACnC8F,EAAgBD,EACpB,GAAsB,IAAlBC,EACF,OAAON,EAET,IAAK,IAAIt1B,EAAIy1B,EAAYz1B,GAAK,EAAGA,IAAK,CACpC,IAAMmP,EAAOmmB,EAAMt1B,GAOnB,GALImP,EAAK2gB,MAAQ6F,GAAgBxmB,EAAK2gB,MAAQ8F,IAC5CN,EAAMt1B,GAAKG,OAAOkF,OAAOiwB,EAAMt1B,GAAI61B,EAAS1mB,IAC5CymB,EAAgBzmB,EAAK2gB,OAGJ,IAAf3gB,EAAK2gB,MACP,OAAOwF,EAGX,OAAOA,I,qCAIPA,EACAG,EACAI,GAGA,IADA,IAAMF,EAAeL,EAAMG,GAAY3F,MAC9B9vB,EAAIy1B,EAAYz1B,EAAIs1B,EAAMp1B,OAAQF,IAAK,CAC9C,IAAMmP,EAAOmmB,EAAMt1B,GAEnB,GAAImP,EAAK2gB,OAAS6F,GAAgB31B,IAAMy1B,EACtC,OAAOH,EAGLnmB,EAAK2gB,MAAQ6F,IACfL,EAAMt1B,GAAKG,OAAOkF,OAAOiwB,EAAMt1B,GAAI61B,EAAS1mB,KAGhD,OAAOmmB,I,wDAIPA,EACAQ,G,oHACAhG,E,+BAAgB,EAChBoD,E,+BAA0B,K,8BAEPoC,E,kEAGjB,OAHSnmB,E,QACH4mB,IAAa5mB,EAAK2mB,IAAqB3mB,EAAK2mB,GAAkB51B,OAAS,EACvEqL,EAAK4D,EAAK5D,IAAM4D,EAAKtD,K,UAC3B,MACKsD,EADL,CAEE5D,KACAukB,QACAiG,WACA7C,a,YAEE6C,E,iBACF,uBAAOC,EAAQC,QAAQ9mB,EAAK2mB,GAAmBA,EAAkBhG,EAAQ,EAAG3gB,EAAK5D,IAAM4D,EAAKtD,MAA5F,S,6XAK6BjD,GACjC,IAAMsH,EAAOtH,EAAI2X,MAAM,KAAK,GAC5B,OAAOrQ,GAAQ,CAAC,aAAc,UAAW,SAASsS,SAAStS,GAASA,EAAoBxD,O,KC9JvE,IACb3H,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BxB,MACzHuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,yCAAyC,OAAS,eAAe,eAAe,MAAM,iBAAiB,QAAQ,kBAAkB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,wBAAwB,OAAS,eAAe,eAAe,MAAM,iBAAiB,gB,0jBC0J3S,IAAqB,GAArB,6D,+DAIE,EAAAgrB,MAAQ,CACN5I,WAAY,GAAe,oBAC3BwO,QAAS,GAAe,iBACxBzO,MAAO,GAAe,gBAExB,EAAAnhB,eAAiB,GATnB,gOA6EIrB,KAAK8nB,IAAItC,iBAAiB,QAASxlB,KAAK0yB,6BAA8B,CAAEC,SAAS,IACjF3yB,KAAK8nB,IAAItC,iBAAiB,aAAcxlB,KAAK0yB,6BAA8B,CAAEC,SAAS,IACtF3yB,KAAKgP,OAAOnH,OAAO,sCAAuC7H,KAAK4yB,qBAC1D5yB,KAAK0rB,YACR1rB,KAAK6yB,YAAY,GAAQC,qBAAqB9yB,KAAKyO,OAAO8N,OAjFhE,SAmFUvc,KAAK+yB,YAnFf,6IAuFI/yB,KAAK0yB,+BACL1yB,KAAK8nB,IAAIlC,oBAAoB,QAAS5lB,KAAK0yB,8BAC3C1yB,KAAK8nB,IAAIlC,oBAAoB,aAAc5lB,KAAK0yB,gCAzFpD,wGA8FgC3M,GA9FhC,gFA+FQA,IACF/lB,KAAK0yB,+BACL1yB,KAAKgzB,uBAAyBpzB,OAAOuE,WAAWnE,KAAKizB,oBAAqB,KAjGhF,kKAsGwChoB,IAAhCjL,KAAKgzB,yBACPpzB,OAAOqkB,aAAajkB,KAAKgzB,wBACzBhzB,KAAKgzB,4BAAyB/nB,KAxGpC,oGA6G4B8a,EAAYzL,GA7GxC,mFA8GQyL,IAAOzL,EA9Gf,gCA+GYta,KAAK+yB,YA/GjB,OAgHW/yB,KAAK0rB,YACR1rB,KAAKgP,OAAOnH,OAAO,+BAAgC,IAjH3D,oNAuHkCke,EAAazL,GAvH/C,mFAwHQyL,IAAOzL,EAxHf,gCAyHYta,KAAK+yB,YAzHjB,wMA8HsBhN,EAAWzL,GA9HjC,oFA+HQta,KAAK4yB,qBAAuB5yB,KAAKkzB,oBAAoB5Y,KAAUta,KAAKkzB,oBAAoBnN,GA/HhG,gCAiIY/lB,KAAK+yB,YAjIjB,OAkIM/yB,KAAKgP,OAAOnH,OAAO,uCAAuC,GAlIhE,UAoIS7H,KAAK0rB,YACR1rB,KAAK6yB,YAAY,GAAQC,qBAAqB/M,EAAGxJ,OAG/B,UAAlBvc,KAAKsrB,WACLvF,EAAG1hB,OAAOsF,MACV2Q,EAAKjW,OAAOsF,OAASoc,EAAG1hB,OAAOsF,MAC9B3J,KAAKid,YA3IZ,gCA8IYjd,KAAKmzB,kBA9IjB,OAgJInzB,KAAKuxB,qBAhJT,mJAqJIvxB,KAAKuxB,uBArJT,wLA0JIvxB,KAAKqrB,MAAQ,CACX5I,WAAY,GAAe,oBAC3BwO,QAAS,GAAe,iBACxBzO,MAAO,GAAe,gBA7J5B,kSA2OSxiB,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SA3OtC,oDA+OU6pB,EAAgD,kBAA5BpzB,KAAKyO,OAAOlC,MAAMA,MAAqBvM,KAAKyO,OAAOlC,MAAMA,MAAM0Z,OAAS,KAC9FjmB,KAAK4yB,qBAAuB5yB,KAAKmrB,mBAAqBiI,GAhP9D,gCAiPYpzB,KAAKgP,OAAO2C,SAAS,yBAArB,IACJpI,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvCgD,MAAO6mB,GACJpzB,KAAKokB,gBApPhB,iCAuPUpkB,KAAK4yB,qBAAuB5yB,KAAKmrB,oBAAsBiI,GACzDpzB,KAAKgP,OAAOnH,OAAO,uCAAuC,GAEtD0B,EAAWvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACxC8pB,EAAarzB,KAAKgP,OAAOzH,MAAMyW,WAAW9hB,KAAKqN,GAC/C+pB,EACJtzB,KAAK0rB,YACL2H,IACCA,EAAW5Q,WAAW/lB,QACrB22B,EAAWpC,QAAQv0B,QACnB22B,EAAWE,cAAc72B,QACzB22B,EAAWG,gBAAgB92B,SAC3B42B,EAnQV,wBAoQQtzB,KAAKuxB,qBApQb,4CAuQYvxB,KAAKgP,OAAO2C,SAAS,mBAAoB3R,KAAKgP,OAAOzH,MAAMyW,WAAWzU,UAvQlF,WAwQ4B,UAAlBvJ,KAAKsrB,WAAwBtrB,KAAKyO,OAAOpK,OAAOsF,KAxQ1D,kCA0Qc3J,KAAKmzB,kBA1QnB,0SAgRUnzB,KAAKyzB,0BAA0B,CACnClqB,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B4C,SAAUnM,KAAKyO,OAAOpK,OAAOsF,OAlRnC,iJAsRsB+pB,GAClB,IAAMC,EAAmB,CAAC,QAAS,eAAgB,QAAS,qBAAsB,mBAC5Ep2B,EAAoC,GAM1C,OALAZ,OAAOgQ,QAAQ+mB,EAAMnnB,OAClBK,OAAO,uCAAEtO,EAAF,YAAYq1B,EAAiB3U,SAAS1gB,KAC7C0N,QAAQ,YAAkB,2BAAhB1N,EAAgB,KAAVS,EAAU,KACzBxB,EAAOe,EAAKuO,YAAc9N,EAAM8N,aAE7B7H,KAAKC,UAAU1H,KA9R1B,+FAiSuB+tB,GAjSvB,uFAkSItrB,KAAK6yB,YAAYvH,GAlSrB,SAmSUtrB,KAAK4M,OAAO5M,KAAKwrB,aAnS3B,OAoSIxrB,KAAKuxB,qBApST,iMAuSiB/F,GAvSjB,oFAwSQA,EAAY9uB,OAxSpB,gCAySYsD,KAAK4M,OAAO4e,GAzSxB,6BA2SMxrB,KAAKgP,OAAOnH,OAAO,0BA3SzB,OA6SI7H,KAAKgP,OAAOnH,OAAO,+BAAgC2jB,GACnDxrB,KAAK4zB,eA9ST,+LAiTepI,GAjTf,mFAkTSA,EAlTT,iEAqTUxrB,KAAKgP,OAAO2C,SAAS,oBAAqB,CAC9CpI,SAAUvJ,KAAKgP,OAAOzH,MAAMyW,WAAWzU,SACvCgD,MAAOif,IAvTb,oJA6TI,GADAxrB,KAAKgzB,4BAAyB/nB,EACzBjL,KAAK6zB,QAAV,CAGA,IAAMC,EAAc9zB,KAAK6zB,QAAQtZ,iBAAiB,uBAC5C7M,EAAYomB,EAAYA,EAAYp3B,OAAS,GAC7Cq3B,EAAS/zB,KAAK6zB,QAAQG,cAAc,2BACtCtmB,GAAaA,EAAUumB,eAAiBF,GAC1CA,EAAOG,SAAS,CACdC,IAAKzmB,EAAUumB,cAAcG,UAAwC,GAA5Bp0B,KAAK6zB,QAAQQ,aACtDC,SAAU,YAtUlB,wCA4UIt0B,KAAKgP,OAAOnH,OAAO,uCAAuC,KA5U9D,iCAkKI,IAAI0sB,EAAa,GACbC,EAAY,GAOhB,OANIx0B,KAAKyJ,mBAAqBZ,GAC5B0rB,EAAa,GAAe,SAAW,IAEvCC,EAAY,IAAM,GAAe,SAASC,oBAGvCz0B,KAAK2V,YAKR4e,EACA,GAAe,oBAAD,OAAqB,GAAcG,WAC/C10B,KAAK2V,eAEP6e,EAROD,EAAa,GAAKC,IA3K/B,qCAwLI,MAAwB,YAApBx0B,KAAK0rB,aAGe,gBAApB1rB,KAAK0rB,YAGF1rB,KAAKogB,kBA9LhB,0CAkMI,MAA4B,mBAArBpgB,KAAKyO,OAAOnQ,OAlMvB,uCAsMI,OAAO0B,KAAK4yB,qBAAuB5yB,KAAKmrB,oBAtM5C,yCAyMwB,WACpB,OAAInrB,KAAKwrB,aAAexrB,KAAK9D,KAAK0Q,OAAO+nB,YAChC30B,KAAK9D,KAAKumB,WAAW7V,OAAO,SAAAmW,GAAQ,OAAI,EAAK7mB,KAAK0Q,OAAO+nB,YAAY3V,SAAS+D,EAAShb,MAEzF,KA7MX,sCAgNqB,WACjB,OAAI/H,KAAKwrB,aAAexrB,KAAK9D,KAAK0Q,OAAOglB,UAChC5xB,KAAK9D,KAAK+0B,QAAQrkB,OAAO,SAAA8hB,GAAM,OAAI,EAAKxyB,KAAK0Q,OAAOglB,UAAU5S,SAAS0P,EAAO3mB,MAEhF,KApNX,oCAuNmB,WACf,OAAO/H,KAAK9D,KAAK0Q,OAAOgoB,UAAU/mB,IAAI,SAAAnB,GAAI,OAAI,EAAKxQ,KAAKsmB,MAAM9V,KAAOE,OAAO,SAAAjD,GAAI,OAAIA,MAxNxF,qCA4NI,SACE3J,KAAK9D,QACJ8D,KAAK9D,KAAKumB,WAAW/lB,QACpBsD,KAAK9D,KAAK+0B,QAAQv0B,QAClBsD,KAAK9D,KAAKq3B,cAAc72B,QACxBsD,KAAK9D,KAAKs3B,gBAAgB92B,QAC1BC,OAAOsvB,KAAKjsB,KAAK9D,KAAKsmB,OAAS,IAAI9lB,WAlO3C,+CAuOI,QAASsD,KAAK60B,kBAAoB70B,KAAK80B,mBAvO3C,GAAqC,QAEnC,gBADC,eAAK,CAAE5oB,UAAU,EAAOwF,QAAS,M,kCAWlC,gBADC,eAAI,S,+BAIL,gBADC,gBAAO,4BAA6B,CAAE9C,UAAW,gB,iDAIlD,gBADC,gBAAS,qBAAsB,CAAEA,UAAW,gB,0CAI7C,gBADC,gBAAS,cAAe,CAAEA,UAAW,gB,mCAItC,gBADC,gBAAS,WAAY,CAAEA,UAAW,gB,gCAInC,gBADC,gBAAS,aAAc,CAAEA,UAAW,gB,kCAIrC,gBADC,gBAAS,cAAe,CAAEA,UAAW,gB,mCAItC,gBADC,gBAAO,wBAAyB,CAAEA,UAAW,gB,4BAI9C,gBADC,gBAAO,cAAe,CAAEA,UAAW,gB,mCAIpC,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAO,gBAAiB,CAAEA,UAAW,Y,qCAItC,gBADC,gBAAM,eAAgB,CAAEA,UAAW,Y,0CAIpC,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAM,UAAW,CAAEA,UAAW,gB,kCAI/B,gBADC,gBAAM,QAAS,CAAEA,UAAW,gB,uCAI7B,gBADC,gBAAM,UAAW,CAAEA,UAAW,Y,qCAI/B,gBADC,gBAAM,iBAAkB,CAAEA,UAAW,Y,sCAItC,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,gCAIhC,gBADC,gBAAM,cAAe,CAAEA,UAAW,gB,mCAInC,gBADC,gBAAM,oBAAqB,CAAEA,UAAW,Y,yCAuBzC,gBAFC,eAAM,kBACN,eAAM,0B,uCAMN,MAUD,gBADC,eAAM,gB,mCAQN,MAGD,gBADC,eAAM,sB,yCAKN,MAGD,gBADC,eAAM,W,6BAoBN,MAGD,gBADC,eAAM,a,gCAGN,MAGD,gBADC,eAAM,sB,qCAON,MA/JkB,GAAO,gBAb3B,eAAU,CACT7N,WAAY,CACV8wB,UAAA,GACAd,QAAA,GACA3d,OAAA,EACA2hB,UAAA,GACA/D,YAAA,GACAgE,WAAA,GACA3L,YAAA,GACA4L,iBAAA,GACAC,WAAA,OAGiB,cCjLyd,MCQ1e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIn1B,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsBlB,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,aAAa,CAACE,MAAM,CAAC,WAAaN,EAAIo1B,UAAU,QAAUp1B,EAAIq1B,iBAAiB5sB,GAAG,CAAC,OAASzI,EAAIs1B,mBAAmB,GAAGl1B,EAAG,MAAM,CAACI,YAAY,QAAQR,EAAIY,GAAIZ,EAAY,SAAE,SAAS4J,EAAK/I,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAK,QAAUuB,GAAQ,CAAE+I,EAAU,MAAExJ,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGwI,EAAK2rB,OAAO,cAAcv1B,EAAIuB,KAAKnB,EAAG,cAAc,CAACI,YAAY,OAAOF,MAAM,CAAC,GAAKsJ,EAAKvE,MAAM,CAACjF,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGwI,EAAKrL,MAAM,gBAAgB6B,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGwI,EAAKsnB,QAAQtjB,KAAK,OAAO,mBAAmB,KAAK,MACz0B,GAAkB,GCID,G,WAArB,oCAGU,KAAA4F,WAAyB,IAAI,E,kEAMnC,OAHKgiB,EAAa9hB,WAChB8hB,EAAa9hB,SAAW,IAAI8hB,GAEvBA,EAAa9hB,W,6LAId/O,EAAW,OAAU8d,MAAMgT,SAC3B/hB,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY7B,GACZ8C,UAAU,CACT+B,SAAUjC,GAAMC,MAAMiC,OAAOC,mBAAqBT,KAEnD3B,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,oMAGVwX,EAAc/J,G,6FAChC8J,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUic,MAAMiT,MAAMjzB,QAAQ,QAASkR,GAAMlR,QAAQ,QAASmH,IAC1EtC,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BkP,QACAlV,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,gNAGDwX,EAAc/J,EAAc8lB,G,6FACvDhc,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YACC,OAAUic,MAAMlP,QACb9Q,QAAQ,QAASkR,GACjBlR,QAAQ,QAASmH,GACjBnH,QAAQ,WAAYitB,IAExBpoB,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BkP,QACAlV,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,6qBCTtC,IAAqB,GAArB,6D,+DACE,EAAAw5B,YAA2B,GAC3B,EAAAF,SAAwB,GACxB,EAAAJ,gBAA0B,MAC1B,EAAAD,UAA8C,KAC9C,EAAA9zB,eAAiB,GALnB,+EAWIrB,KAAKm1B,UAAY,CACfQ,IAAK,GAAe,OACpBC,GAAI,GAAe,gBACnBC,GAAI,GAAe,mBAdzB,0LAmBU71B,KAAK81B,cAnBf,sSAwBI91B,KAAKm1B,UAAY,CACfQ,IAAK,GAAe,OACpBC,GAAI,GAAe,gBACnBC,GAAI,GAAe,iBA3BzB,SA6BU71B,KAAK81B,cA7Bf,8SAkC+B,GAAaA,cAlC5C,OAkCM91B,KAAK01B,YAlCX,OAmCM11B,KAAK01B,YAAc11B,KAAK01B,YAAY7nB,IAAI,SAAAlE,GAAI,aACvCA,EADuC,CAE1CvE,IAAK,GAAkBqI,WAAW,CAAElE,SAAUI,EAAKJ,SAAU4C,SAAUxC,EAAK+C,WAE9E1M,KAAKq1B,eAAe,OAvC1B,yMA8CI,IAAIU,EAAgB,GACpB/1B,KAAKw1B,SAAWx1B,KAAKw1B,SAAS3nB,IAAI,SAAAmoB,GAChC,OAAIA,EAAQC,aAAeF,EAClBC,GAETD,EAAgBC,EAAQC,WACxB,MACKD,EADL,CAEEV,MAAOU,EAAQC,kBAtDvB,qCA2DiB1sB,GAEXvJ,KAAKw1B,SADU,QAAbjsB,EACcvJ,KAAK01B,YAAY51B,MAAM,GAEvBE,KAAK01B,YAAY9oB,OAAO,SAAAjD,GAAI,OAAIA,EAAKJ,WAAaA,IAEpEvJ,KAAKk2B,gBACLl2B,KAAKo1B,gBAAkB7rB,MAlE3B,GAAsC,QAQpC,gBADC,gBAAM,oBAAqB,CAAEqF,UAAW,Y,yCAgBzC,gBADC,eAAM,sB,qCAQN,MA9BkB,GAAQ,gBAH5B,eAAU,CACT7N,WAAY,CAAEi0B,WAAA,OAEK,cC3C0d,MCQ3e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIj1B,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,yBAAyBlB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcC,MAAM,CAAE8H,OAAQvI,EAAI0J,oBAAsB1J,EAAI8I,uBAAwBxI,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI0P,qBAAqB1P,EAAI8I,0BAA0B,CAAC9I,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,cAAclB,EAAG,SAAS,CAACI,YAAY,cAAcC,MAAM,CAAE8H,OAAQvI,EAAI0J,oBAAsB1J,EAAI+I,uBAAwBzI,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI0P,qBAAqB1P,EAAI+I,0BAA0B,CAAC/I,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,kBAAkBlB,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsBlB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcC,MAAM,CAAE8H,OAAQvI,EAAIgtB,mBAAqBhtB,EAAIsJ,mBAAoBhJ,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIo2B,oBAAoBp2B,EAAIsJ,sBAAsB,CAACtJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,cAAclB,EAAG,SAAS,CAACI,YAAY,cAAcC,MAAM,CAAE8H,OAAQvI,EAAIgtB,mBAAqBhtB,EAAIqJ,oBAAqB/I,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIo2B,oBAAoBp2B,EAAIqJ,uBAAuB,CAACrJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,OAAO,cAAclB,EAAG,SAAS,CAACI,YAAY,cAAcC,MAAM,CAAE8H,OAAQvI,EAAIgtB,mBAAqBhtB,EAAIoJ,iBAAkB9I,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIo2B,oBAAoBp2B,EAAIoJ,oBAAoB,CAACpJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,kBAAmBtB,EAAsB,mBAAEI,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAYlB,EAAG,MAAM,CAACI,YAAY,sBAAsBF,MAAM,CAAC,KAAO,QAAQ,aAAaN,EAAIsB,eAAe,UAAUtB,EAAIY,GAAIZ,EAAa,UAAE,SAASiqB,GAAU,OAAO7pB,EAAG,WAAW,CAACd,IAAI2qB,EAAS3hB,KAAK9H,YAAY,qBAAqBF,MAAM,CAAC,QAAUN,EAAIq2B,kBAAkBpM,EAAS3hB,OAAOG,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO1I,EAAImqB,qBAAqBF,EAAS3hB,SAAS,CAACtI,EAAImB,GAAG,aAAanB,EAAIoB,GAAG6oB,EAAS1rB,MAAM,gBAAgB,KAAKyB,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,wBAAwB,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,SAAS,CAACI,YAAY,aAAaF,MAAM,CAAC,KAAO,SAAS,aAAeN,EAAIsB,eAAe,aAAgB,KAAM,SAAWtB,EAAIs2B,OAAS,IAAK7tB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIu2B,SAASv2B,EAAIs2B,MAAQ,OAAQ,CAACl2B,EAAG,cAAc,GAAGA,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGinB,KAAKmO,MAAkB,IAAZx2B,EAAIs2B,QAAc,OAAOl2B,EAAG,SAAS,CAACI,YAAY,aAAaF,MAAM,CAAC,KAAO,SAAS,aAAeN,EAAIsB,eAAe,aAAgB,KAAM,SAAWtB,EAAIs2B,OAAS,KAAK7tB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIu2B,SAASv2B,EAAIs2B,MAAQ,OAAQ,CAACl2B,EAAG,aAAa,OAAOA,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,YAAYlB,EAAG,oBAAoB,MAC71G,GAAkB,GCDlB,GAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,mBAAmBC,MAAMT,EAAIiP,OAAOzH,MAAMiC,OAAOyN,WAAa,QAAQvV,MAAM,CAAG80B,SAAY,GAAKz2B,EAAIs2B,MAAS,OAAU,CAACl2B,EAAG,KAAK,CAACI,YAAY,SAAS,CAACR,EAAImB,GAAG,YAAYf,EAAG,MAAM,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,OAAO+R,QAAQ,SAAStR,MAAOgB,EAAIq2B,kBAAkB,YAAa9lB,WAAW,kCAAkC/P,YAAY,sCAAsC,CAACR,EAAImB,GAAG,6DAA6Df,EAAG,MAAM,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,OAAO+R,QAAQ,SAAStR,MAAOgB,EAAIq2B,kBAAkB,aAAc9lB,WAAW,mCAAmC/P,YAAY,uCAAuC,CAACJ,EAAG,IAAI,CAACJ,EAAImB,GAAG,wDAAwDf,EAAG,MAAM,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,OAAO+R,QAAQ,SAAStR,MAAOgB,EAAIq2B,kBAAkB,gBAAiB9lB,WAAW,sCAAsC/P,YAAY,0CAA0C,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,sCAAsCnB,EAAI02B,GAAG,KAAKt2B,EAAG,MAAM,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,OAAO+R,QAAQ,SAAStR,MAAOgB,EAAIq2B,kBAAkB,aAAc9lB,WAAW,mCAAmC/P,YAAY,sCAAsC,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,4BAA4Bf,EAAG,IAAI,CAACJ,EAAImB,GAAG,qGAAqGf,EAAG,MAAM,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,OAAO+R,QAAQ,SAAStR,MAAOgB,EAAIq2B,kBAAkB,WAAY9lB,WAAW,iCAAiC/P,YAAY,qCAAqC,CAACJ,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,gCAAgCf,EAAG,IAAI,CAACJ,EAAImB,GAAG,wRAC9sD,GAAkB,CAAC,WAAa,IAAInB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAG,QAAQnB,EAAImB,GAAG,WAAWf,EAAG,KAAK,CAACJ,EAAImB,GAAG,cAAcnB,EAAImB,GAAG,kCAAkCf,EAAG,KAAK,CAACJ,EAAImB,GAAG,gBAAgBnB,EAAImB,GAAG,8BAA8Bf,EAAG,KAAK,CAACJ,EAAImB,GAAG,iBAAiBnB,EAAImB,GAAG,qDCmD3T,GAArB,yMAOoBmH,GAChB,OAAQrI,KAAKiqB,gBAAkBjqB,KAAKiqB,cAAcjL,SAAS3W,OAR/D,GAA6C,QAE3C,gBADC,gBAAM,QAAS,CAAEuG,UAAW,Y,6BAI7B,gBADC,gBAAM,gBAAiB,CAAEA,UAAW,Y,qCAJlB,GAAe,gBAHnC,eAAU,CACT7N,WAAY,CAAEuc,QAAA,OAEK,cCpDie,MCQlf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCwGM,GAArB,6D,+DAIE,EAAAzU,sBAAwBA,GACxB,EAAAC,sBAAwBA,GACxB,EAAAO,kBAAoBA,GACpB,EAAAD,mBAAqBA,GACrB,EAAAD,gBAAkBA,GAElB,EAAA9H,eAAiB,GAVnB,uFA8CoBgH,GAChB,OAAQrI,KAAKiqB,gBAAkBjqB,KAAKiqB,cAAcjL,SAAS3W,KA/C/D,gCAqCI,MAAO,CACL,CAAEA,KAAM,WAAY/J,KAAM,GAAe,aACzC,CAAE+J,KAAM,YAAa/J,KAAM,GAAe,cAC1C,CAAE+J,KAAM,eAAgB/J,KAAM,GAAe,0BAC7C,CAAE+J,KAAM,YAAa/J,KAAM,GAAe,gBAC1C,CAAE+J,KAAM,UAAW/J,KAAM,GAAe,iBA1C9C,GAAsC,QAEpC,gBADC,eAAK,CAAE4N,UAAU,EAAOwF,SAAS,K,0CAYlC,gBADC,gBAAM,QAAS,CAAE9C,UAAW,Y,6BAI7B,gBADC,gBAAM,oBAAqB,CAAEA,UAAW,Y,yCAIzC,gBADC,gBAAM,mBAAoB,CAAEA,UAAW,Y,wCAIxC,gBADC,gBAAM,gBAAiB,CAAEA,UAAW,Y,qCAIrC,gBADC,gBAAS,WAAY,CAAEA,UAAW,Y,gCAInC,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,Y,4CAI/C,gBADC,gBAAS,sBAAuB,CAAEA,UAAW,Y,2CAI9C,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,Y,4CAjC5B,GAAQ,gBAH5B,eAAU,CACT7N,WAAY,CAAE21B,gBAAA,GAAiB3kB,SAAA,GAAUuL,QAAA,GAAS8P,UAAA,GAAWC,SAAA,OAE1C,cC3H0d,MCQ3e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIttB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,oBAAoBF,MAAM,CAAC,aAAaN,EAAIsB,eAAe,gBAAgBtB,EAAIY,GAAIZ,EAAS,MAAE,SAAS4L,GAAM,OAAOxL,EAAG,SAAS,CAACd,IAAIsM,EAAKtD,KAAK9H,YAAY,yBAAyBC,MAAM,CAAE,0BAA6BmL,EAAS,KAAI,CAAErD,OAAQvI,EAAIuI,SAAWqD,EAAKtD,OAAQhI,MAAM,CAAC,KAAO,SAAS,eAAeN,EAAIuI,SAAWqD,EAAKtD,KAAO,YAAS4C,EAAU,SAAyB,YAAdU,EAAKtD,OAAuBtI,EAAI42B,kBAAkBnuB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,WAAYrC,EAAKtD,SAAS,CAAClI,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACJ,EAAG,OAAO,CAACI,YAAY,yBAAyBF,MAAM,CAAC,cAAc,SAAS,CAACF,EAAGwL,EAAK4J,KAAK,CAACC,IAAI,eAAe,GAAGrV,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKuE,gBAAgB,IACt1B,GAAkB,GCmCD,GAArB,6D,+DAOE,EAAA7O,eAAiB,GAEjB,EAAAoK,MAAQ,EAAKmrB,WATf,iGAaI52B,KAAKyL,MAAQzL,KAAK42B,aAbtB,iCAiBI,MAAO,CACL,CAAEvuB,KAAM,UAAW6H,MAAO,GAAe,WAAYqF,KAAM,IAC3D,CAAElN,KAAM,SAAU6H,MAAO,GAAe,UAAWqF,KAAM,IACzD,CAAElN,KAAM,UAAW6H,MAAO,GAAe,WAAYqF,KAAM,IAC3D,CAAElN,KAAM,YAAa6H,MAAO,GAAe,aAAcqF,KAAM,IAC/D,CAAElN,KAAM,WAAY6H,MAAO,GAAe,YAAaqF,KAAM,SAtBnE,GAA8C,QAE5C,gBADC,eAAK,CAAErJ,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,EAAOwF,SAAS,K,wCAQlC,gBADC,eAAM,0C,yCAGN,MAdkB,GAAgB,gBAHpC,eAAU,CACT3Q,WAAY,CAAE81B,YAAA,GAAanZ,WAAA,GAAYoZ,YAAA,GAAanZ,aAAA,GAAcU,aAAA,OAE/C,cCpCke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIte,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,oBAAoB,CAACJ,EAAG,SAAS,CAACI,YAAY,wBAAwB,CAACJ,EAAG,MAAM,CAACI,YAAY,uBAAuB,CAACJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI+K,UAAUpO,eAAgBqD,EAAI+K,UAAgB,OAAE3K,EAAG,MAAM,CAACI,YAAY,kBAAkBR,EAAIY,GAAIZ,EAAa,UAAE,SAASg3B,GAAU,OAAO52B,EAAG,UAAU,CAACd,IAAI03B,EAAShvB,GAAGxH,YAAY,iBAAiB,CAACJ,EAAG,SAAS,CAACI,YAAY,gBAAgBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,OAAQ+oB,MAAa,CAAC52B,EAAG,OAAO,CAACI,YAAY,gBAAgBF,MAAM,CAAC,cAAc,SAAS,CAACF,EAAG,iBAAiB,GAAGA,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACJ,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,aAAa,kBAAkBlB,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAG41B,EAASxI,aAAapuB,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACJ,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIi3B,cAAcD,OAAeA,EAAiB,SAAE52B,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAG41B,EAAS90B,aAAalC,EAAIuB,OAAQy1B,EAAa,KAAE52B,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAG41B,EAASE,SAASl3B,EAAIuB,SAASnB,EAAG,SAAS,CAACI,YAAY,2BAA2BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,mBAAmBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,SAAU+oB,MAAa,CAAC52B,EAAG,cAAc,OAAO,GAAGA,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,gBAAgBA,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoB,MAC9qD,GAAkB,GCkDD,GAArB,6D,+DAIE,EAAAA,eAAiB,GAJnB,mFAMgB01B,GACZ,IAAMxtB,EAAWwtB,EAASxtB,SAAS7F,cACnC,MAAoB,OAAb6F,EAAoB,MAAQA,MARvC,GAA6C,QAE3C,gBADC,eAAK,CAAE2C,UAAU,K,iCADC,GAAe,gBADnC,eAAU,CAAEnL,WAAY,CAAE4c,aAAA,GAAc8G,UAAA,OACpB,cCnDie,MCQlf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI1kB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACE,MAAM,CAAC,KAAO,gBAAgB,CAAEN,EAAW,QAAEI,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,SAAS,CAACI,YAAY,wBAAwBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAa7N,EAAG,UAAU,CAACiV,IAAI,SAAS7U,YAAY,eAAeC,MAAM,CAAEogB,SAAU7gB,EAAI6gB,UAAWlf,MAAM,CAAGqnB,UAAWhpB,EAAI4pB,WAAc,mBAAqB5pB,EAAI4pB,WAAa,WAAS1e,GAAa5K,MAAM,CAAC,KAAO,SAAS,aAAa,OAAO,aAAaN,EAAIsB,eAAe,cAAc,SAAW,OAAO,CAAClB,EAAG,SAAS,CAACI,YAAY,sBAAsBiI,GAAG,CAAC,YAAczI,EAAI6pB,UAAU,YAAc7pB,EAAI8pB,SAAS,UAAY9pB,EAAI+pB,QAAQ,cAAgB/pB,EAAIgqB,aAAa,CAAC5pB,EAAG,OAAO,CAACI,YAAY,wBAAwBJ,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoBlB,EAAG,MAAM,CAACI,YAAY,gBAAgBF,MAAM,CAAC,KAAO,aAAa,aAAaN,EAAIsB,eAAe,gBAAgBtB,EAAIY,GAAIZ,EAAU,OAAE,SAASm3B,GAAO,OAAO/2B,EAAG,SAAS,CAACd,IAAI63B,EAAM7uB,KAAK9H,YAAY,eAAeC,MAAM,CAAE8H,OAAQvI,EAAIkX,YAAcigB,EAAM7uB,MAAOhI,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQ,eAAeoD,OAAO1D,EAAIkX,YAAcigB,EAAM7uB,OAAOG,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIo3B,YAAYD,EAAM7uB,SAAS,CAAClI,EAAG,OAAO,CAACI,YAAY,gBAAgBC,MAAM02B,EAAM7uB,MAAM,CAAClI,EAAG,QAAQA,EAAG,QAAQA,EAAG,UAAUA,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAGnB,EAAIoB,GAAG+1B,EAAM54B,aAAa,OAAOyB,EAAIuB,QAC9/C,GAAkB,GC8DD,GAArB,6D,+DAUE,EAAA6oB,WAA4B,KAE5B,EAAAR,WAAqB,EAErB,EAAAS,cAA+B,KAE/B,EAAAxJ,UAAoB,EAEpB,EAAAhH,kBAAwC,KAExC,EAAAvY,eAAiB,GApBnB,+EA+BIgB,SAASmjB,iBAAiB,UAAWxlB,KAAKylB,mBACtCzlB,KAAKyZ,SACPzZ,KAAK0Z,gBAjCX,sCAsCIrX,SAASujB,oBAAoB,UAAW5lB,KAAKylB,mBAC7CzlB,KAAK2Z,iBAvCT,sCA2CkBF,GACVA,EACFzZ,KAAK0Z,cAEL1Z,KAAK2Z,iBA/CX,kCAmDcud,GACVl3B,KAAKoY,aAAa8e,KApDtB,oCAuDa,WACHrd,EAAgBxX,SAASwX,cAC/B7Z,KAAK4Z,kBACHC,aAAyB4N,aAAe5N,IAAkBxX,SAASiC,KAAOuV,EAAgB,KAC5F7Z,KAAK8Z,UAAU,WACb,IAAMC,EAAS,EAAKC,MAAMD,OACtBA,GACFA,EAAOE,YA9Df,qCAoEQja,KAAK4Z,mBAAqBvX,SAAS6X,SAASla,KAAK4Z,oBACnD5Z,KAAK4Z,kBAAkBK,QAEzBja,KAAK4Z,kBAAoB,OAvE7B,wCA0EoBO,GAChB,GAAKna,KAAKyZ,QAAV,CAGA,GAAkB,WAAdU,EAAM9a,IAGR,OAFA8a,EAAMC,sBACNpa,KAAKgO,MAAM,SAGb,GAAkB,QAAdmM,EAAM9a,IAAV,CAGA,IAAM0a,EAAS/Z,KAAKga,MAAMD,OACpB9L,EAAU8L,EACXtJ,MAAM6J,KAAKP,EAAOQ,iBAAiB,2BACpC,GACJ,IAAKtM,EAAQvR,OAGX,OAFAyd,EAAMC,sBACNL,EAAOE,QAGT,IAAMW,EAAQ3M,EAAQ,GAChB4M,EAAO5M,EAAQA,EAAQvR,OAAS,IAClCyd,EAAMW,UAAazY,SAASwX,gBAAkBe,GAASvY,SAASwX,gBAAkBE,EAG1EI,EAAMW,UAAYzY,SAASwX,gBAAkBgB,IACvDV,EAAMC,iBACNQ,EAAMX,UAJNE,EAAMC,iBACNS,EAAKZ,aAnGX,gCA0GYE,GACRna,KAAKoqB,cAAgBjQ,EAAM4N,UAC3B/nB,KAAKmqB,WAAahQ,EAAM6N,QACxBhoB,KAAK4gB,UAAW,EAChB,IAAM7P,EAASoJ,EAAM+N,cACjBnX,EAAOoX,mBACTpX,EAAOoX,kBAAkBhO,EAAM4N,aAhHrC,+BAoHW5N,GACiB,OAApBna,KAAKmqB,YAAuBnqB,KAAKoqB,gBAAkBjQ,EAAM4N,YAG7D/nB,KAAK2pB,WAAavB,KAAKC,IAAI,EAAGlO,EAAM6N,QAAUhoB,KAAKmqB,YAC/CnqB,KAAK2pB,YAAcxP,EAAMmO,YAC3BnO,EAAMC,oBA1HZ,8BA8HUD,GACN,GAAIna,KAAKoqB,gBAAkBjQ,EAAM4N,UAGjC,OAAI/nB,KAAK2pB,YAAc,IACrB3pB,KAAKo3B,iBACLp3B,KAAKgO,MAAM,eAGbhO,KAAKo3B,cAvIT,mCA2IIp3B,KAAKo3B,cA3IT,kCA+IIp3B,KAAKmqB,WAAa,KAClBnqB,KAAK2pB,WAAa,EAClB3pB,KAAKoqB,cAAgB,KACrBpqB,KAAK4gB,UAAW,IAlJpB,6BAuBI,MAAO,CACL,CAAEvY,KAAM,QAAsB/J,KAAM,GAAe,oBACnD,CAAE+J,KAAM,QAAsB/J,KAAM,GAAe,oBACnD,CAAE+J,KAAM,OAAqB/J,KAAM,GAAe,wBA1BxD,GAAqD,QAEnD,gBADC,eAAK,CAAE4N,UAAU,EAAMwF,SAAS,K,+BAIjC,gBADC,gBAAM,YAAa,CAAE9C,UAAW,Y,iCAIjC,gBADC,gBAAS,eAAgB,CAAEA,UAAW,Y,oCAoCvC,gBADC,eAAM,Y,+BAON,MAjDkB,GAAuB,gBAD3C,QACoB,cC/Dye,MCQ1f,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI7O,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,MAAM,CAACI,YAAY,wBAAwB,CAACJ,EAAG,SAAS,CAACI,YAAY,0BAA0BF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAa7N,EAAG,UAAU,CAACI,YAAY,iBAAiBC,MAAM,CAAEogB,SAAU7gB,EAAI6gB,UAAWlf,MAAM,CAAGqnB,UAAY,cAAgBhpB,EAAI4pB,WAAa,OAAUtpB,MAAM,CAAC,aAAaN,EAAIsB,eAAe,eAAe,CAAClB,EAAG,MAAM,CAACI,YAAY,2BAA2BiI,GAAG,CAAC,YAAczI,EAAI6pB,UAAU,YAAc7pB,EAAI8pB,SAAS,UAAY9pB,EAAIs3B,WAAW,cAAgBt3B,EAAIs3B,aAAa,CAACl3B,EAAG,OAAO,CAACI,YAAY,4BAA4BJ,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,SAAS,CAACA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIwI,WAAaxI,EAAIwI,WAAWgmB,SAAW,SAASpuB,EAAG,WAAW,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,QAAQ+R,QAAQ,UAAUtR,MAAOgB,EAAa,UAAEuQ,WAAW,cAAc/P,YAAY,wCAAwCF,MAAM,CAAC,YAAcN,EAAIsB,eAAe,2BAA2B,KAAO,KAAKmP,SAAS,CAAC,MAASzQ,EAAa,WAAGyI,GAAG,CAAC,MAAQ,CAAC,SAASC,GAAWA,EAAOsI,OAAOM,YAAqBtR,EAAIu3B,UAAU7uB,EAAOsI,OAAOhS,QAAOgB,EAAIw3B,mBAAmBp3B,EAAG,SAAS,CAACI,YAAY,sBAAsBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIy3B,cAAc,CAACr3B,EAAG,gBAAgBA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwB,GAAItB,EAAI03B,gBAAsB,OAAEt3B,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAACJ,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAACJ,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,QAAQ,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI03B,gBAAgB/6B,aAAaqD,EAAIY,GAAIZ,EAAmB,gBAAE,SAASg3B,GAAU,OAAO52B,EAAG,UAAU,CAACd,IAAI03B,EAAShvB,GAAGxH,YAAY,mBAAmBC,MAAM,CAAEk3B,QAAS33B,EAAI43B,oBAAsBZ,EAAShvB,KAAM,CAAC5H,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAACJ,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAG41B,EAAS90B,aAAa9B,EAAG,QAAQ,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI63B,cAAcb,OAAeA,EAASE,MAAQl3B,EAAI43B,oBAAsBZ,EAAShvB,GAAI5H,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAG41B,EAASE,SAASl3B,EAAIuB,OAAQvB,EAAI43B,oBAAsBZ,EAAShvB,GAAI5H,EAAG,SAAS,CAACI,YAAY,0BAA0BC,MAAM,CAAE8H,OAAQvI,EAAI83B,wBAA0Bd,EAAShvB,IAAK1H,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,eAAe,gBAAgBoC,OAAO1D,EAAI83B,wBAA0Bd,EAAShvB,KAAKS,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI+3B,cAAcf,MAAa,CAAC52B,EAAG,aAAa,GAAGJ,EAAIuB,OAAQvB,EAAI83B,wBAA0Bd,EAAShvB,IAAMhI,EAAI43B,oBAAsBZ,EAAShvB,GAAI5H,EAAG,MAAM,CAACI,YAAY,iCAAiCF,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,SAAS,CAACI,YAAY,uBAAuBF,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIg4B,aAAahB,MAAa,CAAC52B,EAAG,OAAO,CAACI,YAAY,wBAAwB,CAACJ,EAAG,aAAa,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAclB,EAAG,SAAS,CAACI,YAAY,uBAAuBF,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIi4B,aAAajB,MAAa,CAAC52B,EAAG,OAAO,CAACI,YAAY,wBAAwB,CAACJ,EAAG,eAAe,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,0BAA0BlB,EAAG,SAAS,CAACI,YAAY,yBAAyBF,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAI4W,eAAeogB,MAAa,CAAC52B,EAAG,OAAO,CAACI,YAAY,wBAAwB,CAACJ,EAAG,cAAc,GAAGA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,0BAA0BtB,EAAIuB,KAAMvB,EAAI43B,oBAAsBZ,EAAShvB,GAAI5H,EAAG,MAAM,CAACI,YAAY,wBAAwB,CAACJ,EAAG,WAAW,CAACiQ,WAAW,CAAC,CAAC9R,KAAK,QAAQ+R,QAAQ,UAAUtR,MAAOgB,EAAe,YAAEuQ,WAAW,gBAAgB/P,YAAY,yCAAyCF,MAAM,CAAC,aAAaN,EAAIsB,eAAe,QAAQ,KAAO,KAAKmP,SAAS,CAAC,MAASzQ,EAAe,aAAGyI,GAAG,CAAC,MAAQ,CAAC,SAASC,GAAWA,EAAOsI,OAAOM,YAAqBtR,EAAIk4B,YAAYxvB,EAAOsI,OAAOhS,QAAOgB,EAAIw3B,mBAAmBp3B,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,SAAS,CAACI,YAAY,4BAA4BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIm4B,SAASnB,MAAa,CAACh3B,EAAImB,GAAG,qBAAqBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,sBAAsBlB,EAAG,SAAS,CAACI,YAAY,8BAA8BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIo4B,mBAAmBpB,MAAa,CAAC52B,EAAG,cAAcA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,yBAAyB,GAAGlB,EAAG,SAAS,CAACI,YAAY,8BAA8BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAIq4B,gBAAgB,CAACr4B,EAAImB,GAAG,qBAAqBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,0BAA0BtB,EAAIuB,UAAU,GAAGvB,EAAIuB,WAAWvB,EAAIuB,MAC7zJ,GAAkB,GCAD,IACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,+DAA+D,OAAS,eAAe,iBAAiB,QAAQ,kBAAkB,gB,0jBC4HrL,IAAqB,GAArB,6D,+DAUE,EAAAspB,WAAa,EACb,EAAAQ,WAAa,EACb,EAAAvJ,UAAW,EACX,EAAA0W,UAAY,GACZ,EAAAK,kBAA4C,KAC5C,EAAAM,YAAc,GACd,EAAAJ,sBAAgD,KAChD,EAAAx2B,eAAiB,GAjBnB,iFA8BIrB,KAAK2pB,WAAa,EAClB3pB,KAAK4gB,UAAW,EAChB5gB,KAAKs3B,UAAY,GACjBt3B,KAAK23B,kBAAoB,KACzB33B,KAAKi4B,YAAc,GACnBj4B,KAAK63B,sBAAwB,OAnCjC,gCAsCY1d,GACRna,KAAK4gB,UAAW,EAChB5gB,KAAKmqB,WAAahQ,EAAM6N,QACvB7N,EAAM+N,cAA8BC,kBAAkBhO,EAAM4N,aAzCjE,+BA4CW5N,GACFna,KAAK4gB,WAGV5gB,KAAK2pB,WAAavB,KAAKC,IAAI,EAAGlO,EAAM6N,QAAUhoB,KAAKmqB,eAhDvD,iCAmDahQ,GACJna,KAAK4gB,WAGV5gB,KAAK4gB,UAAW,EACXzG,EAAM+N,cAA8BM,kBAAkBrO,EAAM4N,YAC9D5N,EAAM+N,cAA8BK,sBAAsBpO,EAAM4N,WAE/D/nB,KAAK2pB,WAAa,IACpB3pB,KAAKgO,MAAM,SAEbhO,KAAK2pB,WAAa,KA9DtB,oCAiEgBoN,GACZ,gBAAU3O,KAAKmO,MAA0B,IAApBQ,EAASsB,UAA9B,OAlEJ,oCAsEIr4B,KAAKgO,MAAM,MAAOhO,KAAKs3B,UAAUrR,QACjCjmB,KAAKs3B,UAAY,KAvErB,oCA0EgBP,GACZ/2B,KAAK63B,sBAAwB73B,KAAK63B,wBAA0Bd,EAAShvB,GAAK,KAAOgvB,EAAShvB,KA3E9F,mCA8EegvB,GAAkB,WAC7B/2B,KAAK23B,kBAAoBZ,EAAShvB,GAClC/H,KAAKi4B,YAAclB,EAASE,MAAQ,GACpCj3B,KAAK63B,sBAAwB,KAC7B73B,KAAK8Z,UAAU,WACb,IAAMwe,EAAW,EAAKxQ,IAAIkM,cAAc,iDACpCsE,aAAoBC,sBACtB,EAAKhB,eAAee,GACpBA,EAASre,aAtFjB,+BA2FW8c,GACP/2B,KAAKgO,MAAM,OAAQ,CAAE+oB,WAAUE,KAAMj3B,KAAKi4B,YAAYhS,SACtDjmB,KAAKo4B,kBA7FT,mCAgGerB,GACX/2B,KAAK63B,sBAAwB,KAC7B73B,KAAKgO,MAAM,OAAQ+oB,KAlGvB,yCAqGqBA,GACjB/2B,KAAKgO,MAAM,OAAX,MAAwB+oB,EAAxB,CAAkCE,KAAMj3B,KAAKi4B,YAAYhS,UACzDjmB,KAAKo4B,kBAvGT,qCA0GiBrB,GACb/2B,KAAK63B,sBAAwB,KAC7B73B,KAAKgO,MAAM,SAAU+oB,KA5GzB,sCAgHI/2B,KAAK23B,kBAAoB,KACzB33B,KAAKi4B,YAAc,KAjHvB,qCAoHiBO,GACb,IAAMF,EACJE,aAA0BD,oBACtBC,EACCA,EAAetQ,cACtBoQ,EAAS52B,MAAMmjB,OAAS,OACxByT,EAAS52B,MAAMmjB,OAAf,UAA2ByT,EAASG,aAApC,MACAH,EAAS52B,MAAMg3B,UAAY,WA3H/B,sCAmBqB,WACjB,OAAK14B,KAAKuI,YAAevI,KAAKuI,WAAWuB,QAGlC9J,KAAK8K,UAAU8B,OACpB,SAAAmqB,GAAQ,MAAsB,WAAlBA,EAAS3lB,MAAqB2lB,EAASjtB,UAAY,EAAKvB,WAAYuB,UAHzE,OArBb,GAAiD,QAE/C,gBADC,eAAK,CAAEoC,UAAU,K,+BAIlB,gBADC,eAAK,CAAEwF,QAAS,Q,kCAIjB,gBADC,eAAK,CAAExF,UAAU,K,iCAsBlB,gBADC,eAAM,Y,yBAQN,MApCkB,GAAmB,gBADvC,eAAU,CAAEnL,WAAY,CAAE4c,aAAA,GAAc8G,UAAA,GAAW7G,SAAA,GAAU+a,SAAA,GAAU9a,WAAA,OACnD,cCnJqe,MCQtf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI9d,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,wBAAwBC,MAAM,CAAEiZ,QAAS1Z,EAAI0Z,QAAS,gBAAiB1Z,EAAI64B,iBAAkBpwB,GAAG,CAAC,MAAQ,SAASC,GAAQA,EAAOsW,qBAAsB,CAAC5e,EAAG,SAAS,CAACI,YAAY,uBAAuB,CAACJ,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAG,cAAcf,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI84B,cAAc14B,EAAG,SAAS,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI+4B,mBAAmB34B,EAAG,SAAS,CAACI,YAAY,oBAAoBF,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,yBAAyBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,WAAW,CAAC7N,EAAG,aAAaA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,6BAA6B,KAAKlB,EAAG,SAAS,CAACI,YAAY,+CAA+CF,MAAM,CAAC,KAAO,SAAS,UAAYN,EAAIqd,YAAY,aAAard,EAAIsB,eAAe,oBAAoBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,eAAe,CAAC7N,EAAG,kBAAkB,GAAGA,EAAG,SAAS,CAACI,YAAY,2CAA2CF,MAAM,CAAC,KAAO,SAAS,UAAYN,EAAIg5B,QAAQ,aAAah5B,EAAIsB,eAAe,gBAAgBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,WAAW,CAAC7N,EAAG,mBAAmB,GAAGA,EAAG,SAAS,CAACI,YAAY,uBAAuB,CAACJ,EAAG,SAAS,CAACI,YAAY,0BAA0BF,MAAM,CAAC,KAAO,SAAS,UAAYN,EAAIqd,YAAY,aAAard,EAAIsB,eAAe,oBAAoBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,eAAe,CAAC7N,EAAG,kBAAkB,GAAGA,EAAG,MAAM,CAACI,YAAY,wBAAwBF,MAAM,CAAC,YAAY,WAAW,CAACF,EAAG,SAAS,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI+4B,iBAAiB34B,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIi5B,aAAe,GAAG,MAAMj5B,EAAIoB,GAAGpB,EAAIk5B,oBAAoB94B,EAAG,SAAS,CAACI,YAAY,0BAA0BF,MAAM,CAAC,KAAO,SAAS,UAAYN,EAAIg5B,QAAQ,aAAah5B,EAAIsB,eAAe,gBAAgBmH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,WAAW,CAAC7N,EAAG,mBAAmB,GAAGA,EAAG,OAAO,CAACI,YAAY,gCAAgCJ,EAAG,SAAS,CAACI,YAAY,+BAA+BC,MAAM,CAAE8H,OAAQvI,EAAI64B,iBAAkBv4B,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,wBAAwB,gBAAgBoC,OAAO1D,EAAI64B,kBAAkBpwB,GAAG,CAAC,MAAQzI,EAAIme,iBAAiB,CAAC/d,EAAG,iBAAiB,KAAMJ,EAAmB,gBAAEI,EAAG,QAAQ,CAACI,YAAY,yBAAyB,CAACJ,EAAG,MAAM,CAACI,YAAY,gCAAgC,CAACJ,EAAG,MAAM,CAACA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,wBAAwBlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,8BAA8BlB,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,UAAUmH,GAAG,CAAC,MAAQzI,EAAIme,iBAAiB,CAAC/d,EAAG,cAAc,KAAKA,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACJ,EAAG,OAAO,CAACI,YAAY,8BAA8B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,kBAAkBlB,EAAG,MAAM,CAACI,YAAY,6BAA6BF,MAAM,CAAC,KAAO,eAAeN,EAAIY,GAAIZ,EAAU,OAAE,SAASm3B,GAAO,OAAO/2B,EAAG,SAAS,CAACd,IAAI63B,EAAM7uB,KAAK7H,MAAM,CAAC02B,EAAM7uB,KAAM,CAAEC,OAAQvI,EAAIkX,YAAcigB,EAAM7uB,OAAQhI,MAAM,CAAC,KAAO,SAAS,aAAa62B,EAAMhnB,MAAM,eAAezM,OAAO1D,EAAIkX,YAAcigB,EAAM7uB,MAAM,KAAO,SAASG,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,aAAckpB,EAAM7uB,SAAS,CAAClI,EAAG,QAAQJ,EAAImB,GAAG,eAAenB,EAAIoB,GAAG+1B,EAAMhnB,OAAO,kBAAkB,KAAK/P,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACJ,EAAG,OAAO,CAACI,YAAY,8BAA8B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiBlB,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACJ,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIs2B,OAAS,GAAI,aAAet2B,EAAIsB,eAAe,aAAgB,MAAOmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIiO,MAAM,QAASoa,KAAKC,IAAI,GAAKtoB,EAAIs2B,MAAQ,QAAS,CAACl2B,EAAG,cAAc,GAAGA,EAAG,SAAS,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGinB,KAAKmO,MAAkB,IAAZx2B,EAAIs2B,QAAc,OAAOl2B,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,SAAS,SAAWN,EAAIs2B,OAAS,IAAI,aAAet2B,EAAIsB,eAAe,aAAgB,MAAOmH,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIiO,MAAM,QAASoa,KAAK8Q,IAAI,IAAKn5B,EAAIs2B,MAAQ,QAAS,CAACl2B,EAAG,aAAa,GAAGA,EAAG,SAAS,CAACI,YAAY,0BAA0BC,MAAM,CAAE8H,OAAQvI,EAAIo5B,SAAU94B,MAAM,CAAC,KAAO,SAAS,eAAeoD,OAAO1D,EAAIo5B,UAAU3wB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAajO,EAAIo5B,YAAY,CAACh5B,EAAG,oBAAoBA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoB,OAAOlB,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACJ,EAAG,OAAO,CAACI,YAAY,8BAA8B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAYlB,EAAG,MAAM,CAACI,YAAY,2BAA2BR,EAAIY,GAAIZ,EAAa,UAAE,SAASqR,GAAM,OAAOjR,EAAG,SAAS,CAACd,IAAI+R,EAAK/I,KAAK7H,MAAM,CAAE8H,OAAQvI,EAAIq5B,cAAchoB,EAAK/I,OAAQhI,MAAM,CAAC,KAAO,SAAS,eAAeoD,OAAO1D,EAAIq5B,cAAchoB,EAAK/I,QAAQG,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,mBAAoBoD,EAAK/I,SAAS,CAAClI,EAAG,OAAO,CAACI,YAAY,qBAAqBF,MAAM,CAAC,cAAc,UAAUF,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGiQ,EAAKlB,cAAc,OAAOnQ,EAAIuB,QAC77J,GAAkB,GCAD,IACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,IAAI,KAAO,OAAO,MAAQ,8BAA+BxB,MAClGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,6BAA6B,OAAS,eAAe,iBAAiB,gBCtBpG,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,IAAI,KAAO,OAAO,MAAQ,8BAA+BxB,MAClGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,8BAA8B,OAAS,eAAe,iBAAiB,gBCtBrG,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BxB,MAC9FuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,MAAM,EAAI,MAAM,MAAQ,KAAK,OAAS,KAAK,GAAK,MAAM,OAAS,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,oBAAoB,OAAS,eAAe,iBAAiB,QAAQ,kBAAkB,WAAWF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,gBAAgB,OAAS,eAAe,iBAAiB,gBC8JtT,GAArB,6D,+DAaE,EAAAu4B,iBAAkB,EAClB,EAAAv3B,eAAiB,GAdnB,mFAkCgBgH,GACZ,OAAQrI,KAAKq5B,gBAAgBra,SAAS3W,KAnC1C,uCAuCIrI,KAAK44B,iBAAmB54B,KAAK44B,gBAC7B54B,KAAKgO,MAAM,kBAAmBhO,KAAK44B,mBAxCvC,6BAiBI,MAAO,CACL,CAAEvwB,KAAM,QAAS6H,MAAO,GAAe,oBACvC,CAAE7H,KAAM,QAAS6H,MAAO,GAAe,oBACvC,CAAE7H,KAAM,OAAQ6H,MAAO,GAAe,sBApB5C,gCAyBI,MAAO,CACL,CAAE7H,KAAM,WAAY6H,MAAO,GAAe,aAC1C,CAAE7H,KAAM,YAAa6H,MAAO,GAAe,cAC3C,CAAE7H,KAAM,eAAgB6H,MAAO,GAAe,0BAC9C,CAAE7H,KAAM,YAAa6H,MAAO,GAAe,gBAC3C,CAAE7H,KAAM,UAAW6H,MAAO,GAAe,iBA9B/C,GAAkD,QACtB,gBAAzB,eAAK,CAAEwB,SAAS,K,+BACM,gBAAtB,eAAK,CAAEA,QAAS,M,iCACM,gBAAtB,eAAK,CAAEA,QAAS,M,oCACK,gBAArB,eAAK,CAAEA,QAAS,K,oCACK,gBAArB,eAAK,CAAEA,QAAS,K,qCACS,gBAAzB,eAAK,CAAEA,SAAS,K,mCACS,gBAAzB,eAAK,CAAEA,SAAS,K,+BACK,gBAArB,eAAK,CAAEA,QAAS,K,6BACQ,gBAAxB,eAAK,CAAEA,SAAS,K,+BACW,gBAA3B,eAAK,CAAEA,QAAS,W,iCACY,gBAA5B,eAAK,CAAEA,QAAS,iBAAM,O,uCAXJ,GAAoB,gBAXxC,eAAU,CACT3Q,WAAY,CACVu4B,cAAA,GACAC,eAAA,GACA9U,UAAA,GACA+U,UAAA,GACAha,SAAA,GACAia,iBAAA,GACApb,aAAA,OAGiB,cCrLse,MCQvf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,kkBCKf,IAAMqb,GAAW,CACfp7B,KAAM,GACN4Y,KAAM,KACN5O,QAAQ,EACRwB,QAAS,KACTykB,SAAU,GACVtsB,SAAU,GACVo2B,SAAU,EACVsB,gBAAiB,GACjBC,UAAW,GACXC,iBAAkB,IAGdC,GAAiB,SAACjwB,GAAD,qBAA8BA,IAC/CkwB,GAAuB,SAAClwB,GAAD,2BAAoCA,IAC3DmwB,GAA2B,SAACnwB,GAAD,+BAAwCA,IAEnE,GAAW,SAACtC,GAChB,GAAe0yB,KAAKH,GAAevyB,EAAMsC,UAAY,SAAUtC,EAAMqG,OAGjE,GAAiB,SAACrG,GACtB,GAAe0yB,KAAKF,GAAqBxyB,EAAMsC,UAAY,SAAUtC,EAAM2yB,QAAU,KAGjF,GAAqB,SAAC3yB,GAC1B,GAAe0yB,KAAKD,GAAyBzyB,EAAMsC,UAAY,SAAUtC,EAAM4yB,gBAAkB,KAGtFC,GAAqB,SAACljB,GACjC,IAAKA,EACH,OAAO,KAET,IAAMmjB,EAAWnjB,EACd6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACV,OAAI2b,EAAS39B,QAAU,GAAqB,UAAhB29B,EAAS,GACnC,UAAUA,EAAS,GAAnB,YAAyBA,EAAS,IAEhCA,EAAS39B,QAAU,GAAK,CAAC,aAAc,WAAWsiB,SAASqb,EAAS,IACtE,UAAUA,EAAS,GAAnB,YAAyBA,EAAS,IAE7B,MAGIC,GAAoB,SAACpjB,GAChC,IAAKA,EACH,OAAO,EAET,IAAMmjB,EAAWnjB,EACd6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACV,MAAoB,UAAhB2b,EAAS,GACJA,EAAS39B,QAAU,EAErB,CAAC,aAAc,WAAWsiB,SAASqb,EAAS,KAAOA,EAAS39B,QAAU,GAGzE69B,GAAuB,SAACnyB,EAAU0B,GACtC,IAAKA,EACH,MAAO,CAAEykB,SAAUnmB,EAAImmB,UAAY,GAAItsB,SAAUmG,EAAInG,UAAY,IAEnE,IAAMu4B,GAASpyB,EAAI9J,MAAQ,IAAIye,MAAM,OACrC,MAAO,CACLwR,SAAUnmB,EAAImmB,UAAYiM,EAAM,IAAM,GACtCv4B,SAAUmG,EAAInG,WAAau4B,EAAM99B,OAAS,EAAI89B,EAAM16B,MAAM,GAAG6N,KAAK,OAAS,MAIlE,GAAgB,SAACkB,GAC5B,IAAM4rB,EAAahqB,MAAMC,QAAQ7B,GAC7BA,EACGjC,OAAO,SAAAxE,GAAG,OAAIA,GAAsB,WAAf,eAAOA,KAC5ByF,IAAI,SAAAzF,GACH,IAAM8O,EAAO9O,EAAI8O,MAAQ,KACnBpN,EAAU1B,EAAI0B,SAAWswB,GAAmBljB,GAClD,WACE5Y,KAAM8J,EAAI9J,MAAQ,GAClB4Y,OACA5O,SAAUF,EAAIE,OACdwB,UACAuuB,SAAkC,kBAAjBjwB,EAAIiwB,SAAwBjwB,EAAIiwB,SAAW,EAC5DsB,gBAAiBvxB,EAAIuxB,iBAAmB,GACxCC,UAAWxxB,EAAIwxB,WAAa,GAC5BC,iBAAkBzxB,EAAIyxB,kBAAoB,IACvCU,GAAqBnyB,EAAK0B,MAGnC,GACJ,IAAK2wB,EAAW/9B,OACd,MAAO,CAAC,MAAKg9B,KAEf,IAAIgB,GAAe,EASnB,OARAD,EAAWzuB,QAAQ,SAAC5D,EAAKxH,GACnBwH,EAAIE,SACNoyB,EAAc95B,KAGd85B,EAAc,IAChBA,EAAc,GAETD,EAAW5sB,IAAI,SAACzF,EAAKxH,GAAN,aAAsBwH,EAAtB,CAA2BE,OAAQ1H,IAAU85B,OAGxD,GAA0B,SAAC37B,GACtC,IAAMA,GAA0B,WAAjB,eAAOA,KAAsBA,EAAMmY,KAChD,OAAO,KAET,IAAMpN,EAAU/K,EAAM+K,SAAWswB,GAAmBr7B,EAAMmY,MAC1D,OAAKpN,GAAYwwB,GAAkBv7B,EAAMmY,MAGlC,CACL5Y,KAAMS,EAAMT,MAAQS,EAAMwvB,UAAY,GACtCrX,KAAMnY,EAAMmY,KAAK6F,MAAM,KAAK,GAC5BzU,QAAQ,EACRwB,UACAykB,SAAUxvB,EAAMwvB,UAAYxvB,EAAMT,MAAQ,GAC1C2D,SAAUlD,EAAMkD,UAAY,GAC5Bo2B,SAAoC,kBAAnBt5B,EAAMs5B,SAAwBjQ,KAAKC,IAAI,EAAGD,KAAK8Q,IAAI,EAAGn6B,EAAMs5B,WAAa,EAC1FsB,gBAAiB56B,EAAM46B,iBAAmB,GAC1CC,UAAW76B,EAAM66B,WAAa,GAC9BC,iBAAkB96B,EAAM86B,kBAAoB,IAZrC,MAgBL,GAAmB,CACvBjsB,KAAM,GAAc,GAAejP,IAAIm7B,GAAe,WACtDI,OAAQ,GAAev7B,IAAIo7B,GAAqB,WAAa,GAC7DI,eAAgB,GAAwB,GAAex7B,IAAIq7B,GAAyB,WACpFnwB,SAAU,SAGN,GAAqC,CACzC8wB,YADyC,SAC7BpzB,EAAkBsC,GAC5B,IAAM+wB,EAAe/wB,GAAY,QAC7BtC,EAAMsC,WAAa+wB,IAGvBrzB,EAAMsC,SAAW+wB,EACjBrzB,EAAMqG,KAAO,GAAc,GAAejP,IAAIm7B,GAAec,KAC7DrzB,EAAM2yB,OAAS,GAAev7B,IAAIo7B,GAAqBa,KAAkB,GACzErzB,EAAM4yB,eAAiB,GACrB,GAAex7B,IAAIq7B,GAAyBY,OAGhDC,qBAbyC,SAapBtzB,EAAkBR,GACrC,IAAM+H,EACJvH,EAAM4yB,gBAAkB5yB,EAAM4yB,eAAerwB,UAAY/C,EAAQ+C,QAAUvC,EAAM4yB,eAAiB,KAC9Frd,EAAU,GAAwB,MAClChO,GAAW,GADsB,GAElC/H,EAFkC,CAGrCuB,QAAQ,EACRuxB,iBAAkB9yB,EAAQ8yB,kBAAqB/qB,GAAWA,EAAQ+qB,kBAAqB,MAEpF/c,IAGLvV,EAAM4yB,eAAiBrd,EACvB,GAAmBvV,KAErBuzB,QA5ByC,SA4BjCvzB,GACNA,EAAMqG,KAAKC,IAAI,SAAAzF,GAAG,OAAIzL,OAAOkF,OAAOuG,EAAK,CAAEE,QAAQ,MACnDf,EAAMqG,KAAK5Q,KAAX,MAAqB08B,KACrB,GAASnyB,IAEX8X,SAjCyC,SAiChC9X,EAAO3G,GACd,GAAK2G,EAAMqG,KAAKhN,GAAhB,CAGA,IAAMm6B,EAAaxzB,EAAMqG,KAAKhN,GACxBo6B,EAAYD,EAAWzyB,OACzByyB,EAAWjxB,UACbvC,EAAM2yB,OAAS3yB,EAAM2yB,QAAU,GAC/B3yB,EAAM2yB,OAAOa,EAAWjxB,SAAxB,MAAwCixB,EAAxC,CAAoDzyB,QAAQ,IAC5D,GAAef,IAEjBA,EAAMqG,KAAKhQ,OAAOgD,EAAO,GACC,IAAtB2G,EAAMqG,KAAKlR,OACb6K,EAAMqG,KAAK5Q,KAAX,MAAqB08B,KACZsB,IACTzzB,EAAMqG,KAAKwa,KAAK8Q,IAAIt4B,EAAO2G,EAAMqG,KAAKlR,OAAS,IAAI4L,QAAS,GAE9D,GAASf,KAEX4X,aApDyC,SAoD5B5X,EAAO3G,GACb2G,EAAMqG,KAAKhN,KAGhB2G,EAAMqG,KAAKC,IAAI,SAAAzF,GAAG,OAAIzL,OAAOkF,OAAOuG,EAAK,CAAEE,QAAQ,MACnDf,EAAMqG,KAAKhN,GAAO0H,QAAS,EAC3B,GAASf,KAEX0zB,kBA5DyC,SA4DvB1zB,GAChB,IAAMgP,EAAYhP,EAAMqG,KAAK0R,KAAK,SAAAlX,GAAG,OAAIA,EAAIE,SACxCiO,IAGLhP,EAAM2yB,OAAS3yB,EAAM2yB,QAAU,GAC/B3yB,EAAMqG,KAAK5B,QAAQ,SAAA5D,GACbA,IAAQmO,GAAanO,EAAI0B,UAC3BvC,EAAM2yB,OAAQ9xB,EAAI0B,SAAlB,MAAkC1B,EAAlC,CAAuCE,QAAQ,OAGnDf,EAAMqG,KAAO,CAAC2I,GACd,GAAehP,GACf,GAASA,KAEX2zB,gBA3EyC,SA2EzB3zB,EAAOR,GACrBQ,EAAM2yB,OAAS3yB,EAAM2yB,QAAU,GAC/B,IAAMiB,EAAgB5zB,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAIA,EAAI0B,UAAY/C,EAAQ+C,UACpEuxB,EAAmB9zB,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAIA,EAAIE,SAAWF,EAAI8O,OAClEokB,EACJH,GAAiB,EAAIA,EAAgBE,GAAoB,EAAIA,EAAmB9zB,EAAMqG,KAAKlR,OACvF6+B,GACHJ,GAAiB,EAAI5zB,EAAMqG,KAAKutB,GAAiB5zB,EAAM2yB,OAAOnzB,EAAQ+C,WACvEvC,EAAMqG,KAAK0tB,GACPE,IACFz0B,EAAQ00B,wBAA0BF,GAAejB,GAAkBiB,EAAYrkB,MAC7EqX,EACJxnB,EAAQwnB,UACPgN,GAAeA,EAAYhN,UAC3BgN,GAAeA,EAAYj9B,YACN2M,IAArBlE,EAAQ9E,SAAyB8E,EAAQzI,KAAO,KACjD,GACI2D,OACiBgJ,IAArBlE,EAAQ9E,SACJ8E,EAAQ9E,SACRs5B,GAAeA,EAAYt5B,SAC3Bs5B,EAAYt5B,SACZ,GACAy5B,EACJF,KACGD,GAAeA,EAAYrkB,OAASnQ,EAAQmQ,WAA6BjM,IAArBlE,EAAQsxB,SAC3DsD,EACJJ,GACAA,EAAY1B,kBAC0C,kBAA/C0B,EAAY1B,iBAAiB9yB,EAAQmQ,MACxCqkB,EAAY1B,iBAAiB9yB,EAAQmQ,MACrC,EACAmhB,OACiBptB,IAArBlE,EAAQsxB,SACJtxB,EAAQsxB,SACRqD,GAAwBH,GAA+C,kBAAzBA,EAAYlD,SAC1DkD,EAAYlD,SACZsD,EACAvzB,EAAW,CACf9J,KAAMyI,EAAQzI,MAASi9B,GAAeA,EAAYj9B,MAASiwB,EAC3DrX,KAAMskB,EAAmBD,EAAYrkB,KAAOnQ,EAAQmQ,KACpD5O,QAAQ,EACRwB,QAAS/C,EAAQ+C,QACjBykB,WACAtsB,WACAo2B,WACAsB,qBAC8B1uB,IAA5BlE,EAAQ4yB,gBACJ5yB,EAAQ4yB,gBACR+B,GAAwBH,GACxBA,EAAY5B,iBACZ,GACNC,UAAW7yB,EAAQ6yB,WAAc2B,GAAeA,EAAY3B,WAAc,GAC1EC,iBAAmB0B,GAAeA,EAAY1B,kBAAqB,IAGrEtyB,EAAMqG,KAAK5B,QAAQ,SAAAL,GACjBA,EAAKrD,QAAS,IAEZizB,GACED,EAAc/zB,EAAMqG,KAAKlR,OAC3B6K,EAAMqG,KAAKhQ,OAAO09B,EAAa,EAAGlzB,GAKpCb,EAAMqG,KAAK5Q,KAAKoL,GAEdb,EAAM2yB,OAAOnzB,EAAQ+C,kBAChBvC,EAAM2yB,OAAOnzB,EAAQ+C,SAC5B,GAAevC,IAEjB,GAASA,IAEXq0B,iBArJyC,SAqJxBr0B,EAAOR,GACtB,IAAM2zB,EAAcnzB,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAIA,EAAIE,SAC9CiO,EAAYhP,EAAMqG,KAAK8sB,GAC7B,GAAInkB,GAAaA,EAAUzM,QAAS,CAClC,IAAM+xB,EAAgBt0B,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAKA,EAAI0B,SAAW1B,EAAI8O,OAASnQ,EAAQmQ,OACvF3P,EAAMqG,KAAK5B,QAAQ,SAAA5D,GACjBA,EAAIE,QAAS,IAEXuzB,GAAiB,EACnBt0B,EAAMqG,KAAKiuB,GAAevzB,QAAS,EAEnCf,EAAMqG,KAAK5Q,KAAX,MACK08B,GADL,CAEEp7B,KAAMyI,EAAQzI,MAAQ,GACtB4Y,KAAMnQ,EAAQmQ,aAGTX,IACTA,EAAUW,KAAOnQ,EAAQmQ,KACrBnQ,EAAQzI,OACViY,EAAUjY,KAAOyI,EAAQzI,OAG7B,GAASiJ,IAEXu0B,oBA9KyC,SA8KrBv0B,EAAO2P,GACzB,IAAMtW,EAAQ2G,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAIA,EAAIE,SAC1C1H,EAAQ,IAGZ2G,EAAMqG,KAAKhN,GAAOsW,KAAOA,EACzB,GAAS3P,KAEXw0B,oBAtLyC,SAsLrBx0B,EAAOjJ,GACzB,IAAMsC,EAAQ2G,EAAMqG,KAAKwtB,UAAU,SAAAhzB,GAAG,OAAIA,EAAIE,SAC1C1H,EAAQ,IAGZ2G,EAAMqG,KAAKhN,GAAOtC,KAAOA,EACzB,GAASiJ,KAEXy0B,uBA9LyC,SA8LlBz0B,EAAO00B,GAC5B,IAAM7zB,EAAMb,EAAMqG,KAAK0R,KAAK,SAAA3T,GAAI,OAAIA,EAAKrD,SACpCF,SAGgB6C,IAAjBgxB,EAAQ39B,OACV8J,EAAI9J,KAAO29B,EAAQ39B,WAEI2M,IAArBgxB,EAAQ1N,WACVnmB,EAAImmB,SAAW0N,EAAQ1N,eAEAtjB,IAArBgxB,EAAQh6B,WACVmG,EAAInG,SAAWg6B,EAAQh6B,eAEJgJ,IAAjBgxB,EAAQ/kB,OACV9O,EAAI8O,KAAO+kB,EAAQ/kB,WAEIjM,IAArBgxB,EAAQ5D,WACVjwB,EAAIiwB,SAAW4D,EAAQ5D,eAEOptB,IAA5BgxB,EAAQtC,kBACVvxB,EAAIuxB,gBAAkBsC,EAAQtC,sBAEN1uB,IAAtBgxB,EAAQrC,YACVxxB,EAAIwxB,UAAYqC,EAAQrC,WAE1B,GAASryB,KAEX20B,qBA1NyC,SA0NpB30B,EAAOR,GAC1B,IAAMqB,EAAMb,EAAMqG,KAAK0R,KAAK,SAAA3T,GAAI,OAAIA,EAAK7B,UAAY/C,EAAQ+C,UACxD1B,IAGLzL,OAAOkF,OAAOuG,EAAKrB,EAAQk1B,SAEzBl1B,EAAQk1B,QAAQ/kB,MACoB,kBAA7BnQ,EAAQk1B,QAAQ5D,UACvBiC,GAAkBvzB,EAAQk1B,QAAQ/kB,QAElC9O,EAAIyxB,iBAAmBzxB,EAAIyxB,kBAAoB,GAC/CzxB,EAAIyxB,iBAAiB9yB,EAAQk1B,QAAQ/kB,MAAQnQ,EAAQk1B,QAAQ5D,UAE/D,GAAS9wB,KAEX40B,uBA1OyC,SA0OlB50B,EAAO60B,GACvB3rB,MAAMC,QAAQ0rB,KAGnBA,EAAQpwB,QAAQ,SAAAqwB,GACd,GAAMA,GAAUA,EAAO9yB,UAAY8yB,EAAO3vB,KAA1C,CAGA,IAAM5C,EAAU,GAAH,OAAMuyB,EAAO9yB,SAAb,YAAyB8yB,EAAO3vB,MAC7C,IAAInF,EAAM2yB,SAAU3yB,EAAM2yB,OAAOpwB,GAAjC,CAGA,IAAMwyB,EAAcD,EAAOhvB,cAAgB,GACrC6J,EAAOolB,EAAW,WAChBD,EAAO9yB,SADS,kBACS8yB,EAAO3vB,KADhB,YACwB4vB,GADxB,WAEhBD,EAAO9yB,SAFS,kBAES8yB,EAAO3vB,MAClC6vB,EAAkBF,EAAOG,YAAc,GACvCC,EAAgB,GAAwB,CAC5Cn+B,KAAM+9B,EAAO/9B,MAAQ,GACrBiwB,SAAU8N,EAAO/9B,MAAQ,GACzB4Y,OACA5O,QAAQ,EACRwB,UACA7H,SAAUo6B,EAAOK,cAAgBJ,EACjCjE,SAAUv0B,OAAOu4B,EAAOM,eAAiB,EACzChD,gBAAiB0C,EAAOO,kBAAoB,GAC5ChD,UAAW2C,EACX1C,iBAAkBwC,EAAOQ,mBAAqB,MAG9CJ,GACEl1B,EAAM4yB,gBACL5yB,EAAM4yB,eAAeP,WACrB2C,KACDA,GAAmBh1B,EAAM4yB,eAAeP,aAE1CryB,EAAM4yB,eAAiBsC,GAEzB,IAAMK,EAAWv1B,EAAMqG,KAAK0R,KAAK,SAAAlX,GAAG,OAAIA,EAAI0B,UAAYA,IAClDizB,GACHD,IAAaA,EAASlD,YAAc2C,GAAmBA,GAAmBO,EAASlD,UAChFoD,IAA8BF,IAAaR,GAAehC,GAAkBwC,EAAS5lB,MACvF4lB,IAAaC,GAAiBC,IAChCF,EAASx+B,KAAO+9B,EAAO/9B,MAAQw+B,EAASx+B,KACxCw+B,EAASvO,SAAW8N,EAAO/9B,MAAQw+B,EAASvO,SAC5CuO,EAAS5lB,KAAOA,EAChB4lB,EAAS76B,SAAWo6B,EAAOK,cAAgBJ,EAC3CQ,EAASzE,SAAWv0B,OAAOu4B,EAAOM,eAAiB,EACnDG,EAASlD,UAAY2C,EACrBO,EAASjD,iBAAT,MACMiD,EAASjD,kBAAoB,GADnC,GAEMwC,EAAOQ,mBAAqB,KAExBC,GACVv1B,EAAMqG,KAAK5Q,KAAK,CACdsB,KAAM+9B,EAAO/9B,MAAQ,GACrB4Y,OACA5O,QAAQ,EACRwB,UACAykB,SAAU8N,EAAO/9B,MAAQ,GACzB2D,SAAUo6B,EAAOK,cAAgBJ,EACjCjE,SAAUv0B,OAAOu4B,EAAOM,eAAiB,EACzC/C,UAAW2C,EACX1C,iBAAkBwC,EAAOQ,mBAAqB,SAIpD,GAASt1B,GACT,GAAmBA,MAIV,GAAS,CACpBY,YAAY,EACZZ,MAAA,GACAS,UAAA,I,0jBC1bF,I,GAAMi1B,GAAa,SAACpzB,GAAD,0BAAmCA,IAEhD,GAAO,SAACtC,GACZ,GAAe0yB,KAAKgD,GAAW11B,EAAMsC,UAAY,SAAUtC,EAAMqG,OAG7DsvB,GAAY,SAACd,GAAD,OACf3rB,MAAMC,QAAQ0rB,GAAWA,EAAU,IACjCxvB,OAAO,SAAAyvB,GAAM,OAAIA,GAAUA,EAAOvyB,SAAWuyB,EAAOnlB,OACpDrJ,IAAI,SAAAwuB,GAAM,aACNA,EADM,CAETjrB,KAAM,SACNinB,SAAUv0B,OAAOu4B,EAAOhE,WAAa,EACrC8E,OAAQd,EAAOc,QAAU,GACzBlG,KAAMoF,EAAOpF,MAAQ,GACrB2C,UAAWyC,EAAOzC,WAAa,QAGxBwD,GAAoB,SAACf,GAChC,KAAMA,GAAUA,EAAO9yB,UAAY8yB,EAAO3vB,MACxC,OAAO,KAET,IAAM4vB,EAAcD,EAAOhvB,cAAgB,GAC3C,MAAO,CACLtF,GAAIs0B,EAAOt0B,GACXqJ,KAAM,SACNtH,QAAS,GAAF,OAAKuyB,EAAO9yB,SAAZ,YAAwB8yB,EAAO3vB,MACtC6hB,SAAU8N,EAAO/9B,MAAQ,GACzBiL,SAAU8yB,EAAO9yB,SACjBI,KAAM0yB,EAAO3vB,KACbwK,KAAMolB,EAAW,WACTD,EAAO9yB,SADE,kBACgB8yB,EAAO3vB,KADvB,YAC+B4vB,GAD/B,WAETD,EAAO9yB,SAFE,kBAEgB8yB,EAAO3vB,MACxCzK,SAAUo6B,EAAOK,cAAgBJ,EACjCjE,SAAUv0B,OAAOu4B,EAAOM,eAAiB,EACzCQ,OAAQd,EAAOO,kBAAoB,GACnC3F,KAAMoF,EAAOpF,MAAQ,GACrB2C,UAAWyC,EAAOG,YAAc,KAI9B,GAAwB,CAC5B5uB,KAAMsvB,GAAU,GAAev+B,IAAIs+B,GAAW,WAC9CpzB,SAAU,SAGN,GAA0C,CAC9C8wB,YAD8C,SAClCpzB,EAAOsC,GACjB,IAAM+wB,EAAe/wB,GAAY,QAC7BtC,EAAMsC,WAAa+wB,IAGvBrzB,EAAMsC,SAAW+wB,EACjBrzB,EAAMqG,KAAOsvB,GAAU,GAAev+B,IAAIs+B,GAAWrC,OAEvDyC,mBAT8C,SAS3B91B,EAAO60B,GACxB,GAAK3rB,MAAMC,QAAQ0rB,GAAnB,CAGA,IAAMkB,EAAiB/1B,EAAMqG,KAAKhB,OAAO,SAAAjB,GAAI,OAAIlI,OAAOkI,EAAK5D,IAAImU,WAAW,YACtEqhB,EAAkBnB,EAAQvuB,IAAIuvB,IAAmBxwB,OAAO8R,SAC9DnX,EAAMqG,KAAN,0BAAiB0vB,GAAjB,gBAAoCC,IACpCh2B,EAAMqG,KAAK4vB,KAAK,SAACC,EAAMC,GAAP,OAAiBA,EAAM9D,UAAU+D,cAAcF,EAAK7D,aACpE,GAAKryB,KAEPq2B,OAnB8C,SAmBvCr2B,EAAOwvB,GACZ,IAAM0D,EAAayC,GAAU,CAACnG,IAAW,GACzC,GAAK0D,EAAL,CAGA,IAAM75B,EAAQ2G,EAAMqG,KAAKwtB,UAAU,SAAAzvB,GAAI,OAAIlI,OAAOkI,EAAK5D,MAAQtE,OAAOg3B,EAAW1yB,MAC7EnH,GAAS,EACX2G,EAAMqG,KAAKhQ,OAAOgD,EAAO,EAAG65B,GAE5BlzB,EAAMqG,KAAKiwB,QAAQpD,GAErBlzB,EAAMqG,KAAK4vB,KAAK,SAACC,EAAMC,GAAP,OAAiBA,EAAM9D,UAAU+D,cAAcF,EAAK7D,aACpE,GAAKryB,KAEPW,OAjC8C,SAiCvCX,EAAOQ,GACZR,EAAMqG,KAAOrG,EAAMqG,KAAKhB,OAAO,SAAAjB,GAAI,OAAIlI,OAAOkI,EAAK5D,MAAQtE,OAAOsE,KAClE,GAAKR,KAII,GAAS,CACpBY,YAAY,EACZZ,MAAA,GACAS,UAAA,I,0jBCsNF,IAAM81B,GAAyD,CAC7DC,QAAS,EACTzqB,QAAS,EACTpF,OAAQ,EACR,cAAe,EACf,cAAe,EACf4O,QAAS,EACThS,UAAW,EACXkzB,SAAU,GAkCNC,GAAwB,IACxBC,GAAwB,IACxBC,GAAkC,kBAClCC,GAA0C,oBAC1CC,GAA4C,sBAC5CC,GAA0B5V,SAAS,GAAe/pB,IAAIw/B,KACtDI,GAA6B,GAAe5/B,IAAIy/B,IAChDI,GAA8B,GAAe7/B,IAAI0/B,IACjD,GAA+B,WACnC,GACEE,IACsC,WAAtC,eAAOA,MACN9tB,MAAMC,QAAQ6tB,IAEf,aAAYA,IAEd,GAA0C,kBAA/BA,GAAyC,CAClD,IAAMh1B,EAAWg1B,GAA2BxhB,MAAM,KAAKnQ,OAAO8R,SAAS,GACvE,OAAOnV,EAAW,kBAAGA,EAAWg1B,IAA+B,GAEjE,MAAO,IAEH,GAA4B,iBAAO,CACvCjT,SAAUpiB,GACVsiB,YAAa,GACbiT,UAAW,EACX/Z,SAAU,CACRjC,WAAY,GACZwO,QAAS,GACTyN,YAAa,GACbC,cAAe,GACfnc,MAAO,GACPwJ,WAAY,GACZ4S,SAAU,MAGR,GAAgC,WACpC,OACGJ,IACsC,WAAvC,eAAOA,KACP/tB,MAAMC,QAAQ8tB,KACdA,GAA4BT,SAC5BS,GAA4BK,WAErB,GAET,MAAYL,KAERM,GAAmB,CACvB,OACA,eACA,gBACA,wBACA,cACA,uBAEIC,GAA2B,CAAC,eAAgB,wBAAyB,uBAyBtD,GAAM,GAA3B,YAoHE,iDACE,oDAlHF,EAAA/pB,sBAAgC,EAEhC,EAAAG,2BAAqC,EAErC,EAAAV,0BAAoC,EAEpC,EAAAF,4BAAsC,EAEtC,EAAAyqB,4BAAsC,GAEtC,EAAArqB,WAAyB,UAEzB,EAAAwB,qBAA+B,GAE/B,EAAA8oB,qBAA+B,GAE/B,EAAA3oB,4BAAsC,EAEtC,EAAA4oB,4BAAsC,EAEtC,EAAAC,sBAAgC,EAQhC,EAAAC,0BAAoC,GAEpC,EAAAC,mBAAqD,KAErD,EAAAC,oBAA2C,KAE3C,EAAAC,0BAAoC,EAEpC,EAAAtpB,mBAA6B,EAE7B,EAAArB,wBAAkC,EAElC,EAAAC,0BAAoC,EAEpC,EAAAV,qBAA+B,EAE/B,EAAAqrB,sBAA4C,GAE5C,EAAAC,qBAA+B,EAE/B,EAAAC,kBAA4B,EAE5B,EAAAroB,6BAAuC,EAEvC,EAAAsoB,0BAAoC,EAIpC,EAAAC,4BAAsC,EAEtC,EAAAC,UAAoB,EAEpB,EAAAx+B,eAAiB,GAuDf,EAAK6T,gBAAkB,GAAO4qB,yBAAyBxB,KAA4BL,GAFrF,EApHF,6EA0HIj+B,KAAK+/B,iBACLngC,OAAO4lB,iBAAiB,SAAUxlB,KAAK+/B,gBACnC//B,KAAKggC,gBACPhgC,KAAKggC,eAAexa,iBAAiB,SAAUxlB,KAAK+/B,gBAEtD19B,SAASmjB,iBAAiB,UAAWxlB,KAAKylB,mBAC1CpjB,SAASmjB,iBAAiB,mBAAoBxlB,KAAKigC,oBACnDjgC,KAAK+tB,MAAMmS,IAAI,gBAAiBlgC,KAAKmgC,gBACrCngC,KAAK+tB,MAAMmS,IAAI,uBAAwBlgC,KAAKogC,sBAC5CpgC,KAAKqgC,cAAcrgC,KAAKyO,QACxBzO,KAAKsgC,wBApIT,sCAwII1gC,OAAOgmB,oBAAoB,SAAU5lB,KAAK+/B,gBACtC//B,KAAKggC,gBACPhgC,KAAKggC,eAAepa,oBAAoB,SAAU5lB,KAAK+/B,qBAEtB90B,IAA/BjL,KAAKugC,uBACP3gC,OAAOqkB,aAAajkB,KAAKugC,uBAE3Bl+B,SAASujB,oBAAoB,UAAW5lB,KAAKylB,mBAC7CpjB,SAASujB,oBAAoB,mBAAoB5lB,KAAKigC,oBACtDjgC,KAAK+tB,MAAMyS,KAAK,gBAAiBxgC,KAAKmgC,gBACtCngC,KAAK+tB,MAAMyS,KAAK,uBAAwBxgC,KAAKogC,sBAC7CpgC,KAAK0/B,mBAAqB,OACaz0B,IAAnCjL,KAAKygC,2BACP7gC,OAAOqkB,aAAajkB,KAAKygC,2BAE3BzgC,KAAK0gC,qBAAoB,KAvJ7B,oCA2JgB3a,EAAWzL,GAC2B,oBAAvCta,KAAK2gC,+BACd3gC,KAAK2gC,8BAA8B5a,GAErC/lB,KAAKgV,sBAAuB,EAC5BhV,KAAKmV,2BAA4B,EACjCnV,KAAKyU,0BAA2B,EAChCzU,KAAKuU,4BAA6B,EAClCvU,KAAK0/B,mBAAqB,EAC1B1/B,KAAK4gC,0BACD5gC,KAAKiW,oBACS,mBAAZ8P,EAAGznB,MAAgD,MAAnBynB,EAAGxZ,MAAMs0B,OAAyC,MAAxB9a,EAAGxZ,MAAMma,aACrE1mB,KAAKq/B,mBAAmBtZ,EAAG1hB,OAAOkF,UAAYwc,EAAG3G,SACjD,GAAe6a,KAAKmE,GAAyCp+B,KAAKq/B,qBAEpEr/B,KAAK8gC,0BACAxmB,GAAQyL,EAAGxJ,OAASjC,EAAKiC,OAC5Bvc,KAAKmU,qBAAsB,EAC3BnU,KAAK0qB,2BAA0B,KAGnC,IAAIgJ,EAAQ3N,EAAGxJ,KACf,GAAIwJ,EAAGxZ,MAAO,CACZ,IAAIA,EAAQ,MAAKwZ,EAAGxZ,cACbA,EAAMuQ,eACNvQ,EAAMwqB,SACb,IAAMva,EAAc,GAAcukB,oBAAoBx0B,GACtDmnB,EAAQlX,EAAY9f,OAAZ,UAAwBg3B,EAAxB,YAAiClX,GAAgBkX,EAE3D,IAAMsN,EAAYjb,EAAGznB,MAAQ,GAC7B,GAAIwgC,GAAiB9f,SAASgiB,IAAcjb,EAAG1hB,OAAOkF,UAAYwc,EAAG1hB,OAAOsF,KAAM,CAChF,GAAYs3B,eAAelb,EAAG1hB,OAAOkF,SAAUwc,EAAG1hB,OAAOsF,MACzD,IAAMu3B,EAAiBnC,GAAyB/f,SAASgiB,GACzDhhC,KAAKgP,OAAOnH,OAAO,uBAAwB,CACzCiC,QAAS,GAAF,OAAKic,EAAG1hB,OAAOkF,SAAf,YAA2Bwc,EAAG1hB,OAAOsF,MAC5CuN,KAAMwc,EACNzxB,SAAUi/B,EAAiBnb,EAAG1hB,OAAO2R,iBAAc/K,EACnDwwB,sBAAuByF,SAGzBlhC,KAAKgP,OAAOnH,OAAO,wBAAyB,CAAEqP,KAAMwc,IAElD1zB,KAAKiW,mBACPjW,KAAKgP,OAAOnH,OAAO,0BAErB7H,KAAKmhC,oBAC4C,oBAAtCnhC,KAAKohC,8BACdphC,KAAKohC,6BAA6Brb,KA1MxC,gDA+M4BzlB,EAAkB+gC,GACrCrhC,KAAKiW,oBAAqB3V,GAAY+gC,IAGnB,YAApBrhC,KAAK2U,YAAgD,gBAApB3U,KAAK2U,YACxC3U,KAAKshC,0BAA8C,YAApBthC,KAAK2U,WAA2B,UAAY,iBApNjF,2CA2NQ3U,KAAKiW,mBAAsBjW,KAAKyO,OAAOpK,OAAOkF,SAMlDvJ,KAAKuhC,eAAevhC,KAAKyO,OAAOpK,OAAOkF,UAAY,IAL5CvJ,KAAK2V,aACR3V,KAAKuhC,eAAev4B,MA7N5B,mDAoO+B0qB,GAAY,WACvC,GACG1zB,KAAKiW,mBACL8oB,GAAyB/f,SAAS0U,EAAMp1B,MAAQ,KAChDo1B,EAAMrvB,OAAOkF,UACbmqB,EAAMrvB,OAAOsF,KAJhB,CAQA,IAAMJ,EAAWmqB,EAAMrvB,OAAOkF,SACxB4C,EAAWunB,EAAMrvB,OAAOsF,KACxB2yB,EAAc5I,EAAMrvB,OAAO2R,aAAe,GAC1CwrB,EAAgBxhC,KAAKkd,mBAC3B,GACEskB,GACAA,EAAc73B,KAAKJ,WAAaA,GAChCi4B,EAAc73B,KAAK+C,OAASP,GAC5Bq1B,EAAc90B,OAASgnB,EAAMrvB,OAAO2R,YAEpChW,KAAKgP,OAAOnH,OAAO,uBAAuB,OAN5C,CASA,IAAM45B,EAAgB,GAAH,OAAMl4B,EAAN,YAAkB4C,EAAlB,YAA8BmwB,GAC7Ct8B,KAAK0hC,+BAAiC1hC,KAAKo/B,4BAA8BqC,IAG7EzhC,KAAKo/B,0BAA4BqC,EACjCzhC,KAAK0hC,8BAAgC1hC,KAAK2hC,8BAA8Bp4B,EAAU4C,EAAUmwB,GACzFlyB,MAAM,cAGNw3B,QAAQ,WACP,EAAKF,mCAAgCz2B,EACrC,EAAKm0B,0BAA4B,UArQzC,8GAyQsC71B,EAAkB4C,GAzQxD,2GAyQ0EmwB,EAzQ1E,+BAyQgG,GAC5Ft8B,KAAKuhC,eAAeh4B,GAChBs4B,EAAiB7hC,KAAKgP,OAAOzH,MAAMyW,WAAW9hB,KAAKqN,GAClDs4B,GAAmBA,EAAetO,cAAc72B,OA5QzD,gCA6QYsD,KAAKgP,OAAO2C,SAAS,mBAAoBpI,GA7QrD,OA8QMs4B,EAAiB7hC,KAAKgP,OAAOzH,MAAMyW,WAAW9hB,KAAKqN,GA9QzD,UAgRUu4B,EAAaD,GAAkBA,EAAerf,MAAMrW,GACpD41B,EACJD,KACExF,GACAwF,EAAWE,YACXF,EAAWtgC,SAASygC,KAAK,SAACxS,GAAD,OAA0BA,EAAQ/iB,OAAS4vB,MACpEyF,EAtRR,wBAuRM/hC,KAAKgP,OAAOnH,OAAO,uBAAuB,GAvRhD,4CA0RU7H,KAAKgP,OAAO2C,SAAS,uCAAwC,CACjEpI,WACA4C,aA5RN,kJAyYI,IAAM+1B,EAAaliC,KAAKiW,kBACxBjW,KAAKiW,kBAAoBrW,OAAOud,YAAc,KAC9Cnd,KAAK6U,0BAA4B7U,KAAKggC,eAAiBhgC,KAAKggC,eAAemC,MAAQviC,OAAOud,WAC1Fnd,KAAK4U,uBAAyB5U,KAAKiW,mBAAqBjW,KAAK6U,0BAA4B,IACrF7U,KAAKiW,oBAAsBisB,EAC7BliC,KAAK8gC,2BACK9gC,KAAKiW,mBAAqBisB,IACpCliC,KAAKmU,qBAAsB,EACtBnU,KAAKoU,kBACRpU,KAAK4Y,aAAY,MAlZzB,gDAwZI,GAAI5Y,KAAKoiC,mBAGP,OAFApiC,KAAK2U,WAAa,eAClB3U,KAAK4Y,aAAY,GAInB,GADA5Y,KAAK4Y,aAAY,GACQ,mBAArB5Y,KAAKyO,OAAOnQ,KAA2B,CACzC,GAAqC,MAAjC0B,KAAKyO,OAAOlC,MAAMma,YAAwD,kBAA3B1mB,KAAKyO,OAAOlC,MAAMG,KAAmB,CACtF1M,KAAK2U,WAAa,cAClB,IAAMxI,EAAWnM,KAAKyO,OAAOlC,MAAMG,KAC7B5C,EAAU,GAAH,OAAM9J,KAAKyO,OAAOpK,OAAOkF,SAAzB,YAAqC4C,GAC5Ck2B,EAAUriC,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAC1C,SAAClX,GAAD,OAAcA,EAAI0B,UAAYA,GAAW1B,EAAImmB,WAEzC+T,EAAoBtiC,KAAKi/B,uBAAyB9yB,EAAWnM,KAAKmW,qBAAuB,GAI/F,OAHAnW,KAAKmW,qBAAwBksB,GAAWA,EAAQ9T,UAAa+T,GAAqBn2B,EAClFnM,KAAKi/B,qBAAuB9yB,OAC5BnM,KAAKgP,OAAOnH,OAAO,uCAAuC,GAG5D7H,KAAK2U,WAAyC,MAA5B3U,KAAKyO,OAAOlC,MAAMs0B,MAAgB,cAAgB,SACpE7gC,KAAKshC,0BAA8C,gBAApBthC,KAAK2U,WAA+B,aAAe,WAClF3U,KAAKgP,OAAOnH,OACV,sCACoB,WAApB7H,KAAK2U,YACgC,kBAA5B3U,KAAKyO,OAAOlC,MAAMA,SACvBvM,KAAKyO,OAAOlC,MAAMA,WAEM,mBAArBvM,KAAKyO,OAAOnQ,MACrB0B,KAAK2U,WAAa,UAClB3U,KAAKshC,0BAA0B,WAC/BthC,KAAKgP,OAAOnH,OAAO,uCAAuC,IAC5B,qBAArB7H,KAAKyO,OAAOnQ,KACrB0B,KAAK2U,WAAa,YACY,oBAArB3U,KAAKyO,OAAOnQ,KACrB0B,KAAK2U,WAAa,WACT3U,KAAKuiC,aAAoC,eAArBviC,KAAKyO,OAAOnQ,MAA8C,SAArB0B,KAAKyO,OAAOnQ,KAC9E0B,KAAK2U,WAAa,UACY,MAArB3U,KAAKyO,OAAO8N,OACrBvc,KAAK2U,WAAa,UAClB3U,KAAKshC,0BAA0B,WAC/BthC,KAAKgP,OAAOnH,OAAO,uCAAuC,IAEpC,YAApB7H,KAAK2U,YAA6B3U,KAAK2V,aACzC3V,KAAKuhC,eAAevhC,KAAKyO,OAAOpK,OAAOkF,UAAYP,MApczD,qCAwciBw5B,GAAgB,WAC7B,IAAIxiC,KAAKk/B,2BAAT,CAGA,IAAMuD,EAAeziC,KAAK2U,WACpB+tB,EAAkB1iC,KAAKkU,aAAelU,KAAK2iC,kCAAoC,GAC/EC,EAAQ,wDAAG,8GACM,gBAAjBH,EACF,EAAKI,uBAAuB,cACF,YAAjBJ,GACT,EAAKI,uBAAuB,WAE9B,EAAK7tB,sBAAuB,EAC5B,EAAKb,qBAAsB,EAC3B,EAAKuW,2BAA0B,GAClB,YAAT8X,EATW,wBAUb,EAAKtD,4BAA6B,EAVrB,kBAYL,EAAK4D,uBAZA,uBAcX,EAAK5D,4BAA6B,EAdvB,yDAkBf,EAAKvqB,WAAa6tB,EAClB,EAAK5pB,aAAY,GACXrP,EAAW,EAAKkF,OAAOpK,OAAOkF,UAAY,EAAKoM,aAAe3M,GACvD,YAATw5B,EArBW,oBAsBb,EAAKlB,0BAA0B,WAC/B,EAAKtyB,OAAOnH,OAAO,uCAAuC,GAC1D,EAAK05B,eAAeh4B,GACdw5B,EAzBO,WAyBYx5B,EAzBZ,YA0BT,EAAKkF,OAAO8N,OAASwmB,EA1BZ,kCA2BL,EAAK5wB,QAAQnV,KAAK+lC,GA3Bb,6CA+BF,WAATP,EA/BW,oBAgCPQ,EAAmB,EAAK3D,mBAAmB91B,IAAa,GACxD05B,EAAc,EAAKC,0BAA0BF,GAAoB,IAAJ,OAAQz5B,EAAR,YAC/D,EAAKkF,OAAO2Q,WAAa6jB,EAlChB,kCAmCL,EAAK9wB,QAAQnV,KAAKimC,GAnCb,gCAqCX,EAAKj0B,OAAOnH,OACV,sCACmC,kBAA5B,EAAK4G,OAAOlC,MAAMA,SAAwB,EAAKkC,OAAOlC,MAAMA,OAvC1D,6CA4CF,cAATi2B,GAAiC,aAATA,EA5Cb,oBA6CP9O,EACK,aAAT8O,GAAuBE,EAAvB,WACQn5B,EADR,qBAC6B,IAAIuD,gBAAgB,CAAEN,SAAUk2B,IAAmB71B,YADhF,WAEQtD,EAFR,YAEoBi5B,GAClB,EAAK/zB,OAAO8N,OAASmX,EAjDZ,kCAkDL,EAAKvhB,QAAQnV,KAAK02B,GAlDb,2DAAH,qDAuDRyP,EAAYrF,GAAqB2E,GACjCW,EAAUtF,GAAqB0E,GAC/Ba,EAAyBhhC,SACzBihC,EACyB,oBAAtB1jC,OAAO2jC,YACd3jC,OAAO2jC,WAAW,oCAAoCC,QACxD,GACGxjC,KAAKiW,mBACG,YAATusB,GACAW,IAAcC,IACdE,GACCD,EAAuBI,oBAL1B,CAWA,IAAMC,EACJN,EAAUD,EAAY,oCAAsC,qCACxDQ,IAAoB3jC,KAAKm/B,sBAC/B98B,SAASwjB,gBAAgBC,UAAU5d,OACjC,oCACA,sCAEF7F,SAASwjB,gBAAgBC,UAAUxa,IAAIo4B,GACnC1jC,KAAK4jC,wBAA0B5jC,KAAK4jC,uBAAuBC,gBAC7D7jC,KAAK4jC,uBAAuBC,iBAE9B,IAAMC,EAAaT,EAAuBI,oBAAvB,uCAA2C,6GACtDb,IADsD,uBAEtD,EAAK9oB,YAFiD,0CAI9D9Z,KAAK4jC,uBAAyBE,OACK74B,IAA/BjL,KAAKugC,uBACP3gC,OAAOqkB,aAAajkB,KAAKugC,uBAE3BvgC,KAAKugC,sBAAwB3gC,OAAOuE,WAAW,WACzC,EAAKy/B,yBAA2BE,GAAcA,EAAWD,gBAC3DC,EAAWD,iBAEb,EAAKE,2BAA2BD,EAAYJ,EAAiBC,IAC5D,KACCG,EAAWE,OACbF,EAAWE,MAAM55B,MAAM,cAErB05B,EAAWG,oBACbH,EAAWG,mBAAmB75B,MAAM,cAEtC05B,EAAWI,SAASx6B,KAClB,kBAAM,EAAKq6B,2BAA2BD,EAAYJ,EAAiBC,IACnE,kBAAM,EAAKI,2BAA2BD,EAAYJ,EAAiBC,UArCnEf,OAlhBN,iDA4jBIkB,EACAJ,EACAC,GAEI3jC,KAAK4jC,yBAA2BE,IAClC9jC,KAAK4jC,4BAAyB34B,OACKA,IAA/BjL,KAAKugC,wBACP3gC,OAAOqkB,aAAajkB,KAAKugC,uBACzBvgC,KAAKugC,2BAAwBt1B,IAG7B04B,IAAoB3jC,KAAKm/B,uBAC3B98B,SAASwjB,gBAAgBC,UAAU5d,OAAOw7B,KAxkBhD,gDA4kB4BhQ,GAAa,MACJA,EAAM3W,MAAM,KADR,uBAC9BR,EAD8B,YACxBC,OADwB,MACV,GADU,EAE/BjQ,EAAQ,IAAIO,gBAAgB0P,GAClC,CAAC,OAAQ,SAAU,aAAc,aAAc,WAAY,QAAS,YAAa,WAAWxQ,QAC1F,SAAA1N,GAAI,OAAIiO,EAAMhC,OAAOjM,KAEvB,IAAM6lC,EAAkB53B,EAAMM,WAC9B,OAAOs3B,EAAkB,GAAH,OAAM5nB,EAAN,YAAc4nB,GAAoB5nB,IAnlB5D,gNAulBU6nB,EAAUpkC,KAAKoX,sBACfgtB,GAAWA,EAAQt6B,SAAWs6B,EAAQltB,KAxlBhD,0CAylBa,GAzlBb,gBA2lB6BktB,EAAQt6B,QAAQiT,MAAM,KA3lBnD,uBA2lBWxT,EA3lBX,KA2lBqBI,EA3lBrB,KA4lBUuN,EAAOktB,EAAQltB,KAAK6F,MAAM,KAAK,GAC/Bsd,EAAWnjB,EAAK6F,MAAM,KAAKnQ,OAAO8R,SAClC+Q,EAAU4K,EAASA,EAAS39B,OAAS,KAAOiN,EAAO,GAAK0wB,EAASA,EAAS39B,OAAS,GA9lB7F,SA+lBUsD,KAAK2hC,8BAA8Bp4B,EAAUI,EAAM8lB,GA/lB7D,cAgmBIzvB,KAAKgP,OAAOnH,OAAO,uBAAwB,CACzCiC,QAASs6B,EAAQt6B,QACjBoN,OACA5Y,KAAM8lC,EAAQ9lC,KACdiwB,SAAU6V,EAAQ7V,SAClBtsB,SAAUmiC,EAAQniC,SAClBo2B,SAAU+L,EAAQ/L,SAClBsB,gBAAiByK,EAAQzK,iBAAmB,KAE9C35B,KAAKgP,OAAOnH,OAAO,0BACb6rB,EAAQ,CACZnX,KAAMrF,EACN3K,MAAO,IACLuQ,QAAS,IACTunB,OAAQ,IACRhM,SAAU50B,OAAO2kB,KAAKC,IAAI,EAAGD,KAAK8Q,IAAI,EAAGp1B,OAAOsgC,EAAQ/L,WAAa,MACjE+L,EAAQzK,gBAAkB,CAAEwD,OAAQiH,EAAQzK,iBAAoB,KAhnB5E,oBAonBY35B,KAAKmS,QAAQnV,KAAK02B,GApnB9B,iEAsnBY,MAA+C,yBAArC,KAA4Bp1B,KAtnBlD,2CAunBe,GAvnBf,eA0nBI0B,KAAK2U,WAAa,UAClB3U,KAAK4Y,aAAY,GA3nBrB,mBA4nBW,GA5nBX,+JAgoBI,IAAMrP,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,GAC9DW,EAAO3J,KAAKyO,OAAOpK,OAAOsF,KAChC,GAAKA,EAAL,CAGA,IAAM6C,EAAWxM,KAAK2iC,mCAAqC3iC,KAAKyO,OAAO2Q,SACjE7S,EAAQ,IAAIO,gBAAgB,CAChCJ,KAAM/C,EACNmd,WAAY,IACZJ,WAAY,IACZla,aAEI83B,EACHtkC,KAAKid,aAAejd,KAAKid,YAAYvQ,OAAS/C,GAAQ3J,KAAKid,YAAYlV,IACvE/H,KAAKkd,oBACJld,KAAKkd,mBAAmBvT,KAAK+C,OAAS/C,GACtC3J,KAAKkd,mBAAmBvT,KAAK5B,GAC7Bu8B,GACF/3B,EAAMtE,IAAI,SAAUq8B,EAAcz3B,YAEpC,IAAMw1B,EAAUriC,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAC1C,SAAClX,GAAD,OAAcA,EAAI0B,UAAJ,UAAmBP,EAAnB,YAA+BI,IAAUvB,EAAImmB,WAE7DvuB,KAAKmW,qBAAwBksB,GAAWA,EAAQ9T,UAAa5kB,EAC7D3J,KAAKi/B,qBAAuBt1B,EAC5B3J,KAAKmS,QAAQnV,KAAb,WAAsBuM,EAAtB,mBAAyCgD,EAAMM,gBAzpBnD,8CA6pBI,IAAML,EAAWxM,KAAKyO,OAAOlC,MAAMC,SACnC,GAAwB,kBAAbA,GAAyBA,EAGlC,OAFAxM,KAAKgP,OAAOnH,OAAO,uBAAuB,QAC1C7H,KAAKmS,QAAQ3P,QAAQgK,GAGvB,IAAMjD,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,GAC9DW,EAAO3J,KAAKyO,OAAOlC,MAAMG,KAC/B1M,KAAKmS,QAAQnV,KACK,kBAAT2M,GAAqBA,EAA5B,WAAuCJ,EAAvC,kBAAyDI,GAAzD,WAAsEJ,EAAtE,eAtqBN,wDA2qBI,IAAKvJ,KAAKoiC,mBACR,MAAO,GAET,IAAMr7B,EAAU/G,KAAKukC,yBACfh4B,EAAQ,IAAIO,gBAClBnQ,OAAOgQ,QAAQ3M,KAAKyO,OAAOlC,OAAS,IAAIP,QAAQ,YAAkB,2BAAhB1N,EAAgB,KAAVS,EAAU,KAC3C,kBAAVA,GAAuB,CAAC,WAAY,MAAO,SAAU,WAAY,UAAUigB,SAAS1gB,IAC7FiO,EAAMtE,IAAI3J,EAAMS,KAGpBwN,EAAMtE,IAAI,UAAW,KACjBlB,IACFwF,EAAMtE,IAAI,SAAU,KACpBsE,EAAMtE,IAAI,WAAYxE,OAAO2kB,KAAKC,IAAI,EAAGD,KAAK8Q,IAAI,EAAGp1B,OAAOiD,EAAQsxB,WAAa,MAC7EtxB,EAAQo2B,QACV5wB,EAAMtE,IAAI,SAAUlB,EAAQo2B,SAGhC,IAAM3gB,EAAcjQ,EAAMM,WAC1B,OAAO2P,EAAc,GAAH,OAAMxc,KAAKyO,OAAO8N,KAAlB,YAA0BC,GAAgBxc,KAAKyO,OAAO8N,OA9rB5E,0CAisBsBmX,GAClB,OAAOA,EAAMxX,WAAW,OAASwX,EAAMxX,WAAW,QAAU,SAASsoB,KAAK9Q,KAlsB9E,6CAssBI,IAAMlnB,EAAWxM,KAAK8W,uBACjBtK,IAGLxM,KAAKgP,OAAOnH,OAAO,uBAAuB,GAC1C7H,KAAKmS,QAAQ3P,QAAQgK,GAAUpC,MAAM,iBA3sBzC,6CA+sBIpK,KAAK6iC,uBAAuB,WAC5B7iC,KAAKshC,0BAA0B,cAC/BthC,KAAKgP,OAAOnH,OAAO,uCAAuC,GAC1D7H,KAAK2U,WAAa,cAClB3U,KAAKgV,sBAAuB,EAC5BhV,KAAKmV,2BAA4B,EACjCnV,KAAKmU,qBAAsB,EAC3BnU,KAAK0qB,2BAA0B,GAC/B1qB,KAAK4Y,aAAY,GACQ,mBAArB5Y,KAAKyO,OAAOnQ,MAAyD,MAA5B0B,KAAKyO,OAAOlC,MAAMs0B,OAC7D7gC,KAAKmS,QAAQnV,KAAK,CAAEuP,MAAO,MAAKvM,KAAKyO,OAAOlC,MAAnB,CAA0Bs0B,MAAO,UAztBhE,8CAsuBI,GARA7gC,KAAK6iC,uBAAuB,cAC5B7iC,KAAKshC,0BAA0B,WAC/BthC,KAAK2U,WAAa,SAClB3U,KAAKmU,qBAAsB,EAC3BnU,KAAKgP,OAAOnH,OACV,sCACmC,kBAA5B7H,KAAKyO,OAAOlC,MAAMA,SAAwBvM,KAAKyO,OAAOlC,MAAMA,OAE5C,mBAArBvM,KAAKyO,OAAOnQ,MAAyD,MAA5B0B,KAAKyO,OAAOlC,MAAMs0B,MAAe,CAC5E,IAAMt0B,EAAQ,MAAKvM,KAAKyO,OAAOlC,cACxBA,EAAMs0B,MACb7gC,KAAKmS,QAAQ3P,QAAQ,CAAE+J,aAzuB7B,4CA6uBwBhD,GAMpB,GALIvJ,KAAKiW,mBAAyC,YAApBjW,KAAK2U,YACjC3U,KAAK6iC,uBAAuB,WAE9B7iC,KAAKuhC,eAAeh4B,GACpBvJ,KAAKmV,2BAA4B,EAC7BnV,KAAKiW,mBAAyC,YAApBjW,KAAK2U,WAA0B,CAC3D,IAAMouB,EAAe,IAAH,OAAOx5B,EAAP,YACdvJ,KAAKyO,OAAO8N,OAASwmB,GACvB/iC,KAAKmS,QAAQnV,KAAK+lC,MAtvB1B,iDA2vB0B,WACtB/iC,KAAKmV,2BAA6BnV,KAAKmV,0BACnCnV,KAAKmV,2BACPnV,KAAK8Z,UAAU,WACb,IAAM7L,EAAW,EAAK+L,MAAMyqB,uBAAyB,GAC/CC,EAAgB,EAAKC,iBAAiBvJ,UAAU,SAAA7xB,GAAQ,OAAIA,EAASlB,OAAS,EAAKsN,cACnFivB,EAAW32B,EAAQma,KAAKC,IAAI,EAAGqc,IACjCE,GACFA,EAAS3qB,YAnwBnB,gDAywBuD,WAA7BN,EAA6B,wDACnD3Z,KAAKmV,2BAA4B,EAC7BwE,GACF3Z,KAAK8Z,UAAU,WACb,IAAM+qB,EAAU,EAAK7qB,MAAM8qB,sBACvBD,GACFA,EAAQ5qB,YA/wBlB,wCAqxBoBE,GAChB,GAAIna,KAAKoU,iBAAkB,CAEzB,GADApU,KAAK8U,yBACa,WAAdqF,EAAM9a,IAGR,OAFA8a,EAAMC,sBACNpa,KAAKgY,uBAGP,GAAIhY,KAAK2/B,yBACP,OAEF,MAAI,CAAC,YAAa,UAAU3gB,SAAS7E,EAAM9a,MACzC8a,EAAMC,sBACNpa,KAAK+X,sBAAsB,SAGzB,CAAC,aAAc,WAAY,KAAKiH,SAAS7E,EAAM9a,OACjD8a,EAAMC,iBACNpa,KAAK+X,qBAAqB,KAI9B,GAAK/X,KAAKmV,0BAAV,CAGA,GAAkB,WAAdgF,EAAM9a,IAGR,OAFA8a,EAAMC,sBACNpa,KAAK+kC,yBAAwB,GAG/B,GAAkB,QAAd5qB,EAAM9a,KAIV,GAAK,CAAC,YAAa,WAAW2f,SAAS7E,EAAM9a,KAA7C,CAGA,IAAM4O,EAAWjO,KAAKga,MAAMyqB,uBAAyB,GACrD,GAAKx2B,EAAQvR,OAAb,CAGAyd,EAAMC,iBACN,IAAM4e,EAAe/qB,EAAQmO,QAAQ/Z,SAASwX,eACxCmrB,EAA0B,cAAd7qB,EAAM9a,IAAsB,GAAK,EAC7C4lC,GAAajM,EAAegM,EAAY/2B,EAAQvR,QAAUuR,EAAQvR,OACxEuR,EAAQg3B,GAAWhrB,eAdjBja,KAAK+kC,6BApzBX,oDAq0BgCrR,GAC5B,IAAMwR,EAAYnG,GAAyB/f,SAAS0U,EAAMp1B,MAAQ,KAAoC,MAA7Bo1B,EAAMnnB,MAAM44B,aACjFD,GACFllC,KAAK4Y,aAAY,GACjB5Y,KAAK0gC,qBAAoB,GACzB1gC,KAAK8U,0BACI9U,KAAKoU,kBACdpU,KAAKolC,wBAAuB,KA50BlC,8CAg1BuB,WACnB,GAAKplC,KAAKoiC,mBAAV,CAGApiC,KAAKgV,sBAAuB,EAC5BhV,KAAKyU,0BAA2B,EAChCzU,KAAKuU,4BAA6B,EAClCvU,KAAK0qB,2BAA0B,GAC/B1qB,KAAK4Y,aAAY,GACjB5Y,KAAK0gC,qBAAoB,GACzB1gC,KAAK2/B,0BAA2B,EAChC3/B,KAAK8U,yBAEL,IAAMvI,EAAK,MACNvM,KAAKyO,OAAOlC,MADN,CAETuQ,QAAS,IACTqoB,aAAc,aAET54B,EAAMwqB,gBACNxqB,EAAM83B,cACN93B,EAAM84B,WACN94B,EAAM8rB,gBACN9rB,EAAM4wB,OACbn9B,KAAKmS,QAAQ3P,QAAQ,CAAE+Z,KAAMvc,KAAKyO,OAAO8N,KAAMhQ,UAASnC,MAAM,cAE9D,IAAMk7B,EAAoBjjC,SAASwjB,iBAG9BxjB,SAASijC,mBAAqBA,EAAkBC,oBACnDvlC,KAAK4/B,4BAA6B,EAClC0F,EAAkBC,oBAAoBn7B,MAAM,WAC1C,EAAKw1B,4BAA6B,QA/2B1C,6CAq3BI5/B,KAAKolC,wBAAuB,KAr3BhC,6CAw3ByBI,GACrBxlC,KAAK0gC,qBAAoB,GACzB1gC,KAAK2/B,0BAA2B,EAChC3/B,KAAKqX,6BAA8B,OACIpM,IAAnCjL,KAAKygC,4BACP7gC,OAAOqkB,aAAajkB,KAAKygC,2BACzBzgC,KAAKygC,+BAA4Bx1B,GAEnC,IAAMw6B,EAAuBzlC,KAAK4/B,8BAAgCv9B,SAASijC,kBAK3E,GAJAtlC,KAAK4/B,4BAA6B,EAC9B6F,GAAwBpjC,SAASqjC,gBACnCrjC,SAASqjC,iBAAiBt7B,MAAM,cAE9Bo7B,GAAgD,MAAnCxlC,KAAKyO,OAAOlC,MAAM44B,aAAsB,CACvD,IAAM54B,EAAQ,MAAKvM,KAAKyO,OAAOlC,cACxBA,EAAM44B,aACbnlC,KAAKmS,QAAQ3P,QAAQ,CAAE+Z,KAAMvc,KAAKyO,OAAO8N,KAAMhQ,UAASnC,MAAM,iBAx4BpE,2CA64BQpK,KAAKoU,kBAAoBpU,KAAK4/B,6BAA+Bv9B,SAASijC,oBACxEtlC,KAAK4/B,4BAA6B,EAClC5/B,KAAKolC,wBAAuB,MA/4BlC,+CAm5BwB,WACfplC,KAAKoU,mBAGVpU,KAAKqX,6BAA8B,OACIpM,IAAnCjL,KAAKygC,2BACP7gC,OAAOqkB,aAAajkB,KAAKygC,2BAEvBzgC,KAAK2/B,yBACP3/B,KAAKygC,+BAA4Bx1B,EAGnCjL,KAAKygC,0BAA4B7gC,OAAOuE,WAAW,WACjD,EAAKkT,6BAA8B,EACnC,EAAKopB,+BAA4Bx1B,GAChC,QAl6BP,mDAq6B+B06B,GAC3B3lC,KAAK2/B,yBAA2BgG,EAChC3lC,KAAK8U,2BAv6BT,8CA06B0BuhB,GACtBr2B,KAAKmY,wBAAuB,GAC5BnY,KAAK4lC,qBAAqB9hC,OAAOuyB,EAAMwP,QAAQ,KAC/C7lC,KAAK8U,2BA76BT,2CAg7BuBkwB,GACnB,IAAMj0B,EAAS/Q,KAAKyX,qBAAqBzX,KAAKwX,yBAA2BwtB,GACzE,GAAKj0B,EAAL,CAGA,IAAMwL,EAAO,GAAkBhP,kBAAkB,CAC/ChE,SAAUwH,EAAOpH,KAAKJ,SACtB6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC1W,WAAYrM,KAAKyO,OAAOpK,OAAOqqB,OAC/BviB,SAAU4E,EAAOpH,KAAK+C,KACtBJ,gBAAiByE,EAAOrE,OAE1B1M,KAAKmS,QAAQnV,KAAK,CAAEuf,OAAMhQ,MAAO,CAAEuQ,QAAS,IAAKqoB,aAAc,OAAS/6B,MAAM,cAC9EpK,KAAK8U,4BA77BT,6CAg8ByBgxB,GACrB,IAAMv8B,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,GAC9D+8B,EAAS/lC,KAAKgmC,uBAAuBz8B,GACrC08B,EAAgBjmC,KAAKkmC,8BAA8BJ,GACzDC,EAAOD,GAAW,CAChBxa,SAAUtrB,KAAKgP,OAAOzH,MAAMyW,WAAWsN,SACvCE,YAAaxrB,KAAKgP,OAAOzH,MAAMyW,WAAWwN,YAC1C9G,SAAU1kB,KAAKmmC,gCACf1H,UAAWwH,EAAgBA,EAAcxH,UAAYsH,EAAOD,GAASrH,WAAa,GAEpF,GAAexE,KAAKoE,GAA2Cr+B,KAAKs/B,uBA18BxE,0GA68BkCwG,GA78BlC,oGA88BUv8B,EAAWvJ,KAAKyO,OAAOpK,OAAOkF,UAAYvJ,KAAK2V,aAAe3M,GAC9DzB,EAAQvH,KAAKgmC,uBAAuBz8B,GAAUu8B,GAC9CM,IAAiBpmC,KAAKu/B,0BACxBv/B,KAAKgP,OAAOzH,MAAMyW,WAAWzU,WAAaA,GAC5CvJ,KAAKuhC,eAAeh4B,GAEtBvJ,KAAKgP,OAAOnH,OAAO,yBAA0BN,EAAM+jB,UACnDtrB,KAAKgP,OAAOnH,OAAO,+BAAgCN,EAAMikB,aACzDxrB,KAAKgP,OAAOnH,OAAO,2BACfN,EAAMikB,YAv9Bd,kCAw9BYxrB,KAAKgP,OAAO2C,SAAS,oBAAqB,CAC9CpI,WACAgD,MAAOhF,EAAMikB,cA19BrB,WA89BM4a,IAAiBpmC,KAAKu/B,2BACtBv/B,KAAKgP,OAAOzH,MAAMyW,WAAWzU,WAAaA,EA/9BhD,0DAm+BIvJ,KAAKgP,OAAOnH,OAAO,mCAAoCN,EAAMmd,UAn+BjE,UAo+BU1kB,KAAK8Z,YAp+Bf,QAq+BIla,OAAO6qB,sBAAsB,WAC3B,GAAI2b,IAAiB,EAAK7G,0BAA1B,CAGA,IAAM0G,EAAgB,EAAKC,8BAA8BJ,GACrDG,IACFA,EAAcxH,UAAYl3B,EAAMk3B,WAAa,MA3+BrD,sJAg/ByBl1B,GAOrB,OANKvJ,KAAKs/B,oBAAoB/1B,IAC5BvJ,KAAKqmC,KAAKrmC,KAAKs/B,oBAAqB/1B,EAAU,CAC5Cw0B,QAAS,KACTc,WAAY,OAGT7+B,KAAKs/B,oBAAoB/1B,KAv/BpC,oDA0/BgCu8B,GAC5B,IAAMQ,EAAwB,YAAZR,EAAwB,iBAAmB,qBACvDh+B,EAAO9H,KAAK8nB,IAClB,OAAMhgB,GAAsC,oBAAvBA,EAAKksB,cAGnBlsB,EAAKksB,cAAL,gBAA4BsS,EAA5B,6BAFE,OA9/Bb,sDAogCI,IAAMpqC,EAAO8D,KAAKgP,OAAOu3B,QAAQ,oCAC3B3H,EAAqB,GACrB4H,EAAkB,SAAlBA,EAAmB/6B,EAA2BU,GAClDV,EAAMO,QAAQ,SAAAyjB,GACRA,EAAQ/K,UACVka,EAAS5hC,KAAT,UAAiBmP,EAAjB,YAA6BsjB,EAAQ1nB,KAEvCy+B,EAAgB/W,EAAQjuB,UAAY,GAAI2K,MAO5C,OAJAxP,OAAOm0B,OAAO50B,EAAKsmB,OAAS,IAAIxW,QAAQ,SAACrC,GAAD,OAAe68B,EAAgB78B,EAAKnI,UAAY,GAAImI,EAAK+C,QACjG/P,OAAOm0B,OAAO50B,EAAK8vB,YAAc,IAAIhgB,QAAQ,SAACrC,GAAD,OAC3C68B,EAAgB78B,EAAKnI,UAAY,GAAImI,EAAK+C,QAErC,CACL+V,YAAavmB,EAAKumB,YAAc,IAAI7V,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAAU7W,IAAI,SAAClC,GAAD,OAAeA,EAAK5D,KACjGkpB,SAAU/0B,EAAK+0B,SAAW,IAAIrkB,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAAU7W,IAAI,SAAClC,GAAD,OAAeA,EAAK5D,KAC3F22B,aAAcxiC,EAAKq3B,eAAiB,IACjC3mB,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAC3B7W,IAAI,SAAClC,GAAD,OAAeA,EAAK5D,KAC3B42B,eAAgBziC,EAAKs3B,iBAAmB,IACrC5mB,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAC3B7W,IAAI,SAAClC,GAAD,OAAeA,EAAK5D,KAC3Bya,MAAO7lB,OAAOm0B,OAAO50B,EAAKsmB,OAAS,IAChC5V,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAC3B7W,IAAI,SAAClC,GAAD,OAAeA,EAAKe,OAC3Bsf,WAAYrvB,OAAOm0B,OAAO50B,EAAK8vB,YAAc,IAC1Cpf,OAAO,SAACjB,GAAD,OAAeA,EAAK+Y,WAC3B7W,IAAI,SAAClC,GAAD,OAAeA,EAAKe,OAC3BkyB,cAjiCN,0CAqiCmB,WACf5+B,KAAKmU,qBAAsB,EAC3BnU,KAAK0qB,2BAA0B,GAC/B1qB,KAAKyU,0BAA2B,EAC5BzU,KAAK+V,YAAc/V,KAAKg/B,8BAAgCh/B,KAAK+V,WAAWrJ,OAC1E1M,KAAKgP,OAAOnH,OAAO,8BAA+B7H,KAAK+V,WAAWrJ,MAClE1M,KAAKg/B,4BAA8Bh/B,KAAK+V,WAAWrJ,MAErD1M,KAAKgV,sBAAuB,EACE,oBAAnBhV,KAAK8Z,WACd9Z,KAAK8Z,UAAU,kBAAM,EAAK2sB,sCA/iChC,wDAojCI,IAAM3+B,EAAO9H,KAAK8nB,IAClB,GAAMhgB,GAAsC,oBAAvBA,EAAKksB,cAA1B,CAGA,IAAMD,EAASjsB,EAAKksB,cAAc,sBAC5BllB,EAAUhH,EAAKksB,cACnB,mDAEF,GAAMD,GAAUjlB,EAAhB,CAGAilB,EAAO2S,WAAa,EACpB,IAAMC,EAAa5S,EAAO6S,wBACpBC,EAAc/3B,EAAQ83B,wBAC5B7S,EAAO0K,WACLoI,EAAY1S,IAAMwS,EAAWxS,IAAM/L,KAAKC,IAAI,IAAK0L,EAAO+S,aAAeD,EAAYhiB,QAAU,OAnkCnG,gDAukCI7kB,KAAKmU,qBAAsB,EAC3BnU,KAAKgV,sBAAuB,EAC5BhV,KAAK0qB,2BAA0B,GAC/B1qB,KAAKyU,0BAA4BzU,KAAKyU,2BA1kC1C,qCA6kCiB0F,GACb,GACGna,KAAKkU,eACNlU,KAAKgV,uBACLhV,KAAKyU,2BACLzU,KAAKgP,OAAOzH,MAAMiC,OAAO0P,0BAJ3B,CAQA,IAAM6tB,EACa,kBAAV5sB,EACH,CAAE6qB,UAAW7qB,EAAwB6sB,MAAO,GAAI7S,IAAK,IAAK9L,IAAK,KAC/DlO,EACA8sB,EAAY7e,KAAKC,IAAI,EAAG0e,EAAY1e,IAAM0e,EAAY5S,KAC5D,GAAI4S,EAAY5S,KAAO,GAGrB,OAFAn0B,KAAKmU,qBAAsB,OAC3BnU,KAAK4gC,0BAGP,GAAIqG,GAAa,GAAI,CACnB,IAAMC,GAAgBlnC,KAAKmU,oBAM3B,OALAnU,KAAKmU,qBAAsB,EAC3BnU,KAAK4gC,+BACDsG,GACFlnC,KAAK8Z,UAAU9Z,KAAKmnC,iBAIpBnnC,KAAKw/B,wBAA0BuH,EAAY/B,YAC7ChlC,KAAKw/B,sBAAwBuH,EAAY/B,UACzChlC,KAAKy/B,qBAAuB,GAE9Bz/B,KAAKy/B,sBAAwBsH,EAAYC,MACX,SAA1BD,EAAY/B,WAAwBhlC,KAAKmU,qBAAuBnU,KAAKy/B,sBAAwB,IAC/Fz/B,KAAKmU,qBAAsB,EAC3BnU,KAAK4gC,2BAEqB,OAA1BmG,EAAY/B,YACXhlC,KAAKmU,qBACNnU,KAAKy/B,sBAAwB,KAE7Bz/B,KAAKmU,qBAAsB,EAC3BnU,KAAK4gC,8BAvnCX,gDA4nCI5gC,KAAKw/B,sBAAwB,GAC7Bx/B,KAAKy/B,qBAAuB,IA7nChC,uCAgoCgB,WACN33B,EAAO9H,KAAK8nB,IAClB,GAAMhgB,GAAsC,oBAAvBA,EAAKksB,cAA1B,CAGA,IAAMD,EAASjsB,EAAKksB,cAAc,yBAClC,GAAKD,EAAL,CAGA,IAAMpvB,IAAU3E,KAAK0/B,kBACf0H,EAAYC,YAAYtkC,MACxBukC,EAAM,SAANA,IACA3iC,IAAU,EAAK+6B,oBAGnB3L,EAAO0K,UAAYrW,KAAKC,IAAI,EAAG0L,EAAO0E,aAAe1E,EAAO+S,cACxDO,YAAYtkC,MAAQqkC,EAAY,KAClCxnC,OAAO6qB,sBAAsB6c,KAGjC1nC,OAAO6qB,sBAAsB6c,OAppCjC,yCAwpCQtnC,KAAKkU,eAAiBlU,KAAKmU,sBAC7BnU,KAAKmU,qBAAsB,KAzpCjC,6CA8pCQnU,KAAKoU,iBACPpU,KAAK8U,yBAGP9U,KAAKunC,qBAlqCT,iMAsqCSvnC,KAAKgP,OAAOzH,MAAMlB,KAAKsB,WAtqChC,0EA0qCgC,GAAY6/B,iBA1qC5C,OA0qCY58B,EA1qCZ,OA2qCM5K,KAAKgP,OAAOnH,OAAO,8BAA+B+C,GAC9C5K,KAAKiW,mBACPjW,KAAKgP,OAAOnH,OAAO,0BA7qC3B,wFAmrC8B,GAAY4/B,eAnrC1C,QAmrCY38B,EAnrCZ,OAorCM9K,KAAKgP,OAAOnH,OAAO,+BAAgCiD,GAprCzD,8NA2rCI,IAAMyL,EAAYvW,KAAKuW,UACjBmxB,EAAe1nC,KAAKga,OAASha,KAAKga,MAAM0tB,YAGxCC,EACJD,GAAoE,oBAA9CA,EAAYE,8BAC9BF,EAAYE,gCACZ,KACAx/B,EAAMu/B,EAAY,MAEfpxB,EAFe,CAGlBzM,QAAS69B,EAAa79B,QACtBoN,KAAMywB,EAAazwB,KACnBjV,SAAU0lC,EAAa1lC,SACvBo2B,SAAUsP,EAAatP,SACvBsB,gBAAiBgO,EAAahO,kBAEhCpjB,EACJ,KAAMnO,GAAOA,EAAI0B,SAAW1B,EAAI8O,MAC9B,OAAO,KApBW,MAsBK9O,EAAI0B,QAAQiT,MAAM,KAtBvB,uBAsBbxT,EAtBa,KAsBHI,EAtBG,KAuBd0wB,EAAWjyB,EAAI8O,KAClB6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACJ+Q,EAAU4K,EAASA,EAAS39B,OAAS,KAAOiN,EAAO,GAAK0wB,EAASA,EAAS39B,OAAS,GACzF,MAAO,CACL6M,WACAI,OACA8lB,UACA4I,SAAUv0B,OAAOsE,EAAIiwB,WAAa,EAClC8E,OAAQ/0B,EAAIuxB,iBAAmB,GAC/BvxB,SA5tCN,6CAguCyB2uB,GACrB,IAAKA,EAASoG,OACZ,MAAO,GAET,IAAM0K,EAAiB9Q,EAASoG,OAC1BjhC,EAAO8D,KAAKgP,OAAOzH,MAAMyW,WAAW9hB,KAAK66B,EAASxtB,UAClDI,EAAOzN,GAAQA,EAAKsmB,MAAQtmB,EAAKsmB,MAAMuU,EAASptB,MAAQ,KAC9D,IAAMA,IAAQ8G,MAAMC,QAAQ/G,EAAKnI,UAC/B,MAAO,GAET,IAAMsmC,EAAan+B,EAAKnI,SACrBqM,IAAI,SAAC4hB,GAAD,MAA2B,CAC9B/iB,KAAM+iB,EAAQ/iB,KACdq7B,aAAc,aAAF,OAAetkC,OAAOgsB,EAAQ/iB,MAAQ+iB,EAAQ1nB,IAAM,WAC7DigC,cACAxlC,QAAQ,cAAe,KACvBA,QAAQ,SAAU,IAHT,QAKbg7B,KACC,SAACC,EAAgCC,GAAjC,OACEA,EAAMqK,aAAarrC,OAAS+gC,EAAKsK,aAAarrC,SAE9C0F,EAAQ0lC,EAAWxoB,KAAK,SAAC2oB,GAAD,OAC5BJ,EAAe3rB,WAAW+rB,EAAUF,gBAEtC,OAAO3lC,EAAQA,EAAMsK,KAAO,KAzvChC,mDA4vC+BwK,EAAc/K,EAAkBmwB,GAC3D,IAAMjC,EAAWnjB,EACd6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACJwpB,EAAc7N,EAASA,EAAS39B,OAAS,GAM/C,OALIwrC,IAAgB/7B,EAClBkuB,EAASr9B,KAAKs/B,GAEdjC,EAASA,EAAS39B,OAAS,GAAK4/B,EAElC,WAAWjC,EAAS1sB,KAAK,QAvwC7B,oCA2wCI5G,EACAgB,GACiB,IAAjBkvB,EAAiB,uDAAF,GAEf,OAAKlwB,EAGE,CACLgB,GACEA,GAAE,gBACOjF,KAAKC,MADZ,YACqBqlB,KAAK+f,SACzBt7B,SAAS,IACT/M,MAAM,IACXsR,KAAM,SACNtH,QAAS/C,EAAQqB,IAAI0B,QACrBykB,SACExnB,EAAQqB,IAAImmB,UAAYxnB,EAAQqB,IAAI9J,MAAS0B,KAAK+V,YAAc/V,KAAK+V,WAAWzX,MAASyI,EAAQ4C,KACnGJ,SAAUxC,EAAQwC,SAClBI,KAAM5C,EAAQ4C,KACduN,KAAMnQ,EAAQqB,IAAI8O,KAClBjV,SAAU8E,EAAQqB,IAAInG,UAAY8E,EAAQ0oB,QAC1C4I,SAAUtxB,EAAQsxB,SAClB8E,OAAQp2B,EAAQo2B,OAChBlG,OACA2C,WAAW,IAAI92B,MAAOslC,eAnBf,OAhxCb,yNAuyCkCnR,EAvyClC,+BAuyCiD,GACvClwB,EAAU/G,KAAKukC,yBACf8D,EAAQroC,KAAKsoC,cAAcvhC,OAASkE,EAAWgsB,GAC/ClwB,GAAWshC,EA1yCrB,oDA6yCIroC,KAAKgP,OAAOnH,OAAO,mBAAoBwgC,IACnCroC,KAAKgP,OAAOzH,MAAMlB,KAAKsB,WA9yC/B,2CAgzC4B,GAAY4gC,eAAe,CAC7Ch/B,SAAUxC,EAAQwC,SAClBI,KAAM5C,EAAQ4C,KACd8lB,QAAS1oB,EAAQ0oB,QACjB4I,SAAUtxB,EAAQsxB,SAClBuE,iBAAkB71B,EAAQo2B,OAC1BlG,SAtzCV,QAgzCcuR,EAhzCd,OAwzCczR,EAAWyR,EAAQpL,GAAkBoL,GAAS,KAChDzR,IACF/2B,KAAKgP,OAAOnH,OAAO,mBAAoBwgC,EAAMtgC,IAC7C/H,KAAKgP,OAAOnH,OAAO,mBAAoBkvB,IA3zCjD,6DAi0CI/2B,KAAKuU,4BAA6B,EAj0CtC,4NAo0CmCwiB,GAp0CnC,+FAq0CUhwB,EAAU/G,KAAKukC,yBACfx9B,GAAWgwB,EAASjtB,UAAY/C,EAAQqB,IAAI0B,QAt0CtD,oDAy0CU2+B,EAAQzoC,KAAKsoC,cAAcvhC,EAASgwB,EAAShvB,GAAIgvB,EAASE,MAAQ,IACnEwR,EA10CT,oDA60CIzoC,KAAKgP,OAAOnH,OAAO,mBAAoB4gC,IACnCzoC,KAAKgP,OAAOzH,MAAMlB,KAAKsB,YAAqC,kBAAhBovB,EAAShvB,GA90C7D,2CAg1C4B,GAAY2gC,eAAe3R,EAAShvB,GAAI,CAC1DwB,SAAUxC,EAAQwC,SAClBI,KAAM5C,EAAQ4C,KACd8lB,QAAS1oB,EAAQ0oB,QACjB4I,SAAUtxB,EAAQsxB,SAClBuE,iBAAkB71B,EAAQo2B,OAC1BlG,KAAMF,EAASE,MAAQ,KAt1CjC,QAg1CcuR,EAh1Cd,OAw1CcG,EAAiBvL,GAAkBoL,GACrCG,GACF3oC,KAAKgP,OAAOnH,OAAO,mBAAoB8gC,GA11CjD,qDA61CQ3oC,KAAKgP,OAAOnH,OAAO,mBAAoBkvB,GA71C/C,QAg2CI/2B,KAAKuU,4BAA6B,EAh2CtC,iNAm2CuBwiB,GAn2CvB,2FAo2CI/2B,KAAKgP,OAAOnH,OAAO,mBAAoBkvB,EAAShvB,IAC5C/H,KAAKgP,OAAOzH,MAAMlB,KAAKsB,YAAqC,kBAAhBovB,EAAShvB,IACvD,GAAY4O,eAAeogB,EAAShvB,IAAIqC,MAAM,WAC5C,EAAK4E,OAAOnH,OAAO,mBAAoBkvB,KAv2C/C,2MA42C2BhwB,GA52C3B,iGA62CU6hC,EA72CV,MA82CS7hC,EAAQgwB,SA92CjB,CA+2CME,KAAMlwB,EAAQkwB,KACd2C,WAAW,IAAI92B,MAAOslC,gBAExBpoC,KAAKgP,OAAOnH,OAAO,mBAAoB+gC,GAEpC5oC,KAAKgP,OAAOzH,MAAMlB,KAAKsB,YACO,kBAAxBZ,EAAQgwB,SAAShvB,IACvB,GAAY8C,oBAt3CnB,wDA03CUwvB,EAAWtzB,EAAQgwB,SAAS7f,KAC/B6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACJ+Q,EAAU4K,EAASA,EAAS39B,OAAS,KAAOqK,EAAQgwB,SAASptB,KAAO,GAAK0wB,EAASte,OAAS,GA93CrG,kBAg4C0B,GAAY2sB,eAAe3hC,EAAQgwB,SAAShvB,GAAI,CAClEwB,SAAUxC,EAAQgwB,SAASxtB,SAC3BI,KAAM5C,EAAQgwB,SAASptB,KACvB8lB,UACA4I,SAAUtxB,EAAQgwB,SAASsB,SAC3BuE,iBAAkB71B,EAAQgwB,SAASoG,QAAU,GAC7ClG,KAAMlwB,EAAQkwB,OAt4CtB,OAg4CYuR,EAh4CZ,OAw4CYzR,EAAWyR,EAAQpL,GAAkBoL,GAAS,KAChDzR,GACF/2B,KAAKgP,OAAOnH,OAAO,mBAAoBkvB,GA14C/C,qDA64CM/2B,KAAKgP,OAAOnH,OAAO,mBAAoBd,EAAQgwB,UA74CrD,qNAi5C2BA,GAj5C3B,uGAk5CUuF,EAAcvF,EAAS7f,KAC1B6F,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACP3C,MACG8sB,EAAgBvM,GAAeA,IAAgBvF,EAASptB,KAAO2yB,EAAc,GAv5CvF,SAw5CUt8B,KAAK2hC,8BAA8B5K,EAASxtB,SAAUwtB,EAASptB,KAAMk/B,GAx5C/E,UAy5CUC,EACmC,oBAAhC9oC,KAAK+oC,uBAAwC/oC,KAAK+oC,uBAAuBhS,GAAY,GACxFiS,EAAkBF,GAAmBD,GACvCG,GAAmBA,IAAoBH,EA55C/C,gCA65CY7oC,KAAK2hC,8BAA8B5K,EAASxtB,SAAUwtB,EAASptB,KAAMq/B,GA75CjF,UA+5CUC,EACJD,GAAmBA,IAAoBH,EACnC7oC,KAAKkpC,6BAA6BnS,EAAS7f,KAAM6f,EAASptB,KAAMq/B,GAChEjS,EAAS7f,KACflX,KAAKgP,OAAOnH,OAAO,uBAAwB,CACzCiC,QAASitB,EAASjtB,QAClBoN,KAAM+xB,EACN3qC,KAAM,GAAF,OAAKy4B,EAASxI,SAAd,cAA4BwI,EAAS90B,UACzCssB,SAAUwI,EAASxI,SACnBtsB,SAAU80B,EAAS90B,SACnBo2B,SAAUtB,EAASsB,SACnBsB,gBAAiB5C,EAASoG,QAAU,KAEtCn9B,KAAKgP,OAAOnH,OAAO,0BACbshC,EAAgB,CACpB5sB,KAAM0sB,EACN18B,MAAO,IACLwqB,SAAU,IACVsB,SAAU50B,OAAO2kB,KAAKC,IAAI,EAAGD,KAAK8Q,IAAI,EAAGp1B,OAAOizB,EAASsB,WAAa,MAClEtB,EAASoG,OAAS,CAAEA,OAAQpG,EAASoG,QAAW,GAHjD,CAIHrgB,QAAS,OAGT9c,KAAKyO,OAAO8N,OAAS0sB,GAAgBjpC,KAAKyO,OAAOlC,MAAM4wB,SAAWpG,EAASoG,OAt7CnF,4CAw7Ccn9B,KAAKmS,QAAQnV,KAAKmsC,GAx7ChC,iEA07Cc,MAA+C,yBAArC,KAA4B7qC,KA17CpD,mDA+7CI0B,KAAK2U,WAAa,UA/7CtB,8JAk8CuB5N,GACnB,IAAM+C,EAAUswB,GAAmBrzB,EAAQmQ,MAC3C,GAAIpN,EAAS,CACX,IAAMs/B,EAAc9O,GAAkBvzB,EAAQmQ,MAC9ClX,KAAKgP,OAAOnH,OAAO,uBAAwB,CACzCiC,UACAoN,KAAMnQ,EAAQmQ,KACd5Y,KAAMyI,EAAQzI,KACdiwB,SAAU6a,OAAcn+B,EAAYlE,EAAQzI,KAC5C2D,SAAUmnC,EAAcriC,EAAQzI,UAAO2M,EACvCwwB,sBAAuB2N,SAGzBppC,KAAKgP,OAAOnH,OAAO,2BAA4Bd,EAAQmQ,MACvDlX,KAAKgP,OAAOnH,OAAO,2BAA4Bd,EAAQzI,MAEpD0B,KAAKiW,oBAGVjW,KAAKgP,OAAOnH,OAAO,0BACnB7H,KAAKgV,sBAAuB,EAC5BhV,KAAK2U,WAAa,UACd5N,EAAQmQ,KAAK6F,MAAM,KAAK,KAAO/c,KAAKyO,OAAO8N,MAC7Cvc,KAAK8gC,6BAz9CX,kCA69CctvB,GACV,IAAI0D,EAAkBlV,KAAKkV,gBAC3BA,GAAmB1D,EAAE63B,MAAQrpC,KAAK6/B,UAClC3qB,EAAkB,GAAO4qB,yBAAyB5qB,GAClDlV,KAAKkV,gBAAkBA,EACvBlV,KAAK6/B,UAAYruB,EAAE63B,QAl+CvB,kCAs+CI,GAAepP,KAAKkE,GAAiCn+B,KAAKkV,iBAC1D7S,SAASujB,oBAAoB,YAAa5lB,KAAKspC,aAC/CjnC,SAASujB,oBAAoB,UAAW5lB,KAAKupC,WAC7ClnC,SAASiC,KAAKwhB,UAAU5d,OAAO,yBAz+CnC,kCA4+CcsJ,GACVnP,SAASmjB,iBAAiB,YAAaxlB,KAAKspC,aAC5CjnC,SAASmjB,iBAAiB,UAAWxlB,KAAKupC,WAC1ClnC,SAASiC,KAAKwhB,UAAUxa,IAAI,uBAC5BtL,KAAK6/B,UAAYruB,EAAE63B,QAh/CvB,gCAiSI,OAAOrpC,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAAK,SAAClX,GAAD,OAA8BA,EAAIE,WAjS9E,4CAqSI,OAAOtI,KAAKgP,OAAOzH,MAAMsH,KAAKsrB,iBArSlC,iCAySI,OAAOn6B,KAAKid,aAAgBjd,KAAKkd,oBAAsBld,KAAKkd,mBAAmBvT,OAzSnF,6CA6SI,OAAO3J,KAAK+V,YACP/V,KAAK+V,WAAWvU,UAAY,IAAIoL,OAAO,SAAC6iB,GAAD,OAA4C,IAAlBA,EAAQnD,QAC1E,KA/SR,2CAmTI,OAAOtsB,KAAKwpC,qBAAuB,KAnTvC,+CAsT8B,WAC1B,OAAKxpC,KAAKkd,mBAGHkL,KAAKC,IACV,EACAroB,KAAKyX,qBAAqB2jB,UAAU,SAAA3L,GAAO,OAAIA,EAAQ1nB,KAAO,EAAKmV,mBAAoBnV,MAJhF,IAxTb,8CAiUI,OAAO/H,KAAKwX,yBAA2B,IAjU3C,0CAqUI,OAAOxX,KAAKwX,yBAA2BxX,KAAKyX,qBAAqB/a,OAAS,IArU9E,4CAyUI,OAAOsD,KAAK+V,WAAa/V,KAAK+V,WAAWzX,KAAO,KAzUpD,+CA6UI,OAAO0B,KAAKkd,mBAAqBld,KAAKkd,mBAAmB5e,KAAO,KA7UpE,qCAiVI,OAAQsB,OAAwBogC,iBAjVpC,uCAqVI,MAAO,CACL,CAAE33B,KAAM,KAAM6H,MAAO,GAAe,WAAYqF,KAAM,IACtD,CAAElN,KAAM,KAAM6H,MAAO,GAAe,WAAYqF,KAAM,IACtD,CAAElN,KAAM,KAAM6H,MAAO,GAAe,YAAaqF,KAAM,OAxV7D,6CA4V4B,WACxB,OACEvV,KAAK2kC,iBAAiBrlB,KAAK,SAAA/V,GAAQ,OAAIA,EAASlB,OAAS,EAAKsN,eAAgB3V,KAAK2kC,iBAAiB,KA9V1G,yCAmWI,MAAO,CAAC,eAAgB,wBAAyB,uBAAuB3lB,SAAShf,KAAKyO,OAAOnQ,MAAQ,MAnWzG,kCAuWI,MAAO,CAAC,OAAQ,gBAAiB,eAAe0gB,SAAShf,KAAKyO,OAAOnQ,MAAQ,MAvWjF,mCA2WI,OAAO0B,KAAKiW,mBAAqBjW,KAAKoiC,qBA3W1C,wCA+WI,MACsB,YAApBpiC,KAAK2U,YACJ,CAAC,SAAU,eAAeqK,SAAShf,KAAK2U,aAAoC,mBAArB3U,KAAKyO,OAAOnQ,OAjX1E,2CAsXI,OACE0B,KAAKk/B,4BACe,YAApBl/B,KAAK2U,YACgB,YAApB3U,KAAK2U,YAA4B3U,KAAKoiC,mBAEhC,UAEe,YAApBpiC,KAAK2U,WACA,UAEF,CAAC,cAAe,eAAeqK,SAAShf,KAAK2U,YAAc,SAAW3U,KAAK2U,aAhYtF,6CAoYI,IAAMnI,EAAWxM,KAAKyO,OAAOlC,MAAMC,SACnC,MAA2B,kBAAbA,GAAyBxM,KAAKypC,oBAAoBj9B,GAAYA,EAAW,MArY3F,gDAm/CkC0I,GAC9B,IAAIulB,EAAarS,KAAK8Q,IAAIhkB,EAAiBgpB,IAE3C,OADAzD,EAAarS,KAAKC,IAAIoS,EAAYwD,IAC3BxD,MAt/CX,GAAoC,QAkElC,gBADC,gBAAM,UAAW,CAAE7rB,UAAW,c,yCAI/B,gBADC,gBAAS,OAAQ,CAAEA,UAAW,c,oCAI/B,gBADC,gBAAS,cAAe,CAAEA,UAAW,gB,sCAItC,gBADC,gBAAS,cAAe,CAAEA,UAAW,Y,mCAItC,gBADC,gBAAS,4BAA6B,CAAEA,UAAW,Y,iDAIpD,gBADC,gBAAM,mBAAoB,CAAEA,UAAW,Y,wCAIxC,gBADC,gBAAS,sBAAuB,CAAEA,UAAW,Y,2CAI9C,gBADC,gBAAS,uBAAwB,CAAEA,UAAW,Y,4CAI/C,gBADC,gBAAS,yBAA0B,CAAEA,UAAW,Y,8CAIjD,gBADC,gBAAS,mCAAoC,CAAEA,UAAW,Y,wDAI3D,gBADC,gBAAS,eAAgB,CAAEA,UAAW,Y,oCAIvC,gBADC,gBAAM,WAAY,CAAEA,UAAW,gB,mCAIhC,gBADC,gBAAO,cAAe,CAAEA,UAAW,gB,mCAIpC,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAO,sBAAuB,CAAEA,UAAW,gB,2CAI5C,gBADC,gBAAO,eAAgB,CAAEA,UAAW,gB,oCAIrC,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CA0C3C,gBADC,eAAM,W,6BAkDN,MAGD,gBADC,eAAM,oC,yCAQN,MAtNkB,GAAM,mBAvB1B,eAAU,CACT7N,WAAY,CACV0jB,UAAA,GACA5G,WAAA,GACAE,cAAA,GACA3K,OAAA,EACAs2B,iBAAA,GACAC,gBAAA,GACAC,oBAAA,GACAC,wBAAA,GACAC,qBAAA,GACAja,eAAA,GACAvS,QAAA,GACAysB,SAAA,GACAC,SAAA,GACAC,QAAA,GACAC,gBACAC,OAAA,GACAC,QAAA,GACAC,OAAA,GACAC,gBAAA,OAGiB,cCncsc,MCQvd,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIvqC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,eAAeC,MAAM,CACvIT,EAAIwqC,0BACJ,CACE,0BAA2BxqC,EAAIyqC,qBAC/B,oBAAqBzqC,EAAIqU,mBAE3B5L,GAAG,CAAC,MAAQzI,EAAI0qC,gBAAgB,CAACtqC,EAAG,SAAS,CAACE,MAAM,CAAC,QAAUN,EAAIO,SAAWP,EAAI2qC,iBAAkB3qC,EAAiB,cAAEI,EAAG,MAAM,CAACI,YAAY,gCAAgC,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmBlB,EAAG,MAAMJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,UAAUtB,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,YAAYC,MAAM,CAAEE,OAAQX,EAAIO,SAAWP,EAAI2qC,gBAAiB,CAACvqC,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,QAAUN,EAAI4qC,eAAexqC,EAAG,MAAM,CAACiV,IAAI,SAAS7U,YAAY,UAAU,CAACR,EAAIY,GAAIZ,EAAI6qC,+BAA+Bh+B,OAAO,SAAUolB,GAAO,OAAOA,IAAS,SAAShc,GAAa,OAAO7V,EAAG,MAAM,CAACd,IAAI2W,EAAYrM,KAAK5B,GAAKiO,EAAY3N,KAAK9H,YAAY,OAAOC,MAAM,CAC9sBF,QAASP,EAAIO,QACb,uBAAwBP,EAAI8qC,6BAA6B70B,IACzDtU,MAAO3B,EAAI+qC,aAAa90B,GAAc3V,MAAM,CAAC,YAAYN,EAAIwN,kBAAkByI,GAAa,iBAAiBA,EAAYuc,WAAW,CAAEvc,EAAY1C,QAAe,QAAEnT,EAAG,KAAK,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIgrC,gBAAgB/0B,EAAY1C,QAAQ03B,aAAa,gBAAgBjrC,EAAIuB,KAAO0U,EAAY1C,QAAQ0uB,WAAmHjiC,EAAIuB,KAA3GnB,EAAG,KAAK,CAACI,YAAY,SAAS,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAG6U,EAAY1C,QAAQlS,OAAO,gBAA0B4U,EAAY1C,QAAQ23B,SAAe,OAAE9qC,EAAG,MAAMJ,EAAIY,GAAIqV,EAAY1C,QAAgB,SAAE,SAAS43B,EAAOtqC,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAIuB,EAAML,YAAY,YAAYC,MAAO,mBAAsB0qC,EAAW,KAAG7qC,MAAM,CAAC,GAAKN,EAAIorC,mBAAmBn1B,EAAapV,GAAO,wBAAwBb,EAAIorC,mBAAmBn1B,EAAapV,KAAS,CAAkB,aAAhBsqC,EAAO95B,KAAqBjR,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,OAAOtB,EAAIuB,KAAsB,iBAAhB4pC,EAAO95B,KAAyBjR,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,mBAAmBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,0BAA0B,qBAAqBtB,EAAIuB,KAAsB,YAAhB4pC,EAAO95B,KAAoBjR,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,OAAOtB,EAAIuB,KAAsB,iBAAhB4pC,EAAO95B,KAAyBjR,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACR,EAAImB,GAAG,mBAAmBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,YAAY,KAAKtB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,oBAAoBlB,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKN,EAAIsxB,aAAa6Z,EAAOE,WAAW1c,OAAOhiB,QAAQ,CAAC3M,EAAImB,GAAGnB,EAAIoB,GAAG+pC,EAAOE,WAAW1c,OAAOpwB,SAASyB,EAAImB,GAAG,oBAAoB,GAAGnB,EAAIuB,KAAKnB,EAAG,MAAM,CAACqQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIsrC,WAAWH,WAAgB,GAAGnrC,EAAIuB,SAAUvB,EAAIurC,YAAgB,KAAEnrC,EAAG,cAAc,CAACE,MAAM,CAAC,IAAMN,EAAIurC,YAAYnX,IAAI,KAAOp0B,EAAIurC,YAAY7N,KAAK,KAAO19B,EAAIurC,YAAYp0B,MAAM1O,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIurC,YAAYp0B,KAAO,OAAOnX,EAAIuB,MAAM,IAAI,GAAIvB,EAAIwrC,gCAAkCxrC,EAAIqU,iBAAkBjU,EAAG,YAAY,CAACE,MAAM,CAAC,eAAeN,EAAIwrC,8BAA8Bj4B,QAAQ,yBAAyBvT,EAAIyqC,qBAAqB,WAAWzqC,EAAIyrC,WAAWzrC,EAAIuB,KAAKnB,EAAG,kBAAkB,CAACE,MAAM,CAAC,MAAQN,EAAIk3B,KAAK71B,MAAM,QAAUrB,EAAIk3B,KAAKxd,SAASjR,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIk3B,KAAKxd,SAAU,KAAS,CAACtZ,EAAG,MAAM,CAACqQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAIk3B,KAAK3jB,eAAe,IACxuE,GAAkB,GCVlB,I,UAAS,WAAa,IAAIvT,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAkB,eAAEI,EAAG,MAAM,CAACI,YAAY,qBAAqBC,MAAM,CAAE,4BAA6BT,EAAIyqC,uBAAyBzqC,EAAI0rC,kBAAmB,CAACtrC,EAAG,mBAAmB,CAACE,MAAM,CAAC,QAAUN,EAAI2rC,cAAcljC,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI2rC,cAAe,KAAS,CAAE3rC,EAAgB,aAAEI,EAAG,qBAAqBJ,EAAIuB,MAAM,GAAGnB,EAAG,mBAAmB,CAACE,MAAM,CAAC,QAAUN,EAAI4rC,kBAAkBnjC,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI4rC,kBAAmB,KAAS,CAACxrC,EAAG,mBAAmB,CAACE,MAAM,CAAC,YAAYN,EAAI6rC,YAAYC,wBAAwB,KAAO9rC,EAAI6rC,YAAYE,0BAA0B,GAAG3rC,EAAG,MAAM,CAACI,YAAY,cAAc,CAACJ,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,4BAA4BC,MAAM,CAAE8H,OAAQvI,EAAI2rC,cAAeljC,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI2rC,cAAgB3rC,EAAI2rC,gBAAgB,CAACvrC,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,aAAa,GAAGJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAc,cAActB,EAAIY,GAAIZ,EAAIgsC,eAAepiC,KAAiB,aAAE,SAASqiC,GAAa,OAAO7rC,EAAG,cAAc,CAACd,IAAI2sC,EAAY3jC,KAAK9H,YAAY,4BAA4BF,MAAM,CAAC,GAAKN,EAAIksC,kBAAkBD,EAAY3jC,QAAQ,CAAClI,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,cAAc,GAAGJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAG6qC,EAAYE,YAAY,gBAAiBnsC,EAAmB,gBAAEI,EAAG,MAAM,CAACI,YAAY,4BAA4BC,MAAM,CAAE8H,OAAQvI,EAAI4rC,kBAAmBnjC,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI4rC,kBAAoB5rC,EAAI4rC,oBAAoB,CAACxrC,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,kBAAkB,GAAGJ,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAI6rC,YAAYE,sBAAsBpvC,QAAQ,cAAcqD,EAAIuB,MAAM,GAAGnB,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAAER,EAAI4I,WAAkB,QAAExI,EAAG,mBAAmB,CAACI,YAAY,qBAAqBC,MAAM,CAAE,4BAA0D,YAA7BT,EAAIyqC,sBAAqCnqC,MAAM,CAAC,KAAON,EAAIsB,eAAe,eAAe,KAAO,MAAM,OAAStB,EAAI4I,WAAW8mB,QAAQ,KAAO1vB,EAAI4I,WAAWi2B,SAAS,QAAU7+B,EAAIosC,eAAe,QAAUpsC,EAAIqsC,kBAAkBrsC,EAAIuB,KAAMvB,EAAI4I,WAAkB,QAAExI,EAAG,mBAAmB,CAACI,YAAY,qBAAqBC,MAAM,CAAE,4BAA0D,YAA7BT,EAAIyqC,sBAAqCnqC,MAAM,CAAC,KAAON,EAAIsB,eAAe,eAAe,KAAO,MAAM,OAAStB,EAAI4I,WAAW0jC,QAAQ,KAAOtsC,EAAI4I,WAAW2jC,SAAS,QAAUvsC,EAAIwsC,eAAe,QAAUxsC,EAAIysC,kBAAkBzsC,EAAIuB,KAAMvB,EAAI4I,WAAe,KAAExI,EAAG,mBAAmB,CAACI,YAAY,qBAAqBC,MAAM,CAAE,4BAA0D,SAA7BT,EAAIyqC,sBAAkCnqC,MAAM,CAAC,KAAON,EAAIsB,eAAe,YAAY,KAAO,MAAM,OAAStB,EAAI4I,WAAW8jC,KAAK,KAAO1sC,EAAI4I,WAAW+jC,MAAM,QAAU3sC,EAAI4sC,YAAY,QAAU5sC,EAAI6sC,eAAe7sC,EAAIuB,MAAM,GAAIvB,EAAmB,gBAAEI,EAAG,SAAS,CAACI,YAAY,gCAAgCC,MAAM,CAAE8H,OAAQvI,EAAI4rC,kBAAmBtrC,MAAM,CAAC,KAAO,SAAS,aAAaN,EAAIsB,eAAe,0BAA0B,gBAAgBoC,OAAO1D,EAAI4rC,mBAAmBnjC,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI4rC,kBAAoB5rC,EAAI4rC,oBAAoB,CAACxrC,EAAG,iBAAiBA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI8sC,uBAAuB,GAAG9sC,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAAER,EAAIiP,OAAOzH,MAAMiC,OAAe,SAAErJ,EAAG,mBAAmB,CAACI,YAAY,qBAAqBF,MAAM,CAAC,KAAON,EAAIsB,eAAe,cAAc,KAAO,gBAAgBtB,EAAIuB,KAAKnB,EAAG,mBAAmB,CAACI,YAAY,qBAAqBF,MAAM,CAAC,KAAON,EAAIsB,eAAe,SAAS,KAAO,QAAQ,OAAW+mB,KAAKmO,MAAkB,IAAZx2B,EAAIs2B,OAAgB,IAAK,iBAAmBt2B,EAAIs2B,MAAQ,GAAI,iBAAmBt2B,EAAIs2B,MAAQ,KAAK7tB,GAAG,CAAC,cAAgB,SAASC,GAAQ,OAAO1I,EAAIu2B,SAASv2B,EAAIs2B,MAAQ,KAAM,cAAgB,SAAS5tB,GAAQ,OAAO1I,EAAIu2B,SAASv2B,EAAIs2B,MAAQ,SAAU,MAAM,GAAGt2B,EAAIuB,OAC9vH,GAAkB,GCAD,IACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,QAAU,cAAc,MAAQ,8BAA+BxB,MAC7GuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,68BAA68B,KAAO,uBCtBl/B,IACbkB,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,wIAAwI,OAAS,eAAe,iBAAiB,QAAQ,kBAAkB,gBCvB1P,GAAS,WAAa,IAAIN,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIzB,MAAM,OAAqB,eAAbyB,EAAIqR,KAAuBjR,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACJ,EAAG,SAAS,CAACI,YAAY,gCAAgCC,MAAM,CAAE8H,OAA8C,UAAtCvI,EAAIiP,OAAOzH,MAAMiC,OAAOyN,WAAwB5W,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIqY,aAAa,YAAY,CAACjY,EAAG,MAAM,CAACI,YAAY,iDAAiDJ,EAAG,SAAS,CAACI,YAAY,gCAAgCC,MAAM,CAC9nB8H,OAA8C,UAAtCvI,EAAIiP,OAAOzH,MAAMiC,OAAOyN,YAA0BlX,EAAIiP,OAAOzH,MAAMiC,OAAOyN,WAClF5W,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIqY,aAAa,YAAY,CAACjY,EAAG,MAAM,CAACI,YAAY,iDAAiDJ,EAAG,SAAS,CAACI,YAAY,gCAAgCC,MAAM,CAAE8H,OAA8C,SAAtCvI,EAAIiP,OAAOzH,MAAMiC,OAAOyN,WAAuB5W,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIqY,aAAa,WAAW,CAACjY,EAAG,MAAM,CAACI,YAAY,kDAAkDJ,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAAER,EAAI+sC,SAAW/sC,EAAIgtC,SAAwB,UAAbhtC,EAAIqR,KAAkBjR,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAAER,EAAI+sC,SAAwB,QAAb/sC,EAAIqR,KAAgBjR,EAAG,cAAc,CAACI,YAAY,WAAWF,MAAM,CAAC,GAAKN,EAAI+sC,UAAU,CAAC3sC,EAAG,kBAAkB,GAAGJ,EAAIuB,KAAmB,UAAbvB,EAAIqR,MAAoBrR,EAAIitC,iBAAkB7sC,EAAG,SAAS,CAACI,YAAY,WAAWiI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,oBAAoB,CAAC7N,EAAG,cAAc,GAAGJ,EAAIuB,MAAM,GAAGvB,EAAIuB,KAAKnB,EAAG,wBAAwB,CAACE,MAAM,CAAC,KAAON,EAAI6N,KAAK,OAAS7N,EAAIktC,UAAWltC,EAAI+sC,SAAW/sC,EAAIgtC,SAAwB,UAAbhtC,EAAIqR,KAAkBjR,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAAER,EAAIgtC,SAAwB,QAAbhtC,EAAIqR,KAAgBjR,EAAG,cAAc,CAACI,YAAY,WAAWF,MAAM,CAAC,GAAKN,EAAIgtC,UAAU,CAAC5sC,EAAG,mBAAmB,GAAGJ,EAAIuB,KAAmB,UAAbvB,EAAIqR,MAAoBrR,EAAImtC,iBAAkB/sC,EAAG,SAAS,CAACI,YAAY,WAAWiI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,oBAAoB,CAAC7N,EAAG,aAAa,GAAGJ,EAAIuB,MAAM,GAAGvB,EAAIuB,MAAM,MACh6C,GAAkB,GCHlB,GAAS,WAAa,IAAIvB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAI6N,MAAQ7N,EAAI6N,KAAKlR,OAAS,GAAKqD,EAAIotC,cAAehtC,EAAG,MAAM,CAACiV,IAAI,OAAO7U,YAAY,2BAA2BR,EAAIY,GAAIZ,EAAQ,KAAE,SAAS4L,GAAM,OAAOxL,EAAG,cAAc,CAACd,IAAIsM,EAAKshC,OAAO1sC,YAAY,yCAAyCC,MAAM,CAAEsO,QAAS/O,EAAIktC,SAAWthC,EAAKshC,QAAS5sC,MAAM,CAAC,KAAO,SAAS,GAAKN,EAAIqtC,WAAWzhC,KAAQ,CAAC5L,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGwK,EAAKshC,QAAQ,cAAc,GAAGltC,EAAIuB,KAAKnB,EAAG,SAAS,CAACiV,IAAI,SAAS7U,YAAY,2BAA2BF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAIotC,eAAiBptC,EAAIotC,iBAAiB,CAACptC,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIktC,QAAQ,aAC9rB,GAAkB,GCgCD,GAArB,6D,+DACE,EAAAE,eAAyB,EAD3B,+EAgBI9qC,SAASmjB,iBAAiB,QAASxlB,KAAKqtC,oBAAoB,KAhBhE,gCAoBI,GAAKrtC,KAAKstC,QAAV,CAGA,IAAMx+B,EAAU9O,KAAKstC,QAAQtZ,cAAc,YACvCh0B,KAAKmtC,eAAiBr+B,GACxB9O,KAAKstC,QAAQpZ,SAAS,CAAEC,IAAKrlB,EAAQslB,eAzB3C,yCA6BqB5iB,GACZxR,KAAKutC,WAGNvtC,KAAKmtC,gBAAkBntC,KAAKutC,UAAUrzB,SAAS1I,EAAET,UACnD/Q,KAAKmtC,eAAgB,KAlC3B,iCAsCaxhC,GACT,OAAO,GAAkB4B,kBAAkB,CACzChE,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,KAC7B2C,gBAAiBX,EAAKW,sBA3C5B,GAAmD,QAIjD,gBADC,eAAK,CAAEJ,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAI,W,iCAIL,gBADC,eAAI,S,+BAZc,GAAqB,gBADzC,QACoB,cCjCue,MCQxf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCuDM,GAArB,kJAA8C,QAE5C,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,8BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,eAAK,CAAEA,UAAU,K,wCAIlB,gBADC,gBAAS,eAAgB,CAAE0C,UAAW,Y,oCAzBpB,GAAgB,gBATpC,eAAU,CACT7N,WAAY,CACVysC,sBAAA,GACAC,cAAA,GACAC,eAAA,GACAtgB,UAAA,GACAC,SAAA,OAGiB,cC1Eke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIttB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAsB,mBAAEI,EAAG,SAAS,CAACI,YAAY,uBAAuBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAI4tC,mBAAmB,CAACxtC,EAAG,cAAcA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,2BAA2B,GAAGtB,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,sBAAsBiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAI6tC,qBAAqB7tC,EAAIY,GAAIZ,EAAgB,aAAE,SAAS4L,GAAM,OAAOxL,EAAG,MAAM,CAACd,IAAIsM,EAAKrN,KAAKiC,YAAY,sBAAsB,CAACJ,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKrN,MAAM,QAAQ6B,EAAG,OAAO,CAACI,YAAY,mCAAmC,CAACR,EAAIY,GAAIgL,EAAiB,aAAE,SAASqgC,EAAYprC,GAAO,MAAO,CAAEA,EAAQ,EAAGT,EAAG,OAAO,CAACd,IAAM2sC,EAAgB,KAAI,aAAc3rC,MAAM,CAAC,cAAc,SAAS,CAACN,EAAImB,GAAG,+BAA+BnB,EAAIuB,KAAKnB,EAAG,cAAc,CAACd,IAAI2sC,EAAY3jC,KAAKhI,MAAM,CAAC,GAAK2rC,EAAY5mC,MAAM,CAACrF,EAAImB,GAAG,eAAenB,EAAIoB,GAAG6qC,EAAYE,YAAY,oBAAoB,QAAQ,IAC9gC,GAAkB,G,0jBCkCtB,IAAqB,GAArB,6D,+DAaE,EAAA7qC,eAAiB,GAbnB,wFA2CQrB,KAAK6tC,oBACP7tC,KAAKmS,QAAQnV,KAAKgD,KAAK6tC,sBA5C7B,mCAekB,WACd,OAAO7tC,KAAK9D,KACT2R,IAAI,SAAClE,GAAD,aACAA,EADA,CAEHmkC,aAAcnkC,EAAKmkC,aAChBlhC,OAAO,SAACo/B,GAAD,OAAsBA,EAAY3+B,eACzCQ,IAAI,SAACm+B,GACJ,IAAM5mC,EAAM,GAAkBmI,kBAAkB,CAC9ChE,SAAUyiC,EAAY3jC,KACtB8D,SAAUxC,EAAK+C,KACfJ,gBAAiB0/B,EAAY3+B,eAEzBiO,EAAY,EAAK7M,OAAOlC,MAAMuQ,QAAlB,UAA+B1X,EAA/B,cAAiDA,EACnE,aACK4mC,EADL,CAEE5mC,IAAK,GAAyB2oC,gBAAgBzyB,EAAW,EAAK7M,OAAO2Q,SAAU,EAAK3Q,OAAOlC,MACxFsQ,sBAIVjQ,OAAO,SAACjD,GAAD,OAAeA,EAAKmkC,aAAapxC,OAAS,MAnCxD,yCAuCI,OAAO,GAAyBkgB,eAAe5c,KAAKyO,OAAOlC,MAAMsQ,gBAvCrE,uCAiDI,OAAO,GAAe,oBACnBra,QAAQ,aAAcxC,KAAKuuB,UAC3B/rB,QAAQ,uBAAwBxC,KAAK+rC,eAAiB/rC,KAAK+rC,eAAer/B,KAAO,QAnDxF,GAA8C,QAE5C,gBADC,gBAAO,qBAAsB,CAAEkC,UAAW,gB,sCAI3C,gBADC,eAAK,CAAE1C,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,gCAIlB,gBADC,gBAAM,oBAAqB,CAAE0C,UAAW,Y,yCAVtB,GAAgB,gBADpC,eAAU,CAAE7N,WAAY,CAAE8c,WAAA,OACN,cCnCke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI9d,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,qBAAqBC,MAAM,CAAEiZ,QAAS1Z,EAAI0Z,QAASmH,SAAU7gB,EAAI6gB,UAAWlf,MAAM,CAAGqnB,UAAWhpB,EAAI4pB,WAAc,cAAgB5pB,EAAI4pB,WAAa,WAAS1e,IAAc,CAAC9K,EAAG,SAAS,CAACI,YAAY,oCAAoCF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,cAAc,GAAGA,EAAG,MAAM,CAACI,YAAY,iCAAiCiI,GAAG,CAAC,YAAczI,EAAI6pB,UAAU,YAAc7pB,EAAI8pB,SAAS,UAAY9pB,EAAI+pB,QAAQ,cAAgB/pB,EAAIgqB,aAAa,CAAC5pB,EAAG,UAAUA,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACR,EAAIyP,GAAG,YAAY,MAChsB,GAAkB,GCkCD,GAArB,6D,+DAIE,EAAA2a,WAA4B,KAE5B,EAAAR,WAAqB,EAErB,EAAA/I,UAAoB,EAEpB,EAAAwJ,cAA+B,KAVjC,+EAYYjQ,GACRna,KAAKoqB,cAAgBjQ,EAAM4N,UAC3B/nB,KAAKmqB,WAAahQ,EAAM6N,QACxBhoB,KAAK4gB,UAAW,EAChB,IAAMqH,EAAa9N,EAAM+N,cACrBD,EAAWE,mBACbF,EAAWE,kBAAkBhO,EAAM4N,aAlBzC,+BAsBW5N,GACiB,OAApBna,KAAKmqB,YAAuBnqB,KAAKoqB,gBAAkBjQ,EAAM4N,YAG7D/nB,KAAK2pB,WAAavB,KAAKC,IAAI,EAAGlO,EAAM6N,QAAUhoB,KAAKmqB,YAC/CnqB,KAAK2pB,WAAa,GAAKxP,EAAMmO,YAC/BnO,EAAMC,oBA5BZ,8BAgCUD,GACN,GAAIna,KAAKoqB,gBAAkBjQ,EAAM4N,UAAjC,CAGA,IAAME,EAAa9N,EAAM+N,cAQzB,GANED,EAAWM,uBACXN,EAAWO,mBACXP,EAAWO,kBAAkBrO,EAAM4N,YAEnCE,EAAWM,sBAAsBpO,EAAM4N,WAErC/nB,KAAK2pB,YAAc,GAGrB,OAFA3pB,KAAKo3B,iBACLp3B,KAAKgO,MAAM,SAGbhO,KAAKo3B,eAjDT,mCAqDIp3B,KAAKo3B,cArDT,kCAyDIp3B,KAAKmqB,WAAa,KAClBnqB,KAAK2pB,WAAa,EAClB3pB,KAAK4gB,UAAW,EAChB5gB,KAAKoqB,cAAgB,SA5DzB,GAA8C,QAE5C,gBADC,eAAK,CAAEle,UAAU,K,+BADC,GAAgB,gBALpC,eAAU,CACTnL,WAAY,CACVke,UAAA,OAGiB,cCnCke,MCQnf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIlf,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAe,YAAEI,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,8BAA8B,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIkd,YAAY3e,MAAM,UAAWyB,EAAIiuC,YAAY/c,SAAWlxB,EAAIiuC,YAAY/c,QAAQv0B,OAAQyD,EAAG,MAAM,CAACJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,WAAWtB,EAAIY,GAAIZ,EAAIiuC,YAAmB,QAAE,SAAStf,EAAO9tB,GAAO,OAAOT,EAAG,cAAc,CAACd,IAAIqvB,EAAOhiB,KAAKrM,MAAM,CAAC,GAAKN,EAAIkuC,cAAcvf,EAAOhiB,QAAQ,CAAE9L,EAAQ,GAAKA,IAAUb,EAAIiuC,YAAY/c,QAAQv0B,OAAS,EAAG,CAACqD,EAAImB,GAAG,yBAAyBnB,EAAIuB,KAAKvB,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGutB,EAAOpwB,MAAM,WAAW,MAAM,GAAGyB,EAAIuB,KAAMvB,EAAIiuC,YAAYE,cAAgBnuC,EAAIiuC,YAAYE,aAAaxxC,OAAQyD,EAAG,MAAM,CAACJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAetB,EAAIiuC,YAAYE,aAAaxxC,OAAS,EAAI,eAAiB,gBAAgB,UAAUqD,EAAIoB,GAAGpB,EAAIiuC,YAAYE,aAAavgC,KAAK,OAAO,UAAU5N,EAAIuB,KAAMvB,EAAIiuC,YAAYvrB,YAAc1iB,EAAIiuC,YAAYvrB,WAAW/lB,OAAQyD,EAAG,MAAM,CAACI,YAAY,cAAc,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,WAAWtB,EAAIY,GAAIZ,EAAIiuC,YAAsB,WAAE,SAASG,GAAiB,OAAOhuC,EAAG,MAAM,CAACd,IAAI2F,KAAKC,UAAUkpC,GAAiB5tC,YAAY,oBAAoB,CAACR,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGgtC,EAAgBtgC,IAAI,SAAUkV,GAAY,OAAOA,EAASzkB,OAASqP,KAAK,QAAQ,eAAe,GAAG5N,EAAIuB,OAAOvB,EAAIuB,MACn4C,GAAkB,GC6CD,GAArB,6D,+DACE,EAAA0sC,YAAmB,KAKnB,EAAA3sC,eAAiB,GANnB,yOASUrB,KAAKouC,mBATf,wSAcUpuC,KAAKouC,mBAdf,8RAkBQpuC,KAAKid,YAlBb,gCAmB+B,GAAaoxB,aAAaruC,KAAKid,YAAY1T,SAAUvJ,KAAKid,YAAYvQ,MAnBrG,OAmBM1M,KAAKguC,YAnBX,kJAuBgBthC,GACZ,OAAO,GAAkB2kB,aAAa,CAAE9nB,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAAU8C,WAAYK,QAxB/F,GAA+C,QAI7C,gBADC,gBAAO,cAAe,CAAEkC,UAAW,gB,mCAUpC,gBADC,eAAM,mB,8BAGN,MAfkB,GAAiB,gBADrC,QACoB,cC9Cme,MCQpf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCkIM,GAArB,6D,+DACE,EAAAjF,KAAoB,KAEpB,EAAAgiC,kBAAmB,EAEnB,EAAAD,cAAe,EAEf,EAAArqC,eAAiB,GAPnB,qFA6BIrB,KAAK2rC,kBAAmB,IA7B5B,qCAuDiB/9B,EAAyBq/B,GACtC,OAAOr/B,EAAKwtB,UAAU,SAAApJ,GAAG,OAAIA,EAAIib,SAAWA,MAxDhD,iCA2Dar/B,EAAyBq/B,GAClC,IAAMrsC,EAAQZ,KAAKsuC,eAAe1gC,EAAMq/B,GAClCsB,EAAa3gC,EAAKhN,EAAQ,GAChC,OAAK2tC,EAGE,GAAkBhhC,kBAAkB,CACzChE,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,KAC7B2C,gBAAiBiiC,EAAWjiC,kBANrB,OA/Db,iCAyEasB,EAAyBq/B,GAClC,IAAMrsC,EAAQZ,KAAKsuC,eAAe1gC,EAAMq/B,GAClCsB,EAAa3gC,EAAKhN,EAAQ,GAChC,OAAK2tC,EAGE,GAAkBhhC,kBAAkB,CACzChE,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,KAC7B2C,gBAAiBiiC,EAAWjiC,kBANrB,OA7Eb,wCA+HoBjE,GAChB,IAAKrI,KAAK+rC,eACR,MAAO,GAFmB,MAI2C/rC,KAAK+rC,eAApEyC,EAJoB,EAIpBA,oBAAqBC,EAJD,EAICA,iBAAkBC,EAJnB,EAImBA,oBAE/C,OAAIF,GAAuBC,GAAoBC,EACtC,GAAkBnhC,kBAAkB,CACzChE,SAAUlB,EACV+D,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,KAC7B2C,gBAAiBtM,KAAKyO,OAAOpK,OAAO2R,cAGjC,GAAkBvI,WAAW,CAClClE,SAAUlB,EACV+D,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,SAhJnC,wCAiCI,IAAMglC,EAAe3uC,KAAK4rC,aAAe5rC,KAAK4rC,YAAYE,sBAC1D,OAAOr7B,MAAMC,QAAQi+B,GACjBA,EAAa/hC,OACX,SAAAjD,GAAI,OACF8G,MAAMC,QAAQ/G,EAAKmkC,eACnBnkC,EAAKmkC,aAAa7L,KAAK,SAAC+J,GAAD,QAAwBA,EAAY3+B,iBAC7D3Q,OACF,IAxCR,sCA4CI,IAAMqvC,EAAiB/rC,KAAK+rC,eAC5B,SAAKA,IAAmB/rC,KAAK6sC,sBAI1Bd,EAAe2C,qBAAuB,GAAK,IAC3C3C,EAAeyC,qBAAuB,GAAK,IAC3CzC,EAAe0C,kBAAoB,GAAK,KAnD/C,qCAwFI,OAAOzuC,KAAK2I,WAAW0jC,QACnBrsC,KAAK4uC,WAAW5uC,KAAK2I,WAAW2jC,SAAUtsC,KAAK2I,WAAW0jC,SAC1D,OA1FR,qCA8FI,OAAOrsC,KAAK2I,WAAW0jC,QACnBrsC,KAAK6uC,WAAW7uC,KAAK2I,WAAW2jC,SAAUtsC,KAAK2I,WAAW0jC,SAC1D,OAhGR,qCAoGI,OAAOrsC,KAAK2I,WAAW8mB,QACnBzvB,KAAK4uC,WAAW5uC,KAAK2I,WAAWi2B,SAAU5+B,KAAK2I,WAAW8mB,SAC1D,OAtGR,qCA0GI,OAAOzvB,KAAK2I,WAAW8mB,QACnBzvB,KAAK6uC,WAAW7uC,KAAK2I,WAAWi2B,SAAU5+B,KAAK2I,WAAW8mB,SAC1D,OA5GR,kCAgHI,OAAOzvB,KAAK2I,WAAW8jC,KAAOzsC,KAAK4uC,WAAW5uC,KAAK2I,WAAW+jC,MAAO1sC,KAAK2I,WAAW8jC,MAAQ,OAhHjG,kCAoHI,OAAOzsC,KAAK2I,WAAW8jC,KAAOzsC,KAAK6uC,WAAW7uC,KAAK2I,WAAW+jC,MAAO1sC,KAAK2I,WAAW8jC,MAAQ,OApHjG,8BAwHI,OAAO,GAAkBh/B,WAAW,CAClClE,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC5W,SAAUnM,KAAKyO,OAAOpK,OAAOsF,WA3HnC,GAAuC,QAUrC,gBADC,eAAK,CAAEuC,UAAU,K,mCAIlB,gBADC,eAAK,CAAEwF,QAAS,M,4CAIjB,gBADC,gBAAM,QAAS,CAAE9C,UAAW,Y,6BAI7B,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,sCAI3C,gBADC,gBAAO,aAAc,CAAEA,UAAW,gB,kCAInC,gBADC,gBAAS,WAAY,CAAEA,UAAW,Y,gCAInC,gBADC,eAAM,W,6BAGN,MA9BkB,GAAS,gBAX7B,eAAU,CACT7N,WAAY,CACV+tC,kBAAA,GACAC,iBAAA,GACAC,iBAAA,GACAC,iBAAA,GACAC,SAAA,EACAC,UAAA,GACAC,cAAA,OAGiB,cCrJ2d,MCQ5e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIrvC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,MAAM,CAAC,QAAUN,EAAI0Z,QAAQ,MAAQ1Z,EAAIqB,MAAM,UAAW,GAAMoH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAAC7N,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACR,EAAIyP,GAAG,YAAY,GAAGrP,EAAG,MAAM,CAACI,YAAY,kDAAkD,CAACJ,EAAG,SAAS,CAACI,YAAY,SAASF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIiO,MAAM,YAAY,CAACjO,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,iBACthB,GAAkB,GCsBD,GAArB,6D,+DAOE,EAAAA,eAAiB,GAPnB,gCAA6C,QAE3C,gBADC,eAAK,CAAE6K,UAAU,K,6BAIlB,gBADC,eAAK,CAAEA,UAAU,K,+BAJC,GAAe,gBAHnC,eAAU,CACTnL,WAAY,CAAEuc,QAAA,OAEK,cCvB+c,MCQhe,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIvd,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACiV,IAAI,cAAc7U,YAAY,eAAemB,MAAM,CAAGyyB,IAAMp0B,EAAIo0B,IAAM,KAAOsJ,KAAO19B,EAAI09B,KAAO,MAASp9B,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,MAAM,CAACI,YAAY,uBAAuB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,SAASlB,EAAG,SAAS,CAACI,YAAY,oBAAoBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIsvC,UAAS,MAAS,CAACtvC,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,aAAa,UAAUlB,EAAG,SAAS,CAACI,YAAY,oBAAoBF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1I,EAAIsvC,cAAc,CAACtvC,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiB,aAC/rB,GAAkB,GCmBD,GAArB,6D,+DACE,EAAAA,eAAiB,GADnB,+EAeS,WACL8C,WAAW,WACT9B,SAASiC,KAAKkhB,iBAAiB,QAAS,EAAK8pB,iBAC5C,OAlBP,kCAsBIjtC,SAASiC,KAAKshB,oBAAoB,QAAS5lB,KAAKsvC,kBAtBpD,qCAyBiB99B,GACPA,EAAET,SAAW/Q,KAAKuvC,gBAAkBvvC,KAAKuvC,eAAer1B,SAAS1I,EAAET,SACvE/Q,KAAKgO,MAAM,WA3BjB,iCA+ByB,IAAdwhC,EAAc,wDACjBA,GACFxvC,KAAKgP,OAAOnH,OAAO,gBAErB7H,KAAKmS,QAAQnV,KAAKgD,KAAKkX,MACvBlX,KAAKgO,MAAM,aApCf,GAAyC,QAIvC,gBADC,eAAK,CAAE9B,UAAU,K,4BAIlB,gBADC,eAAK,CAAEA,UAAU,K,2BAIlB,gBADC,eAAK,CAAEA,UAAU,K,4BAIlB,gBADC,eAAI,gB,sCAZc,GAAW,gBAD/B,QACoB,cCpB2c,MCQ5d,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,kkBCoHf,IAAqB,GAArB,6D,+DACE,EAAA5L,SAAmB,EACnB,EAAAqqC,aAAuB,EACvB,EAAA8E,cAAwB,EACxB,EAAAC,kBAAmC,KACnC,EAAAC,sBAAuC,GACvC,EAAAC,0BAAoC,EACpC,EAAAC,uBAA6E,GAE7E,EAAAC,wBAA+E,GAK/E,EAAAC,qBAAuB,GAGvB,EAAAC,mBAAqB,EACrB,EAAAC,0BAA4B,EAC5B,EAAAhZ,KAAO,CACL71B,MAAO,GACPkS,QAAS,GACTmG,SAAS,GAEX,EAAA6xB,YAAc,CACZnX,IAAK,EACLsJ,KAAM,EACNvmB,KAAM,IAER,EAAA7V,eAAiB,GA7BnB,qFA+BkBD,GACd,OAAOA,EAAMoB,QAAQ,SAAU,SAhCnC,0KAqEIxC,KAAKkwC,UAAU1qB,iBAAiB,SAAUxlB,KAAKmwC,UAC/CvwC,OAAO4lB,iBAAiB,SAAUxlB,KAAKowC,kBACvCxwC,OAAO4lB,iBAAiB,WAAYxlB,KAAKqwC,6BAvE7C,6IA2EIrwC,KAAKkwC,UAAUtqB,oBAAoB,SAAU5lB,KAAKmwC,UAClDvwC,OAAOgmB,oBAAoB,SAAU5lB,KAAKowC,kBAC1CxwC,OAAOgmB,oBAAoB,WAAY5lB,KAAKqwC,6BACxCrwC,KAAKswC,iBACPrsB,aAAajkB,KAAKswC,iBAEhBtwC,KAAKuwC,wBACPtsB,aAAajkB,KAAKuwC,wBAEhBvwC,KAAKwwC,uBACPvsB,aAAajkB,KAAKwwC,4BAEcvlC,IAA9BjL,KAAKywC,sBACP7wC,OAAO8wC,qBAAqB1wC,KAAKywC,sBAE/BzwC,KAAK2wC,wBACP3wC,KAAK4wC,oBAAoB5wC,KAAK2wC,0BA3FpC,oCAgGQ3wC,KAAK2wC,wBACP3wC,KAAK4wC,oBAAoB5wC,KAAK2wC,0BAjGpC,gCAsGI3wC,KAAK6wC,iBACL7wC,KAAK8wC,4BAvGT,mDA+GI9wC,KAAK8wC,4BA/GT,8FAmHsB/qB,EAAWzL,GAnHjC,6FAoHS,CAAC,eAAgB,wBAAyB,uBAAuB0E,SAAS+G,EAAGznB,MAAQ,IApH9F,oDAuHUyyC,EAAcryB,QAClBpE,IAASyL,EAAG1hB,OAAOkF,WAAa+Q,EAAKjW,OAAOkF,UAAYwc,EAAG1hB,OAAOsF,OAAS2Q,EAAKjW,OAAOsF,OAEnFqnC,EAAsBtyB,QAAQpE,GAAQyL,EAAGxJ,OAASjC,EAAKiC,MACzDy0B,GAAuBhxC,KAAKswC,kBAC9BrsB,aAAajkB,KAAKswC,iBAClBtwC,KAAKswC,qBAAkBrlC,GAEnBgmC,EAAejxC,KAAKkxC,gBAAgBnrB,GAC1C/lB,KAAKyvC,cAAe,EACpBzvC,KAAKgP,OAAOnH,OAAO,uBAAuB,IACtC7H,KAAKmxC,8BAA+BnxC,KAAKurC,8BAlIjD,oBAmIMvrC,KAAKM,SAAU,EACfN,KAAK2qC,aAAc,GAEjBoG,GACsB,MAAtBhrB,EAAGxZ,MAAMwqB,UACW,MAApBhR,EAAGxZ,MAAM83B,QACQ,MAAjBte,EAAGxZ,MAAM84B,KACoB,kBAAtBtf,EAAGxZ,MAAM8rB,UACW,kBAApBtS,EAAGxZ,MAAM4wB,OA3IxB,kCA6Icn9B,KAAK8Z,YA7InB,yBA8Ic9Z,KAAKoxC,sBA9InB,QA+IQpxC,KAAKqxC,sBA/Ib,eAiJMrxC,KAAKsxC,gBACLtxC,KAAKuxC,+BAlJX,+BAqJQ50C,OAAOsvB,KAAKlG,EAAGxZ,OAAO+S,KAAK,SAAAjgB,GAAG,MAAY,YAARA,IArJ1C,wBAsJMW,KAAK2qC,aAAc,EAtJzB,oBAwJkB3qC,KAAKwxC,eAxJvB,wCAyJcT,EAzJd,kCA0JkB/wC,KAAK8Z,YA1JvB,yBA2JkB9Z,KAAKoxC,sBA3JvB,QA4JYpxC,KAAKqxC,sBA5JjB,QA8JUrxC,KAAKsxC,gBACLtxC,KAAKuxC,+BA/Jf,8DAkKQvxC,KAAKyxC,gBAAL,KAAwBR,GAlKhC,yBAoKYjxC,KAAKkxC,oBAAsBD,IAC7BjxC,KAAK2qC,aAAc,GArK7B,8DA0KI3qC,KAAKM,SAAU,EA1KnB,oBA4KgBN,KAAKwxC,eA5KrB,qDA6KcxxC,KAAK8Z,YA7KnB,yBA8Kc9Z,KAAKoxC,sBA9KnB,QA+KQpxC,KAAKqxC,sBACLrxC,KAAKsxC,gBACLtxC,KAAKuxC,+BAjLb,8DAoLMvxC,KAAKyxC,gBAAL,KAAwBR,GApL9B,yBAsLUjxC,KAAKkxC,oBAAsBD,IAC7BjxC,KAAKM,SAAU,GAvLvB,iQA6LmCylB,GA7LnC,yFA8LSA,EA9LT,uBA+LM/lB,KAAKM,SAAU,EA/LrB,8BAsMQN,KAAKurC,8BAtMb,uBAuMMvrC,KAAKM,SAAU,EACfN,KAAKyvC,cAAe,EAxM1B,6BA4MUiC,EA5MV,UA4M0B3rB,EAAGpc,KAAK5B,GA5MlC,YA4MwCge,EAAGhe,IACnC/H,KAAK0vC,oBAAsBgC,EA7MnC,wBA8MM1xC,KAAK0vC,kBAAoBgC,EA9M/B,oBAgNc1xC,KAAK2xC,qBAhNnB,yBAkNY3xC,KAAK0vC,oBAAsBgC,IAC7B1xC,KAAK0vC,kBAAoB,MAnNnC,sLA0NI,IAAMxyB,EAAqBld,KAAKkd,mBAChC,QAAKA,IAIHA,EAAmBvT,KAAKJ,WAAavJ,KAAKyO,OAAOpK,OAAOkF,UACxD2T,EAAmBvT,KAAK+C,OAAS1M,KAAKyO,OAAOpK,OAAOsF,MACpDuT,EAAmBxQ,OAAS1M,KAAKyO,OAAOpK,OAAO2R,eAjOrD,mDAqT+BA,GAC3B,SACEhW,KAAKoU,mBACLpU,KAAKkd,oBACLlH,EAAYjO,KAAO/H,KAAKkd,mBAAmBnV,MAzTjD,mCA6TeiO,GACX,OAAIhW,KAAK6qC,6BAA6B70B,GAC7B,CAAEwgB,SAAU,GAAF,OAAKx2B,KAAK+vC,qBAAV,OAEZ,CAAEvZ,SAAU,GAAF,OAAK,GAAKx2B,KAAKq2B,MAAf,SAjUrB,gDAoUyB,WAChBr2B,KAAKoU,uBAAkDnJ,IAA9BjL,KAAKywC,uBAGnCzwC,KAAKywC,qBAAuB7wC,OAAO6qB,sBAAsB,WACvD,EAAKgmB,0BAAuBxlC,EAC5B,EAAK2mC,8BA1UX,+CA+UI,GAAM5xC,KAAKoU,kBAAoBpU,KAAKkwC,UAApC,CAGA,IAAM2B,EAAO7xC,KAAKkwC,UAAUlc,cAAc,8BAC1C,GAAK6d,EAIL,GADA7xC,KAAKkwC,UAAUzR,UAAY,EACtBz+B,KAAK6X,oBAAV,CAaA,IAJA,IAAMi6B,EAAkB9xC,KAAKkwC,UAAUpJ,aACjCiL,EAAiB/xC,KAAKkwC,UAAU8B,YAClCC,EAAQ,GACRC,EAAQ9pB,KAAKC,IAAI,GAAID,KAAK8Q,IAAI,GAAwB,KAApBt5B,OAAOud,aACpCg1B,EAAY,EAAGA,EAAY,EAAGA,GAAa,EAAG,CACrD,IAAMlK,GAAagK,EAAQC,GAAS,EACpCL,EAAKnwC,MAAM80B,SAAX,UAAyByR,EAAzB,MACA,IAAMmK,EAAOP,EAAKpZ,cAAgBqZ,EAAkB,GAAKD,EAAKQ,aAAeN,EAAiB,EAC1FK,EACFH,EAAQhK,EAERiK,EAAQjK,EAGZ,IAAMqK,EAAalqB,KAAKmqB,MAAc,EAARN,GAAa,EAC3CJ,EAAKnwC,MAAM80B,SAAX,UAAyB8b,EAAzB,MACIlqB,KAAKoqB,IAAIxyC,KAAK+vC,qBAAuBuC,GAAc,KACrDtyC,KAAK+vC,qBAAuBuC,OA1B9B,CACE,IAAMG,EAAWrqB,KAAKC,IAAI,GAAID,KAAK8Q,IAAI,GAAwB,KAApBt5B,OAAOud,aAC5Cu1B,EAAatqB,KAAKmO,MAAMkc,EAAWzyC,KAAK4X,kBAAoB,GAAK,EACnEwQ,KAAKoqB,IAAIxyC,KAAK+vC,qBAAuB2C,GAAc,KACrD1yC,KAAK+vC,qBAAuB2C,OA3VpC,kMA6XUzB,EAAejxC,KAAKkxC,kBAC1BlxC,KAAKM,SAAU,EACfN,KAAKyvC,cAAe,EA/XxB,kBAiYkBzvC,KAAKwxC,eAjYvB,mFAsYYxxC,KAAK8Z,YAtYjB,yBAuYY9Z,KAAKoxC,sBAvYjB,QAwYMpxC,KAAKqxC,sBACLrxC,KAAKsxC,gBACLtxC,KAAKuxC,+BA1YX,qDA4YMvxC,KAAKyxC,gBAAL,KAAwBR,GA5Y9B,yBA8YUjxC,KAAKkxC,oBAAsBD,IAC7BjxC,KAAKM,SAAU,GA/YvB,4KAoZ4C,IAA1BozB,EAA0B,uDAAX1zB,KAAKyO,OAClC,MAAO,CAACilB,EAAMrvB,OAAOkF,UAAY,GAAImqB,EAAMrvB,OAAOsF,MAAQ,GAAI+pB,EAAMrvB,OAAO2R,aAAe,IAAIrI,KAAK,OArZvG,sCAwZkBnK,GAA2D,IAA7CytC,EAA6C,uDAAtBjxC,KAAKkxC,kBACpDD,IAAiBjxC,KAAKkxC,oBAG1BlxC,KAAKyvC,cAAe,EACpBkD,QAAQnvC,MAAMA,MA7ZlB,sCAiaIxD,KAAKgP,OAAOnH,OAAO,8BAA+B,CAChDvJ,KAAM0B,KAAKwrC,QACXjd,SAAUvuB,KAAKkd,mBAAqBld,KAAKkd,mBAAmBvT,KAAKrL,KAAO,GACxE2D,SAAUjC,KAAKkd,mBAAqBld,KAAKkd,mBAAmB5e,KAAO,OApazE,gMAyaS0B,KAAKmxC,4BAzad,0CA0aa,GA1ab,UA4aSnxC,KAAKkd,mBA5ad,0CA6aa,GA7ab,cA+aUA,EAAqBld,KAAKkd,mBAC1B0G,EAAS1G,EAAmBvT,KAAK5B,GACjCkpC,EAAejxC,KAAKkxC,kBACpBpB,EAA0B9vC,KAAK4qC,+BAA+B9qC,MAAM,GAE1EE,KAAKgP,OAAOnH,OAAO,gCApbvB,UAqb+D7H,KAAK4yC,wBAC9D11B,GAtbN,WAqbI4yB,EAAwB5yB,EAAmB+vB,QArb/C,OA2bI,OAAIhlC,IAAIjI,KAAK8vC,wBAAyBlsB,EAAQksB,GAE1CmB,IAAiBjxC,KAAKkxC,kBA7b9B,2CA8ba,GA9bb,WAmcU2B,EAAkB7yC,KAAK8yC,uBAAuBlvB,EAAQ1G,EAAmBnV,MAE9C,MAA/B/H,KAAKyO,OAAOlC,MAAMwqB,UACW,MAA7B/2B,KAAKyO,OAAOlC,MAAM83B,QACQ,MAA1BrkC,KAAKyO,OAAOlC,MAAM84B,KACoB,kBAA/BrlC,KAAKyO,OAAOlC,MAAM8rB,UACxBr4B,KAAKM,SAAWN,KAAK+yC,wBAAwB/yC,KAAKyO,OAAO8N,MAAQ,GAzcxE,kCA2cYs2B,EA3cZ,kCA6cW,GA7cX,+MAgd+BjvB,EAAgBovB,GAhd/C,4GAidUtB,EAjdV,UAid0B9tB,EAjd1B,YAidoCovB,IAC5BhzC,KAAK2vC,sBAAsB3wB,SAAS0yB,GAld5C,wDAqdI1xC,KAAK2vC,sBAAsB3yC,KAAK00C,GArdpC,kBAwd4DztC,QAAQ0xB,IAAI,CAChE31B,KAAKizC,4BACLjzC,KAAKkzC,6BA1db,0CAwdaC,EAxdb,KAwdiCC,EAxdjC,KA4dYtD,GAA2B9vC,KAAK8vC,wBAAwBlsB,IAAW,IAAI9jB,MAAM,GAC/EuzC,GAAgB,EAEhBF,GACFA,EAAmBnnC,QAAQ,SAAAgK,GACzBq9B,EAAgBA,IAAkB,EAAKC,+BAA+Bt9B,GACtE85B,EAAwB95B,EAAYi3B,QAAUj3B,IAG9Co9B,GACFA,EAAkBpnC,QAAQ,SAAAgK,GACxB85B,EAAwB95B,EAAYi3B,QAAUj3B,IAGlD,OAAI/N,IAAIjI,KAAK8vC,wBAAyBlsB,EAAQksB,IAC1CuD,EA3eV,kCA4ecrzC,KAAKuzC,oBA5enB,QA8eMvzC,KAAKuxC,+BA9eX,qDAgfMoB,QAAQnvC,MAAR,MAhfN,yBAkfMxD,KAAK2vC,sBAAwB3vC,KAAK2vC,sBAAsB/iC,OAAO,SAAAvN,GAAG,OAAIA,IAAQqyC,IAlfpF,+OAsfgC17B,GAtfhC,oGAufUw9B,EAvfV,UAuf0Bx9B,EAAYrM,KAAK5B,GAvf3C,YAufiDiO,EAAYjO,IACpD/H,KAAK6vC,uBAAuB2D,KAC/BxzC,KAAK6vC,uBAAuB2D,GAAc,GAAaC,sBACrDz9B,EAAYrM,KAAKJ,SACjByM,EAAYrM,KAAK+C,KACjBsJ,EAAYtJ,MAEXhD,KAAK,SAAA4J,GAAO,aAAU0C,EAAV,CAAuB1C,cACnCsuB,QAAQ,kBACA,EAAKiO,uBAAuB2D,MAhgB7C,kBAmgBWxzC,KAAK6vC,uBAAuB2D,IAngBvC,uMAsgBuB/kB,GAtgBvB,kHAsgByDilB,EAtgBzD,yCAugB0BzvC,QAAQ0xB,IAC5BlH,EAAa5gB,IAAI,SAAAmI,GAAW,OAC1B,EAAK48B,wBAAwB58B,GAAa5L,MAAM,SAAA5G,GAC9C,IAAKkwC,EACH,MAAMlwC,EAGR,OADAmvC,QAAQnvC,MAAMA,GACP,UA9gBjB,cAugBUmwC,EAvgBV,yBAkhBWA,EAAQ/mC,OAAO,SAAA6iB,GAAO,QAAMA,KAlhBvC,4IAqhBqBzZ,EAA0BpV,GAC3C,IAAM6uB,EAAUhsB,OAAOuS,EAAYtJ,MAAQsJ,EAAYjO,IAAM,WAC1DigC,cACAxlC,QAAQ,cAAe,KACvBA,QAAQ,SAAU,IACrB,0BAAoBitB,GAAW,UAA/B,YAA4C7uB,KA1hBhD,wNA+hBMZ,KAAK4vC,0BACJ5vC,KAAKkd,oBACLld,KAAKwpC,qBACLxpC,KAAKwpC,oBAAoB9sC,OAliBhC,0CAoiBa,GApiBb,UAsiBUknB,EAAS5jB,KAAKkd,mBAAmBvT,KAAK5B,GACtCuG,EAAStO,KAAK8vC,wBAAwBlsB,IAAW,GACjDgwB,EAAY,IAAIroC,IAAI+C,EAAO1B,OAAO8R,SAAS7Q,IAAI,SAAA4hB,GAAO,OAAIA,EAAQ1nB,MAClE8rC,EAAoB7zC,KAAKwpC,oBAAoBpO,UAAU,SAAA3L,GAAO,OAAKmkB,EAAU5oC,IAAIykB,EAAQ1nB,MACzFixB,EACoC,kBAAjCh5B,KAAK8zC,wBAAuC9zC,KAAK8zC,wBAA0BD,EAAoB,EAClGE,EAAc/zC,KAAKwpC,oBACtB1pC,MAAMsoB,KAAKC,IAAI,EAAG2Q,EAAe,IACjC1Z,KAAK,SAAAmQ,GAAO,OAAKmkB,EAAU5oC,IAAIykB,EAAQ1nB,MACrCgsC,EA/iBT,2CAgjBa,GAhjBb,eAkjBI/zC,KAAK4vC,0BAA2B,EAljBpC,oBAojB8B5vC,KAAKg0C,eAAe,CAACD,IApjBnD,2CAojBazgC,EApjBb,KAqjBWA,EArjBX,2CAsjBe,GAtjBf,eAwjBY2gC,GAAUj0C,KAAK8vC,wBAAwBlsB,IAAW,IAAI9jB,MAAM,GAClEm0C,EAAOF,EAAY9G,QAAU35B,EAC7B,OAAIrL,IAAIjI,KAAK8vC,wBAAyBlsB,EAAQqwB,GA1jBpD,mBA2jBa,GA3jBb,6CA6jBMtB,QAAQnvC,MAAR,MA7jBN,mBA8jBa,GA9jBb,yBAgkBMxD,KAAK4vC,0BAA2B,EAhkBtC,0LAokB8B,WAC1B,GAAI5vC,KAAKoU,mBAAqBpU,KAAKkwC,UACjC,OAAOjsC,QAAQC,UAEjB,GAAIlE,KAAKk0C,sBACP,OAAOl0C,KAAKk0C,sBAEd,IAAMC,EAAc,uCAAC,qGACV7uC,EAAU,EADA,YACGA,EAAU,GADb,iCAEX,EAAKwU,YAFM,UAGXmtB,EACJ,EAAKiJ,UAAUzX,aAAe,EAAKyX,UAAUpJ,aAAe,EAAKoJ,UAAUzR,YACzEwI,EAA0C,IAA9B,EAAKiJ,UAAUpJ,cALd,mEAQL,EAAKsN,4BARA,sEACgB9uC,GAAW,EAD3B,wDAAD,GAcpB,OADAtF,KAAKk0C,sBAAwBC,EACtBA,EAAYvS,QAAQ,WACrB,EAAKsS,wBAA0BC,IACjC,EAAKD,2BAAwBjpC,OA3lBrC,2MAimBSjL,KAAKwpC,oBAjmBd,oDAomBU2J,EAAqB,GACrBvyC,EAAQZ,KAAK8zC,wBACL,OAAVlzC,EAtmBR,iBAumBepE,EAAIoE,EAvmBnB,YAumB0BpE,GAAK,GAvmB/B,oBAwmBcwZ,EAAchW,KAAKwpC,oBAAoBhtC,GACzCA,IAAMoE,EAzmBlB,4DA4mBYoV,EAAYq+B,QA5mBxB,iBA6mBUlB,EAAmBn2C,KAAKgZ,GA7mBlC,4DAumBkCxZ,IAvmBlC,gDAknBawD,KAAKg0C,eAAeb,EAAmBmB,WAAW,IAlnB/D,kTAunBSt0C,KAAKwpC,oBAvnBd,oDA0nBU4J,EAAoB,GACpBxyC,EAAQZ,KAAK8zC,wBACL,OAAVlzC,EA5nBR,iBA6nBepE,EAAIoE,EA7nBnB,YA6nB0BpE,EAAIwD,KAAKwpC,oBAAoB9sC,QA7nBvD,oBA8nBcsZ,EAAchW,KAAKwpC,oBAAoBhtC,GACzCA,IAAMoE,EA/nBlB,4DAkoBYoV,EAAYq+B,QAloBxB,iBAmoBUjB,EAAkBp2C,KAAKgZ,GAnoBjC,4DA6nB+DxZ,IA7nB/D,gDAwoBawD,KAAKg0C,eAAeZ,GAAmB,IAxoBpD,uSA6oBSpzC,KAAKkd,mBA7oBd,iEAgpBUld,KAAK8Z,YAhpBf,UAipBS9Z,KAAKkd,mBAjpBd,iDAopBUq3B,EAAkBv0C,KAAKuN,kBAAkBvN,KAAKkd,oBAC9Cs3B,EAA4Bx0C,KAAKy0C,gBAAgBF,GACnDC,GACFx0C,KAAK00C,aACHF,EACAx0C,KAAK+yC,wBAAwByB,EAA0BG,QAAQ9C,MAAQ,KAzpB/E,wIA8pBU,WACA+C,EAAwB50C,KAAKkwC,UAAUzR,UACvCwI,EAAYjnC,KAAKkwC,UAAUzX,aAAez4B,KAAKkwC,UAAUpJ,aAAe8N,EAE5E3N,GAA2C,IAA9BjnC,KAAKkwC,UAAUpJ,cACiB,oBAAtC9mC,KAAKuxC,8BAEZvxC,KAAKuxC,+BAEP,IAAMvK,EAAQ4N,EAAwB50C,KAAKgwC,mBAC3C,GAAI5nB,KAAKoqB,IAAIxL,GAAS,IAAMlkC,KAAKC,OAAS/C,KAAKiwC,0BAA2B,CACxE,IAAM91B,EAAQ,CACZ6qB,UAAWgC,EAAQ,EAAI,OAAS,KAChCA,MAAO5e,KAAKoqB,IAAIxL,GAChB7S,IAAKygB,EACLvsB,IAAKD,KAAKC,IAAI,EAAGroB,KAAKkwC,UAAUzX,aAAez4B,KAAKkwC,UAAUpJ,eAEhE9mC,KAAKgO,MAAM,gBAAiBmM,GAC5Bna,KAAK+tB,MAAM/f,MAAM,gBAAiBmM,GAClCna,KAAKgwC,mBAAqB4E,OACjBxsB,KAAKoqB,IAAIxL,GAAS,IAC3BhnC,KAAKgwC,mBAAqB4E,GAExB50C,KAAKswC,iBACPrsB,aAAajkB,KAAKswC,iBAEpBtwC,KAAKswC,gBAAkBnsC,WAAW,WAChC,IAAM0wC,EAAiB,EAAK3E,UAAUzR,UAChCqW,EAA4BrkC,MAAM6J,KAAK,EAAK41B,UAAU31B,iBAAiB,gBACvEw6B,EAAUD,EAAMx1B,KAAK,SAAA01B,GAAE,OAAIA,EAAG5gB,UAAY4gB,EAAG3gB,aAAe,GAAKwgB,IACjEI,EAAkB,EAAKC,mBAAmBH,GAE5CE,IACF,EAAKE,6BAA6BF,GAClC,EAAKG,4BAA4BH,MAKjCF,GACAA,EAAQJ,QAAQ9C,MAChB/uC,KAAKC,OAAS,EAAKktC,4BACjB8E,EAAQJ,QAAQpiB,UAA+B,IAAnBsiB,GAC7B5nC,GAAOC,aAAaqP,OAASw4B,EAAQJ,QAAQ9C,MAAS5kC,GAAOC,aAAaX,MAAMuQ,SAEjF7P,GAAOzK,QAAQ,CAAE+Z,KAAMw4B,EAAQJ,QAAQ9C,KAAMtlC,MAAO,MAAKU,GAAOC,aAAaX,MAA3B,CAAkCuQ,QAAS,SAE9F,MA7sBP,oCAgtBgBtL,GACZ,IAAMT,EAASS,EAAET,OACXyJ,EAAUzJ,IAAWA,EAAO+U,UAAU5L,SAAS,YAAcnJ,EAASA,EAAO4Z,QAAQ,cAC3F,GAAInQ,EAAS,CACX,IAAMyc,EAAOzc,EAAQE,aAAa,yBAC5BuyB,EAASzyB,EAAQE,aAAa,wBACpC1a,KAAKi3B,KAAK71B,MAAQ6rC,EAAS,GAAH,OAAM,GAAe,QAArB,aAAiCA,GAAW,GACpEjtC,KAAKi3B,KAAK3jB,QAAU2jB,GAAQ,GAC5Bj3B,KAAKi3B,KAAKxd,SAAU,KAxtB1B,kCA6tBIzZ,KAAKi3B,KAAK71B,MAAQ,GAClBpB,KAAKi3B,KAAK3jB,QAAU,GACpBtT,KAAKi3B,KAAKxd,SAAU,IA/tBxB,4CAmuBI,IAAM47B,EAAcr1C,KAAKy0C,gBAAgBz0C,KAAKyO,OAAO8N,MACrD,GAAI84B,EAAa,CACf,IAAMC,EACkC,kBAA/Bt1C,KAAKyO,OAAOlC,MAAM8rB,SAAwBv0B,OAAO9D,KAAKyO,OAAOlC,MAAM8rB,UAAYkd,IACxF,GAA8B,MAA1Bv1C,KAAKyO,OAAOlC,MAAM84B,IACpBrlC,KAAKw1C,uBAAuBH,QACvB,GAAIvxC,OAAO2xC,SAASH,GACzBt1C,KAAK00C,aAAaW,EAAaC,OAC1B,CACL,IAAMI,EAAkD,kBAA7B11C,KAAKyO,OAAOlC,MAAM4wB,OAAsBn9B,KAAKyO,OAAOlC,MAAM4wB,OAAS,GACxFwY,EAAc31C,KAAK41C,wBAAwB51C,KAAKyO,OAAO8N,MACvD4gB,EAASuY,GAAeC,EAC9B,GAAIxY,GAAUn9B,KAAK61C,kBAAkB1Y,GAAS,CAC5C,IAAM8X,EAAkBj1C,KAAKk1C,mBAAmBG,GAC5CJ,IACFj1C,KAAKm1C,6BAA6BF,GAClCj1C,KAAKo1C,4BAA4BH,SAGnCj1C,KAAK00C,aAAaW,EAAar1C,KAAK+yC,wBAAwB/yC,KAAKyO,OAAO8N,OAG5Evc,KAAK81C,8BAzvBX,iDA8vBI,GACiC,MAA/B91C,KAAKyO,OAAOlC,MAAMwqB,UACW,MAA7B/2B,KAAKyO,OAAOlC,MAAM83B,QACQ,MAA1BrkC,KAAKyO,OAAOlC,MAAM84B,KACjBrlC,KAAKyO,OAAOlC,MAAM8rB,UAClBr4B,KAAKyO,OAAOlC,MAAM4wB,OALrB,CASA,IAAM5wB,EAAQ,MAAKvM,KAAKyO,OAAOlC,cACxBA,EAAMwqB,gBACNxqB,EAAM83B,cACN93B,EAAM84B,WACN94B,EAAM8rB,gBACN9rB,EAAM4wB,OACblwB,GAAOzK,QAAQ,CAAE+Z,KAAMvc,KAAKyO,OAAO8N,KAAMhQ,UAASnC,MAAM,iBA7wB5D,+LAixBU2rC,EAAS1zC,SAAiB0zC,OAC5BA,IAASA,EAAM/R,MAlxBvB,yCAoxBc+R,EAAM/R,MApxBpB,iFAyxBUhkC,KAAK8Z,YAzxBf,mJA4xBek7B,GAAqC,IAApB3c,EAAoB,uDAAD,EAC/Cr4B,KAAKiwC,0BAA4BntC,KAAKC,MAAQ,IAC9C/C,KAAKkwC,UAAUzR,UAAYuW,EAAG5gB,UAAY4gB,EAAG3gB,aAAejM,KAAKC,IAAI,EAAGD,KAAK8Q,IAAI,EAAGb,IACpFr4B,KAAKgwC,mBAAqBhwC,KAAKkwC,UAAUzR,UACzC,IAAMwW,EAAkBj1C,KAAKk1C,mBAAmBF,GAC5CC,IACFj1C,KAAKm1C,6BAA6BF,GAClCj1C,KAAKo1C,4BAA4BH,MAnyBvC,6CAuyByBpD,GACrB,IAAMmE,EAAUnE,EAAK7d,cAAc,UACnC,GAAKgiB,EAAL,CAIA,IAAMrP,EAAa3mC,KAAKkwC,UAAUtJ,wBAC5BqP,EAAcD,EAAQpP,wBAC5B5mC,KAAKiwC,0BAA4BntC,KAAKC,MAAQ,IAC9C/C,KAAKkwC,UAAUzR,WAAawX,EAAY9hB,IAAMwS,EAAWxS,IAAM,GAC/Dn0B,KAAKgwC,mBAAqBhwC,KAAKkwC,UAAUzR,UACzC,IAAMwW,EAAkBj1C,KAAKk1C,mBAAmBrD,GAC5CoD,IACFj1C,KAAKm1C,6BAA6BF,GAClCj1C,KAAKo1C,4BAA4BH,SAXjCj1C,KAAK00C,aAAa7C,EAAM,KA1yB9B,8CAyzB0B36B,GACtB,IAAMX,EAAYvW,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAAK,SAAClX,GAAD,OAA8BA,EAAIE,SACrF,OAAMiO,GAAaA,EAAUW,MAAQX,EAAUW,KAAK6F,MAAM,KAAK,KAAO7F,GAGjC,kBAAvBX,EAAU8hB,SAAwB9hB,EAAU8hB,SAFjD,IA5zBb,8CAi0B0BnhB,GACtB,IAAMX,EAAYvW,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAAK,SAAClX,GAAD,OAA8BA,EAAIE,SACrF,OAAMiO,GAAaA,EAAUW,MAAQX,EAAUW,KAAK6F,MAAM,KAAK,KAAO7F,GAG/DX,EAAUojB,iBAFR,KAp0Bb,wCAy0BoBwD,GAChB,IAAM+Y,EAAYzlC,MAAM6J,KAAKta,KAAKkwC,UAAU31B,iBAAiB,4BAA4B+E,KACvF,SAAA9E,GAAO,OAAKA,EAAwBm6B,QAAQhb,kBAAoBwD,IAElE,IAAK+Y,EACH,OAAO,EAET,IAAMvP,EAAa3mC,KAAKkwC,UAAUtJ,wBAC5BuP,EAAgBD,EAAUtP,wBAIhC,OAHA5mC,KAAKiwC,0BAA4BntC,KAAKC,MAAQ,IAC9C/C,KAAKkwC,UAAUzR,WAAa0X,EAAchiB,IAAMwS,EAAWxS,IAAM,GACjEn0B,KAAKgwC,mBAAqBhwC,KAAKkwC,UAAUzR,WAClC,IAr1BX,yCAw1BqBoT,GAAkB,WACnC,IAAMA,IAAQA,EAAK8C,QAAQ9C,KACzB,OAAO,KAET,IAAMpiB,EAAUzvB,KAAK4qC,+BAClBh+B,OAAO,SAAAolB,GAAG,OAAIA,IACd1S,KAAK,SAAAtJ,GAAW,OAAI,EAAKzI,kBAAkByI,KAAiB67B,EAAK8C,QAAQ9C,OAC5E,IAAKpiB,EACH,OAAO,KAET,IAAM2mB,EAAchuB,KAAKC,IAAI,EAAGroB,KAAKkwC,UAAUzR,UAAYoT,EAAKzd,WAC1DiE,EAAWwZ,EAAKxd,aAAejM,KAAK8Q,IAAI,EAAGkd,EAAcvE,EAAKxd,cAAgB,EAC9EgiB,EAC4C,oBAAzCr2C,KAAKkwC,UAAUtJ,uBACW,oBAA1BiL,EAAKt3B,iBACRosB,EAAa0P,EAAuBr2C,KAAKkwC,UAAUtJ,wBAA0B,KAC7E0P,EAAiCD,EACnC5lC,MAAM6J,KAAKu3B,EAAKt3B,iBAAiB,4BACjC,GACE27B,EACJI,EACG1pC,OACC,SAAA4N,GAAO,QACHmsB,GACuC,oBAAlCnsB,EAAQosB,uBACfpsB,EAAQosB,wBAAwBzS,KAAOwS,EAAWxS,IAAM,KAE3DpY,OAASu6B,EAAW,GACzB,MAAO,CACLxsC,QAAS,GAAF,OAAK2lB,EAAQ9lB,KAAKJ,SAAlB,YAA8BkmB,EAAQ9lB,KAAK+C,MAClDnD,SAAUkmB,EAAQ9lB,KAAKJ,SACvBI,KAAM8lB,EAAQ9lB,KAAK+C,KACnB+iB,QAASA,EAAQ/iB,KACjBzK,SAAUwtB,EAAQnxB,KAClB4Y,KAAM26B,EAAK8C,QAAQ9C,KACnBxZ,WACAsB,gBAAiBuc,GAAYA,EAAUvB,QAAQhb,iBAAwB,MA53B7E,mDAg4B+BtB,GAC3Br4B,KAAKu2C,oBAAsBle,EAC3B,IAAMuB,GAAY,IAAI92B,MAAOslC,cAC7BpoC,KAAKgP,OAAOnH,OAAO,4BAA6B,CAC9CiC,QAASuuB,EAASvuB,QAClBmyB,QAAS,CACP/kB,KAAMmhB,EAASnhB,KACfjV,SAAUo2B,EAASp2B,SACnBo2B,SAAUA,EAASA,SACnBsB,gBAAiBtB,EAASsB,gBAC1BC,eAGJ55B,KAAKgP,OAAOnH,OAAO,4BAA6B,CAC9CvJ,KAAM0B,KAAKwrC,QACXjd,SAAUvuB,KAAKkd,mBAAqBld,KAAKkd,mBAAmBvT,KAAKrL,KAAO0B,KAAKwrC,QAC7E1hC,QAASuuB,EAASvuB,QAClBoN,KAAMmhB,EAASnhB,KACf5O,QAAQ,EACRrG,SAAUo2B,EAASp2B,SACnBo2B,SAAUA,EAASA,SACnBsB,gBAAiBtB,EAASsB,gBAC1BC,YACAC,iBAAkB75B,KAAKw2C,yBAAyBne,EAASvuB,aAv5B/D,kDA25B8BuuB,GAAyB,WACnDr4B,KAAK2wC,uBAAyBtY,EAC1Br4B,KAAKuwC,wBACPtsB,aAAajkB,KAAKuwC,wBAEpBvwC,KAAKuwC,uBAAyBpsC,WAAW,WACvC,EAAKosC,4BAAyBtlC,EAC1B,EAAK0lC,wBACP,EAAKC,oBAAoB,EAAKD,yBAE/B,OAr6BP,oDAw6B6B,WACrB3wC,KAAKswC,kBACPrsB,aAAajkB,KAAKswC,iBAClBtwC,KAAKswC,qBAAkBrlC,GAEzB,IAAM6pC,EAA4BrkC,MAAM6J,KAAKta,KAAKkwC,UAAU31B,iBAAiB,gBACvEs3B,EAAOiD,EAAMx1B,KAAK,SAAA3T,GAAI,OAAIA,EAAKyoB,UAAYzoB,EAAK0oB,aAAe,GAAK,EAAK6b,UAAUzR,YAGnFpG,EAAWr4B,KAAK2wC,wBAA0B3wC,KAAKu2C,qBAAuBv2C,KAAKk1C,mBAAmBrD,GAC/FxZ,IAGLr4B,KAAKm1C,6BAA6B9c,GAClCr4B,KAAK2wC,4BAAyB1lC,EAC9B,GAAYwrC,8BAA8B,CACxCltC,SAAU8uB,EAAS9uB,SACnBI,KAAM0uB,EAAS1uB,KACf8lB,QAAS4I,EAAS5I,QAClB4I,SAAUA,EAASA,SACnBwE,kBAAmB78B,KAAKw2C,yBAAyBne,EAASvuB,cA57BhE,yCAg8BkB,WAC8B,oBAAjC9J,KAAK8wC,yBACd9wC,KAAK8wC,0BAEP,IAAMzY,EAAWr4B,KAAKu2C,oBACjBle,IAGDr4B,KAAKwwC,uBACPvsB,aAAajkB,KAAKwwC,uBAEpBxwC,KAAKwwC,sBAAwBrsC,WAAW,WACtC,EAAKqsC,2BAAwBvlC,EAC7B,IAAM4mC,EAAO,EAAK4C,gBAAgBpc,EAASnhB,MACvC26B,GACF,EAAK6C,aAAa7C,EAAMxZ,EAASA,WAElC,QAj9BP,oGAo9B4BA,GAp9B5B,6FAq9BIr4B,KAAK2wC,4BAAyB1lC,EAr9BlC,kBAu9B0B,GAAY2lC,oBAAoB,CAClDrnC,SAAU8uB,EAAS9uB,SACnBI,KAAM0uB,EAAS1uB,KACf8lB,QAAS4I,EAAS5I,QAClB4I,SAAUA,EAASA,SACnBwE,kBAAmB78B,KAAKw2C,yBAAyBne,EAASvuB,WA59BlE,OAu9BY0+B,EAv9BZ,OA89BMxoC,KAAKgP,OAAOnH,OAAO,4BAA6B,CAC9CiC,QAASuuB,EAASvuB,QAClBmyB,QAAS,CACPrC,UAAW4O,EAAMhM,aAAc,IAAI15B,MAAOslC,iBAj+BpD,mNAy+B2Bt+B,GACvB,IAAM1B,EAAMpI,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAAK,SAAC3T,GAAD,OAAgCA,EAAK7B,UAAYA,IAC9F,OAAO1B,GAAOA,EAAIyxB,iBAAX,MAAmCzxB,EAAIyxB,kBAAqB,KA3+BvE,sCA8+BkBz0B,GACd,OAAMpF,KAAKkwC,WAAqD,oBAAjClwC,KAAKkwC,UAAUlc,cAGvCh0B,KAAKkwC,UAAUlc,cAAf,sBAA4C5uB,EAA5C,OAFE,OAh/Bb,qDAq/BiC4Q,GAC7B,IAAMkH,EAAqBld,KAAKkd,mBAChC,QAAKA,KAGIld,KAAK4qC,+BACXh+B,OAAO,SAAAolB,GAAG,OAAIA,IACd1S,KAAK,SAAA0S,GAAG,OAAIA,EAAIjqB,KAAOiO,EAAYjO,IAAMiqB,EAAIroB,KAAK5B,KAAOiO,EAAYrM,KAAK5B,OA5/BjF,mCA+/Be2E,GACX,OAAO,GAAkB2kB,aAAa,CACpC9nB,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B8C,WAAYK,MAlgClB,wCAsgCoBsJ,GAChB,OAAO,GAAkBzI,kBAAkB,CACzChE,SAAUyM,EAAYrM,KAAKJ,SAC3B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC1W,WAAYrM,KAAKyO,OAAOpK,OAAOqqB,OAC/BviB,SAAU6J,EAAYrM,KAAK+C,KAC3BJ,gBAAiB0J,EAAYtJ,SA5gCnC,iCAghCaw+B,GACT,IAAI53B,EACc,iBAAhB43B,EAAO95B,KAA0BpR,KAAK02C,wBAAwBxL,EAAO53B,SAAW43B,EAAO53B,QACzF,GAAItT,KAAK0N,WAAa1N,KAAK0N,UAAUhR,OAAQ,4BAC3C,YAAmBsD,KAAK0N,UAAxB,+CAAmC,KAAxBipC,EAAwB,QACjCrjC,EAAU,GAAcua,WAAWva,EAASqjC,EAAlC,gCAAiEA,EAAjE,WAF+B,mFAK7C,OAAOrjC,IAxhCX,8CA2hC0BA,GACtB,IAAMsjC,EAAWv0C,SAASw0C,cAAc,YACxCD,EAASE,UAAYxjC,EACrB7C,MAAM6J,KAAKs8B,EAAStjC,QAAQiH,iBAAiB,2BAA2BvO,QAAQ,SAAAwO,GAC9E,IAAMu8B,EAAcv8B,EAAQu8B,YACtBC,EAAYD,GAAeA,EAAYE,YAAcF,EAAYE,YAAc,GAElFz8B,EAAQsL,UAAU5L,SAAS,sBAC3BM,EAAQmQ,QAAQ,wBACjB,eAAe6Z,KAAKwS,IAEpBx8B,EAAQsL,UAAUxa,IAAI,uBAG1B,IAAM4rC,EAAS70C,SAAS80C,iBAAiBP,EAAStjC,QAAS8jC,WAAWC,WAChEC,EAAyB,GAC3BC,EAAcL,EAAOM,WACzB,MAAOD,EACLD,EAAUt6C,KAAKu6C,GACfA,EAAcL,EAAOM,WA8BvB,OA3BAF,EAAUtrC,QAAQ,SAAAyrC,GAChB,IAAMC,EAASD,EAASxjB,cACxB,IAAIyjB,IAAUA,EAAO/sB,QAAQ,6BAA7B,CAGA,IAAM/e,EAAO6rC,EAASR,aAAe,GAC/BU,EAAc,kCACdC,EAAWv1C,SAASw1C,yBACtBC,EAAY,EACZ11C,EAAQu1C,EAAYI,KAAKnsC,GAC7B,GAAKxJ,EAAL,CAGA,EAAG,CACDw1C,EAASI,YAAY31C,SAAS41C,eAAersC,EAAK9L,MAAMg4C,EAAW11C,EAAMxB,OAASwB,EAAM,KACxF,IAAM81C,EAAO71C,SAASw0C,cAAc,QACpCqB,EAAKp5B,UAAY,oBACjBo5B,EAAKjB,YAAc70C,EAAM,GACzBw1C,EAASI,YAAYE,GACrBN,EAASI,YAAY31C,SAAS41C,eAAe71C,EAAM,KACnD01C,EAAYH,EAAYG,UACxB11C,EAAQu1C,EAAYI,KAAKnsC,SAClBxJ,GACTw1C,EAASI,YAAY31C,SAAS41C,eAAersC,EAAK9L,MAAMg4C,KACxDL,EAASU,YAAYP,OAGhBhB,EAASE,YA5kCpB,sDA+kC+B,WACvB92C,KAAKswC,kBACPrsB,aAAajkB,KAAKswC,iBAClBtwC,KAAKswC,qBAAkBrlC,GAEzB,IAAM6pC,EAA4BrkC,MAAM6J,KAAKta,KAAKkwC,UAAU31B,iBAAiB,gBACvEs3B,EAAOiD,EAAMx1B,KAAK,SAAA3T,GAAI,OAAIA,EAAKyoB,UAAYzoB,EAAK0oB,aAAe,GAAK,EAAK6b,UAAUzR,YACnFpG,EAAWr4B,KAAKk1C,mBAAmBrD,GAKzC,OAJIxZ,IACFr4B,KAAKm1C,6BAA6B9c,GAClCr4B,KAAKu2C,oBAAsBle,GAEtBA,IA3lCX,uCA8lCgB,WACN+f,EAAQp4C,KAAKkwC,UAAU31B,iBAAiB,wCAG9C,GAAK69B,EAAM17C,OAAX,CAIA,IAAM27C,EAAkBr4C,KAAKkwC,UAAUtJ,wBAAwBzS,IARnD,uBAUZ,IAVY,IAUZ,EAVY,iBAUDjd,EAVC,QAWVA,EAAKsO,iBAAiB,QAAS,SAAAhU,GAC7BA,EAAE4I,iBACF,EAAKkxB,YAAYp0B,KAAOA,EAAKwD,aAAa,SAAW,GACrD,EAAK4wB,YAAYnX,IAAM,EAAK+b,UAAUzR,UAAYjtB,EAAE8mC,MAAQD,EAC5D,EAAK/M,YAAY7N,KAAOvmB,EAAKqhC,aAE/BrhC,EAAKy9B,QAAQ6D,MAAQ,KAPvB,EAAmBJ,EAAnB,+CAA0B,IAVd,sFA9lChB,8CAsOI,IAAMl7B,EAAqBld,KAAKkd,mBAC1BssB,EAAsBxpC,KAAKwpC,oBACjC,OAAMA,GAAuBtsB,EAGtBssB,EAAoBpO,UAAU,SAAAplB,GAAW,OAAIA,EAAYjO,KAAOmV,EAAmBnV,KAFjF,OAzOb,qDAkPI,IAAMmV,EAAqBld,KAAKkd,mBAChC,IAAKA,EACH,MAAO,GAET,IAAMonB,EAAgBpnB,EAAmBvT,KAAK5B,GAC9C,OAAO/H,KAAK8vC,wBAAwBxL,IAAkB,KAvP1D,oDA8PI,IAAMpnB,EAAqBld,KAAKkd,mBAChC,OAAKA,EAGEld,KAAK4qC,+BACTh+B,OAAO,SAAAolB,GAAG,OAAIA,IACd1S,KAAK,SAAAtJ,GAAW,OAAIA,EAAYjO,KAAOmV,EAAmBnV,KAJpD,OAhQb,oCAwQI,SACE/H,KAAKyvC,gBACJzvC,KAAK60B,iBAAoB70B,KAAKkd,oBAAuBld,KAAKurC,kCA1QjE,8BA+QI,IAAIC,EAAU,MACd,OAAKxrC,KAAKurC,+BAGNvrC,KAAKurC,8BAA8Bj4B,QAAQ0uB,WAC7CwJ,EAAUxrC,KAAKurC,8BAA8Bj4B,QAAQ03B,WAC5ChrC,KAAKkd,qBACdsuB,EAAU,GAAH,OAAMxrC,KAAKkd,mBAAmBvT,KAAKrL,KAAnC,cAA6C0B,KAAKkd,mBAAmB5e,OAEvEktC,GAPE,KAjRb,2CA4RI,OAAKxrC,KAAK2I,WAGN3I,KAAK2I,WAAW8jC,MAAQzsC,KAAK2I,WAAW+jC,MAAMhwC,OAAS,EAClD,OAELsD,KAAK2I,WAAW8mB,SAAWzvB,KAAK2I,WAAWi2B,SAASliC,OAAS,EACxD,UAELsD,KAAK2I,WAAW0jC,SAAWrsC,KAAK2I,WAAW2jC,SAAS5vC,OAAS,EACxD,UAEF,GAXE,KA7Rb,gDA4SI,IAAKsD,KAAKgP,OAAOzH,MAAMiC,OAAOuL,SAC5B,MAAO,GAET,IAAM0jC,EAAcz4C,KAAKoU,iBACrBpU,KAAK8X,0BACL9X,KAAKgP,OAAOzH,MAAMiC,OAAOygB,cAC7B,OAAOxZ,MAAMC,QAAQ+nC,GAAeA,EAAY5qC,IAAI,SAAAmkB,GAAG,qBAAYA,KAAOrkB,KAAK,KAAO,KAlT1F,gCAsXI,MAA2C,kBAAhC3N,KAAKyO,OAAOlC,MAAMmB,UACpB,GAEF1N,KAAKyO,OAAOlC,MAAMmB,UAAUqP,MAAM,KAAKnQ,OAAO,SAAA+pC,GAAI,OAAIA,QAzXjE,GAAyC,QAoCvC,gBADC,eAAI,W,iCAIL,gBADC,gBAAM,QAAS,CAAE/nC,UAAW,Y,6BAI7B,gBADC,gBAAM,mBAAoB,CAAEA,UAAW,Y,wCAIxC,gBADC,gBAAM,oBAAqB,CAAEA,UAAW,Y,yCAIzC,gBADC,gBAAM,sBAAuB,CAAEA,UAAW,Y,2CAI3C,gBADC,gBAAM,4BAA6B,CAAEA,UAAW,Y,iDAIjD,gBADC,gBAAM,eAAgB,CAAEA,UAAW,Y,oCAIpC,gBADC,gBAAM,QAAS,CAAEA,UAAW,gB,uCAI7B,gBADC,gBAAO,qBAAsB,CAAEA,UAAW,gB,0CAI3C,gBADC,gBAAO,sBAAuB,CAAEA,UAAW,gB,2CAI5C,gBADC,gBAAO,aAAc,CAAEA,UAAW,gB,kCA6CnC,gBAJC,eAAM,oBACN,eAAM,qBACN,eAAM,uBACN,eAAM,4BAA6B,CAAE8pC,MAAM,K,0CAG3C,MAGD,gBADC,eAAM,W,6BAwEN,MAGD,gBADC,eAAM,qBAAsB,CAAEC,WAAW,K,0CA2BzC,MAvNkB,GAAW,gBAH/B,eAAU,CACT53C,WAAY,CAAE63C,YAAA,GAAaC,gBAAA,GAAiBC,UAAA,GAAW1lC,OAAA,MAEpC,cCvI6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIrT,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,MAAM,CAAC,QAAUN,EAAIO,WAAYP,EAAQ,KAAEI,EAAG,MAAM,CAACI,YAAY,YAAYC,MAAM,CAAEF,QAASP,EAAIO,UAAW,CAACH,EAAG,MAAM,CAACI,YAAY,YAAY,CAAER,EAAI4J,KAAgB,YAAExJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,aAAaF,MAAM,CAAC,IAAMN,EAAI4J,KAAKovC,YAAY,IAAM,MAAOh5C,EAAI4J,KAAKqvC,gBAAkBj5C,EAAI4J,KAAKqvC,eAAet8C,OAAQyD,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIsB,eAAe,iBAAiB,gBAAgBtB,EAAIY,GAAIZ,EAAI4J,KAAmB,eAAE,SAASsvC,GAAM,OAAO94C,EAAG,MAAM,CAACd,IAAI45C,EAAK36C,MAAM,CAAC6B,EAAG,IAAI,CAACI,YAAY,YAAYF,MAAM,CAAC,KAAO44C,EAAK7zC,MAAM,CAACjF,EAAG,gBAAgBJ,EAAImB,GAAG,IAAInB,EAAIoB,GAAG83C,EAAKC,WAAW,KAAKn5C,EAAIoB,GAAG83C,EAAKn2B,MAAM,oBAAoB,QAAQ,GAAG/iB,EAAIuB,OAAOvB,EAAIuB,KAAKnB,EAAG,MAAM,CAAEJ,EAAI4J,KAAS,KAAExJ,EAAG,KAAK,CAACI,YAAY,aAAa,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKrL,SAASyB,EAAIuB,KAAMvB,EAAI4J,KAAkB,cAAExJ,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKwvC,kBAAkBp5C,EAAIuB,KAAMvB,EAAI4J,KAAY,QAAExJ,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGpB,EAAIkxB,SAAS,gBAAgBlxB,EAAIuB,KAAMvB,EAAI4J,KAAgB,YAAExJ,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKyvC,gBAAgBr5C,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAAER,EAAsB,mBAAEI,EAAG,cAAc,CAACI,YAAY,wBAAwBF,MAAM,CAAC,GAAKN,EAAIs5C,qBAAqB,CAACt5C,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,SAAS,kBAAkBtB,EAAIuB,KAAKnB,EAAG,cAAc,CAACI,YAAY,oCAAoCF,MAAM,CAAC,GAAKN,EAAIu5C,gBAAgB,CAACn5C,EAAG,cAAcA,EAAG,OAAO,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,IAAI,OAAQtB,EAAI4J,KAAK4vC,eAAiBx5C,EAAI4J,KAAK4vC,cAAc78C,OAAQyD,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,KAAK,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,cAAclB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAI4J,KAAK4vC,cAAc78C,QAAQ,SAASyD,EAAG,wBAAwB,CAACE,MAAM,CAAC,MAAQN,EAAI4J,KAAK4vC,kBAAkB,GAAGx5C,EAAIuB,KAAMvB,EAAI4J,KAAK6vC,oBAAsBz5C,EAAI4J,KAAK6vC,mBAAmB98C,OAAQyD,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,KAAK,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,cAAclB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAI4J,KAAK6vC,mBAAmB98C,QAAQ,SAASqD,EAAIY,GAAIZ,EAAI4J,KAAuB,mBAAE,SAAS8vC,GAAa,OAAOt5C,EAAG,MAAM,CAACd,IAAIo6C,EAAYn7C,KAAKiC,YAAY,QAAQ,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGs4C,EAAYn7C,MAAM,gBAAgByB,EAAIY,GAAI84C,EAAwB,aAAE,SAASzN,EAAYprC,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAI2sC,EAAYt4B,MAAM,CAAE9S,EAAQ,EAAGT,EAAG,OAAO,CAACJ,EAAImB,GAAG,SAASnB,EAAIuB,KAAKnB,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK2rC,EAAY5mC,MAAM,CAACrF,EAAImB,GAAGnB,EAAIoB,GAAG6qC,EAAYE,gBAAgB,MAAM,MAAM,GAAGnsC,EAAIuB,KAAKnB,EAAG,KAAK,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,kBAAkBlB,EAAG,QAAQ,CAACI,YAAY,mBAAmB,CAACJ,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAc,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKrL,WAAYyB,EAAI4J,KAAkB,cAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,sBAAsB,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKwvC,oBAAoBp5C,EAAIuB,KAAMvB,EAAI4J,KAAKsnB,SAAWlxB,EAAI4J,KAAKsnB,QAAQv0B,OAAQyD,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAetB,EAAI4J,KAAKsnB,QAAQv0B,OAAS,EAAI,UAAY,WAAW,OAAOyD,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIkxB,cAAclxB,EAAIuB,KAAMvB,EAAI4J,KAAKukC,cAAgBnuC,EAAI4J,KAAKukC,aAAaxxC,OAAQyD,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAetB,EAAI4J,KAAKukC,aAAaxxC,OAAS,EAAI,eAAiB,gBAAgB,OAAOyD,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKukC,aAAavgC,KAAK,YAAY5N,EAAIuB,KAAMvB,EAAI4J,KAAa,SAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oBAAoB,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKJ,eAAexJ,EAAIuB,KAAMvB,EAAI4J,KAAe,WAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,eAAe,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAK+vC,iBAAiB35C,EAAIuB,KAAMvB,EAAI4J,KAAW,OAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,WAAW,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKgwC,aAAa55C,EAAIuB,KAAMvB,EAAI4J,KAAc,UAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,cAAc,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKiwC,gBAAgB75C,EAAIuB,KAAMvB,EAAI4J,KAAoB,gBAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmB,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKkwC,sBAAsB95C,EAAIuB,KAAMvB,EAAI4J,KAAS,KAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAG,WAAWf,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKmwC,WAAW/5C,EAAIuB,KAAMvB,EAAI4J,KAAgB,YAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKowC,kBAAkBh6C,EAAIuB,KAAMvB,EAAI4J,KAAgB,YAAExJ,EAAG,KAAK,CAACA,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,aAAa,OAAOlB,EAAG,KAAK,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKqwC,kBAAkBj6C,EAAIuB,WAAWvB,EAAIuB,MAAM,IACv4J,GAAkB,GCAD,IACbC,YAAY,EACZ,OAAOtB,EAAIF,GACT,MAAM,GAAEI,EAAE,GAAEe,EAAE,KAAEhF,EAAI,SAAEsF,EAAW,IAAOzB,GAGtCS,MAAOiB,EAAU,YACjBlB,EAAW,MACXmB,EAAK,YACLC,EAAW,MACXtB,EAAQ,MACLuB,GACD1F,EAEJ,OAAOiE,EACL,MACA,CACEK,MAAO,CAACiB,EAAWlB,GACnBmB,MAAO,CAACA,EAAMC,GACdtB,MAAO1D,OAAOkF,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BxB,MACnGuB,GAELJ,EAASM,OAAO,CAAC3B,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,mYAAmY,KAAO,kBAAkBF,EAAG,OAAO,CAACE,MAAM,CAAC,EAAI,+WAA+W,KAAO,uBCvBv1B,GAAS,WAAa,IAAIN,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAiB,cAAE,CAACI,EAAG,4BAA4B,CAACE,MAAM,CAAC,MAAQN,EAAIyiB,MAAM1iB,MAAM,EAAGC,EAAIk6C,kBAAkB95C,EAAG,cAAc,CAACE,MAAM,CAAC,cAAcN,EAAIm6C,WAAW,gBAAgBn6C,EAAIo6C,eAAe,CAACh6C,EAAG,4BAA4B,CAACE,MAAM,CAAC,MAAQN,EAAIyiB,MAAM1iB,MAAMC,EAAIk6C,mBAAmB,IAAI,CAAC95C,EAAG,4BAA4B,CAACE,MAAM,CAAC,MAAQN,EAAIyiB,WAAW,IACtc,GAAkB,GCDlB,GAAS,WAAa,IAAIziB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAGJ,EAAI4kB,UAA6B5kB,EAAIuB,KAAtBvB,EAAIyP,GAAG,WAAoBrP,EAAG,MAAM,CAACA,EAAG,SAAS,CAACI,YAAY,OAAOF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQ,SAASC,GAAQ1I,EAAI4kB,WAAa5kB,EAAI4kB,aAAa,CAAC5kB,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAI4kB,UAAY5kB,EAAIm6C,WAAan6C,EAAIo6C,cAAc,eAAe,IAC/W,GAAkB,GCgBD,GAArB,6D,+DAOE,EAAAx1B,WAAY,EAPd,gCAAyC,QAEvC,gBADC,eAAK,CAAEzY,UAAU,K,oCAIlB,gBADC,eAAK,CAAEA,UAAU,K,kCAJC,GAAW,gBAD/B,QACoB,cCjB6d,MCQ9e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAMJ,EAAIY,GAAIZ,EAAS,MAAE,SAAS4J,GAAM,OAAOxJ,EAAG,MAAM,CAACd,IAAIsK,EAAKrL,KAAKiC,YAAY,QAAQ,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGwI,EAAKrL,MAAM,aAAayB,EAAIY,GAAIgJ,EAAiB,aAAE,SAASqiC,EAAYprC,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAI2sC,EAAYE,YAAY,CAAEtrC,EAAQ,EAAGT,EAAG,OAAO,CAACJ,EAAImB,GAAG,SAASnB,EAAIuB,KAAKnB,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK2rC,EAAY5mC,MAAM,CAACrF,EAAImB,GAAGnB,EAAIoB,GAAG6qC,EAAYE,gBAAgB,MAAM,KAAK,IACre,GAAkB,GCsBD,GAArB,kJAAuD,QAErD,gBADC,eAAK,CAAEhgC,UAAU,K,6BADC,GAAyB,gBAD7C,QACoB,cCvByd,MCO1e,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QCWM,GAArB,kJAAmD,QAEjD,gBADC,eAAK,CAAEA,UAAU,K,6BAIlB,gBADC,kB,qCAID,gBADC,kB,oCAID,gBADC,kB,kCAVkB,GAAqB,gBAHzC,eAAU,CACTnL,WAAY,CAAEq5C,0BAAA,GAA2BC,YAAA,OAEtB,cC7Bqd,MCOte,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,kkBCuHf,IAAqB,GAArB,6D,+DACE,EAAA1wC,KAA4B,KAE5B,EAAArJ,SAAmB,EAEnB,EAAAe,eAAiB,GALnB,yOA0DUrB,KAAKs6C,YA1Df,OA2DIt6C,KAAKsxC,gBA3DT,uSAgEUtxC,KAAKs6C,YAhEf,OAiEIt6C,KAAKsxC,gBAjET,6IAqEI,IAAM/iB,EAAWvuB,KAAKu6C,eAClBv6C,KAAKu6C,eAAej8C,KACpB0B,KAAK2J,KACL3J,KAAK2J,KAAKrL,KACV,GAAe,QACnB0B,KAAKgP,OAAOnH,OAAO,8BAA+B,CAChDvJ,KAAMiwB,EACNA,eA5EN,gLAiFQvuB,KAAKyO,OAAOpK,OAAOsF,KAjF3B,uBAkFM3J,KAAKM,SAAU,EAlFrB,SAmFwB,GAAa+tC,aAAaruC,KAAKyO,OAAOpK,OAAOkF,SAAUvJ,KAAKyO,OAAOpK,OAAOsF,MAnFlG,OAmFM3J,KAAK2J,KAnFX,OAoFU3J,KAAK2J,OACH3J,KAAK2J,KAAK6vC,qBACZx5C,KAAK2J,KAAK6vC,mBAAqBx5C,KAAKw6C,oBAAoBx6C,KAAK2J,KAAK6vC,qBAEhEx5C,KAAK2J,KAAK4vC,gBACZv5C,KAAK2J,KAAK4vC,cAAgBv5C,KAAKw6C,oBAAoBx6C,KAAK2J,KAAK4vC,gBAE3Dv5C,KAAK2J,KAAK8wC,qBACZz6C,KAAK2J,KAAK+wC,gBAAkB16C,KAAK26C,wBAAwB36C,KAAK2J,KAAK8wC,sBAGvEz6C,KAAKM,SAAU,EA/FrB,qJAmG0BoM,GACtB,OAAO,GAAkBa,kBAAkB,CACzChE,SAAUvJ,KAAKyO,OAAOpK,OAAOkF,SAC7B6C,aAAcpM,KAAKyO,OAAOpK,OAAO0e,SACjC1W,WAAYrM,KAAKyO,OAAOpK,OAAOqqB,OAC/BviB,SAAUnM,KAAKyO,OAAOpK,OAAOsF,KAC7B2C,gBAAiBI,MAzGvB,0CA6GsB8V,GAAiB,WACnC,OAAOA,EAAM3U,IAAI,SAAA4rC,GAAW,aACvBA,EADuB,CAE1B3L,aAAc2L,EAAY3L,aAAajgC,IAAI,SAACm+B,GAAD,aACtCA,EADsC,CAEzC5mC,IAAK,GAAkBqI,WAAW,CAChClE,SAAUyiC,EAAYt4B,KACtBtH,aAAc,EAAKqC,OAAOpK,OAAO0e,SACjC5W,SAAUstC,EAAY/sC,iBArHhC,8BAWI,OAAO1M,KAAK2J,KAAO3J,KAAK2J,KAAKsnB,QAAQpjB,IAAI,SAAA6gB,GAAM,OAAIA,EAAOpwB,OAAMqP,KAAK,MAAQ,KAXjF,yCAcwB,WACpB,IAAK3N,KAAK2J,KACR,MAAO,GAET,IAAMixC,EAAqB,SAACx1C,GAC1B,KAAMA,GAAO,EAAKm1C,gBAAkB,EAAKA,eAAe/4C,SAAS9E,QAC/D,OAAO0I,EAET,IAAMk3B,EAAcl3B,EACjB2X,MAAM,KAAK,GACXA,MAAM,KACNnQ,OAAO8R,SACP3C,MACH,GAAI,EAAKw+B,eAAe/4C,SAASygC,KAAK,SAAAxS,GAAO,OAAIA,EAAQ/iB,OAAS4vB,IAChE,OAAOl3B,EAET,IAAMy1C,EACJ,EAAKN,eAAe/4C,SAAS8d,KAAK,SAAAmQ,GAAO,OAAKA,EAAQZ,aAAc,EAAK0rB,eAAe/4C,SAAS,GACnG,OAAOq5C,EAAoB,EAAKF,wBAAwBE,EAAkBnuC,MAAQ,IAE9E5C,EAAU,GAAH,OAAM9J,KAAKyO,OAAOpK,OAAOkF,SAAzB,YAAqCvJ,KAAKyO,OAAOpK,OAAOsF,MAC/DmxC,EAAW96C,KAAKgP,OAAOzH,MAAMsH,KAAKjB,KAAK0R,KAC3C,SAAClX,GAAD,OAA8CA,EAAI0B,UAAYA,GAAW1B,EAAI8O,OAE/E,OAAI4jC,GAAYA,EAAS5jC,MAAQ4jC,EAAS5jC,KAAK6F,MAAM,KAAK,KAAO/c,KAAKyO,OAAO8N,KACpEq+B,EAAmBE,EAAS5jC,MAE9B0jC,EAAmB56C,KAAK2J,KAAK+wC,iBAAmB,MAzC3D,oCA6CI,IAAMnuC,EAAQ,IAAIO,gBAAgB,CAChCJ,KAAM1M,KAAKyO,OAAOpK,OAAOsF,KACzBmd,WAAY,IACZJ,WAAY,IACZla,SAAUxM,KAAKyO,OAAO2Q,WAKxB,OAHIpf,KAAKu6C,gBAAkBv6C,KAAKu6C,eAAexyC,IAC7CwE,EAAMtE,IAAI,SAAUjI,KAAKu6C,eAAexyC,GAAG8E,YAE7C,WAAW7M,KAAKyO,OAAOpK,OAAOkF,SAA9B,mBAAiDgD,EAAMM,gBAtD3D,GAAuC,QAQrC,gBADC,gBAAO,cAAe,CAAE+B,UAAW,gB,sCAwDpC,gBADC,eAAM,W,6BAIN,MAlEkB,GAAS,gBAH7B,eAAU,CACT7N,WAAY,CAAEg6C,sBAAA,GAAuB3nC,OAAA,EAAQ4nC,aAAA,GAAcC,WAAA,OAExC,cCzI2d,MCQ5e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIl7C,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,MAAM,CAAC,QAAUN,EAAIO,WAAYP,EAAU,OAAEI,EAAG,MAAM,CAACI,YAAY,cAAcC,MAAM,CAAEF,QAASP,EAAIO,UAAW,CAACH,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAI2uB,OAAkB,YAAEvuB,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,eAAeF,MAAM,CAAC,IAAMN,EAAI2uB,OAAOqqB,YAAY,IAAM,QAAQh5C,EAAIuB,KAAKnB,EAAG,MAAM,CAACA,EAAG,KAAK,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2uB,OAAOpwB,SAAS6B,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAACJ,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACR,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,MAAMlB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2uB,OAAOwsB,WAAWvlB,UAAU51B,EAAIY,GAAIZ,EAAmB,gBAAE,SAASyiB,GAAO,OAAOriB,EAAG,MAAM,CAACd,IAAImjB,EAAM9O,KAAKnT,YAAY,yBAAyB,CAACR,EAAImB,GAAG,iBAAiBnB,EAAIoB,GAAGqhB,EAAM0I,YAAY,MAAM/qB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGqhB,EAAMsL,eAAe,GAAG3tB,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2uB,OAAO0qB,oBAAqBr5C,EAAI2uB,OAAOlM,OAASziB,EAAI2uB,OAAOlM,MAAM9lB,OAAQyD,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,KAAK,CAACI,YAAY,wBAAwB,CAACR,EAAImB,GAAG,aAAanB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,cAAclB,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAI2uB,OAAOlM,MAAM9lB,QAAQ,SAASyD,EAAG,wBAAwB,CAACE,MAAM,CAAC,MAAQN,EAAI2uB,OAAOlM,UAAU,GAAGziB,EAAIuB,OAAOvB,EAAIuB,MAAM,IACh3C,GAAkB,GCID,G,WAArB,oCAGE,KAAAiS,WAAyB,IAAI,E,kEAM3B,OAHK4nC,EAAe1nC,WAClB0nC,EAAe1nC,SAAW,IAAI0nC,GAEzBA,EAAe1nC,W,0FAGDC,EAAchH,G,6FAC7B+G,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUmoB,OAAOlsB,QAAQ,QAASkR,GAAMlR,QAAQ,QAASkK,IACrErF,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BkP,QACAlV,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,2qBCwBtC,IAAqB,GAArB,6D,+DACE,EAAAoE,SAAmB,EAEnB,EAAAouB,OAAwB,KACxB,EAAArtB,eAAiB,GAJnB,yOAmBUrB,KAAKo7C,cAnBf,OAoBIp7C,KAAKsxC,gBApBT,uSAyBUtxC,KAAKo7C,cAzBf,OA0BIp7C,KAAKsxC,gBA1BT,yRA8BQtxC,KAAKyO,OAAOpK,OAAOqqB,OA9B3B,uBA+BM1uB,KAAKM,SAAU,EA/BrB,SAgC0B,GAAe+6C,UAAUr7C,KAAKyO,OAAOpK,OAAOkF,SAAUvJ,KAAKyO,OAAOpK,OAAOqqB,QAhCnG,OAgCM1uB,KAAK0uB,OAhCX,OAiCM1uB,KAAK0uB,OAAOlM,MAAQ7lB,OAAOm0B,OAAO9wB,KAAK0uB,OAAOlM,OAAO3U,IAAI,SAAAlE,GAAI,aACxDA,EADwD,CAE3DmkC,aAAcnkC,EAAKmkC,aAAajgC,IAAI,SAAAm+B,GAAW,aAC1CA,EAD0C,CAE7C5mC,IAAK,GAAkBqI,WAAW,CAAElE,SAAUyiC,EAAYt4B,KAAMvH,SAAUxC,EAAK+C,eAGnF1M,KAAKM,SAAU,EAxCrB,6IA6CIN,KAAKgP,OAAOnH,OAAO,2BAA4B7H,KAAK0uB,OAAS1uB,KAAK0uB,OAAOpwB,KAAO,GAAe,aA7CnG,sCAOI,OACE0B,KAAK0uB,QACL1uB,KAAK0uB,OAAOwsB,WAAW/lB,UAAUtnB,IAAI,SAAA2U,GAAK,MAAK,CAC7CsL,MAAOtL,EAAMsL,MACb5C,WAAY,GAAe,aAAD,OAAc,GAAcwJ,WACpDlS,EAAM9O,eAZhB,GAAuC,QAwBrC,gBADC,eAAM,W,6BAIN,MA3BkB,GAAS,gBAH7B,eAAU,CACT3S,WAAY,CAAEg6C,sBAAA,GAAuB3nC,OAAA,MAElB,cChD2d,MCQ5e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIrT,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACiV,IAAI,SAAS7U,YAAY,SAASmB,MAAM,CAAG80B,SAAY,GAAKz2B,EAAIs2B,MAAS,OAAU,CAAEt2B,EAAI+rB,eAAiB/rB,EAAIu7C,SAAUn7C,EAAG,UAAWJ,EAAe,YAAEI,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,mBAAmBlB,EAAG,MAAMJ,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,UAAYtB,EAAIu7C,SAA0H,CAAEv7C,EAAyB,sBAAE,CAACA,EAAIY,GAAIZ,EAAiB,cAAE,SAAS4J,GAAM,OAAOxJ,EAAG,qBAAqB,CAACd,IAAIsK,EAAK+C,KAAKnM,YAAY,mBAAmBF,MAAM,CAAC,KAAOsJ,OAAW5J,EAAIw7C,sBAA4B,OAAEp7C,EAAG,uBAAuB,CAACI,YAAY,mBAAmBF,MAAM,CAAC,OAASN,EAAIw7C,sBAAsBC,UAAUz7C,EAAIuB,KAAMvB,EAAIw7C,sBAA0B,KAAEp7C,EAAG,4BAA4B,CAACI,YAAY,mBAAmBF,MAAM,CAAC,eAAeN,EAAIw7C,sBAAsB9O,QAAQ1sC,EAAIuB,MAAMvB,EAAIuB,KAAMvB,EAAI6oB,eAAiB7oB,EAAI6oB,cAAclsB,OAAS,EAAGyD,EAAG,MAAM,CAACiV,IAAI,iBAAiB,CAACrV,EAAIY,GAAIZ,EAAiB,cAAE,SAAS4L,EAAK/K,GAAO,OAAOT,EAAG,MAAM,CAACd,IAAIsM,EAAK6B,UAAY7B,EAAK0B,aAAezM,GAAO,CAACT,EAAG,KAAK,CAACI,YAAY,qBAAqB,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKN,EAAI07C,iBAAiB9vC,EAAM/K,KAAS,CAACb,EAAImB,GAAGnB,EAAIoB,GAAGwK,EAAKvK,WAAW,GAAIuK,EAAK+vC,OAAS/vC,EAAK+vC,MAAM,GAAIv7C,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAACR,EAAImB,GAAG,eAAenB,EAAIoB,GAAGwK,EAAK+vC,MAAM,GAAG7tC,IAAI,SAAU0O,GAAQ,OAAOA,EAAKnb,QAAUuM,KAAK,QAAQ,gBAAgB5N,EAAIuB,KAAKnB,EAAG,MAAM,CAACI,YAAY,mBAAmBiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGwK,EAAKrH,aAAcvE,EAAe,YAAEI,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,SAAS,CAACI,YAAY,cAAcF,MAAM,CAAC,QAAS,MAAS,GAAGN,EAAIuB,MAAM,GAAGvB,EAAIuB,KAASvB,EAAI6oB,eAAiB7oB,EAAI6oB,cAAclsB,OAAS,GAAMqD,EAAIw7C,sBAAoLx7C,EAAIuB,KAAhKnB,EAAG,MAAM,CAACJ,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqBlB,EAAG,MAAMJ,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,gBAAgB,aAAnlDlB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACR,EAAImB,GAAG,SAASnB,EAAIoB,GAAGpB,EAAIsB,eAAe,qBAAqB,WAAogD,IACvjE,GAAkB,GCDD,G,oHAQYs6C,EAAgCC,GAC7D,OAAOD,EAAO/uC,OAAO,SAAAolB,GAAG,OAAI4pB,EAAO58B,SAASgT,O,uCAMf2pB,EAAgCC,GAC7D,OAAOC,EAAaC,iBAAiBH,EAAQC,GAAQl/C,OAAS,I,iCASvCo1B,GACvB,OAAOA,EAAMjkB,IAAI,SAAAmkB,GAAG,OAAIA,EAAIjqB,O,sCASA+pB,GAC5B,OAAO9sB,KAAKC,UAAU42C,EAAaE,WAAWjqB,Q,KCpC9C,GAAS,WAAa,IAAI/xB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKN,EAAIi8C,UAAU,CAACj8C,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKrL,UAAU,GAAG6B,EAAG,MAAM,CAACI,YAAY,UAAU,CAACR,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIk8C,gBAAiBl8C,EAAIm8C,eAAex/C,QAAUqD,EAAI4J,KAAKwyC,wBAAyBh8C,EAAG,MAAM,CAACI,YAAY,aAAa,CAAER,EAAIm8C,eAAqB,OAAE/7C,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,YAAY,CAACI,YAAY,mBAAmBR,EAAIY,GAAIZ,EAAkB,eAAE,SAAS4J,GAAM,OAAOxJ,EAAG,cAAc,CAACd,IAAIsK,EAAKuhB,WAAW3qB,YAAY,iBAAiBF,MAAM,CAAC,GAAKsJ,EAAKvE,MAAM,CAACrF,EAAImB,GAAGnB,EAAIoB,GAAGwI,EAAKuhB,kBAAkB,GAAGnrB,EAAIuB,KAAMvB,EAAI4J,KAA4B,wBAAExJ,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,gBAAgB,CAACI,YAAY,mBAAmBR,EAAImB,GAAG,YAAYf,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI4J,KAAKwyC,6BAA6B,GAAGp8C,EAAIuB,OAAOvB,EAAIuB,QACh5B,GAAkB,GC+CD,GAArB,mMAKI,OAAOtB,KAAK2J,KAAKsnB,QAAQpjB,IAAI,SAAA6gB,GAAM,OAAIA,EAAOpwB,OAAMqP,KAAK,QAL7D,8BASI,OAAO,GAAkBF,WAAW,CAClClE,SAAUvJ,KAAK2J,KAAKJ,UAAY0D,GAAOC,aAAa7I,OAAOkF,SAC3D4C,SAAUnM,KAAK2J,KAAK+C,SAX1B,qCAeoB,WACV0oB,EAAkBp1B,KAAK2J,KAAKJ,UAAY0D,GAAOC,aAAa7I,OAAOkF,SACnE4rB,EAAY,CAACC,GAAD,uBAAsBp1B,KAAK2J,KAAKwrB,WAAa,KAAKvoB,OAAO8R,SAE3E,OAAOjO,MAAM6J,KAAK,IAAI/O,IAAI4pB,IAAYtnB,IAAI,SAAAtE,GACxC,MAAO,CACL2hB,WAAY,GAAcwJ,WACxB,GAAe,aAAD,OAAc,GAAcA,WAAWnrB,MAEvDnE,IAAK,GAAkBqI,WAAW,CAChClE,WACA4C,SAAU,EAAKxC,KAAK+C,cA1B9B,GAAgD,QAE9C,gBADC,eAAK,CAAER,UAAU,K,4BADC,GAAkB,gBAHtC,eAAU,CACTnL,WAAY,CAAEq7C,cAAA,GAAeC,UAAA,OAEV,cChDkd,MCQne,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIt8C,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKN,EAAIu8C,YAAY,CAACv8C,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2uB,OAAOpwB,UAAU,GAAG6B,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAIsB,eAAe,UAAU,MAAMlB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI2uB,OAAOwsB,WAAWvlB,UAAU51B,EAAIY,GAAIZ,EAAmB,gBAAE,SAASyiB,GAAO,OAAOriB,EAAG,MAAM,CAACd,IAAImjB,EAAM9O,KAAKnT,YAAY,eAAe,CAACR,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGqhB,EAAM0I,YAAY,MAAM/qB,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGqhB,EAAMsL,eAAe,GAAG3tB,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,wBAAwB,CAACE,MAAM,CAAC,MAAQN,EAAIw8C,YAAY,iBAAiB,EAAE,cAAcx8C,EAAIsB,eAAe,eAAe,gBAAgBtB,EAAIsB,eAAe,gBAAgB,MAC11B,GAAkB,G,0jBCgDtB,IAAqB,GAArB,6D,+DAIE,EAAAA,eAAiB,GAJnB,+EAOI,OAAO,GAAkBgwB,aAAa,CACpC9nB,SAAU0D,GAAOC,aAAa7I,OAAOkF,SACrC8C,WAAYrM,KAAK0uB,OAAOhiB,SAT9B,kCAcI,OAAO/P,OAAOm0B,OAAO9wB,KAAK0uB,OAAOwsB,WAAW14B,OAAO3U,IAAI,SAAAlE,GAAI,MAAK,CAC9DrL,KAAMqL,EAAKrL,KACXwvC,aAAcnkC,EAAKmkC,aAAajgC,IAAI,SAAAm+B,GAAW,aAC1CA,EAD0C,CAE7C5mC,IAAK,GAAkBqI,WAAW,CAChClE,SAAUyiC,EAAYt4B,KACtBvH,SAAUxC,EAAK+C,gBApBzB,sCA2BI,OAAO1M,KAAK0uB,OAAOwsB,WAAW/lB,UAAUtnB,IAAI,SAAAtE,GAAQ,aAC/CA,EAD+C,CAElD2hB,WAAY,GAAcwJ,WACxB,GAAe,aAAD,OAAc,GAAcA,WAAWnrB,EAASmK,iBA9BtE,GAAkD,QAEhD,gBADC,eAAK,CAAExH,UAAU,K,8BADC,GAAoB,gBAHxC,eAAU,CACTnL,WAAY,CAAEg6C,sBAAA,GAAuBV,YAAA,OAElB,cCjDod,MCQre,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIt6C,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,gCAAgC,CAACJ,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,cAAc,CAACE,MAAM,CAAC,GAAKN,EAAIy8C,iBAAiB,CAACz8C,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAI08C,sBAAsB,GAAGt8C,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,MAAM,CAACI,YAAY,eAAeiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAI28C,0BAA0BjQ,SAAStsC,EAAG,MAAM,CAACI,YAAY,gBAAgBiQ,SAAS,CAAC,UAAYzQ,EAAIoB,GAAGpB,EAAI28C,0BAA0BC,gBAAgBx8C,EAAG,SAAS,CAACI,YAAY,6CAA6CF,MAAM,CAAC,KAAO,UAAUmI,GAAG,CAAC,MAAQzI,EAAI68C,wBAAwB,CAAC78C,EAAImB,GAAG,WAAWnB,EAAIoB,GAAGpB,EAAI88C,0BAA0B98C,EAAI+8C,kBAAkB,cAAe/8C,EAAIg9C,iBAAuB,OAAE58C,EAAG,MAAM,CAACI,YAAY,qBAAqB,CAACJ,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAACJ,EAAG,IAAI,CAACJ,EAAImB,GAAGnB,EAAIoB,GAAGpB,EAAIsB,eAAe,oCAAoCtB,EAAImB,GAAG,aAAaf,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACR,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIg9C,iBAAiBrgD,QAAQ,SAASyD,EAAG,wBAAwB,CAACE,MAAM,CAAC,MAAQN,EAAIg9C,qBAAqB,GAAGh9C,EAAIuB,QACnqC,GAAkB,G,0jBC6CtB,IAAqB,GAArB,+D,+DACE,EAAAw7C,gBAAkBj0C,GAElB,EAAAg0C,2BAAA,sBACGh0C,GAAwB,GAAe,0BAD1C,iBAEGC,GAAwB,GAAe,0BAF1C,GAKA,EAAAzH,eAAiB,GARnB,6OA6CIrB,KAAK68C,2BAAL,sBACGh0C,GAAwB,GAAe,0BAD1C,iBAEGC,GAAwB,GAAe,0BAF1C,GA7CJ,qJAoDQ9I,KAAK88C,kBAAoBj0C,GAC3B7I,KAAK88C,gBAAkBh0C,GAEvB9I,KAAK88C,gBAAkBj0C,KAvD7B,qCAcI,OAAO,GAAkB0E,kBAAkB,CACzChE,SAAU0D,GAAOC,aAAa7I,OAAOkF,SACrC4C,SAAUnM,KAAKgW,YAAYxI,UAC3BlB,gBAAiBtM,KAAKgW,YAAYtJ,SAjBxC,uCAsBI,OAAO1M,KAAKgW,YAAYgnC,MAAMnvC,IAAI,gBAAGzM,EAAH,EAAGA,MAAH,OAAeA,IAAOuM,KAAK,SAtBjE,uCAyBsB,WAClB,OAAO3N,KAAKgW,YAAYwM,MAAM3U,IAAI,SAAAlE,GAAI,aACjCA,EADiC,CAEpCmkC,aAAcnkC,EAAKmkC,aAAajgC,IAAI,SAAAm+B,GAAW,aAC1CA,EAD0C,CAE7C5mC,IAAK,GAAkBmI,kBAAkB,CACvChE,SAAUyiC,EAAY3jC,KACtB8D,SAAUxC,EAAK+C,KACfJ,gBAAiB,EAAK0J,YAAYtJ,iBAjC5C,gDAuC+B,WAC3B,OAAO1M,KAAKgW,YAAY1C,QAAQgM,KAAK,SAAA0S,GAAG,OAAIA,EAAIzoB,WAAa,EAAKuzC,sBAxCtE,GAAuD,QAWrD,gBADC,eAAK,CAAE5wC,UAAU,K,mCAkClB,gBADC,eAAM,sB,qCAMN,MAjDkB,GAAyB,gBAH7C,eAAU,CACTnL,WAAY,CAAEg6C,sBAAA,OAEK,cC9Cyd,MCQ1e,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCkDM,GAArB,6D,+DACE,EAAApQ,aAAc,EACd,EAAAsS,QAAU,GACV,EAAApL,KAAO,EACP,EAAA4J,iBAAmB,GAAkB5yB,uBAErC,EAAAxnB,eAAiB,GANnB,yNA8EIrB,KAAKkwC,UAAU1qB,iBAAiB,SAAUxlB,KAAKmwC,UA9EnD,0MAkF2BpqB,EAAazL,GAlFxC,mFAmFQyL,IAAOzL,IAAQyL,EAnFvB,uBAoFM/lB,KAAKsxC,gBApFX,SAqFYtxC,KAAKk9C,eArFjB,0MA2FwBn3B,EAAgBzL,GA3FxC,mFA6FM,GAAa6iC,gBAAgBp3B,KAAQ,GAAao3B,gBAAgB7iC,KAClEta,KAAKo9C,qBA9FX,gCAgGYp9C,KAAKk9C,eAhGjB,gSAqGIl9C,KAAKgnB,0BAAyB,GArGlC,SAsGUhnB,KAAKq9C,eAAe,CAAE7wB,OAAQ,EAAGywB,QAASj9C,KAAKi9C,UAtGzD,0RA0GIj9C,KAAK2qC,aAAc,EACnB3qC,KAAK6xC,MAAQ,EA3GjB,SA4GU7xC,KAAKq9C,eAAe,CAAE7wB,OAAQxsB,KAAKi9C,SAAWj9C,KAAK6xC,KAAO,GAAIoL,QAASj9C,KAAKi9C,UA5GtF,OA6GIj9C,KAAK2qC,aAAc,EA7GvB,6IAiHI3qC,KAAK+7B,oBAAoB/7B,KAAKyO,OAAOlC,MAAMA,SAjH/C,sLAqHSvM,KAAKs9C,iBArHd,oDAwHUC,EACJv9C,KAAKkwC,UAAU7b,aAAer0B,KAAKkwC,UAAUzR,WAAaz+B,KAAKs9C,iBAAiBjpB,aAC7EkpB,IAAsBv9C,KAAK8rB,gBAAiB9rB,KAAK2qC,YA1H1D,oDA6HU6S,EAAex9C,KAAK+rB,mBAAqB,GAAK/rB,KAAK4oB,cAAclsB,OAASsD,KAAK+rB,oBACjFyxB,EA9HR,gCA+HYx9C,KAAKy9C,YA/HjB,sIASI,MAA0C,kBAA5Bz9C,KAAKyO,OAAOlC,MAAMA,SAAwBvM,KAAKyO,OAAOlC,MAAMA,MAAM0Z,SATpF,oCAaI,IAAMtc,EAAO3J,KAAKu7C,uBAA0Bv7C,KAAKu7C,sBAA8B5xC,KAC/E,OAAKA,EAGE8G,MAAMC,QAAQ/G,GAAQA,EAAO,CAACA,GAF5B,OAfb,GAA2C,QAqBzC,gBADC,eAAI,W,iCAIL,gBADC,eAAI,kB,wCAIL,gBADC,gBAAM,UAAW,CAAEiF,UAAW,Y,qCAI/B,gBADC,gBAAM,eAAgB,CAAEA,UAAW,Y,0CAIpC,gBADC,gBAAM,kBAAmB,CAAEA,UAAW,Y,6CAIvC,gBADC,gBAAM,aAAc,CAAEA,UAAW,Y,wCAIlC,gBADC,gBAAM,UAAW,CAAEA,UAAW,Y,qCAI/B,gBADC,gBAAM,QAAS,CAAEA,UAAW,Y,mCAI7B,gBADC,gBAAM,UAAW,CAAEA,UAAW,gB,kCAI/B,gBADC,gBAAM,QAAS,CAAEA,UAAW,Y,6BAI7B,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,4CAI1C,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAO,eAAgB,CAAEA,UAAW,gB,oCAIrC,gBADC,gBAAO,sBAAuB,CAAEA,UAAW,gB,2CAI5C,gBADC,gBAAO,oBAAqB,CAAEA,UAAW,gB,yCAI1C,gBADC,gBAAO,2BAA4B,CAAEA,UAAW,gB,gDAIjD,gBADC,gBAAO,eAAgB,CAAEA,UAAW,Y,sCAIrC,gBADC,gBAAS,sBAAuB,CAAEA,UAAW,U,2CAI9C,gBADC,gBAAS,2BAA4B,CAAEA,UAAW,gB,gDAQnD,gBADC,eAAM,qB,kCAMN,MAID,gBAFC,eAAM,qBACN,eAAM,6B,+BAQN,MAlGkB,GAAa,gBAHjC,eAAU,CACT7N,WAAY,CAAE28C,0BAAA,GAA2BC,qBAAA,GAAsBC,mBAAA,GAAoBxqC,OAAA,MAEhE,cCrE+d,MCQhf,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCFf,OAAIyqC,IAAI,SAER,IAAIC,GAA0B,KAExBC,GAAK,wDAAG,WAAOh4B,EAAWzL,EAAa0jC,GAA/B,iGACRC,GAAwB,EAE5B32C,GAAMO,OAAO,gBAHD,SAIO,GAAYq2C,UAAU9zC,MAAtB,wDAA4B,WAAMoH,GAAN,mFACxCA,EAAE3N,SADsC,yCAEpC,MAFoC,UAInB,MAAtB2N,EAAE3N,SAAS5C,OAJ8B,gCAKrCqG,GAAMqK,SAAS,eALsB,cAOnB,MAAtBH,EAAE3N,SAAS5C,SACbg9C,GAAwB,GARmB,kBAUtC,MAVsC,yCAA5B,uDAJP,UAINr0C,EAJM,OAgBZtC,GAAMO,OAAO,gBAETo2C,EAlBQ,uBAmBVH,GAAW/3B,EAAG3G,SAnBJ,kBAoBH4+B,EAAK,uBApBF,UAuBPp0C,EAvBO,wBAwBVk0C,GAAW/3B,EAAG3G,SAxBJ,kBAyBH4+B,EAAK,WAzBF,WA4BP12C,GAAMC,MAAMlB,KAAKsB,YACpBL,GAAMO,OAAO,aAAc,IAE7BP,GAAMO,OAAO,WAAY+B,GACzBtC,GAAMO,OAAO,mBAAoBpE,OAAOmG,EAAK7B,IAAM6B,EAAKzD,QACxDmB,GAAMO,OAAO,wBAAyBpE,OAAOmG,EAAK7B,IAAM6B,EAAKzD,SAEzD23C,GAnCQ,wBAoCJ14C,EAAM04C,GACZA,GAAW,KArCD,kBAsCHE,EAAK54C,IAtCF,iCAwCL44C,KAxCK,0CAAH,0DA2CI,OAAI,QAAO,CACxB/+C,KAAM,UACNk/C,KAAM,IACNC,OAAQ,CACN,CACE7hC,KAAM,SACNje,KAAM,QACNwC,UAAW,IAEb,CACEyb,KAAM,mBACNje,KAAM,kBACNwC,UAAW,IAEb,CACEyb,KAAM,kBACNje,KAAM,iBACNwC,UAAW,IAEb,CACEyb,KAAM,yBACNje,KAAM,uBACNwC,UAAW,IAEb,CACEyb,KAAM,gBACNje,KAAM,eACNwC,UAAWu9C,IAEb,CACE9hC,KAAM,mCACNje,KAAM,eACNwC,UAAW,IAEb,CACEyb,KAAM,qBACNje,KAAM,sBACNwC,UAAW,IAEb,CACEyb,KAAM,IACNzb,UAAW,GACXU,SAAU,CACR,CACE+a,KAAM,IACNzb,UAAW,IAEb,CACEyb,KAAM,qBACNje,KAAM,iBACNwC,UAAW,IAEb,CACEyb,KAAM,kBACNvK,SAAU,SAAA+T,GAAE,iBAAQA,EAAG1hB,OAAOkF,SAAlB,gBAEd,CACEgT,KAAM,uBACNje,KAAM,mBACNwC,UAAW,IAEb,CACEyb,KAAM,sBACNje,KAAM,kBACNwC,UAAW,IAEb,CACEyb,KAAM,QACNzb,UAAW,IAEb,CACEyb,KAAM,yBACNje,KAAM,OACNwC,UAAW,IAEb,CACEyb,KAAM,sCACNje,KAAM,eACNwC,UAAW,IAEb,CACEyb,KAAM,wCACNje,KAAM,gBACNwC,UAAW,IAEb,CACEyb,KAAM,qDACNje,KAAM,wBACNwC,UAAW,IAEb,CACEyb,KAAM,6BACNje,KAAM,aACNwC,UAAW,IAEb,CACEyb,KAAM,mCACNje,KAAM,cACNwC,UAAW,IAEb,CACEyb,KAAM,gDACNje,KAAM,sBACNwC,UAAW,IAEb,CACEyb,KAAM,oBACNje,KAAM,iBACNwC,UAAW,KAGfw9C,YAAaP,O,8jBChKE,G,+MACc//B,EAA4BsN,EAAoBE,GAE/ExN,EAAaugC,EAAiBC,MAAMxgC,GAGpCA,EAAWyE,WAAa87B,EAAiBE,kBAAkBzgC,EAAWyE,YAL4B,MAQjE87B,EAAiBG,gBAAgB1gC,EAAWiT,SAArEA,EAR0F,EAQ1FA,QAAS0tB,EARiF,EAQjFA,YAyBjB,OAxBA3gC,EAAWiT,QAAUA,EAEjB0tB,GAAe,IAEjB3gC,EAAWwV,gBAAkB+qB,EAAiBK,sBAC5C5gC,EAAWwV,gBACXxV,EAAWiT,QAAQ0tB,KAKvB3gC,EAAWuV,cAAgBgrB,EAAiBM,oBAC1C7gC,EAAWuV,cACXvV,EAAWwE,OAGT+7B,EAAiBO,kBAAkB9gC,EAAYsN,EAAUE,KAE3DxN,EAAWwE,MAAQ+7B,EAAiBQ,cAAc/gC,EAAWwE,OAG7DxE,EAAWwE,MAAQ+7B,EAAiBS,qBAAqBhhC,EAAWwE,QAG/DxE,I,4BAGWA,GAUlB,OARAA,EAAWyE,WAAa87B,EAAiBU,mBAAmBjhC,EAAWyE,YACvEzE,EAAWiT,QAAUstB,EAAiBU,mBAAmBjhC,EAAWiT,SACpEjT,EAAWwV,gBAAkB+qB,EAAiBU,mBAAmBjhC,EAAWwV,iBAC5ExV,EAAWuV,cAAgBgrB,EAAiBU,mBAAmBjhC,EAAWuV,eAC1EvV,EAAWwE,MAAQ+7B,EAAiBW,WAAWlhC,EAAWwE,OAC1DxE,EAAWwE,MAAQ+7B,EAAiBY,kBAAkBnhC,EAAWwE,OACjExE,EAAWgO,WAAauyB,EAAiBW,WAAWlhC,EAAWgO,YAC/DhO,EAAWgO,WAAauyB,EAAiBY,kBAAkBnhC,EAAWgO,YAC/DhO,I,yCAG+DitB,GAItE,OAHCA,EAAgDj/B,QAAQ,SAACgmB,EAAKpxB,GAC7DqqC,EAASrqC,GAAO8M,WAAY,IAEvBu9B,I,iCAGgBzoB,GAKvB,OAJA7lB,OAAOm0B,OAAOtO,GAAOxW,QAAQ,SAAArC,GAE3B6Y,EAAM7Y,EAAK+C,MAAMgB,WAAY,IAExB8U,I,wCAGuBA,GAM9B,OALA7lB,OAAOm0B,OAAOtO,GAAOxW,QAAQ,SAAArC,GAC3BA,EAAKnI,SAASwK,QAAQ,SAACgK,EAAaopC,GAClC58B,EAAM7Y,EAAK+C,MAAMlL,SAAS49C,GAAkB1xC,WAAY,MAGrD8U,I,wCAMuBC,GAC9B,IAAM48B,EAAgBpyC,GAAOC,aAAa7I,OAAO0e,SAC7Cu8B,EAAuC,KAErC1+C,EAAQ6hB,EAAW2Y,UAAU,SAAArY,GAAQ,OAAIs8B,GAAiBA,IAAkBt8B,EAASrW,OAQ3F,OAPI9L,GAAS,IACX0+C,EAAsB78B,EAAW7hB,GACjC0+C,EAAoB5xC,WAAY,EAChC4xC,EAAoB56B,UAAW,EAE/BjC,EAAa87B,EAAiBgB,iBAAiB98B,EAAY7hB,IAEtD6hB,I,sCAMqBwO,GAC5B,IAAMuuB,EAAcvyC,GAAOC,aAAa7I,OAAOqqB,OACzC9tB,EAAQqwB,EAAQmK,UAAU,SAAA1M,GAAM,OAAIA,EAAOhiB,OAAS8yC,IAK1D,OAJI5+C,GAAS,IACXqwB,EAAQrwB,GAAO8M,WAAY,EAC3BujB,EAAQrwB,GAAO8jB,UAAW,GAErB,CAAEuM,UAAS0tB,YAAa/9C,K,4CAMG4yB,EAAsC9E,GACxE,IAAM0C,EAAW1C,EAAO3mB,GAClBnH,EAAQ4yB,EAAgB4H,UAAU,SAAA7O,GAAM,OAAIA,EAAOqF,UAAUtS,KAAK,SAAAvX,GAAE,OAAIA,IAAOqpB,MAKrF,OAJIxwB,GAAS,IACX4yB,EAAgB5yB,GAAO8M,WAAY,EACnC8lB,EAAgB5yB,GAAO8jB,UAAW,GAE7B8O,I,0CAMyBD,EAAkC/Q,GAClE,IAAMi9B,EAAYxyC,GAAOC,aAAa7I,OAAOsF,KACvCA,EAAO6Y,EAAMi9B,GACnB,IAAK91C,EACH,OAAO4pB,EAET,IAAM3yB,EAAQ2yB,EAAc6H,UAAU,SAAApJ,GAAG,OAAIA,EAAI5O,QAAQ9D,KAAK,SAAAvX,GAAE,OAAIA,IAAO4B,EAAK5B,OAKhF,OAJInH,GAAS,IACX2yB,EAAc3yB,GAAO8M,WAAY,EACjC6lB,EAAc3yB,GAAO8jB,UAAW,GAE3B6O,I,oCAMmBxB,GAC1B,IAAM0tB,EAAYxyC,GAAOC,aAAa7I,OAAOsF,KACvC6Y,EAAQ+7B,EAAiBW,WAAWntB,GAM1C,OAJIvP,EAAMi9B,KACRj9B,EAAMi9B,GAAW/xC,WAAY,EAC7B8U,EAAMi9B,GAAW/6B,UAAW,GAEvBlC,I,2CAM0BuP,GACjC,IAAM0tB,EAAYxyC,GAAOC,aAAa7I,OAAOsF,KACvC+1C,EAAmBzyC,GAAOC,aAAa7I,OAAO2R,YAC9CwM,EAAQ+7B,EAAiBY,kBAAkBptB,GAC3CpoB,EAAO6Y,EAAMi9B,GAEnB,IAAK91C,EACH,OAAO6Y,EAIT,IAAM5hB,EAAgB+I,EAAKnI,SAAS45B,UAClC,SAAApJ,GAAG,OAAIA,EAAIroB,KAAK+C,OAAS+yC,GAAaztB,EAAItlB,OAASgzC,IAarD,OAVI9+C,GAAS,IAEX4hB,EAAMi9B,GAAWj+C,SAASZ,GAAO8M,WAAY,EAC7C8U,EAAMi9B,GAAWj+C,SAASZ,GAAO8jB,UAAW,EAE5ClC,EAAMi9B,GAAWj+C,SAAW+8C,EAAiBgB,iBAC3C/8B,EAAMi9B,GAAWj+C,SACjBZ,IAGG4hB,I,wCAGuBqf,EAAgCvW,EAAoBE,GAClF,MACgB,eAAbF,GAA6BuW,EAAepf,WAAWnD,KAAK,SAAA0S,GAAG,OAAIA,EAAItkB,aAC1D,YAAb4d,GAA0BuW,EAAe5Q,QAAQ3R,KAAK,SAAA0S,GAAG,OAAIA,EAAItkB,aACpD,UAAb4d,GAAwBuW,EAAetO,cAAcjU,KAAK,SAAA0S,GAAG,OAAIA,EAAItkB,aACtE8d,I,+CAImChJ,GACrC,OAAO7lB,OAAOm0B,OAAOtO,GAAOlD,KAAK,SAAA3V,GAAI,OAAIA,EAAK+D,c,uCAMhBokB,EAAsC6tB,GACpE,OAAOpB,EAAiBqB,cAAc9tB,EAAO6tB,EAAkB,SAAAh0C,GAAI,aAC9DA,EAD8D,CAEjE+B,WAAW,EACXgX,UAAU,U,GAxM8B,I,8jBCCzB,G,qHACa1G,GAC9B,IAAMyE,EAAao9B,EAAeC,kBAAkB9hC,EAAWyE,YACzDwO,EAAU4uB,EAAeE,eAAe/hC,EAAWiT,SACnDuC,EAAkBqsB,EAAeG,oBAAoB/uB,GACrDsC,EAAgBssB,EAAeI,qBAAqBjiC,EAAWkiC,oBACrE,MAAO,CACL3sB,gBACA9Q,aACAwO,UACAuC,qB,qCAWa,IANfhR,EAMe,EANfA,MACA+Q,EAKe,EALfA,cACA9Q,EAIe,EAJfA,WACAwO,EAGe,EAHfA,QACAuC,EAEe,EAFfA,gBACAxH,EACe,EADfA,WAEA,MAAO,CACLxJ,MAAO,GAAQ29B,cAAc39B,GAC7B+Q,cAAe,GAAQ5H,YAAY4H,GACnC9Q,WAAY,GAAQkJ,YAAYlJ,GAChCwO,QAAS,GAAQtF,YAAYsF,GAC7BuC,gBAAiB,GAAQ7H,YAAY6H,GACrCxH,WAAY,GAAQm0B,cAAcn0B,M,wCAINxJ,GAC9B,IAAMi9B,EAAYxyC,GAAOC,aAAa7I,OAAOsF,KACvC+1C,EAAmBzyC,GAAOC,aAAa7I,OAAO2R,YAC9CrM,EAAO6Y,EAAMi9B,GACnB,GAAK91C,EAAL,CAQA,IALA,IAAM8kB,EAAe9kB,EAAKnI,SACpBZ,EAAQ6tB,EAAa2M,UAAU,SAAApJ,GAAG,OAAIA,EAAIroB,KAAK+C,OAAS+yC,GAAaztB,EAAItlB,OAASgzC,IAClFU,EAA2B13B,SAAS,IAAkD,IACxF23B,EAAyB,EAEpB7jD,EAAIoE,EAAOpE,GAAK,EAAGA,IAAK,CAC/B,IAAMwZ,EAAcyY,EAAajyB,GACjC,GAAIA,IAAMoE,IAGNoV,EAAYrM,KAAK+C,OAAS+yC,IAC5BzpC,EAAYq+B,SAAU,EAChBr+B,EAAY6Y,WAAa7Y,EAAYq+B,SACzCgM,KAGAA,IAA2BD,GAC7B,MAKJ,IAFA,IAAIE,EAAwB,EAEnB,EAAI1/C,EAAO,EAAI6tB,EAAa/xB,OAAQ,IAAK,CAChD,IAAM,EAAc+xB,EAAa,GACjC,GAAI,IAAM7tB,IAGN,EAAY+I,KAAK+C,OAAS+yC,IAC5B,EAAYpL,SAAU,EAChB,EAAYxlB,WAAa,EAAYwlB,SACzCiM,KAGAA,IAA0BF,GAC5B,U,mCAKqB59B,GAA8B,IAAV/D,EAAU,uDAAF,GAC/C8hC,EAAwB,GAe9B,OAdA/9B,EAAMxW,QAAQ,SAAArC,GACZ42C,EAAe52C,EAAK+C,MAApB,MACK/C,EADL,CAEE+D,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACV1U,SAAS,EACTC,kBAAkB,EAClBzO,SAAU,GACVwe,mBAAmB,EACnB8I,UAAW,IACRrK,KAGA8hC,I,0CAIP9xB,EACA9kB,GAEkD,IADlD8U,EACkD,uDAD1C,GACR+hC,EAAkD,uDAAF,GAG5CvT,EAAS,EACPwT,EAA4C,GAoBlD,OAnBAhyB,EAAaziB,QAAQ,SAAAgK,GACNA,EAAY4N,OACzBqpB,IACA,IAAMtgC,EAAU6zC,EAAmBlhC,KAAK,gBAAGjX,EAAH,EAAGA,KAAH,OAAcA,IAAS2N,EAAY3N,OAC3Eo4C,EAAsBzjD,KAAtB,MACKgZ,EADL,CAEErM,OACA5B,GAAIiO,EAAY3N,KAChBqnB,SAAU1Z,EAAY0qC,YACtBhzC,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACV1U,QAASrG,EAAKqG,QACdC,kBAAkB,EAClBg9B,OAAQA,EAAS,EACjBze,UAAW7hB,EAAUA,EAAQg0C,cAAW11C,GACrCwT,MAGAgiC,I,wCAGuBh+B,GAC9B,OAAO9lB,OAAOm0B,OAAOrO,GAAY5U,IAAI,SAAAkV,GAAQ,aACxCA,EADwC,CAE3CrV,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACV1U,SAAS,EACTC,kBAAkB,EAClBmT,QAAS,S,qCAIgB6N,GAC3B,OAAOA,EAAQpjB,IAAI,SAAA6gB,GAAM,aACpBA,EADoB,CAEvBhhB,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACV1U,SAAS,EACTC,kBAAkB,EAClBmT,QAAS,S,2CAIsBw9B,GACjC,OAAOA,EAAQ/yC,IAAI,SAAC0e,EAAQ3rB,GAAT,MAAoB,CACrCmH,GAAInH,EACJtC,KAAMiuB,EACN7e,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACVtB,QAAS,Q,kCAIay9B,EAAqBrrB,GAC7C,IAAMhT,EAAK,MAAeq+B,GAM1B,OALAlkD,OAAOm0B,OAAO0E,GAAUxpB,QAAQ,SAAArC,GACzB6Y,EAAM7Y,EAAK+C,OACd,OAAIzE,IAAIua,EAAO7Y,EAAK+C,KAAM/C,KAGvB6Y,I,iCAIPyoB,EACA6V,EACAt+B,GAEA,IAAM5hB,EAAQqqC,EAAS7P,UAAU,SAAApJ,GAAG,OAAIA,EAAIjqB,KAAO+4C,IAInD,OAHI7V,EAASrqC,KACXqqC,EAASrqC,GAAOwiB,QAAUzmB,OAAOm0B,OAAOtO,GAAO3U,IAAI,SAAAlE,GAAI,OAAIA,EAAK5B,MAE3DkjC,I,0CAGyBha,GAChC,IAAM8vB,EAA+C,GACrD9vB,EAAQjlB,QAAQ,SAAA0iB,GACd,IAAMnC,EAASmC,EAAOpwB,KAAK,GAC3ByiD,EAAcx0B,GAAUw0B,EAAcx0B,IAAW,GACjDw0B,EAAcx0B,GAAQvvB,KAAK0xB,KAG7B,IAAMsyB,EAAgC,GActC,OAbArkD,OAAOsvB,KAAK80B,GACTvjB,OACAxxB,QAAQ,SAACugB,EAAQ3rB,GAChBogD,EAAShkD,KAAK,CACZ+K,GAAInH,EACJtC,KAAMiuB,EACN7e,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACVkN,UAAWmvB,EAAcx0B,GAAQ1e,IAAI,SAAAmkB,GAAG,OAAIA,EAAIjqB,SAI/Ci5C,M,KC7NU,G,0GAyBCvyB,GAClB,IAAM6d,EAA0C,GAQhD,OAPA7d,EACG7hB,OAAO,gBAAG4hC,EAAH,EAAGA,oBAAH,OAAqD,OAAxBA,IACpCxiC,QAAQ,YAA0C,IAAlBihC,EAAkB,EAAvCuB,oBAA6B9hC,EAAU,EAAVA,KAClC4/B,EAASW,KACZX,EAASW,GAAoB,CAAEA,SAAQ3gC,gBAAiBI,MAGvD4/B,I,kCAGW7d,EAAkCsd,GACpD,IAAMnN,EAA0C,GAahD,OAZAnQ,EACG7hB,OACC,SAAAoJ,GAAW,QACPA,EAAY04B,uBACZ3C,EAAeyC,qBACfzC,EAAeyC,sBAAwBx4B,EAAYw4B,uBAExDxiC,QAAQ,YAA0C,IAAlBihC,EAAkB,EAAvCyB,oBAA6BhiC,EAAU,EAAVA,KAClCkyB,EAASqO,KACZrO,EAASqO,GAAoB,CAAEA,SAAQ3gC,gBAAiBI,MAGvDkyB,I,+BAGQnQ,EAAkCsd,GACjD,IAAMW,EAAuC,GAa7C,OAZAje,EACG7hB,OACC,SAAAoJ,GAAW,QACPA,EAAYy4B,oBACZ1C,EAAeyC,qBACfzC,EAAeyC,sBAAwBx4B,EAAYw4B,wBACnDzC,EAAe2C,qBACf3C,EAAe2C,sBAAwB14B,EAAY04B,uBAExD1iC,QAAQ,YAAuC,IAAlBihC,EAAkB,EAApCwB,iBAA0B/hC,EAAU,EAAVA,KACpCggC,EAAMO,GAAoB,CAAEA,SAAQ3gC,gBAAiBI,KAElDggC,K,qCA7DP,OAHKuU,EAAcxtC,WACjBwtC,EAAcxtC,SAAW,IAAIwtC,GAExBA,EAAcxtC,W,gCAGCgb,EAAkCsd,GACxD,IAAKA,EACH,OAAO,KAET,IAAMt4B,EAAWwtC,EAActtC,cAC/B,MAAO,CACL04B,QAASN,EAAeyC,oBACxB/B,KAAMV,EAAe0C,iBACrBhf,QAASsc,EAAe2C,oBACxBpC,SAAU3vC,OAAOm0B,OAAOrd,EAASytC,YAAYzyB,IAC7CmQ,SAAUjiC,OAAOm0B,OAAOrd,EAAS0tC,YAAY1yB,EAAcsd,IAC3DW,MAAO/vC,OAAOm0B,OAAOrd,EAAS2tC,SAAS3yB,EAAcsd,S,mkBCjBtC,G,WAArB,oCAGU,KAAAx4B,WAAyB,IAAI,E,kEAMnC,OAHK8tC,EAAkB5tC,WACrB4tC,EAAkB5tC,SAAW,IAAI4tC,GAE5BA,EAAkB5tC,W,8FAOAC,G,6FACnBD,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAWsjC,QAAQ9+C,QAAQ,QAASkR,IAC1DrM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,yMAGNwX,EAAciP,G,+FACpClP,EAAWzT,KAAK2T,cAChBjP,EAAW,OAAUsZ,WAAWujC,cACnC/+C,QAAQ,QAASkR,GACjBlR,QAAQ,MAAOmgB,EAAW9V,Y,kBACtB4G,EAASF,WACbhN,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,6MAGJwX,EAAcihB,G,6FACtClhB,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAWwjC,kBAAkBh/C,QAAQ,QAASkR,IACpErM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQ,CAAEic,WAAYkS,IACtBluB,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,yMAGRwX,EAAc0d,G,+FAClC3d,EAAWzT,KAAK2T,cAChBjP,EAAW,OAAUsZ,WAAWu+B,YACnC/5C,QAAQ,QAASkR,GACjBlR,QAAQ,MAAO4uB,EAASvkB,Y,kBACpB4G,EAASF,WACbhN,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,yMAGRwX,EAAc6Y,G,+FAClC9Y,EAAWzT,KAAK2T,cAChBjP,EAAW,OAAUsZ,WAAWyjC,YAAYj/C,QAAQ,QAASkR,GAAMlR,QAAQ,UAAW+pB,G,kBACrF9Y,EAASF,WACbhN,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,0MAGPwX,EAAckQ,G,+FACnCnQ,EAAWzT,KAAK2T,cAChBjP,EAAW,OAAUsZ,WAAWyQ,aAAajsB,QAAQ,QAASkR,GAAMlR,QAAQ,MAAOohB,G,kBAClFnQ,EAASF,WACbhN,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,wMAGTwX,EAAcvH,G,+FACjCsH,EAAWzT,KAAK2T,cAChBjP,EAAW,OAAUsZ,WAAW0jC,WAAWl/C,QAAQ,QAASkR,GAAMlR,QAAQ,QAAS2J,G,kBAClFsH,EAASF,WACbhN,YAAY7B,GACZ2C,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1BhG,MACA+K,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,2MAGNwX,EAAcnH,G,6FACpCkH,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAW2jC,iBAAiBn/C,QAAQ,QAASkR,IACnErM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQ,CAAE+C,SAAUmK,EAAMnH,UAC1B9F,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,wMAGTwX,EAAcnH,G,6FACjCkH,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAW4jC,cAAcp/C,QAAQ,QAASkR,IAChErM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQ,CAAE+C,SAAUmK,EAAMnH,UAC1B9F,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,wMAGTwX,EAAcnH,G,6FACjCkH,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAW6jC,cAAcr/C,QAAQ,QAASkR,IAChErM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAAQ,CAAE+C,SAAUmK,EAAMnH,UAC1B9F,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,sMAGXwX,EAAcnH,G,2GAAe0B,E,+BAAsC,GACpFwF,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAW8jC,YAAYt/C,QAAQ,QAASkR,IAC9DrM,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAHI,IAIH+C,SAAUmK,EACVnH,SACG0B,IAEJxH,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,6MAIlCwX,EACAnH,EACAJ,G,2GACA8B,E,+BAAsC,GAEhCwF,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YAAY,OAAUyX,WAAWsS,mBAAmB9tB,QAAQ,QAASkR,GAAMlR,QAAQ,QAAS2J,IAC5F9E,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QAHI,IAIH+C,SAAUmK,EACVnH,SACG0B,IAEJxH,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,qNAIlCwX,EACAnH,EACAJ,G,2GACA8B,E,+BAAsC,GAEhCwF,EAAWzT,KAAK2T,c,kBACfF,EAASF,WACbhN,YACC,OAAUyX,WAAW+jC,yBAAyBv/C,QAAQ,QAASkR,GAAMlR,QAAQ,QAAS2J,IAEvF9E,SAASC,GAAMC,MAAMlB,KAAK1B,OAC1B6B,QALI,IAMH+C,SAAUmK,EACVnH,SACG0B,IAEJxH,OACAiD,KAAK,SAAA7F,GAAQ,OAAIA,EAAS3H,KAAKA,Q,6IA7JlC,OAAO8D,KAAK2T,cAAcJ,WAAW9O,e,mkBCbpB,G,+GACuE,IAAjE+d,EAAiE,EAAjEA,MAAOC,EAA0D,EAA1DA,WAAYwO,EAA8C,EAA9CA,QAASjF,EAAqC,EAArCA,WAAepqB,EAAsB,gEACpFogD,EAAe,GAAQC,WAAWz/B,GACtCw/B,EAAe,GAAQE,kBAAkBF,GACzC,IAAIG,EAAoB,GAAQF,WAAWj2B,GAE3C,OADAm2B,EAAoB,GAAQD,kBAAkBC,GAC9C,MACKvgD,EADL,CAEE4gB,MAAOw/B,EACPh2B,WAAYm2B,EACZ1/B,WAAY,GAAQyJ,SAASzJ,GAC7BwO,QAAS,GAAQ/E,SAAS+E,O,oCAI8D,IAAjEzO,EAAiE,EAAjEA,MAAOC,EAA0D,EAA1DA,WAAYwO,EAA8C,EAA9CA,QAASjF,EAAqC,EAArCA,WAAepqB,EAAsB,gEACtFwgD,EAAiB,GAAQC,aAAa7/B,GAC1C4/B,EAAiB,GAAQE,oBAAoBF,GAC7C,IAAIG,EAAsB,GAAQF,aAAar2B,GAE/C,OADAu2B,EAAsB,GAAQD,oBAAoBC,GAClD,MACK3gD,EADL,CAEE4gB,MAAO4/B,EACPp2B,WAAYu2B,EACZ9/B,WAAY,GAAQ0J,WAAW1J,GAC/BwO,QAAS,GAAQ9E,WAAW8E,O,0CAIEjT,EAA4B2E,GAC5D,IAAM6/B,EAAgBxkC,EAAWyE,WAAW2Y,UAAU,SAAArY,GAAQ,OAAIA,EAAShb,KAAO4a,IAC5EI,EAAW/E,EAAWyE,WAAW+/B,GACjCxyC,GAAW+S,EAAS/S,QACpByyC,EAAoB,GAAmBv/B,qBAAqBlF,EAAWyE,WAAYE,GACnF+/B,EAAgB,IAAIn3C,IAE1ByS,EAAWyE,WAAWzW,QAAQ,SAAA22C,GACvBF,EAAkBz3C,IAAIlH,OAAO6+C,EAAe56C,OAGjD46C,EAAe3yC,QAAUA,EACzB2yC,EAAe1yC,kBAAmB,EAClC0yC,EAAev/B,QAAQpX,QAAQ,SAAA4X,GAAM,OAAI8+B,EAAcp3C,IAAIxH,OAAO8f,SAGpEjnB,OAAOm0B,OAAO9S,EAAWwE,OAAOxW,QAAQ,SAAArC,GACjC+4C,EAAc13C,IAAIlH,OAAO6F,EAAK5B,OAGnC4B,EAAKqG,QAAUA,EACfrG,EAAKsG,kBAAmB,EACxBtG,EAAKnI,SAAWmI,EAAKnI,SAASqM,IAAI,SAAAmI,GAAW,aACxCA,EADwC,CAE3ChG,UACAC,kBAAkB,SAItB2yC,EAAaC,0BAA0B7kC,EAAYwkC,K,sCAGvBxkC,EAA4B7R,GACxD,IAAMxC,EAAOqU,EAAWwE,MAAMrW,GACxB6D,GAAWrG,EAAKqG,QAGtBgO,EAAWwE,MAAMrW,GAAU8D,kBAAmB,EAC9C+N,EAAWwE,MAAMrW,GAAU6D,QAAUA,EAGrCgO,EAAWwE,MAAMrW,GAAU3K,SAAWwc,EAAWwE,MAAMrW,GAAU3K,SAASqM,IAAI,SAAAmI,GAAW,OACtFA,EAAY0Z,SAAkE1Z,EAA/E,MAA6BA,EAA7B,CAA0ChG,UAASC,kBAAkB,MAIvE,IAAMuyC,EAAgBxkC,EAAWyE,WAAW2Y,UAAU,SAAArY,GAAQ,OAAIA,EAASK,QAAQpE,SAASrV,EAAK5B,MACjG66C,EAAaE,kBAAkB9kC,EAAYwkC,GAG3CI,EAAaC,0BAA0B7kC,EAAYwkC,K,2CAGlBxkC,EAA4B7R,GAC7D,IAAMxC,EAAOqU,EAAWgO,WAAW7f,GAC7B6D,GAAWrG,EAAKqG,QAGtBgO,EAAWgO,WAAW7f,GAAU8D,kBAAmB,EACnD+N,EAAWgO,WAAW7f,GAAU6D,QAAUA,EAG1CgO,EAAWgO,WAAW7f,GAAU3K,SAAWwc,EAAWgO,WAAW7f,GAAU3K,SAASqM,IAAI,SAAAmI,GAAW,aAC9FA,EAD8F,CAEjGhG,UACAC,kBAAkB,Q,6CAIe+N,EAA4BqR,EAAuBljB,GACtF,IAAMxC,EAAOqU,EAAWwE,MAAMrW,GACxBizC,EAAmBz1C,EAAKnI,SAAS45B,UAAU,SAAAplB,GAAW,OAAIA,EAAYjO,KAAOsnB,IAC7ErZ,EAAcgI,EAAWwE,MAAMrW,GAAU3K,SAAS49C,GAClDpvC,GAAWgG,EAAYhG,QAG7BgO,EAAWwE,MAAMrW,GAAU3K,SAAS49C,GAAkBnvC,kBAAmB,EACzE+N,EAAWwE,MAAMrW,GAAU3K,SAAS49C,GAAkBpvC,QAAUA,EAGhE,GAAQ+yC,eAAe/kC,EAAWwE,MAAMrW,GAAU3K,SAAU49C,EAAkB,SAAAzzC,GAAI,aAC7EA,EAD6E,CAEhFqE,UACAC,kBAAkB,MAIpB,GAAQ2vC,cAAc5hC,EAAWwE,MAAMrW,GAAU3K,SAAU49C,EAAkB,SAAA4D,GAE3E,IAAMxhD,EAAWmI,EAAKnI,SAASoL,OAAO,SAAAggB,GAAK,OAAIA,EAAM8C,WAAaszB,EAAiBj7C,KAEnF,OAAO66C,EAAaK,oBAAoBD,EAAiCxhD,KAI3E,IAAMitB,EAAe9kB,EAAKnI,SAASoL,OACjC,SAAAo2C,GAAgB,OAAKA,EAAiBtzB,UAAYszB,EAAiBn0B,YAErE+zB,EAAaK,oBAAoBjlC,EAAWwE,MAAMrW,GAAWsiB,GAE7D,IAAM+zB,EAAgBxkC,EAAWyE,WAAW2Y,UAAU,SAAArY,GAAQ,OAAIA,EAASK,QAAQpE,SAASrV,EAAK5B,MAC7Fy6C,GAAiB,IAEnBxiD,KAAK8iD,kBAAkB9kC,EAAYwkC,GAGnCxiD,KAAK6iD,0BAA0B7kC,EAAYwkC,M,kDAK7CxkC,EACAqR,EACAljB,GAEA,IAAMxC,EAAOqU,EAAWgO,WAAW7f,GAC7BizC,EAAmBz1C,EAAKnI,SAAS45B,UAAU,SAAAplB,GAAW,OAAIA,EAAYjO,KAAOsnB,IAC7ErZ,EAAcgI,EAAWgO,WAAW7f,GAAU3K,SAAS49C,GACvDpvC,GAAWgG,EAAYhG,QAG7BgO,EAAWgO,WAAW7f,GAAU3K,SAAS49C,GAAkBnvC,kBAAmB,EAC9E+N,EAAWgO,WAAW7f,GAAU3K,SAAS49C,GAAkBpvC,QAAUA,EAGrE,GAAQ+yC,eAAe/kC,EAAWgO,WAAW7f,GAAU3K,SAAU49C,EAAkB,SAAAzzC,GAAI,aAClFA,EADkF,CAErFqE,UACAC,kBAAkB,MAIpB,GAAQ2vC,cAAc5hC,EAAWgO,WAAW7f,GAAU3K,SAAU49C,EAAkB,SAAA4D,GAEhF,IAAMxhD,EAAWmI,EAAKnI,SAASoL,OAAO,SAAAggB,GAAK,OAAIA,EAAM8C,WAAaszB,EAAiBj7C,KAEnF,OAAO66C,EAAaK,oBAAoBD,EAAiCxhD,KAI3E,IAAMitB,EAAe9kB,EAAKnI,SAASoL,OACjC,SAAAo2C,GAAgB,OAAKA,EAAiBtzB,UAAYszB,EAAiBn0B,YAErE+zB,EAAaK,oBAAoBjlC,EAAWgO,WAAW7f,GAAWsiB,K,wCAGnCzQ,EAA4BwkC,GAC3D,KAAIA,EAAgB,GAApB,CAGA,IAAMU,EAAkBllC,EAAWyE,WAAW+/B,GAAep/B,QACvDm+B,EAAgB5kD,OAAOm0B,OAAO9S,EAAWwE,OAAO5V,OAAO,SAAAjD,GAAI,OAAIu5C,EAAgBlkC,SAASrV,EAAK5B,MAC7FvG,EAAWwc,EAAWyE,WAAW7V,OACrC,SAAAu2C,GAAa,OAAIA,EAAcngC,YAAchF,EAAWyE,WAAW+/B,GAAez6C,KAEpF66C,EAAaK,oBAAoBjlC,EAAWyE,WAAW+/B,GAAvD,0BAA2EhhD,GAA3E,gBAAwF+/C,Q,gDAGjDvjC,EAA4BwkC,GAC/DA,EAAgB,GAGpB,GAAQ5C,cAAc5hC,EAAWyE,WAAY+/B,EAAe,SAAAz/B,GAE1D,IAAMw+B,EAAgB5kD,OAAOm0B,OAAO9S,EAAWwE,OAAO5V,OAAO,SAAAjD,GAAI,OAC/DoZ,EAASK,QAAQpE,SAASrV,EAAK5B,MAE3BvG,EAAWwc,EAAWyE,WAAW7V,OAAO,SAAAu2C,GAAa,OAAIA,EAAcngC,YAAcD,EAAShb,KACpG,OAAO66C,EAAaK,oBAAoBlgC,EAAjC,0BAA2DvhB,GAA3D,gBAAwE+/C,S,0CAIhDrW,EAA4B1pC,GAC7D,IAAM4hD,EAAkB5hD,EAASoL,OAAO,SAAAggB,GAAK,OAAIA,EAAM5c,UACjDqzC,EAA2B7hD,EAASoL,OAAO,SAAAggB,GAAK,OAAIA,EAAM3c,mBAKhE,OAJAi7B,EAAOl7B,QAAUozC,EAAgB1mD,SAAW8E,EAAS9E,OACrDwuC,EAAOj7B,iBACJmzC,EAAgB1mD,OAAS,GAAK0mD,EAAgB1mD,OAAS8E,EAAS9E,QACjE2mD,EAAyB3mD,OAAS,EAC7BwuC,M,KCpNU,G,wHAIgBzoB,EAA6BE,GAC9D,IAAM/hB,EAAQ6hB,EAAW2Y,UAAU,SAAArY,GAAQ,OAAIJ,IAAeI,EAAShb,KACnEnH,GAAS,IACX6hB,EAAW7hB,GAAO8jB,UAAYjC,EAAW7hB,GAAO8jB,Y,yCAOnBuM,EAAwBG,GACvD,IAAMxwB,EAAQqwB,EAAQmK,UAAU,SAAA1M,GAAM,OAAI0C,IAAa1C,EAAO3mB,KAC1DnH,GAAS,IACXqwB,EAAQrwB,GAAO8jB,UAAYuM,EAAQrwB,GAAO8jB,Y,yCAObk8B,EAA2C0C,GAC1E,IAAM1iD,EAAQggD,EAAQxlB,UAAU,SAAA7O,GAAM,OAAI+2B,IAAa/2B,EAAOxkB,KAC1DnH,GAAS,IACXggD,EAAQhgD,GAAO8jB,UAAYk8B,EAAQhgD,GAAO8jB,Y,uCAOflC,EAAcrW,GAC3CqW,EAAMrW,GAAUuY,UAAYlC,EAAMrW,GAAUuY,W,8CAMRlC,EAAc6M,EAAuBljB,GACzE,IAAMvL,EAAQ4hB,EAAMrW,GAAU3K,SAAS45B,UAAU,SAAAplB,GAAW,OAAIqZ,IAAkBrZ,EAAYjO,KAC1FnH,GAAS,IACX4hB,EAAMrW,GAAU3K,SAASZ,GAAO8jB,UAAYlC,EAAMrW,GAAU3K,SAASZ,GAAO8jB,Y,mDAOrClC,EAAc6M,EAAuBljB,GAC9E,GAAKqW,EAAMrW,GAAX,CAGA,IAAMvL,EAAQ4hB,EAAMrW,GAAU3K,SAAS45B,UAAU,SAAAplB,GAAW,OAAIqZ,IAAkBrZ,EAAYjO,KAC1FnH,GAAS,IACX4hB,EAAMrW,GAAU3K,SAASZ,GAAO8jB,UAAYlC,EAAMrW,GAAU3K,SAASZ,GAAO8jB,e,+jBCzBlF,IAAM6+B,GAA8B,CAClC/gC,MAAO,GACP+Q,cAAe,GACf9Q,WAAY,GACZwO,QAAS,GACTuC,gBAAiB,GACjBxH,WAAY,GACZpf,OAAQ,CAEN+nB,YAAa,GACb/C,UAAW,GACXgD,UAAW,KAIT,GAAyB,CAK7BrrB,SAAU,GACVjJ,SAAS,EACTkD,OAAO,EACPtH,KAAM,CACJ05B,GAAI2tB,GACJ1tB,GAAI0tB,GACJC,GAAID,IAENj0B,uBAAuB,EACvBhE,SAAUpiB,GACVsiB,YAAa,IAGT,GAAkD,CAChDrgB,MADgD,qEACvB5B,GADuB,+FACxC1B,EADwC,EACxCA,OAAQN,EADgC,EAChCA,MAGpBM,EAAO,cAAc,GACrBA,EAAO,YAAY,GALiC,kBAM7C,GAAkB47C,cAAcl6C,GACpCG,KAAK,SAACg6C,GAEL,IAAI7hB,EAAiB,GAAe8hB,kBAAkBD,GAEtD7hB,EAAiB,GAAiBtQ,mBAAjB,MAEVhqB,EAAMrL,KAAKqL,EAAMgC,UAFP,GAGVs4B,GAELt6B,EAAM+jB,SACN/jB,EAAMikB,aAGR3jB,EAAO,uBAAwBg6B,KAEhCz3B,MAAM,SAAAoH,GACA,EAAA7N,EAAMC,SAAS4N,KAElBmhC,QAAQnvC,MAAMgO,GACd3J,EAAO,WAAY2J,MAGtBowB,QAAQ,WAC8B,IAAjC,GAAkBn9B,YACpBoD,EAAO,cAAc,MA/ByB,oGAoChD+oB,mBApCgD,mLAoC3B/oB,EApC2B,EAoC3BA,OAAQN,EApCmB,EAoCnBA,MAAWgC,EApCQ,EAoCRA,SAAUoZ,EApCF,EAoCEA,WApCF,SAqClB,GAAkBihC,iBAAiBr6C,EAAUoZ,GArC3B,gBAqCrC6S,EArCqC,EAqC5ChT,MACF+9B,EAAiB,GAAesD,aAAaruB,GAC/CqM,EAvCgD,MAwC/Ct6B,EAAMrL,KAAKqL,EAAMgC,UAxC8B,CAyClDiZ,MAAO,GAAeshC,YAAYv8C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAO+9B,GACpE99B,WAAY,GAAeshC,WAAWx8C,EAAMrL,KAAKqL,EAAMgC,UAAUkZ,WAAYE,EAAY49B,KAEvF,GAAiBzB,kBAAkBjd,EAAgBt6B,EAAM+jB,SAAU/jB,EAAMikB,eAC3EqW,EAAerf,MAAQ,GAAiBu8B,cAAcld,EAAerf,QAEvE3a,EAAO,uBAAwBg6B,GA/CqB,qGAkDhDmiB,qBAlDgD,qLAkDzBn8C,EAlDyB,EAkDzBA,OAAQN,EAlDiB,EAkDjBA,MAAWgC,EAlDM,EAkDNA,SAAUorB,EAlDJ,EAkDIA,YAlDJ,SAmDW,GAAkBsvB,mBAC/E16C,EACAorB,GArDkD,gBAmDrCa,EAnDqC,EAmD5ChT,MAA6B0gC,EAnDe,EAmD3BzgC,WAInB89B,EAAiB,GAAesD,aAAaruB,GAC7C/S,EAAa,GAAmByhC,0BACpC38C,EAAMrL,KAAKqL,EAAMgC,UAAUkZ,WAC3BkS,EACAuuB,GAEFr7C,EAAO,uBAAD,MACDN,EAAMrL,KAAKqL,EAAMgC,UADhB,CAEJiZ,MAAO,GAAeshC,YAAYv8C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAO+9B,GACpE99B,gBAhEkD,qGAoEhDkO,wBApEgD,qEAoEKhO,GApEL,qGAoEtB9a,EApEsB,EAoEtBA,OAAQ8J,EApEc,EAoEdA,SAAUpK,EApEI,EAoEJA,MAC1CrL,EAAOqL,EAAMrL,KAAKqL,EAAMgC,UACxBwZ,EAAW7mB,EAAKumB,WAAWnD,KAAK,SAAA3T,GAAI,OAAIA,EAAK5D,KAAO4a,IACrDI,EAvE+C,oDA0E9CohC,GAAqBphC,EAAS/S,QACpCnI,EAAO,sBAAuB8a,IAC1BwhC,EA5EgD,oBA6E5CC,EAAsB,GAAmBC,2BAA2BnoD,EAAKumB,WAAYE,IACvFyhC,EAAoB1nD,OA9E0B,kCA+E1CiV,EAAS,uBAAwB,CACrCpI,SAAUhC,EAAMgC,SAChBorB,YAAayvB,IACZh6C,MAAM,cAlFuC,qGAyFhD+mB,iBAzFgD,mLAyF7BtpB,EAzF6B,EAyF7BA,OAAQN,EAzFqB,EAyFrBA,MAAWgC,EAzFU,EAyFVA,SAAU6nB,EAzFA,EAyFAA,SAzFA,SA0FlB,GAAkBkzB,eAAe/6C,EAAU6nB,GA1FzB,gBA0FrCoE,EA1FqC,EA0F5ChT,MACF+9B,EAAiB,GAAesD,aAAaruB,GAC/CqM,EA5FgD,MA6F/Ct6B,EAAMrL,KAAKqL,EAAMgC,UA7F8B,CA8FlDiZ,MAAO,GAAeshC,YAAYv8C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAO+9B,GACpEtvB,QAAS,GAAe8yB,WAAWx8C,EAAMrL,KAAKqL,EAAMgC,UAAU0nB,QAASG,EAAUmvB,KAE/E,GAAiBzB,kBAAkBjd,EAAgBt6B,EAAM+jB,SAAU/jB,EAAMikB,eAC3EqW,EAAerf,MAAQ,GAAiBu8B,cAAcld,EAAerf,QAEvE3a,EAAO,uBAAwBg6B,GApGqB,qGAuGhDnQ,iBAvGgD,qLAuG7B7pB,EAvG6B,EAuG7BA,OAAQN,EAvGqB,EAuGrBA,MAAWgC,EAvGU,EAuGVA,SAAUooB,EAvGA,EAuGAA,WAvGA,SAwGlB,GAAkB4yB,eAAeh7C,EAAUooB,GAxGzB,gBAwGrC6D,EAxGqC,EAwG5ChT,MACF+9B,EAAiB,GAAesD,aAAaruB,GAC/CqM,EA1GgD,MA2G/Ct6B,EAAMrL,KAAKqL,EAAMgC,UA3G8B,CA4GlDiZ,MAAO,GAAeshC,YAAYv8C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAO+9B,KAEhEh0B,EAAShlB,EAAMrL,KAAKqL,EAAMgC,UAAUgqB,cAAcjU,KAAK,SAAA0S,GAAG,OAAIA,EAAI1zB,OAASqzB,IAC7EpF,IACFsV,EAAetO,cAAgB,GAAewwB,WAC5Cx8C,EAAMrL,KAAKqL,EAAMgC,UAAUgqB,cAC3BhH,EAAOxkB,GACPw4C,IAGA,GAAiBzB,kBAAkBjd,EAAgBt6B,EAAM+jB,SAAU/jB,EAAMikB,eAC3EqW,EAAerf,MAAQ,GAAiBu8B,cAAcld,EAAerf,QAEvE3a,EAAO,uBAAwBg6B,GAzHqB,qGA4HhDtR,kBA5HgD,qLA4H5B1oB,EA5H4B,EA4H5BA,OAAQN,EA5HoB,EA4HpBA,MAAWgC,EA5HS,EA4HTA,SAAU4C,EA5HD,EA4HCA,SA5HD,SA6HS,GAAkBq4C,gBAC7Ej7C,EACA4C,GA/HkD,gBA6H5C6T,EA7H4C,EA6H5CA,kBAAmB8I,EA7HyB,EA6HzBA,UAAW2F,EA7Hc,EA6HdA,aAIlCoT,EAjIgD,MAiI1Bt6B,EAAMrL,KAAKqL,EAAMgC,WAC3Cs4B,EAAerf,MAAMrW,GAAU3K,SAAW,GAAeijD,oBACvDh2B,EACAoT,EAAerf,MAAMrW,IAEvB01B,EAAerf,MAAMrW,GAAU2c,UAAYA,EAC3C+Y,EAAerf,MAAMrW,GAAU6T,kBAAoBA,EAC/C,GAAiB0kC,yBAAyB7iB,EAAerf,SAC3Dqf,EAAerf,MAAQ,GAAiBw8B,qBAAqBnd,EAAerf,QAE9E3a,EAAO,uBAAwBg6B,GA3IqB,qGA8IhDpO,0BA9IgD,yMA8IpB5rB,EA9IoB,EA8IpBA,OAAQ8J,EA9IY,EA8IZA,SAAUpK,EA9IE,EA8IFA,MAAWgC,EA9IT,EA8ISA,SAAU4C,EA9InB,EA8ImBA,SA9InB,kBAgJzB,GAAkBw4C,cAAcp7C,EAAU4C,GAhJjB,UAgJ5Cu1C,EAhJ4C,QAiJ9Cn6C,EAAM/D,MAjJwC,oDAoJ5Cq+B,EAAiBt6B,EAAMrL,KAAKqL,EAAMgC,UAChCgqB,EAAkBsO,EAAlBtO,cACFhH,EAASgH,EAAcjU,KAAK,SAAA0S,GAAG,OAAIA,EAAI1zB,OAASojD,EAAWn1B,SAC5DA,EAvJ6C,uBAwJ1C,IAAIvmB,MAAJ,iCAAoC07C,EAAWn1B,SAxJL,WA2JlDA,EAAO7H,UAAW,EAClB6H,EAAO7e,WAAY,EACnB7F,EAAO,uBAAwB,CAAE0rB,kBAI5BhsB,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAMrW,GAjKY,kCAkK1CwF,EAAS,mBAAoB,CAAEpI,WAAUooB,WAAYpF,EAAOjuB,OAlKlB,WAoK9CqL,EAAOpC,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAMrW,GACvCxC,EArK6C,iBAsK1Ci7C,EAtK0C,2BAuK1ClD,EAAWj/B,YAAc,IAAI5U,IAAI,SAAC8U,GAAD,MAAyB,CAC5DkiC,OAAQ,qBACR99C,QAAS,CAAEwC,WAAUoZ,kBAzKuB,iBA2K1C++B,EAAWzwB,SAAW,IAAIpjB,IAAI,SAACujB,GAAD,MAAuB,CACvDyzB,OAAQ,mBACR99C,QAAS,CAAEwC,WAAU6nB,iBA7KuB,+BAgL3BwzB,EAhL2B,0EAgLrCE,EAhLqC,kBAiLxCnzC,EAASmzC,EAAOD,OAAQC,EAAO/9C,SAjLS,WAkL9C4C,EAAOpC,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAMrW,IACpCxC,EAnL0C,kUAwL7CA,IACGo7C,EAAc,GAAelB,aAAa,CAC9C,CACE97C,GAAI25C,EAAW35C,GACfzJ,KAAMojD,EAAWpjD,MAAQ6N,EACzBO,KAAMP,EACNsW,WAAYi/B,EAAWj/B,YAAc,GACrCwO,QAASywB,EAAWzwB,SAAW,GAC/B1nB,WACAy7C,oBAAqB,EACrBhjB,aAAc0f,EAAW1f,WACzB8L,aAAc,GACdmX,eAAgB,GAChBhkD,OAAQ,YACRwrB,aAAa,EACb/e,WAAW,EACX+L,SAAS,EACTiL,UAAU,EACVljB,SAAU,GACVwO,SAAS,EACTC,kBAAkB,EAClB+P,mBAAmB,EACnB8I,UAAW,MAGT,EAzBG,MA0BJvhB,EAAMrL,KAAKqL,EAAMgC,UA1Bb,CA2BPiZ,MAAO,GAAeshC,YAAYv8C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAOuiC,KAEtEl9C,EAAO,uBAAwB,GAC/B8B,EAAO,EAAe6Y,MAAMrW,IAEzBxC,EAxN6C,uBAyN1C,IAAI3D,MAAJ,mCAAsCumB,EAAOjuB,KAA7C,aAAsD6N,IAzNZ,WA2NlDxC,EAAK+a,UAAW,EAChB/a,EAAK+D,WAAY,EACjB7F,EAAO,uBAAwB,CAAE2a,MAAOjb,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,QAE9D7Y,EAAKnI,SAAS9E,OA/N+B,kCAgO1CiV,EAAS,oBAAqB,CAAEpI,WAAU4C,aAhOA,QAkOlDtE,EAAO,sBAlO2C,qDAoO7C,EAAAlE,EAAMC,SAAN,QACH+uC,QAAQnvC,MAAR,MACAqE,EAAO,WAAD,OAtO0C,6IA8OhD+E,OA9OgD,4KA8OvC/E,EA9OuC,EA8OvCA,OAAQN,EA9O+B,EA8O/BA,MAAWgC,EA9OoB,EA8OpBA,SAAUgD,EA9OU,EA8OVA,MACtC24C,EAMA,GACEC,EAAY59C,EAAMrL,KAAKqL,EAAMgC,UAC/BqD,EAA+Bu4C,EAAUv4C,OACzCw4C,EAxPgD,MAwPvBD,EAAU3iC,OAxPa,KA0P5Cjb,EAAM+jB,SA1PsC,OA2P7C,eA3P6C,OA8P7C,YA9P6C,QAoQ7C,UApQ6C,yCA4P7B,GAAkBq2B,iBAAiBp4C,EAAUgD,GA5PhB,eA4PhD24C,EA5PgD,qDA+P7B,GAAkBtD,cAAcr4C,EAAUgD,GA/Pb,eA+PhD24C,EA/PgD,OAgQ9BC,EAAUl0B,QAAQrkB,OAClC,SAAA8hB,GAAM,OAAIw2B,EAAWj0B,SAAWi0B,EAAWj0B,QAAQjS,SAAS0P,EAAO3mB,MAjQrB,8CAqQ7B,GAAkB85C,cAAct4C,EAAUgD,GArQb,eAqQhD24C,EArQgD,oCAyQpDt4C,EAAO+nB,YAAcuwB,EAAWziC,YAAc,GAC9C7V,EAAOglB,UAAYszB,EAAWj0B,SAAW,GACzCrkB,EAAOgoB,UAAY,GACfswB,EAAW1iC,QACb5V,EAAOgoB,UAAYswB,EAAW1iC,MAAM3U,IAAI,SAAAlE,GAAI,OAAIA,EAAK+C,OACrD04C,EAAa,MAAKA,EAAR,GAAuB,GAAevB,aAAaqB,EAAW1iC,SAG1E3a,EAAO,uBAAwB,CAAE+E,SAAQ4V,MAAO4iC,IAjRI,qGAuRhDtD,YAvRgD,2KAuRlCj6C,EAvRkC,EAuRlCA,OAAQ0+B,EAvR0B,EAuR1BA,QAAS8e,EAvRiB,EAuRjBA,UAAe97C,EAvRE,EAuRFA,SAAUgD,EAvRR,EAuRQA,MAAU3K,EAvRlB,uCAwRpDiG,EAAO,cAAc,GACrBA,EAAO,mBAAmB,EAAO,CAAEC,MAAM,KACrCu9C,EAAUn3C,OAAOkS,gBAAmBmmB,EAAQ+e,mBA1RI,gBA4RlDz9C,EAAO,uBAAwB,CAAEmkB,WAAY,KAC7CnkB,EAAO,cAAc,GA7R6B,gDA+R3C,GAAkBi6C,YAAYv4C,EAAUgD,EAAO3K,GACnD8H,KAAK,SAAA8Y,GAEJ3a,EAAO,uBAAwB,CAC7BmkB,WAAY,GAAe63B,aAAarhC,EAAO,CAAExS,SAAS,QAG7D5F,MAAM,SAAAoH,GACA,EAAA7N,EAAMC,SAAS4N,IAElB3J,EAAO,mBAAmB,EAAM,CAAEC,MAAM,MAG3C85B,QAAQ,WAC8B,IAAjC,GAAkBn9B,YACpBoD,EAAO,cAAc,MA9SuB,qGAuThDyoB,mBAvTgD,qLAuT3BzoB,EAvT2B,EAuT3BA,OAAQN,EAvTmB,EAuTnBA,MAAWgC,EAvTQ,EAuTRA,SAAUgD,EAvTF,EAuTEA,MAAOJ,EAvTT,EAuTSA,SAAavK,EAvTtB,2DAwTzB,GAAkB0uB,mBAAmB/mB,EAAUgD,EAAOJ,EAAUvK,GAxTvC,cAwT9C6sB,EAxT8C,gBAyTnB,GAAkBszB,yBACjDx4C,EACAgD,EACAJ,EACAvK,GA7TkD,OAyT9C4+C,EAzT8C,OA+T9C72C,EAAOpC,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAAW7f,GACnD5E,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAAW7f,GAAU3K,SAAW,GAAeijD,oBACxEh2B,EACA9kB,EACA,CAAEqG,SAAS,GACXwwC,GAEF34C,EAAO,uBAAwBN,EAAMrL,KAAKqL,EAAMgC,WAtUI,sGA0UlD,GAA2C,CAC/Cg8C,qBAD+C,SAC1Bh+C,EAAwBs6B,GAC3Ct6B,EAAMrL,KAAKqL,EAAMgC,UAAjB,MAAkChC,EAAMrL,KAAKqL,EAAMgC,UAAnD,GAAiEs4B,IAEnEnlB,YAJ+C,SAInCnV,EAAwBgC,GAClChC,EAAMgC,SAAWA,GAEnBi8C,WAP+C,SAOpCj+C,EAAwBjH,GACjCiH,EAAMjH,QAAUA,GAElBmlD,SAV+C,SAUtCl+C,EAAwB/D,GAC/B+D,EAAM/D,MAAQA,GAEhB+tB,mBAb+C,SAa5BhqB,GACjBA,EAAMrL,KAAKqL,EAAMgC,UAAY,GAAiBgoB,mBAC5ChqB,EAAMrL,KAAKqL,EAAMgC,UACjBhC,EAAM+jB,SACN/jB,EAAMikB,cAGVkF,qBApB+C,SAoB1BnpB,EAAwBob,GAC3C,GAAc+N,qBAAqBnpB,EAAMrL,KAAKqL,EAAMgC,UAAUkZ,WAAYE,IAE5EuO,mBAvB+C,SAuB5B3pB,EAAwB6pB,GACzC,GAAcF,mBAAmB3pB,EAAMrL,KAAKqL,EAAMgC,UAAU0nB,QAASG,IAEvEjB,iBA1B+C,SA0B9B5oB,EAAwB4E,GACvC,GAAcgkB,iBAAiB5oB,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAOrW,IAEnE+jB,sBA7B+C,SA6BzB3oB,EAAwB4E,GAC5C,GAAcgkB,iBAAiB5oB,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAAY7f,IAExEijB,wBAhC+C,SAiC7C7nB,EAjC6C,GAsCwB,IAHnE8nB,EAGmE,EAHnEA,cACAljB,EAEmE,EAFnEA,SACA6iB,EACmE,EADnEA,YAGEznB,EAAM+nB,wBAA0BN,EAClC,GAAc02B,6BACZn+C,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAC3BqD,EACAljB,GAGF,GAAcijB,wBAAwB7nB,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,MAAO6M,EAAeljB,IAG3FqlB,uBAlD+C,SAkDxBjqB,EAAwB+7C,GAC7C,GAAcqC,mBAAmBp+C,EAAMrL,KAAKqL,EAAMgC,UAAUgqB,cAAe+vB,IAE7E7xB,yBArD+C,SAqDtBlqB,EAAwB+7C,GAC/C,GAAcqC,mBAAmBp+C,EAAMrL,KAAKqL,EAAMgC,UAAUiqB,gBAAiB8vB,IAE/E33B,YAxD+C,SAwDnCpkB,GACVA,EAAMrL,KAAKqL,EAAMgC,UAAjB,MACKhC,EAAMrL,KAAKqL,EAAMgC,UADtB,GAEK,GAAeoiB,YAAYpkB,EAAMrL,KAAKqL,EAAMgC,aAGnDq8C,iBA9D+C,SA8D9Br+C,EAAwB4E,GACvC,IAAM05C,EAAmB,SAAnBA,EAAoBjnB,GACxBA,EAAS5yB,QAAQ,SAAAyjB,GACfA,EAAQ/K,UAAW,EACnBmhC,EAAiBp2B,EAAQjuB,UAAY,OAGnCskD,EAAe,SAACtjC,GACpB,IAAM7Y,EAAO6Y,EAAMrW,GACdxC,IAGLA,EAAK+a,UAAW,EAChBmhC,EAAiBl8C,EAAKnI,UAAY,MAEpCskD,EAAav+C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,OACxCsjC,EAAav+C,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,aAE1C+5B,sBAhF+C,SAgFzBx+C,EAAwBy+C,GAC5C,IAAM9pD,EAAOqL,EAAMrL,KAAKqL,EAAMgC,UACxBorB,EAAc,IAAIppB,IAAIy6C,EAASvjC,YAAc,IAC7CmP,EAAY,IAAIrmB,IAAIy6C,EAAS/0B,SAAW,IACxCg1B,EAAgB,IAAI16C,IAAIy6C,EAAStnB,aAAe,IAChDwnB,EAAkB,IAAI36C,IAAIy6C,EAASrnB,eAAiB,IACpD/J,EAAY,IAAIrpB,IAAIy6C,EAASxjC,OAAS,IACtC2jC,EAAiB,IAAI56C,IAAIy6C,EAASh6B,YAAc,IAChDo6B,EAAc,IAAI76C,IAAIy6C,EAASpnB,UAAY,IAC3CynB,EAAgB,SAAhBA,EAAiBznB,EAA8BzyB,GACnDyyB,EAAS5yB,QAAQ,SAAAyjB,GACfA,EAAQ/K,SAAW0hC,EAAYp7C,IAAZ,UAAmBmB,EAAnB,YAA+BsjB,EAAQ1nB,KAC1Ds+C,EAAc52B,EAAQjuB,UAAY,GAAI2K,MAG1CjQ,EAAKumB,WAAWzW,QAAQ,SAAA+W,GACtBA,EAAS2B,SAAWiQ,EAAY3pB,IAAI+X,EAAShb,MAE/C7L,EAAK+0B,QAAQjlB,QAAQ,SAAA0iB,GACnBA,EAAOhK,SAAWkN,EAAU5mB,IAAI0jB,EAAO3mB,MAEzC7L,EAAKq3B,cAAcvnB,QAAQ,SAAAugB,GACzBA,EAAO7H,SAAWuhC,EAAcj7C,IAAIuhB,EAAOxkB,MAE7C7L,EAAKs3B,gBAAgBxnB,QAAQ,SAAAugB,GAC3BA,EAAO7H,SAAWwhC,EAAgBl7C,IAAIuhB,EAAOxkB,MAE/CpL,OAAOm0B,OAAO50B,EAAKsmB,OAAOxW,QAAQ,SAAArC,GAChCA,EAAK+a,SAAWkQ,EAAU5pB,IAAIrB,EAAK+C,MACnC25C,EAAc18C,EAAKnI,UAAY,GAAImI,EAAK+C,QAE1C/P,OAAOm0B,OAAO50B,EAAK8vB,YAAYhgB,QAAQ,SAAArC,GACrCA,EAAK+a,SAAWyhC,EAAen7C,IAAIrB,EAAK+C,MACxC25C,EAAc18C,EAAKnI,UAAY,GAAImI,EAAK+C,SAG5C45C,oBApH+C,SAoH3B/+C,EAAwBob,GAC1C,GAAa2jC,oBAAoB/+C,EAAMrL,KAAKqL,EAAMgC,UAAWoZ,IAE/D0N,gBAvH+C,SAuH/B9oB,EAAwB4E,GACtC,GAAakkB,gBAAgB9oB,EAAMrL,KAAKqL,EAAMgC,UAAW4C,IAE3DikB,qBA1H+C,SA0H1B7oB,EAAwB4E,GAC3C,GAAaikB,qBAAqB7oB,EAAMrL,KAAKqL,EAAMgC,UAAW4C,IAEhEqjB,uBA7H+C,SA6HxBjoB,EA7HwB,GA6H2B,IAAzB8nB,EAAyB,EAAzBA,cAAeljB,EAAU,EAAVA,SAC9D,GAAaqjB,uBAAuBjoB,EAAMrL,KAAKqL,EAAMgC,UAAW8lB,EAAeljB,IAEjFojB,4BAhI+C,SAgInBhoB,EAhImB,GAgIgC,IAAzB8nB,EAAyB,EAAzBA,cAAeljB,EAAU,EAAVA,SACnE,GAAaojB,4BAA4BhoB,EAAMrL,KAAKqL,EAAMgC,UAAW8lB,EAAeljB,IAEtF+f,SAnI+C,SAmItC3kB,GACPA,EAAMrL,KAAKqL,EAAMgC,UAAY,GAAa2iB,SAAS3kB,EAAMrL,KAAKqL,EAAMgC,YAEtE4iB,WAtI+C,SAsIpC5kB,GACTA,EAAMrL,KAAKqL,EAAMgC,UAAY,GAAa4iB,WAAW5kB,EAAMrL,KAAKqL,EAAMgC,YAExEg9C,kBAzI+C,SAyI7Bh/C,GAEhB,GAAeg/C,kBAAkBh/C,EAAMrL,KAAKqL,EAAMgC,UAAUiZ,QAE9DwE,yBA7I+C,SA6ItBzf,EAAwB+nB,GAC/C/nB,EAAM+nB,sBAAwBA,GACzBA,GAAyB/nB,EAAMgC,WAElChC,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAAa,KAG5C6G,YApJ+C,SAoJnCtrB,EAAwB+jB,GAClC/jB,EAAM+jB,SAAWA,GAEnBk7B,gBAvJ+C,SAuJ/Bj/C,GACdA,EAAMrL,KAAKqL,EAAMgC,UAAUyiB,WAAa,IAE1Cy6B,YA1J+C,SA0JnCl/C,GACVA,EAAMrL,KAAKqL,EAAMgC,UAAUqD,OAA3B,MAAyC22C,GAAY32C,SAEvD85C,kBA7J+C,SA6J7Bn/C,EAAOikB,GACvBjkB,EAAMikB,YAAcA,IAIlB,GAAkD,CACtDm7B,sBAAuB,SAACp/C,GAEtB,QAASA,EAAMgC,UAAYhC,EAAMrL,KAAKqL,EAAMgC,WAE9Cq9C,sBAAuB,SAACr/C,EAAwBg/B,EAAS8e,GAEvD,IAAMwB,EAAgBxB,EAAU3xB,MAAMrvB,OAAOkF,SAC7C,QAASs9C,GAAiBt/C,EAAMrL,KAAK2qD,IAEvC5pC,YAAa,SAAC1V,EAAwBg/B,EAAS8e,GAC7C,IAAMwB,EAAgBxB,EAAU3xB,MAAMrvB,OAAOkF,SACvCk2C,EAAY4F,EAAU3xB,MAAMrvB,OAAOsF,KACzC,GAAMk9C,GAAiBpH,EAAvB,CAGA,IAAMvjD,EAAOqqC,EAAQqgB,sBACfpkC,EAAqBtmB,EAAOS,OAAOm0B,OAAO50B,EAAKsmB,OAAS,GAC9D,OAAOA,EAAMlD,KAAK,SAAA3V,GAAI,OAAIA,EAAKJ,WAAas9C,GAAiBl9C,EAAK+C,OAAS+yC,MAE7EjW,oBAAqB,SAACjiC,EAAwBg/B,GAC5C,IAAM58B,EAAO48B,EAAQtpB,YACrB,GAAKtT,EAGL,OAAOA,EAAKnI,UAEd0b,mBAAoB,SAAC3V,EAAwBg/B,EAAS8e,GACpD,IAAMwB,EAAgBxB,EAAU3xB,MAAMrvB,OAAOkF,SACvCk2C,EAAY4F,EAAU3xB,MAAMrvB,OAAOsF,KACnC+1C,EAAmB2F,EAAU3xB,MAAMrvB,OAAO2R,YAC1CrM,EAAO48B,EAAQtpB,YACrB,GAAKtT,EAAL,CAGA,IAAM8kB,EAAmC9kB,EAAKnI,SAE9C,OAAImI,GAAQA,EAAKq4B,WAER,CACLj6B,GAAI23C,EACJr3C,KAAMq3C,EACNhzC,KAAMgzC,EACN97B,OAAQja,EAAK5B,GACb4B,KAAMA,EACN6kC,oBAAqB,KACrBE,oBAAqB,KACrBD,iBAAkB,KAClB5f,WAAW,EACXvC,MAAO,EACP+nB,SAAS,EACTpH,OAAQ,EACRrsC,MAAO,GAIJ6tB,EAAanP,KAClB,SAAA0S,GAAG,OACDA,EAAIroB,KAAKJ,WAAas9C,GAAiB70B,EAAIroB,KAAK+C,OAAS+yC,GAAaztB,EAAItlB,OAASgzC,MAGzF/2C,WAAY,SAACpB,EAAwBg/B,GACnC,OAAO,GAAcugB,UAAUvgB,EAAQiD,oBAAqBjD,EAAQrpB,qBAEtEkK,kBAAmB,SAAC7f,EAAwBg/B,GAC1C,IAAMrqC,EAAOqqC,EAAQqgB,sBACfnkC,EAA8BvmB,EAAOA,EAAKumB,WAAa,GAC7D,OAAOA,EAAW7V,OAAO,SAAAmW,GAAQ,OAAIA,EAAS/S,UAAY+S,EAAS9S,oBAErE+xC,aAAc,SAACz6C,EAAwBg/B,GACrC,IAAMrqC,EAAOqqC,EAAQqgB,sBACrB,IAAK1qD,EACH,MAAO,GAET,IAAM6qD,EAAuBxgB,EAAQnf,kBAAkBvZ,IAAI,SAACkV,GAAD,OAAwBA,EAAShb,KAC5F,OAAOpL,OAAOm0B,OAAO50B,EAAKsmB,OAAO5V,OAC/B,SAAAjD,GAAI,OACFA,EAAKqG,UACJrG,EAAKsG,oBACJtG,EAAK8Y,YAAc,GAAaukC,iBAAiBr9C,EAAK8Y,WAAYskC,OAG1EjxC,mBAAoB,SAACvO,EAAwBg/B,GAC3C,OAAO,GAAmB0gB,mBACxB1gB,EAAQyb,aACRzb,EAAQnf,mBACRtE,MAEJokC,oBAAqB,SAAC3/C,EAAwBg/B,GAC5C,IAAMrqC,EAAOqqC,EAAQqgB,sBACrB,IAAK1qD,EACH,MAAO,GAET,IAAIirD,EAAiB5gB,EAAQyb,aAAan0C,IAAI,SAAClE,GAAD,OAAgBA,EAAK5B,KACnEw+B,EAAQnf,kBAAkBpb,QAAQ,SAAC+W,GACjCokC,EAAiBA,EAAerlD,OAAOihB,EAASK,WAElD,IAAM8jC,EAA0C,GAChD,IAAK,IAAIx6C,KAAQxQ,EAAKsmB,MACftmB,EAAKsmB,MAAM3lB,eAAe6P,IAG/BxQ,EAAKsmB,MAAM9V,GAAMlL,SAASwK,QAAQ,SAAAgK,IAE9BA,EAAYhG,SACXgG,EAAY/F,kBACZk3C,EAAenoC,SAAShJ,EAAYrM,KAAK5B,KAE1Cm/C,EAAoBlqD,KAAKgZ,KAI/B,OAAOkxC,GAET/E,kBAAmB,SAAC56C,EAAwBg/B,GAC1C,IAAMrqC,EAAOqqC,EAAQqgB,sBACrB,OAAM1qD,GAAQA,EAAK8vB,WAGZrvB,OAAOm0B,OAAO50B,EAAK8vB,YAAYpf,OAAO,SAAAjD,GAAI,OAAIA,EAAKqG,UAAYrG,EAAKsG,mBAFlE,IAIXm3C,yBAA0B,SAAC7/C,EAAwBg/B,GACjD,IAAMrqC,EAAOqqC,EAAQqgB,sBACrB,IAAM1qD,IAAQA,EAAK8vB,WACjB,MAAO,GAET,IAAIyC,EAAmC,GAMvC,OALA9xB,OAAOm0B,OAAO50B,EAAK8vB,YAChBpf,OAAO,SAAAjD,GAAI,OAAKA,EAAKqG,UACrBhE,QAAQ,SAAArC,GACP8kB,EAAeA,EAAa3sB,OAAO6H,EAAKnI,SAASoL,OAAO,SAAAoJ,GAAW,OAAIA,EAAYhG,aAEhFye,GAET62B,mBAtIsD,SAsInC/9C,EAAwBg/B,GACzC,IAAM/jB,EAAQ+jB,EAAQyb,aAChBv/B,EAAa8jB,EAAQnf,kBACrBqH,EAAe8X,EAAQ2gB,oBACvBl7B,EAAaua,EAAQ4b,kBACrBkF,EAAoB9gB,EAAQ6gB,yBAElC,QACI5kC,EAAM9lB,UACN+xB,EAAa/xB,UACb+lB,EAAW/lB,UACXsvB,EAAWtvB,UACX2qD,EAAkB3qD,QAIxByuB,kBAAmB,SAAC5jB,EAAwBg/B,EAAS8e,GACnD,OAAO99C,EAAM+nB,uBAAkD,mBAAzB+1B,EAAU3xB,MAAMp1B,OAI7C,GAAS,CACpB6J,YAAY,EACZZ,MAAA,GACAK,QAAA,GACAI,UAAA,GACAu+B,QAAA,IC/rBI,GAAmB,CACvBrqC,KAAM,IAGF,GAAqC,CACzC+L,IADyC,SACrCV,EAAOqC,GACTrC,EAAMrL,KAAO0N,GAEf09C,MAJyC,SAInC//C,GACJA,EAAMrL,KAAO,KAIJ,GAAS,CACpBiM,YAAY,EACZZ,MAAA,GACAS,UAAA,I,0jBCZF,IAAMu/C,GAA4B,CAChClxB,MAAO,EACPthB,UAAU,EACVX,kBAAkB,EAClBwD,kBAAmB,EACnBC,qBAAqB,EACrBC,0BAA2B,CAAC,eAAgB,WAC5CoB,2BAA2B,EAC3B+Q,cAAe,GACfhT,UAAW,QACXxN,kBAAmBT,GACnB+jB,iBAAkBzjB,IAGP,GAAuB,SAACk+C,GAAD,aAC/BD,GAD+B,GAE9BC,GAAe,GAFe,CAGlCv9B,cACEu9B,GAAe/2C,MAAMC,QAAQ82C,EAAYv9B,eAAzC,gBACQu9B,EAAYv9B,eADpB,gBAEQs9B,GAAat9B,eACvB7V,kBAAkB,EAClBwD,kBACE4vC,GAAwD,kBAAlCA,EAAY5vC,kBAC9BwQ,KAAKC,IAAI,GAAKD,KAAK8Q,IAAI,IAAKsuB,EAAY5vC,oBACxC2vC,GAAa3vC,kBACnBC,oBACE2vC,GAA0D,mBAApCA,EAAY3vC,oBAC9B2vC,EAAY3vC,oBACZ0vC,GAAa1vC,oBACnBC,0BACE0vC,GAAe/2C,MAAMC,QAAQ82C,EAAY1vC,2BAAzC,gBACQ0vC,EAAY1vC,2BADpB,gBAEQyvC,GAAazvC,8BAGnB,GAAqB,GAAqB,GAAenZ,IAAI,WAE7D,GAAY,SAAC4I,GACjB,GAAe0yB,KAAK,SAApB,MAAmC1yB,EAAnC,CAA0CwN,UAAU,EAAOX,kBAAkB,MAGzE,GAAuC,CAC3CkiB,SAD2C,SAClC/uB,EAAO8uB,GACd9uB,EAAM8uB,MAAQA,EACd,GAAU9uB,IAGZqR,YAN2C,SAM/BrR,EAAOwN,GACjBxN,EAAMwN,SAAWA,EACjB,GAAUxN,IAGZm5B,oBAX2C,SAWvBn5B,EAAO6M,GACzB7M,EAAM6M,iBAAmBA,EACzB,GAAU7M,IAGZq+B,qBAhB2C,SAgBtBr+B,EAAO8uB,GAC1B9uB,EAAMqQ,kBAAoBwQ,KAAKC,IAAI,GAAKD,KAAK8Q,IAAI,IAAKp1B,OAAOuyB,IAAU,IACvE,GAAU9uB,IAGZ4Q,uBArB2C,SAqBpB5Q,EAAO4xB,GAC5B5xB,EAAMsQ,sBAAwBshB,EAC9B,GAAU5xB,IAGZ8Q,iCA1B2C,SA0BV9Q,EAAOqF,GACtCrF,EAAMuQ,0BAA4BvQ,EAAMuQ,2BAA6B,GACrE,IAAMlX,EAAQ2G,EAAMuQ,0BAA0BsE,QAAQxP,GAClDhM,GAAS,EACX2G,EAAMuQ,0BAA0Bla,OAAOgD,EAAO,GAE9C2G,EAAMuQ,0BAA0B9a,KAAK4P,GAEvC,GAAUrF,IAGZ6Q,aArC2C,SAqC9B7Q,EAAO0P,GAClB1P,EAAM0P,UAAYA,EAClB,GAAU1P,IAGZkI,qBA1C2C,SA0CtBlI,EAAOkC,GAC1BlC,EAAMkC,kBAAoBA,EAC1B,GAAUlC,IAGZ4uB,oBA/C2C,SA+CvB5uB,EAAOwlB,GACzB,OAAI9kB,IAAIV,EAAO,mBAAoBwlB,GACnC,GAAUxlB,IAGZyV,sBApD2C,SAoDrBzV,GACpB,OAAIU,IAAIV,EAAO,6BAA8BA,EAAM2R,2BACnD,GAAU3R,IAGZmjB,0BAzD2C,SAyDjBnjB,EAAOkS,GAC/B,OAAIxR,IAAIV,EAAO,4BAA6BkS,GAC5C,GAAUlS,IAGZ2iB,qBA9D2C,SA8DtB3iB,EAAOqF,GAC1BrF,EAAM0iB,cAAgB1iB,EAAM0iB,eAAiB,GAC7C,IAAMrpB,EAAQ2G,EAAM0iB,cAAc7N,QAAQxP,GACtChM,GAAS,EACX2G,EAAM0iB,cAAcrsB,OAAOgD,EAAO,GAElC2G,EAAM0iB,cAAcjtB,KAAK4P,GAE3B,GAAUrF,KAID,GAAS,CACpBY,YAAY,EACZZ,MAAA,GACAS,UAAA,I,0jBCxHF,IAAIy/C,GAAwB,EAEtB,GAA8C,CAC5CvK,aAD4C,+LAC7Br1C,EAD6B,EAC7BA,OAAQ0+B,EADqB,EACrBA,QAASh/B,EADY,EACZA,MAAWilB,EADC,EACDA,OAAQywB,EADP,EACOA,QACjD54B,IAAcojC,GACZl+C,EAAa0D,GAAOC,aAAa7I,OAAjCkF,SACAgD,EAAUU,GAAOC,aAAaX,MAA9BA,MACF6X,EAAgBmiB,EAAQniB,cAC9Bvc,EAAO,YAAY,GACE,kBAAV0E,IAAsBA,EAPe,wBAQ9C1E,EAAO,cAAc,GARyB,SAUtC6/C,EAAmB,GAAmBvjC,eAAeC,GAVf,UAWSngB,QAAQ0xB,IAAI,CAC/D,GAAcznB,OAAO3E,EAAUgD,EAA/B,IACEuW,KAAMm6B,EACN3iC,KAAMkS,GACHpI,IAELsjC,EAAmBzjD,QAAQC,QAAQ,MAAQ,GAAcyjD,mBAAmBp+C,EAAUgD,KAjB5C,2CAWrCqc,EAXqC,KAWtB2yB,EAXsB,KAmBxCl3B,IAAcojC,GAnB0B,mDAsBtC9T,EAAY/qB,EAAc1sB,KAA1By3C,QACEiU,EAAkBh/B,EAAc1sB,KAAhC0rD,cACJp7B,EAAS,IACXmnB,EAAUpsC,EAAMosC,QAAQ7xC,OAAO6xC,IAEjC9rC,EAAO,aAAc8rC,GACrB9rC,EAAO,kBAAmB+/C,GAC1B//C,EAAO,qBAAsB0zC,GA7Be,qDA+BxCl3B,IAAcojC,KAChB5/C,EAAO,aAAc,IACrBA,EAAO,kBAAmB,GAC1BA,EAAO,qBAAsB,MAC7BA,EAAO,YAAY,IAnCuB,yBAsCxCwc,IAAcojC,KAChB5/C,EAAO,cAAc,GACrBA,EAAO,iBAAiB,IAxCkB,6CA4C9CA,EAAO,aAAc,IACrBA,EAAO,kBAAmB,GAC1BA,EAAO,qBAAsB,MAC7BA,EAAO,iBAAiB,GA/CsB,0HAoD9C,GAAqB,CACzBuY,gBAAgB,EAChBD,cAAc,EACdwzB,QAAS,GACTkU,aAAc,EACdC,gBAAiB,KACjBC,YAAY,EACZznD,SAAS,EACTkD,OAAO,GAGH,GAAuC,CAC3C0iB,WAD2C,SAChC3e,EAAOkE,GAChBlE,EAAMosC,QAAUloC,GAElB0a,gBAJ2C,SAI3B5e,EAAOsgD,GACrBtgD,EAAMsgD,aAAeA,GAEvBzhC,mBAP2C,SAOxB7e,EAAOugD,GACxBvgD,EAAMugD,gBAAkBA,GAE1B3gC,kBAV2C,SAUzB5f,EAAO6Y,GACvB7Y,EAAM6Y,eAAiBA,GAEzByG,gBAb2C,SAa3Btf,EAAO4Y,GACrB5Y,EAAM4Y,aAAeA,GAEvBkG,cAhB2C,SAgB7B9e,EAAOygD,GACnBzgD,EAAMwgD,WAAaC,GAErBxC,WAnB2C,SAmBhCj+C,EAAOjH,GAChBiH,EAAMjH,QAAUA,GAElBmlD,SAtB2C,SAsBlCl+C,EAAO/D,GACd+D,EAAM/D,MAAQA,IAIZ,GAA8C,CAClD4gB,cADkD,SACpC7c,EAAoBg/B,EAAS8e,EAAW4C,GAAW,MAU3Dh7C,GAAOC,aAAaX,MARtB2U,EAF6D,EAE7DA,aACAE,EAH6D,EAG7DA,MACAC,EAJ6D,EAI7DA,mBACAC,EAL6D,EAK7DA,gBACA5U,EAN6D,EAM7DA,KACAkX,EAP6D,EAO7DA,OACAkD,EAR6D,EAQ7DA,WACAJ,EAT6D,EAS7DA,WAEM4I,EAA0B+1B,EAAUrnC,WAApCsR,sBACF0yB,EAAeiG,EAAY,2BAC3B7gC,EAAoB6gC,EAAY,gCAChCf,EAAsBe,EAAY,kCAClCpmB,EAAiBomB,EAAY,qCAAuC,GACpEC,EAAkBvrD,OAAOm0B,OAAO+Q,EAAerf,OAAS,IACxDwJ,EAAarvB,OAAOm0B,OAAO+Q,EAAe7V,YAAc,IACxDm2B,EAAoB8F,EAAY,gCAChCb,EAA2Ba,EAAY,uCACvCthC,EAA8B,kBAATja,KAAuBA,EAC5Cy7C,EAAyC,MAAfrhC,GAAqC,MAAfJ,EAChD0hC,EAAezhC,IAAgBpf,EAAM4Y,cAAgBgoC,GACrDE,EAAmB9gD,EAAM6Y,iBAAmBgoC,EAC5Cp/B,EAAgC,kBAAXpF,EAAsB8E,SAAS9E,EAAQ,IAAM2xB,IAClE+S,EAAa,0BAAIJ,GAAJ,gBAAwBl8B,IAAY1M,KAAK,SAAA3V,GAAI,OAAIA,EAAK+C,OAASA,IAC5E67C,EAAev/B,EAAc,EAAIA,EAAcs/B,GAAcA,EAAWvgD,GAE1EygD,EAA0B,GAe9B,OAdIJ,GAAgBG,EAClBC,EAAW,CAACD,GACHF,IAEP/4B,GACA6yB,EAAkBzlD,QAClBylD,EAAkBzlD,SAAWsvB,EAAWtvB,OAExC8rD,EAAW,GAAazM,WAAb,0BAA4BiG,GAA5B,gBAA6CG,KAC/CH,EAAatlD,SACtB8rD,EAAW,GAAazM,WAAWiG,KAIhC,CACLx0C,UAAW46C,GAAgC,kBAAT17C,EAAoBA,EAAO,GAC7D+7C,iBAAkBvnC,EAClBE,QAASA,EACTsnC,sBAAuBrnC,EACvBsnC,mBAAoBrnC,EACpBkB,MAAOgmC,EACP/lC,WAAY4lC,EAAmB,GAAatM,WAAW30B,GAAqB,GAC5E1E,cAAe2lC,EACX,GAAatM,WACXqL,EAAyB1qD,OAAS0qD,EAA2BF,GAE/D,MAKG,GAAS,CACpB/+C,YAAY,EACZZ,MAAA,GACAK,QAAA,GACAI,UAAA,GACAu+B,QAAA,IC1KI,GAAuB,CAC3B9sB,SAAS,GAGL,GAAyC,CAC7C8M,OAD6C,SACtChf,GACLA,EAAMkS,SAAWlS,EAAMkS,SAEzBmvC,KAJ6C,SAIxCrhD,GACHA,EAAMkS,SAAU,GAElBovC,KAP6C,SAOxCthD,GACHA,EAAMkS,SAAU,IAIP,GAAS,CACpBtR,YAAY,EACZZ,MAAA,GACAS,UAAA,ICFF,OAAI61C,IAAI,QAED,IAAMv2C,GAAQ,IAAI,OAAKwhD,MAAM,CAClCvhD,MAAkB,CAChBjH,SAAS,GAEX0H,UAAW,CACT+gD,aADS,SACIxhD,GACXA,EAAMjH,SAAU,GAElB0oD,YAJS,SAIGzhD,GACVA,EAAMjH,SAAU,IAGpBrD,QAAS,CACPoJ,KAAA,EACA2X,WAAA,GACAnP,KAAA,GACAjF,KAAA,GACAJ,OAAA,GACA0E,OAAA,GACA8vB,SAAA,GACAlzB,UAAA,MC5CE8qB,GAAyB,CAC7BqzB,oBAAqB,uEACrBC,aAAc,aACdC,aAAc,gBACdC,aAAc,eACdC,oBAAqB,aACrBC,oBAAqB,gBACrBC,oBAAqB,eACrBC,QAAS,UACTC,QAAS,aACT35C,OAAQ,YACRmqB,KAAM,YACNp1B,OAAQ,WACR8wB,IAAK,MACL+zB,OAAQ,WACRhjD,OAAQ,QACRijD,QAAS,UACTjgC,MAAO,UACPic,KAAM,UACNikB,KAAM,SACNhB,KAAM,aACNh1C,KAAM,SACNi2C,QAAS,WACT7rC,WAAY,YACZ+f,QAAS,aACT7vB,OAAQ,QACR47C,gBAAiB,aACjBhtC,QAAS,SACThS,UAAW,WACXisB,SAAU,WACVgzB,gBAAiB,oBACjBC,iBAAkB,mBAClBC,eAAgB,mBAChBC,wBAAyB,qCACzBC,YAAa,kBACbC,YAAa,2CACbC,gBAAiB,aACjBC,aAAc,iBACdC,WAAY,oBACZC,mBAAoB,iCACpBC,cAAe,qBACfC,eAAgB,+BAChBC,0BAA2B,uEAC3BC,mBAAoB,2BAGpBC,aAAc,iBACdC,UAAW,eACXC,eAAgB,uBAChB3kD,SAAU,SACVO,eAAgB,iBAChBqkD,eAAgB,iBAChBj7C,WAAY,iBACZk7C,OAAQ,QACRC,aAAc,cACdC,wBAAyB,0DACzBC,cAAe,cACfhkD,YAAa,sBACbikD,yBACE,mHACFC,gBAAiB,oDACjBhtD,KAAM,MACNitD,SAAU,UACVC,cAAe,eACfC,aAAc,sBACdC,WAAY,cACZ7kD,cAAe,kBACflC,MAAO,QACPgnD,gBAAiB,qEAGjB3tB,SAAU,YAGV4tB,eAAgB,uBAChBjiD,KAAM,QACNkiD,iBAAkB,qBAClBrpC,MAAO,QACPspC,cAAe,oBACfC,iBAAkB,gCAClBC,0BAA2B,oCAC3BC,iBAAkB,wBAClBC,MAAO,UACPlgC,WAAY,OACZmgC,UAAW,cACX3N,MAAO,WACP4N,SAAU,WACVC,oBAAqB,qBACrBC,cAAe,oBAEf3K,iBAAkB,YAClBC,cAAe,SACf2K,YAAa,WAEb/c,OAAQ,gBACRgd,UAAW,yBACXC,oBAAqB,uCACrBC,MAAO,SACPC,OAAQ,QACRC,gBAAiB,mDACjBC,YAAa,2DACbC,aAAc,eACdhiC,KAAM,SACNiiC,YAAa,kBACbC,iBAAkB,iBAClBC,WAAY,kBACZp0B,UAAW,WACXq0B,kBAAmB,wBACnBC,gBAAiB,gBACjBzT,WAAY,aACZC,OAAQ,WACRC,UAAW,eACXwT,eAAgB,cAChBC,YAAa,qBACbC,SAAU,QACV5+B,OAAQ,QACRuC,QAAS,SACTs8B,YAAa,cACbrf,aAAc,eACdlC,YAAa,UACbwhB,sBAAuB,oBACvBC,QAAS,cACTC,SAAU,WACVC,UAAW,aACXvtC,eAAgB,oBAChBhS,QAAS,UACT0Y,WAAY,kBACZ8mC,cAAe,eACfC,YAAa,iBACbC,iBAAkB,QAClBC,YAAa,QACbC,cAAe,qBACfC,YAAa,eACb5sC,mBAAoB,sBACpBC,gBAAiB,qBACjB4sC,sBAAuB,+BACvBC,UAAW,UACXn4C,YAAa,SACbo4C,YAAa,QACbC,SAAU,OACVC,WAAY,iBACZC,gBAAiB,UACjBC,gBAAiB,SACjBC,eAAgB,SAChBp4B,MAAO,UACPq4B,UAAW,kBACXC,gBAAiB,2CACjBC,YAAa,eACbC,kBAAmB,uBACnBC,iCAAkC,0DAClCC,kBAAmB,yBACnBC,eAAgB,kBAChB/3B,KAAM,aAENg4B,gBAAiB,yBACjB76C,iBAAkB,eAClB4D,qBAAsB,kBACtBk3C,qBAAsB,mBACtBC,YAAa,oBACbC,gBAAiB,mBACjBrb,YAAa,kBACbsb,aAAc,mBACdC,iBAAkB,4CAClB5mD,KAAM,UACN6mD,oBAAqB,8BACrBC,cAAe,oBAEfC,iBAAkB,iBAClBC,SAAU,kBACVC,aAAc,YACdlmD,kBAAmB,kBACnBmmD,eAAgB,qBAChBC,UAAW,0BACXC,YAAa,gBACbC,OAAQ,SACRC,GAAI,YACJC,KAAM,OACNC,6BAA8B,oCAC9BC,cAAe,iBACfC,mBAAoB,4BACpBC,WAAY,iBACZC,YAAa,uBACbC,sBAAuB,+BACvBC,sBAAuB,4BACvB5iB,iBAAkB,iEAClB6iB,uBAAwB,4BACxBC,WAAY,i/BA8BC,MCxNT76B,GAAyB,CAC7BozB,oBAAqB,uEACrBC,aAAc,aACdC,aAAc,aACdC,aAAc,cACdC,oBAAqB,UACrBC,oBAAqB,UACrBC,oBAAqB,WACrBC,QAAS,UACTC,QAAS,UACT35C,OAAQ,SACRmqB,KAAM,OACNp1B,OAAQ,SACR8wB,IAAK,MACL+zB,OAAQ,SACRhjD,OAAQ,UACRijD,QAAS,UACTjgC,MAAO,QACPic,KAAM,OACNikB,KAAM,OACNhB,KAAM,OACNiB,QAAS,UACT7rC,WAAY,aACZ+f,QAAS,UACT7vB,OAAQ,SACR47C,gBAAiB,WACjBhtC,QAAS,UACThS,UAAW,YACXisB,SAAU,WACVgzB,gBAAiB,sBACjBC,iBAAkB,YAClBC,eAAgB,kBAChBC,wBAAyB,2BACzBC,YAAa,eACbC,YAAa,8CACbC,gBAAiB,WACjBC,aAAc,mBACdC,WAAY,eACZC,mBAAoB,4BACpBC,cAAe,kBACfC,eAAgB,2BAChBC,0BAA2B,yDAC3BC,mBAAoB,sBAGpBC,aAAc,QACdC,UAAW,cACXC,eAAgB,oBAChB3kD,SAAU,WACVO,eAAgB,mBAChBqkD,eAAgB,kBAChBj7C,WAAY,cACZk7C,OAAQ,UACRC,aAAc,eACdC,wBAAyB,iDACzBC,cAAe,gBACfhkD,YAAa,eACbikD,yBACE,uGACFC,gBAAiB,2CACjBhtD,KAAM,OACNitD,SAAU,YACVC,cAAe,iBACfC,aAAc,oBACdC,WAAY,cACZ7kD,cAAe,iBACflC,MAAO,QACPiP,KAAM,OACN+3C,gBAAiB,iEAGjB3tB,SAAU,WAGV4tB,eAAgB,kBAChBjiD,KAAM,OACNkiD,iBAAkB,qBAClBrpC,MAAO,QACPspC,cAAe,kBACfC,iBAAkB,kCAClBC,0BAA2B,oCAC3BC,iBAAkB,qBAClBC,MAAO,QACPlgC,WAAY,QACZmgC,UAAW,aACX3N,MAAO,QACP4N,SAAU,WACVC,oBAAqB,eACrBC,cAAe,iBAEf3K,iBAAkB,aAClBC,cAAe,UACf2K,YAAa,QAEb/c,OAAQ,UACRgd,UAAW,2BACXC,oBAAqB,gCACrBC,MAAO,QACPC,OAAQ,mBACRC,gBAAiB,iDACjBC,YAAa,iEACbC,aAAc,gBACdhiC,KAAM,OACNiiC,YAAa,eACbC,iBAAkB,oBAClBC,WAAY,cACZp0B,UAAW,QACXq0B,kBAAmB,iBACnBC,gBAAiB,uBACjBzT,WAAY,aACZC,OAAQ,SACRC,UAAW,YACXwT,eAAgB,kBAChBC,YAAa,eACbC,SAAU,YACV5+B,OAAQ,SACRuC,QAAS,UACTs8B,YAAa,cACbrf,aAAc,eACdlC,YAAa,cACbwhB,sBAAuB,2BACvBC,QAAS,UACTC,SAAU,WACVC,UAAW,YACXvtC,eAAgB,kBAChBhS,QAAS,UACT0Y,WAAY,iBACZ8mC,cAAe,iBACfC,YAAa,eACbC,iBAAkB,aAClBC,YAAa,QACbC,cAAe,iBACfC,YAAa,eACb5sC,mBAAoB,sBACpBC,gBAAiB,mBACjB4sC,sBAAuB,0BACvBC,UAAW,aACXn4C,YAAa,UACbo4C,YAAa,UACbC,SAAU,OACVC,WAAY,cACZC,gBAAiB,QACjBC,gBAAiB,OACjBC,eAAgB,OAChBp4B,MAAO,QACPq4B,UAAW,aACXC,gBAAiB,oBACjBC,YAAa,eACbC,kBAAmB,qBACnBC,iCAAkC,mCAClCC,kBAAmB,qBACnBC,eAAgB,kBAChB/3B,KAAM,OAENg4B,gBAAiB,oBACjB76C,iBAAkB,oBAClB4D,qBAAsB,mBACtBk3C,qBAAsB,wBACtBC,YAAa,gBACbC,gBAAiB,gBACjBrb,YAAa,YACbsb,aAAc,gBACdC,iBAAkB,oCAClB5mD,KAAM,OACN6mD,oBAAqB,wBACrBC,cAAe,iBAEfC,iBAAkB,qBAClBC,SAAU,aACVC,aAAc,aACdlmD,kBAAmB,qBACnBmmD,eAAgB,kBAChBC,UAAW,aACXC,YAAa,eACbC,OAAQ,cACRC,GAAI,UACJC,KAAM,OACNC,6BAA8B,qCAC9BC,cAAe,iBACfC,mBAAoB,+BACpBC,WAAY,cACZC,YAAa,gBACbC,sBAAuB,2BACvBC,sBAAuB,2BACvB5iB,iBAAkB,+DAClB6iB,uBAAwB,4BACxBC,WAAY,08BA8BC,MClNF5iB,GAA6B,CAAElY,GAAA,GAAIC,GAAA,ICHnC,GAAiB,SAACx2B,GAC7B,IAAMoK,EAAoBnC,GAAMC,MAAMiC,OAAOC,mBAAqBT,GAElE,OAAO8kC,GAAarkC,GAAmBpK,IAAQ,ICsB5B,GAArB,6D,+DACE,EAAA4B,OAA0B,GAC1B,EAAA0vD,YAAa,EAEb,EAAAtvD,eAAiB,GAJnB,+EAOIzB,OAAO4lB,iBAAiB,UAAWxlB,KAAK4wD,eACxChxD,OAAO4lB,iBAAiB,SAAUxlB,KAAK6wD,cAClCjxD,OAAOkxD,UAAUC,QACpB/wD,KAAK4wD,kBAVX,sCAeIhxD,OAAOgmB,oBAAoB,UAAW5lB,KAAK4wD,eAC3ChxD,OAAOgmB,oBAAoB,SAAU5lB,KAAK6wD,cAC1C7wD,KAAKgxD,sBAjBT,sCA0BIhxD,KAAKgxD,oBACLhxD,KAAK2wD,YAAa,EAClB3wD,KAAKiB,OAAS,YA5BlB,qCA+Bc,WACLjB,KAAK2wD,aAGV3wD,KAAK2wD,YAAa,EAClB3wD,KAAKiB,OAAS,WACdjB,KAAKgxD,oBACLhxD,KAAKixD,aAAerxD,OAAOuE,WAAW,WACpC,EAAKlD,OAAS,GACd,EAAKgwD,kBAAehmD,GACnB,SAzCP,+CA6C8BA,IAAtBjL,KAAKixD,eACPrxD,OAAOqkB,aAAajkB,KAAKixD,cACzBjxD,KAAKixD,kBAAehmD,KA/C1B,4BAsBI,OADAjL,KAAKgP,OAAOzH,MAAMiC,OAAOC,kBAClB,GAA+B,aAAhBzJ,KAAKiB,OAAwB,qBAAuB,sBAtB9E,GAA8C,QAAzB,GAAgB,gBADpC,eAAU,CAAEF,WAAY,CAAEmwD,SAAA,MACN,cC9Bke,MCQnf,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCAM,GAArB,YAGE,iDACE,oDACA,EAAK5wD,QAAU,EAAK0O,OAAOzH,MAAMjH,QAFnC,EAHF,6EAQS,WACLN,KAAKgP,OAAOmiD,UAAU,SAACC,EAAU7pD,GAC3B,CAAC,eAAgB,eAAeyX,SAASoyC,EAAShgD,QACpD,EAAK9Q,QAAUiH,EAAMjH,eAX7B,GAAiC,QAAZ,GAAG,gBAHvB,eAAU,CACTS,WAAY,CAAEswD,iBAAA,GAAkBj+C,OAAA,MAEb,cCnBib,MCQlc,I,UAAY,eACd,GACA,EACA3S,GACA,EACA,KACA,KACA,OAIa,M,qBCbf,OAAI2D,OAAOktD,eAAgB,EAEZ,mBAAKhqD,GAAO2F,IAE3B,IAAI,OAAI,CACNA,UACA3F,SACAiqD,OAAQ,SAAAC,GAAC,OAAIA,EAAE,OACdC,OAAO,S,kCCdV,yBAA+pB,EAAG,G,uGCAlqB,yBAAmqB,EAAG,G,kCCAtqB,yBAA0oB,EAAG,G,gFCA7oB,yBAAgqB,EAAG,G,kCCAnqB,yBAAwqB,EAAG,G,uGCA3qB,yBAAiqB,EAAG,G,kCCApqB,yBAA2pB,EAAG,G,kCCA9pB,yBAAgqB,EAAG,G","file":"js/app.js?p=ac941d4e","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 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// 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\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 \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","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBook.vue?vue&type=style&index=0&id=6a5d3849&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBook.vue?vue&type=style&index=0&id=6a5d3849&lang=scss&scoped=true&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchHistory.vue?vue&type=style&index=0&id=955a4d70&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchHistory.vue?vue&type=style&index=0&id=955a4d70&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControl.vue?vue&type=style&index=0&id=6b18d0d4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControl.vue?vue&type=style&index=0&id=6b18d0d4&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewBooks.vue?vue&type=style&index=0&id=769dda2a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewBooks.vue?vue&type=style&index=0&id=769dda2a&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonLayout.vue?vue&type=style&index=0&id=45138fb0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonLayout.vue?vue&type=style&index=0&id=45138fb0&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchLang.vue?vue&type=style&index=0&id=27817ce8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchLang.vue?vue&type=style&index=0&id=27817ce8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarks.vue?vue&type=style&index=0&id=7ced25c6&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarks.vue?vue&type=style&index=0&id=7ced25c6&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemEntriesCount.vue?vue&type=style&index=0&id=0f968ad8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemEntriesCount.vue?vue&type=style&index=0&id=0f968ad8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&id=01dc1f26&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&id=01dc1f26&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=style&index=0&id=36699d44&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=style&index=0&id=36699d44&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./PresentationControls.vue?vue&type=style&index=0&id=24702030&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./PresentationControls.vue?vue&type=style&index=0&id=24702030&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarkSheet.vue?vue&type=style&index=0&id=7e66e80a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarkSheet.vue?vue&type=style&index=0&id=7e66e80a&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=543800f8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=543800f8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsExample.vue?vue&type=style&index=0&id=2f7dbebe&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsExample.vue?vue&type=style&index=0&id=2f7dbebe&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=style&index=0&id=e6bf446a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=style&index=0&id=e6bf446a&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabsBar.vue?vue&type=style&index=0&id=b62ccaba&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabsBar.vue?vue&type=style&index=0&id=b62ccaba&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookContent.vue?vue&type=style&index=0&id=e116090e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookContent.vue?vue&type=style&index=0&id=e116090e&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=style&index=0&id=2d0ef65f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=style&index=0&id=2d0ef65f&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=style&index=0&id=488f0a76&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=style&index=0&id=488f0a76&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionControl.vue?vue&type=style&index=0&id=0d8e2f8c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionControl.vue?vue&type=style&index=0&id=0d8e2f8c&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=style&index=0&id=c1660ed2&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=style&index=0&id=c1660ed2&lang=scss&scoped=true&\"","import mod from \"-!../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookCover.vue?vue&type=style&index=0&id=0f82cd7b&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookCover.vue?vue&type=style&index=0&id=0f82cd7b&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=style&index=0&id=2f73b7d4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=style&index=0&id=2f73b7d4&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=5849a793&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=5849a793&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarBookInfo.vue?vue&type=style&index=0&id=8af5143c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarBookInfo.vue?vue&type=style&index=0&id=8af5143c&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemFolder.vue?vue&type=style&index=0&id=5ed149a6&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemFolder.vue?vue&type=style&index=0&id=5ed149a6&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResults.vue?vue&type=style&index=0&id=0846f83c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResults.vue?vue&type=style&index=0&id=0846f83c&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TextTypesFilter.vue?vue&type=style&index=0&id=726063da&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TextTypesFilter.vue?vue&type=style&index=0&id=726063da&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRecentBooks.vue?vue&type=style&index=0&id=39cbb900&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRecentBooks.vue?vue&type=style&index=0&id=39cbb900&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileReaderThemePicker.vue?vue&type=style&index=0&id=7845a36e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileReaderThemePicker.vue?vue&type=style&index=0&id=7845a36e&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthLayout.vue?vue&type=style&index=0&id=384100e0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthLayout.vue?vue&type=style&index=0&id=384100e0&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=style&index=0&id=5027b406&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=style&index=0&id=5027b406&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityAuthor.vue?vue&type=style&index=0&id=6f71d3ea&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityAuthor.vue?vue&type=style&index=0&id=6f71d3ea&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overlay.vue?vue&type=style&index=0&id=b4d03bd4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overlay.vue?vue&type=style&index=0&id=b4d03bd4&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=style&index=0&id=4921f488&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=style&index=0&id=4921f488&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=1d044ad8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=1d044ad8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=style&index=0&id=7bf8706d&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=style&index=0&id=7bf8706d&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControlValue.vue?vue&type=style&index=0&id=969344be&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControlValue.vue?vue&type=style&index=0&id=969344be&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigation.vue?vue&type=style&index=0&id=185b04a8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigation.vue?vue&type=style&index=0&id=185b04a8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewTab.vue?vue&type=style&index=0&id=48961ade&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewTab.vue?vue&type=style&index=0&id=48961ade&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemLink.vue?vue&type=style&index=0&id=a5c385c0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemLink.vue?vue&type=style&index=0&id=a5c385c0&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavRubrics.vue?vue&type=style&index=0&id=360c1e06&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavRubrics.vue?vue&type=style&index=0&id=360c1e06&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorBio.vue?vue&type=style&index=0&id=363439e7&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorBio.vue?vue&type=style&index=0&id=363439e7&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookNoteOverlay.vue?vue&type=style&index=0&id=5d78f988&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookNoteOverlay.vue?vue&type=style&index=0&id=5d78f988&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarTooltip.vue?vue&type=style&index=0&id=faab7fc8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarTooltip.vue?vue&type=style&index=0&id=faab7fc8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionContent.vue?vue&type=style&index=0&id=78a753a8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionContent.vue?vue&type=style&index=0&id=78a753a8&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=style&index=0&id=158387b2&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=style&index=0&id=158387b2&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=a0b46caa&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=a0b46caa&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBookSection.vue?vue&type=style&index=0&id=137adf01&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBookSection.vue?vue&type=style&index=0&id=137adf01&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemText.vue?vue&type=style&index=0&id=779ffeae&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemText.vue?vue&type=style&index=0&id=779ffeae&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=59609a1c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=59609a1c&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Loader',{attrs:{\"hidden\":!_vm.loading}}),_c('div',{staticClass:\"app-inner\",class:{ 'app-inner--loaded': !_vm.loading }},[_c('router-view')],1),_c('ConnectionStatus')],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:\"loader\",class:{ hidden: _vm.hidden }},[_c('Spinner')],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:\"spinner\"},_vm._l((12),function(index){return _c('div',{key:index})}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Spinner.vue?vue&type=template&id=b0147066&scoped=true&\"\nvar script = {}\nimport style0 from \"./Spinner.vue?vue&type=style&index=0&id=b0147066&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b0147066\",\n  null\n  \n)\n\nexport default component.exports","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Spinner from './Spinner.vue';\r\n\r\n@Component({\r\n  components: { Spinner }\r\n})\r\nexport default class Loader extends Vue {\r\n  @Prop()\r\n  hidden?: boolean;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=01dc1f26&scoped=true&\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts&\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Loader.vue?vue&type=style&index=0&id=01dc1f26&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"01dc1f26\",\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('transition',{attrs:{\"name\":\"connection-status\"}},[(_vm.status)?_c('aside',{staticClass:\"connection-status\",class:(\"connection-status--\" + _vm.status),attrs:{\"role\":\"status\",\"aria-live\":\"polite\",\"aria-atomic\":\"true\"}},[_c('span',{staticClass:\"connection-status-icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('IconInfo')],1),_c('span',{staticClass:\"connection-status-copy\"},[_c('strong',[_vm._v(_vm._s(_vm.title))]),(_vm.status === 'offline')?_c('span',[_vm._v(_vm._s(_vm.getTranslation('connectionLostDescription')))]):_vm._e()])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('circle',{attrs:{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"7.5\",\"stroke\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M7 5a1 1 0 112 0 1 1 0 01-2 0zM7.5 7.5a.5.5 0 011 0v4a.5.5 0 01-1 0v-4z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","export function getCookieDomain(hostname: string = window.location.hostname): string {\r\n  const sharedRootDomain = 'vedarama.ru';\r\n  if (hostname === sharedRootDomain || hostname.endsWith(`.${sharedRootDomain}`)) {\r\n    return `.${sharedRootDomain}`;\r\n  }\r\n  return '';\r\n}\r\n\r\nclass CookieService {\r\n  get(name: string): string | null {\r\n    const match = document.cookie.match(\r\n      new RegExp('(?:^|; )' + name.replace(/([.$?*|{}()[\\]\\\\/+^])/g, '\\\\$1') + '=([^;]*)')\r\n    );\r\n    return match ? decodeURIComponent(match[1]) : null;\r\n  }\r\n\r\n  set(name: string, value: string, days: number = 365) {\r\n    const domain = getCookieDomain();\r\n    const domainAttribute = domain ? `; domain=${domain}` : '';\r\n    const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();\r\n    const secure = window.location.protocol === 'https:' ? '; Secure' : '';\r\n    document.cookie = `${name}=${encodeURIComponent(\r\n      value\r\n    )}; path=/${domainAttribute}; expires=${expires}; SameSite=None${secure}`;\r\n  }\r\n\r\n  remove(name: string) {\r\n    const domain = getCookieDomain();\r\n    const domainAttribute = domain ? `; domain=${domain}` : '';\r\n    const secure = window.location.protocol === 'https:' ? '; Secure' : '';\r\n    document.cookie = `${name}=; path=/${domainAttribute}; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=None${secure}`;\r\n  }\r\n}\r\n\r\nexport default new CookieService();\r\n","// we have to use axios due to CORS policy\r\nimport axios, { CancelTokenSource, AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\ninterface ApiConfig {\r\n  cancelPreviousRequests: boolean;\r\n}\r\n\r\nconst cacheStorage: { [name: string]: AxiosResponse } = {};\r\nconst GET_RETRY_DELAYS = [250, 750];\r\n\r\nexport function isRetriableRequestError(method: string | undefined, error: any) {\r\n  if (String(method || '').toUpperCase() !== 'GET' || axios.isCancel(error)) {\r\n    return false;\r\n  }\r\n  const status = error && error.response && Number(error.response.status);\r\n  return !status || status === 408 || status === 429 || status >= 500;\r\n}\r\n\r\nfunction wait(delay: number) {\r\n  return new Promise(resolve => setTimeout(resolve, delay));\r\n}\r\n\r\nexport class ApiService {\r\n  protected endpoint?: string;\r\n\r\n  protected params: object = {};\r\n\r\n  protected body: object | FormData = {};\r\n\r\n  protected token?: string;\r\n\r\n  protected cancelPreviousRequests: boolean = false;\r\n\r\n  protected cancelTokenSource?: CancelTokenSource;\r\n\r\n  protected cacheable: boolean = false;\r\n\r\n  public callsCount: number = 0;\r\n\r\n  constructor(config?: ApiConfig) {\r\n    if (config) {\r\n      this.cancelPreviousRequests = config.cancelPreviousRequests || false;\r\n    }\r\n  }\r\n\r\n  public setEndpoint(endpoint: string) {\r\n    this.endpoint = endpoint;\r\n    return this;\r\n  }\r\n\r\n  public setParams(params: object) {\r\n    this.params = params;\r\n    return this;\r\n  }\r\n\r\n  public setBody(body: object) {\r\n    this.body = body;\r\n    return this;\r\n  }\r\n\r\n  public setToken(token: string) {\r\n    this.token = token;\r\n    return this;\r\n  }\r\n\r\n  public cache() {\r\n    this.cacheable = true;\r\n    return this;\r\n  }\r\n\r\n  public abort() {\r\n    if (this.cancelTokenSource) {\r\n      this.cancelTokenSource.cancel();\r\n    }\r\n  }\r\n\r\n  public async get() {\r\n    return this.send({ method: 'GET', params: this.params });\r\n  }\r\n\r\n  public async post() {\r\n    return this.send({\r\n      method: 'POST',\r\n      data: this.body instanceof FormData ? this.body : JSON.stringify(this.body)\r\n    });\r\n  }\r\n\r\n  public async patch() {\r\n    return this.send({\r\n      method: 'PATCH',\r\n      data: this.body instanceof FormData ? this.body : JSON.stringify(this.body)\r\n    });\r\n  }\r\n\r\n  public async put() {\r\n    return this.send({\r\n      method: 'PUT',\r\n      data: this.body instanceof FormData ? this.body : JSON.stringify(this.body)\r\n    });\r\n  }\r\n\r\n  public async delete() {\r\n    return this.send({ method: 'DELETE', params: this.params });\r\n  }\r\n\r\n  protected get url() {\r\n    if (this.endpoint) {\r\n      return process.env.VUE_APP_API_URL + this.endpoint;\r\n    }\r\n    return undefined;\r\n  }\r\n\r\n  protected get headers() {\r\n    const headers: { [key: string]: string } = {\r\n      'Content-Type': 'application/json'\r\n    };\r\n    if (this.token) {\r\n      headers['Api-Authorization'] = this.token;\r\n    }\r\n    return headers;\r\n  }\r\n\r\n  protected async send(config: AxiosRequestConfig) {\r\n    if (this.cancelPreviousRequests && this.cancelTokenSource) {\r\n      // when user quickly clicks on different links in the navigation causing sending several requests in the same time - they could be executed in a random order, so the content could be shown for the latest loaded request (not necessary the last clicked one). To prevent this, we need to cancel previous requests for the same area before sending new ones.\r\n      this.abort();\r\n    }\r\n    this.checkRequestData();\r\n    const url = this.url;\r\n    if (!url) {\r\n      return Promise.reject();\r\n    }\r\n    if (cacheStorage[url]) {\r\n      return Promise.resolve(cacheStorage[url]);\r\n    }\r\n    this.callsCount += 1;\r\n    let response: AxiosResponse;\r\n    try {\r\n      for (let attempt = 0; ; attempt += 1) {\r\n        this.cancelTokenSource = axios.CancelToken.source();\r\n        try {\r\n          response = await axios({\r\n            url,\r\n            headers: this.headers,\r\n            withCredentials: process.env.VUE_APP_API_WITH_CREDENTIALS !== 'false',\r\n            timeout: 30000,\r\n            ...config,\r\n            cancelToken: this.cancelTokenSource.token\r\n          });\r\n          break;\r\n        } catch (error) {\r\n          if (attempt >= GET_RETRY_DELAYS.length || !isRetriableRequestError(config.method, error)) {\r\n            throw error;\r\n          }\r\n          await wait(GET_RETRY_DELAYS[attempt]);\r\n        }\r\n      }\r\n    } finally {\r\n      this.callsCount -= 1;\r\n    }\r\n    ApiService.checkResponse(response);\r\n    if (!(response && response.data)) {\r\n      return Promise.reject();\r\n    }\r\n    if (this.cacheable) {\r\n      cacheStorage[url] = response;\r\n    }\r\n    return Promise.resolve(response);\r\n  }\r\n\r\n  protected checkRequestData() {\r\n    if (!this.endpoint) {\r\n      throw new Error('Api endpoint is not set');\r\n    }\r\n  }\r\n\r\n  protected static checkResponse(response: AxiosResponse | void) {\r\n    if (typeof response !== 'object') {\r\n      throw new Error(getTranslation('defaultErrorMessage'));\r\n    }\r\n    if (typeof response.data !== 'object') {\r\n      throw new Error(`Ошибка соединения. Некорректный ответ от сервера ${typeof response.data}`);\r\n    }\r\n    if (!response.data.success) {\r\n      throw new Error(response.data.message);\r\n    }\r\n  }\r\n}\r\n","import { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { store } from '@/store';\r\n\r\nexport default class AuthService {\r\n  static async login(email: string, password: string) {\r\n    const endpoint = endpoints.auth.login;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setBody({\r\n        email,\r\n        password\r\n      })\r\n      .post();\r\n  }\r\n\r\n  static async logout() {\r\n    const endpoint = endpoints.auth.logout;\r\n    return new ApiService().setEndpoint(endpoint).get();\r\n  }\r\n\r\n  static async forgotPassword(email: string) {\r\n    const endpoint = endpoints.auth.forgotPassword;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setBody({\r\n        email\r\n      })\r\n      .post();\r\n  }\r\n\r\n  static async resetPassword(token: string, email: string, password: string, passwordConfirmation: string) {\r\n    const endpoint = endpoints.auth.resetPassword;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setBody({\r\n        token,\r\n        email,\r\n        password,\r\n        password_confirmation: passwordConfirmation\r\n      })\r\n      .post();\r\n  }\r\n\r\n  static async register(payload: { [fieldName: string]: string }) {\r\n    const endpoint = endpoints.auth.register;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setBody(payload)\r\n      .post();\r\n  }\r\n\r\n  static async verifyEmail(userId: string, hash: string, expires: string, signature: string) {\r\n    const endpoint = endpoints.auth.verifyEmail.replace(':userId', userId).replace(':hash', hash);\r\n    return new ApiService()\r\n      .setToken(store.state.auth.token)\r\n      .setEndpoint(endpoint)\r\n      .setParams({ expires, signature })\r\n      .get();\r\n  }\r\n\r\n  static async verifyEmailResend() {\r\n    const endpoint = endpoints.auth.verifyEmailResend;\r\n    return new ApiService()\r\n      .setToken(store.state.auth.token)\r\n      .setEndpoint(endpoint)\r\n      .post();\r\n  }\r\n}\r\n","import { ActionTree, Module, MutationTree } from 'vuex';\r\nimport CookieService from '@/services/CookieService';\r\nimport AuthService from '@/services/Api/AuthService';\r\nimport { RootState } from '@/store';\r\n\r\nexport interface AuthState {\r\n  token: string;\r\n  authorized: boolean;\r\n}\r\n\r\nfunction syncInitialToken(): AuthState {\r\n  const token = CookieService.get('api_token') || '';\r\n  return token ? { token, authorized: true } : { token: '', authorized: false };\r\n}\r\n\r\nconst state: AuthState = syncInitialToken();\r\n\r\nconst actions: ActionTree<AuthState, RootState> = {\r\n  async login({ commit }, { email, password }) {\r\n    const response = await AuthService.login(email, password);\r\n    commit('login', response.headers['api-token']);\r\n    commit('user/set', response.data.data, { root: true });\r\n    commit('tabs/switchOwner', String(response.data.data.id || response.data.data.email), { root: true });\r\n    commit('bookmarks/switchOwner', String(response.data.data.id || response.data.data.email), {\r\n      root: true\r\n    });\r\n  },\r\n  logout({ commit }) {\r\n    commit('startLoading', null, { root: true });\r\n    // @toDo: uncomment when api implement this method\r\n    // await AuthService.logout();\r\n    // store.dispatch('unsetUser');\r\n    commit('logout');\r\n    commit('tabs/switchOwner', 'guest', { root: true });\r\n    commit('bookmarks/switchOwner', 'guest', { root: true });\r\n    commit('user/unset', null, { root: true });\r\n    commit('stopLoading', null, { root: true });\r\n  }\r\n};\r\n\r\nconst mutations: MutationTree<AuthState> = {\r\n  login(state: AuthState, token: string) {\r\n    state.token = token;\r\n    state.authorized = true;\r\n    if (token) {\r\n      CookieService.set('api_token', token);\r\n    }\r\n  },\r\n  logout(state: AuthState) {\r\n    state.token = '';\r\n    state.authorized = false;\r\n    CookieService.remove('api_token');\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  actions,\r\n  mutations\r\n} as Module<AuthState, RootState>;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"tabs\"},_vm._l((_vm.tabs),function(tab){return _c('button',{key:tab.code,staticClass:\"tab\",class:{ active: _vm.currentTab === tab.code },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.currentTab = tab.code}}},[_vm._v(\"\\n      \"+_vm._s(tab.name)+\"\\n    \")])}),0),(_vm.currentTab === 'news' && _vm.news.length)?_c('NewsList',{attrs:{\"news\":_vm.news,\"pagination\":_vm.pagination}}):_vm._e(),(_vm.currentTab === 'recently-viewed-books')?_c('UserRecentBooks',{attrs:{\"list\":_vm.userRecentBooks}}):_vm._e(),(_vm.currentTab === 'search-history')?_c('SearchHistory',{staticClass:\"search-history\"}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const LANGUAGE_CODE_RUSSIAN = 'ru';\r\nexport const LANGUAGE_CODE_ENGLISH = 'en';\r\nexport const LANGUAGE_CODE_SANSKRIT = 'st';\r\nexport const LANGUAGE_CODE_DEFAULT = LANGUAGE_CODE_RUSSIAN;\r\nexport const LANGUAGES = [LANGUAGE_CODE_RUSSIAN, LANGUAGE_CODE_ENGLISH, LANGUAGE_CODE_SANSKRIT];\r\n\r\nexport const LIST_TYPE_DEFAULT = 'categories';\r\n\r\nexport const LIST_SCALE_AUTO = 'auto';\r\nexport const LIST_SCALE_DESKTOP = 'desktop';\r\nexport const LIST_SCALE_TABLET = 'tablet';\r\nexport const LIST_SCALE_DEFAULT = LIST_SCALE_AUTO;\r\n","import { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\n\r\nimport { store } from '@/store';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\n\r\nexport default class NewsService {\r\n  static async getNews() {\r\n    const endpoint = endpoints.news;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setParams({\r\n        language: store.state.reader.interfaceLanguage || LANGUAGE_CODE_DEFAULT\r\n      })\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data);\r\n  }\r\n}\r\n","import { store } from '@/store';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { User } from '@/store/modules/user';\r\n\r\nexport default class UserService {\r\n  private static readingPositionRequests: { [bookKey: string]: Promise<any> } = {};\r\n\r\n  private static closedReadingTabs: Set<string> = new Set();\r\n\r\n  static get bookmarksApiEnabled() {\r\n    return process.env.VUE_APP_BOOKMARKS_API_ENABLED === 'true';\r\n  }\r\n\r\n  private static readingTabKey(language: string, book: string) {\r\n    const user = store.state.user.data as User;\r\n    const ownerKey = user.id || user.email || 'guest';\r\n    return `${ownerKey}:${language}:${book}`;\r\n  }\r\n\r\n  private static enqueueReadingTabRequest(bookKey: string, request: () => Promise<any>) {\r\n    const previous = UserService.readingPositionRequests[bookKey] || Promise.resolve();\r\n    const queued = previous.catch(() => undefined).then(request);\r\n    UserService.readingPositionRequests[bookKey] = queued;\r\n    const clearQueuedRequest = () => {\r\n      if (UserService.readingPositionRequests[bookKey] === queued) {\r\n        delete UserService.readingPositionRequests[bookKey];\r\n      }\r\n    };\r\n    queued.then(clearQueuedRequest, clearQueuedRequest);\r\n    return queued;\r\n  }\r\n\r\n  static openReadingTab(language: string, book: string) {\r\n    UserService.closedReadingTabs.delete(UserService.readingTabKey(language, book));\r\n  }\r\n\r\n  static getUser() {\r\n    const endpoint = endpoints.user.currentUser;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(res => res.data.data);\r\n  }\r\n\r\n  static updateUser(fields: Partial<User>) {\r\n    const endpoint = endpoints.user.currentUser;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .setBody(fields)\r\n      .post()\r\n      .then(res => res.data.data);\r\n  }\r\n\r\n  static async getUserRecentBooks() {\r\n    const endpoint = endpoints.user.userRecentBooks;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getReadingTabs() {\r\n    const endpoint = endpoints.user.readingTabs;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getBookmarks() {\r\n    if (!UserService.bookmarksApiEnabled) {\r\n      return [];\r\n    }\r\n    const endpoint = endpoints.user.bookmarks;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async createBookmark(payload: {\r\n    language: string;\r\n    book: string;\r\n    section: string;\r\n    position: number;\r\n    paragraph_anchor?: string;\r\n    note?: string;\r\n  }) {\r\n    if (!UserService.bookmarksApiEnabled) {\r\n      return null;\r\n    }\r\n    return new ApiService()\r\n      .setEndpoint(endpoints.user.bookmarks)\r\n      .setToken(store.state.auth.token)\r\n      .setBody(payload)\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async updateBookmark(\r\n    id: string | number,\r\n    payload: {\r\n      language: string;\r\n      book: string;\r\n      section: string;\r\n      position: number;\r\n      paragraph_anchor?: string;\r\n      note?: string;\r\n    }\r\n  ) {\r\n    if (!UserService.bookmarksApiEnabled) {\r\n      return null;\r\n    }\r\n    return new ApiService()\r\n      .setEndpoint(`${endpoints.user.bookmarks}/${id}`)\r\n      .setToken(store.state.auth.token)\r\n      .setBody(payload)\r\n      .put()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async removeBookmark(id: string | number) {\r\n    if (!UserService.bookmarksApiEnabled) {\r\n      return null;\r\n    }\r\n    return new ApiService()\r\n      .setEndpoint(`${endpoints.user.bookmarks}/${id}`)\r\n      .setToken(store.state.auth.token)\r\n      .delete()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async saveReadingPosition(payload: {\r\n    language: string;\r\n    book: string;\r\n    section: string;\r\n    position: number;\r\n    section_positions?: { [link: string]: number };\r\n  }) {\r\n    const bookKey = UserService.readingTabKey(payload.language, payload.book);\r\n    if (UserService.closedReadingTabs.has(bookKey)) {\r\n      return undefined;\r\n    }\r\n    const endpoint = endpoints.user.readingTabs;\r\n    const token = store.state.auth.token;\r\n    return UserService.enqueueReadingTabRequest(bookKey, () =>\r\n      new ApiService()\r\n        .setEndpoint(endpoint)\r\n        .setToken(token)\r\n        .setBody(payload)\r\n        .post()\r\n        .then(response => response.data.data)\r\n    );\r\n  }\r\n\r\n  static saveReadingPositionOnPageHide(payload: {\r\n    language: string;\r\n    book: string;\r\n    section: string;\r\n    position: number;\r\n    section_positions?: { [link: string]: number };\r\n  }) {\r\n    const bookKey = UserService.readingTabKey(payload.language, payload.book);\r\n    if (UserService.closedReadingTabs.has(bookKey)) {\r\n      return Promise.resolve(undefined);\r\n    }\r\n    const headers: { [name: string]: string } = {\r\n      'Content-Type': 'application/json'\r\n    };\r\n    if (store.state.auth.token) {\r\n      headers['Api-Authorization'] = store.state.auth.token;\r\n    }\r\n    return fetch(`${process.env.VUE_APP_API_URL}${endpoints.user.readingTabs}`, {\r\n      method: 'POST',\r\n      headers,\r\n      credentials: 'include',\r\n      keepalive: true,\r\n      body: JSON.stringify(payload)\r\n    }).catch(() => undefined);\r\n  }\r\n\r\n  static async closeReadingTab(language: string, book: string) {\r\n    const bookKey = UserService.readingTabKey(language, book);\r\n    UserService.closedReadingTabs.add(bookKey);\r\n    const endpoint = endpoints.user.readingTabs;\r\n    const token = store.state.auth.token;\r\n    return UserService.enqueueReadingTabRequest(bookKey, () =>\r\n      new ApiService()\r\n        .setEndpoint(endpoint)\r\n        .setToken(token)\r\n        .setParams({ language, book })\r\n        .delete()\r\n        .then(response => response.data.data)\r\n    );\r\n  }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.getNews()),function(items,date){return _c('div',{key:date},[_c('div',{staticClass:\"date\"},[_vm._v(_vm._s(date))]),_vm._l((items),function(item,index){return _c('div',{key:index,staticClass:\"item\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(item.title))]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(item.text))]),_c('div',{staticClass:\"images\"},_vm._l((item.images),function(image){return _c('div',{key:image.src,staticClass:\"image\"},[_c('img',{attrs:{\"src\":image.preview,\"alt\":\"\"}})])}),0)])})],2)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class NewsList extends Vue {\r\n  @Prop({ required: true })\r\n  news!: Array<any>;\r\n\r\n  @Prop({ required: true })\r\n  pagination!: Array<any>;\r\n\r\n  getNews() {\r\n    const news: { [key: string]: any } = {};\r\n    this.news.forEach((item: any) => {\r\n      const activeFrom = item['active_from']; // eslint-disable-line dot-notation\r\n      news[activeFrom] = news[activeFrom] || [];\r\n      news[activeFrom].push(item);\r\n    });\r\n    return news;\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewsList.vue?vue&type=template&id=36699d44&scoped=true&\"\nimport script from \"./NewsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewsList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewsList.vue?vue&type=style&index=0&id=36699d44&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"36699d44\",\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('div',_vm._l((_vm.books),function(book){return _c('div',{key:(\"book-\" + (book.url)),staticClass:\"item\"},[_c('router-link',{staticClass:\"title\",attrs:{\"to\":book.url}},[_vm._v(_vm._s(book.name))]),_c('div',{staticClass:\"date\"},[_vm._v(_vm._s(book['created_at']))])],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import router from '@/router';\r\nimport { SearchItem } from '@/services/Api/SearchService';\r\n\r\ninterface BookUrlParams {\r\n  language: string;\r\n  bookSlug: string;\r\n  categorySlug?: string;\r\n  authorSlug?: string;\r\n  letter?: string;\r\n}\r\n\r\ninterface BookSectionUrlParams extends BookUrlParams {\r\n  bookSectionSlug: string;\r\n}\r\n\r\ninterface AuthorUrlParams {\r\n  language: string;\r\n  authorSlug: string;\r\n}\r\n\r\ninterface SearchUrlParams {\r\n  language: string;\r\n  query: string;\r\n  showAdvancedSearch?: boolean;\r\n  showHelp?: boolean;\r\n  inBookOnly?: boolean;\r\n  searchInPoem?: boolean;\r\n  exact?: boolean;\r\n  considerDiacritics?: boolean;\r\n  equalizeWriting?: boolean;\r\n  bookSlug?: string;\r\n  bookId?: number;\r\n  bookSearch?: boolean;\r\n  returnTo?: string;\r\n}\r\n\r\nexport default class UrlBuilderService {\r\n  static getBookUrl({ language, bookSlug, categorySlug, authorSlug }: BookUrlParams) {\r\n    if (categorySlug) {\r\n      return `/${language}/categories/${categorySlug}/${bookSlug}`;\r\n    }\r\n    if (authorSlug) {\r\n      return `/${language}/authors/${authorSlug}/${bookSlug}`;\r\n    }\r\n    return `/${language}/books/${bookSlug}`;\r\n  }\r\n\r\n  static getBookSectionUrl({\r\n    language,\r\n    bookSlug,\r\n    bookSectionSlug,\r\n    categorySlug,\r\n    authorSlug\r\n  }: BookSectionUrlParams) {\r\n    if (categorySlug) {\r\n      return `/${language}/categories/${categorySlug}/${bookSlug}/${bookSectionSlug}`;\r\n    }\r\n    if (authorSlug) {\r\n      return `/${language}/authors/${authorSlug}/${bookSlug}/${bookSectionSlug}`;\r\n    }\r\n    return `/${language}/books/${bookSlug}/${bookSectionSlug}`;\r\n  }\r\n\r\n  static getAuthorUrl({ language, authorSlug }: AuthorUrlParams) {\r\n    return `/${language}/authors/${authorSlug}`;\r\n  }\r\n\r\n  static getSearchQueryUrl({ language, query, bookSlug, returnTo, ...rest }: SearchUrlParams) {\r\n    const searchParams: { [key: string]: string } = { query };\r\n    if (bookSlug) {\r\n      searchParams.slug = bookSlug;\r\n    }\r\n    if (returnTo) {\r\n      searchParams.returnTo = returnTo;\r\n    }\r\n    Object.entries(rest)\r\n      .filter(([key, value]) => value)\r\n      .forEach(([key, value]) => {\r\n        searchParams[key] = Number(value).toString();\r\n      });\r\n    return `/${language}/search?${new URLSearchParams({ ...searchParams }).toString()}`;\r\n  }\r\n\r\n  static getSearchResultItemUrl(searchItem: SearchItem, index: number) {\r\n    let url = '';\r\n    const currentSearchLanguage =\r\n      typeof router.currentRoute.query.searchLanguage === 'string'\r\n        ? router.currentRoute.query.searchLanguage\r\n        : router.currentRoute.params.language;\r\n    const resultLanguage = searchItem.language || router.currentRoute.params.language;\r\n    if (searchItem.section_slug) {\r\n      url = UrlBuilderService.getBookSectionUrl({\r\n        language: resultLanguage,\r\n        bookSlug: searchItem.book_slug,\r\n        bookSectionSlug: searchItem.section_slug\r\n      });\r\n    } else {\r\n      url = UrlBuilderService.getBookUrl({\r\n        language: resultLanguage,\r\n        bookSlug: searchItem.book_slug\r\n      });\r\n    }\r\n    if (typeof router.currentRoute.query.query === 'string') {\r\n      const searchParams = new URLSearchParams();\r\n      Object.entries(router.currentRoute.query).forEach(([name, value]) => {\r\n        if (name !== 'scope' && typeof value === 'string') {\r\n          searchParams.set(name, value);\r\n        }\r\n      });\r\n      searchParams.set('index', index.toString());\r\n      searchParams.set('highlight', searchItem.highlight.join(','));\r\n      searchParams.set('searchLanguage', currentSearchLanguage);\r\n      return `${url}?${searchParams.toString()}`;\r\n    }\r\n    return url;\r\n  }\r\n\r\n  static getSearchParams({\r\n    query,\r\n    index,\r\n    highlight = ''\r\n  }: {\r\n    query: string;\r\n    index: number | string;\r\n    highlight?: string;\r\n  }) {\r\n    return new URLSearchParams({ query, index: index.toString(), highlight });\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\ninterface Book {\r\n  name: string;\r\n  language: string;\r\n  slug: string;\r\n  url?: string;\r\n  created_at: string;\r\n}\r\n\r\n@Component\r\nexport default class UserRecentBooks extends Vue {\r\n  @Prop({ required: true })\r\n  list!: Array<Book>;\r\n\r\n  get books() {\r\n    return this.list.map((book: Book) => ({\r\n      url: UrlBuilderService.getBookUrl({ language: book.language, bookSlug: book.slug }),\r\n      ...book\r\n    }));\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRecentBooks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRecentBooks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserRecentBooks.vue?vue&type=template&id=39cbb900&scoped=true&\"\nimport script from \"./UserRecentBooks.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserRecentBooks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UserRecentBooks.vue?vue&type=style&index=0&id=39cbb900&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"39cbb900\",\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('div',[(_vm.list.length)?_c('button',{staticClass:\"link clear-history\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.clearSearchHistory()}}},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('clearList'))+\"\\n  \")]):_vm._e(),(_vm.list && _vm.list.length)?_c('div',_vm._l((_vm.list),function(item){return _c('div',{key:item.query,staticClass:\"item\"},[_c('router-link',{attrs:{\"to\":item.url},nativeOn:{\"click\":function($event){return _vm.$emit('click')}}},[_vm._v(_vm._s(item.query))])],1)}),0):(_vm.error)?_c('div',{staticClass:\"history-error\"},[_vm._v(_vm._s(_vm.getTranslation('errorOccurred')))]):(_vm.loaded)?_c('div',{staticClass:\"history-empty\"},[_vm._v(_vm._s(_vm.getTranslation('searchHistoryEmpty')))]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { endpoints } from '@/api-endpoints.json';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\nimport { store } from '@/store';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\n\r\nexport type SearchBaseOptions = {\r\n  book_slug: string;\r\n  search_in_poem: boolean;\r\n  exact: boolean;\r\n  consider_diacritics: boolean;\r\n  equalize_writing: boolean;\r\n  books: Array<number>;\r\n  book_sections: Array<string>;\r\n  categories: Array<number>;\r\n};\r\n\r\nexport interface SearchOptions extends SearchBaseOptions {\r\n  size: number;\r\n  from: number;\r\n}\r\n\r\nexport interface SearchItem {\r\n  language?: string;\r\n  book_slug: string;\r\n  section_slug: string;\r\n  title: string;\r\n  body: string;\r\n  highlight: Array<string>;\r\n  paths: Array<Array<{ title: string }>>;\r\n}\r\n\r\nexport default class SearchService {\r\n  static async search(\r\n    language: string = LANGUAGE_CODE_DEFAULT,\r\n    query: string,\r\n    options: Partial<SearchOptions> = {}\r\n  ) {\r\n    return new ApiService()\r\n      .setEndpoint(endpoints.search.query.replace(':lang', language))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        language,\r\n        query,\r\n        ...options\r\n      })\r\n      .post()\r\n      .then(response => response.data);\r\n  }\r\n\r\n  static async getSuggestions(\r\n    language: string = LANGUAGE_CODE_DEFAULT,\r\n    query: string,\r\n    options: Partial<SearchBaseOptions> = {}\r\n  ) {\r\n    return new ApiService()\r\n      .setEndpoint(endpoints.search.autocomplete.replace(':lang', language))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        language,\r\n        query,\r\n        ...options\r\n      })\r\n      .post()\r\n      .then(response => response.data);\r\n  }\r\n\r\n  static async getSearchHistory() {\r\n    const endpoint = endpoints.search.history;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async clearSearchHistory() {\r\n    const endpoint = endpoints.search.history;\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .delete()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getPriorityResults(language: string = LANGUAGE_CODE_DEFAULT, query: string) {\r\n    const endpoint = endpoints.search.priority.replace(':lang', language);\r\n    return new ApiService()\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        query\r\n      })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport SearchService from '@/services/Api/SearchService';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { State } from 'vuex-class';\r\n\r\n@Component\r\nexport default class SearchHistory extends Vue {\r\n  list: Array<{ query: string; url: string }> = [];\r\n\r\n  error: boolean = false;\r\n\r\n  loaded: boolean = false;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navigationLanguage!: string;\r\n\r\n  async mounted() {\r\n    this.list = [];\r\n    this.error = false;\r\n    try {\r\n      const response: Array<{ query: string }> = await SearchService.getSearchHistory();\r\n      if (response && response.length) {\r\n        this.list = this.prepareList(response);\r\n      }\r\n    } catch (e) {\r\n      this.error = true;\r\n    } finally {\r\n      this.loaded = true;\r\n      this.$emit('state-change', this.list.length > 0);\r\n    }\r\n  }\r\n\r\n  async clearSearchHistory() {\r\n    this.list = [];\r\n    this.error = false;\r\n    try {\r\n      const response = await SearchService.clearSearchHistory();\r\n      if (response && response.length) {\r\n        this.list = this.prepareList(response);\r\n      }\r\n      this.$emit('state-change', this.list.length > 0);\r\n      this.$emit('cleared');\r\n    } catch (e) {\r\n      this.error = true;\r\n    }\r\n  }\r\n\r\n  prepareList(list: Array<{ query: string }>) {\r\n    const language = this.$route.params.language || this.navigationLanguage || LANGUAGE_CODE_DEFAULT;\r\n    return list.map(item => ({\r\n      ...item,\r\n      url: UrlBuilderService.getSearchQueryUrl({ language, query: item.query })\r\n    }));\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchHistory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchHistory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchHistory.vue?vue&type=template&id=955a4d70&scoped=true&\"\nimport script from \"./SearchHistory.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchHistory.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchHistory.vue?vue&type=style&index=0&id=955a4d70&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"955a4d70\",\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\r\nimport Vue from 'vue';\r\nimport NewsService from '@/services/Api/NewsService';\r\nimport UserService from '@/services/Api/UserService';\r\nimport NewsList from '@/components/NewsList.vue';\r\nimport UserRecentBooks from '@/components/UserRecentBooks.vue';\r\nimport SearchHistory from '@/components/SearchHistory.vue';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { State } from 'vuex-class';\r\nimport { Watch } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { NewsList, UserRecentBooks, SearchHistory }\r\n})\r\nexport default class Home extends Vue {\r\n  tabs = [\r\n    {\r\n      code: 'news',\r\n      name: getTranslation('news')\r\n    },\r\n    {\r\n      code: 'recently-viewed-books',\r\n      name: getTranslation('recentlyViewedBooks')\r\n    },\r\n    {\r\n      code: 'search-history',\r\n      name: getTranslation('searchQueries')\r\n    }\r\n  ];\r\n\r\n  currentTab: string = 'news';\r\n  news: Array<any> = [];\r\n  userRecentBooks: Array<any> = [];\r\n  pagination = {\r\n    current: 1,\r\n    total: 1\r\n  };\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  async mounted() {\r\n    this.$store.commit('tabs/updateActiveTabName', 'Vedarama');\r\n    await this.fetchNews();\r\n    await this.fetchUserRecentBooks();\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  async onChangeInterfaceLang() {\r\n    this.tabs = [\r\n      {\r\n        code: 'news',\r\n        name: getTranslation('news')\r\n      },\r\n      {\r\n        code: 'recently-viewed-books',\r\n        name: getTranslation('recentlyViewedBooks')\r\n      },\r\n      {\r\n        code: 'search-history',\r\n        name: getTranslation('searchQueries')\r\n      }\r\n    ];\r\n    await this.fetchNews();\r\n  }\r\n\r\n  async fetchNews() {\r\n    const { data, pagination } = await NewsService.getNews();\r\n    this.news = data;\r\n    if (pagination) {\r\n      this.pagination = pagination;\r\n    }\r\n  }\r\n\r\n  async fetchUserRecentBooks() {\r\n    this.userRecentBooks = await UserService.getUserRecentBooks();\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/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=5849a793&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=5849a793&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5849a793\",\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('AuthLayout',[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('loginCaption')))]),_c('LoginForm',{on:{\"authorized\":_vm.onAuthorize}}),_c('div',{staticClass:\"registration\"},[_c('router-link',{staticClass:\"button secondary light-gold-color w100pc\",attrs:{\"to\":\"registration\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('registration'))+\"\\n    \")])],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:\"layout\"},[_c('div',[_c('div',{staticClass:\"logo\"},[_c('Logo',{attrs:{\"viewBox\":\"0 0 380 44\"}})],1),_c('div',{staticClass:\"content\"},[_vm._t(\"default\")],2)]),_c('SwitchLang')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"380\",\"height\":\"44\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M17.943 25.692l1.08 7.262h.3l1.2-7.323L28.564.611h8.642L21.603 43.633h-5.88L0 .61h9.541l8.402 25.082zM52.242.61h24.904v7.445H60.463v9.948h15.182v7.445H60.463v10.435h16.983v7.446H52.242V.61zM95.596.61c.84-.122 1.78-.223 2.82-.305a89.348 89.348 0 016.541-.244A77.42 77.42 0 01107.839 0c3.721 0 6.901.529 9.541 1.587 2.641 1.057 4.781 2.542 6.421 4.455 1.641 1.912 2.841 4.19 3.601 6.835.76 2.644 1.14 5.553 1.14 8.726 0 2.889-.36 5.676-1.08 8.36-.72 2.686-1.92 5.066-3.601 7.141-1.68 2.075-3.9 3.743-6.661 5.004-2.72 1.261-6.101 1.892-10.141 1.892-.64 0-1.5-.02-2.581-.061-1.04-.04-2.14-.102-3.3-.183a77.77 77.77 0 01-3.24-.183c-1.04-.04-1.82-.102-2.34-.183V.61zm12.902 6.835c-.88 0-1.78.02-2.7.061-.88.04-1.541.102-1.981.183v28.622c.16.04.42.081.78.122.401 0 .821.02 1.261.06.44 0 .86.021 1.26.062h.9c2.32 0 4.241-.407 5.761-1.22 1.56-.855 2.78-1.974 3.66-3.357.921-1.384 1.561-2.97 1.921-4.76.36-1.831.54-3.703.54-5.615 0-1.668-.16-3.336-.48-5.004-.32-1.709-.92-3.234-1.801-4.577-.84-1.342-2-2.44-3.48-3.295s-3.361-1.282-5.641-1.282zM165.455 33.87h-12.902l-3.18 9.459h-8.221L156.274.305h6.061l15.122 43.024h-8.641l-3.361-9.46zm-10.801-6.713h9.001l-3.12-9.52-1.261-6.713h-.3l-1.26 6.774-3.06 9.459zM193.088 1.037c.92-.162 1.9-.305 2.94-.427 1.08-.162 2.14-.285 3.181-.366 1.08-.081 2.12-.142 3.12-.183 1-.04 1.92-.061 2.761-.061 1.96 0 3.88.183 5.76.55 1.921.365 3.621.996 5.101 1.891 1.52.895 2.721 2.136 3.601 3.723.92 1.546 1.38 3.499 1.38 5.858 0 3.499-.8 6.347-2.4 8.544-1.601 2.197-3.741 3.723-6.421 4.577l2.94 1.892 9.602 16.294h-9.482l-9.541-16.721-4.321-.794V43.33h-8.221V1.037zm12.602 6.408a52.1 52.1 0 00-2.521.061c-.8.04-1.42.122-1.86.244V20.14h3.48c2.281 0 4.101-.53 5.461-1.587 1.361-1.058 2.041-2.807 2.041-5.248 0-1.831-.56-3.255-1.681-4.272-1.12-1.058-2.76-1.587-4.92-1.587zM259.665 33.87h-12.902l-3.18 9.459h-8.222L250.484.305h6.061l15.122 43.024h-8.641l-3.361-9.46zm-10.802-6.713h9.002l-3.121-9.52-1.26-6.713h-.3l-1.26 6.774-3.061 9.459zM319.882 21.176l.901-8.482h-.36l-2.581 6.834-8.941 15.928h-2.641l-9.421-15.989-2.64-6.773h-.301l1.201 8.421V43.33h-7.802V.61h7.502L306.02 20.14l1.981 4.882h.24l1.8-5.004L320.663.61h7.441V43.33h-8.222V21.176zM367.998 33.87h-12.902l-3.18 9.459h-8.222L358.817.305h6.061L380 43.33h-8.641l-3.361-9.46zm-10.801-6.713h9.001l-3.121-9.52-1.26-6.713h-.3l-1.26 6.774-3.06 9.459z\",\"fill\":\"#B78A54\"}})])\n          )\n        }\n      }\n    ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"switch-lang\"},[(_vm.interfaceLanguage === _vm.LANGUAGE_CODE_RUSSIAN)?_c('button',{staticClass:\"link\",on:{\"click\":function($event){return _vm.setInterfaceLanguage(_vm.LANGUAGE_CODE_ENGLISH)}}},[_vm._v(\"\\n    Switch to English version\\n  \")]):_c('button',{staticClass:\"link\",on:{\"click\":function($event){return _vm.setInterfaceLanguage(_vm.LANGUAGE_CODE_RUSSIAN)}}},[_vm._v(\"\\n    Switch to Russian version\\n  \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport { LANGUAGE_CODE_RUSSIAN, LANGUAGE_CODE_ENGLISH } from '@/constants';\r\n\r\n@Component\r\nexport default class SwitchLang extends Vue {\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  @Mutation('setInterfaceLanguage', { namespace: 'reader' })\r\n  setInterfaceLanguage!: Function;\r\n\r\n  LANGUAGE_CODE_RUSSIAN = LANGUAGE_CODE_RUSSIAN;\r\n  LANGUAGE_CODE_ENGLISH = LANGUAGE_CODE_ENGLISH;\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchLang.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchLang.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SwitchLang.vue?vue&type=template&id=27817ce8&scoped=true&\"\nimport script from \"./SwitchLang.vue?vue&type=script&lang=ts&\"\nexport * from \"./SwitchLang.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SwitchLang.vue?vue&type=style&index=0&id=27817ce8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"27817ce8\",\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\r\nimport Logo from '@/assets/icons/logo.svg';\r\nimport SwitchLang from '@/components/SwitchLang.vue';\r\n\r\nexport default {\r\n  components: { SwitchLang, Logo }\r\n};\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AuthLayout.vue?vue&type=template&id=384100e0&scoped=true&\"\nimport script from \"./AuthLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./AuthLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AuthLayout.vue?vue&type=style&index=0&id=384100e0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"384100e0\",\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('div',[_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"example@vedarama.com\",\"label\":_vm.getTranslation('yourEmail'),\"value\":_vm.payload.email,\"error\":_vm.errors.email},on:{\"change\":function (value) { return _vm.onChangeField('email', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"flex justify-content-space-between\"},[_c('label',{staticClass:\"form-label\"},[_vm._v(_vm._s(_vm.getTranslation('password')))]),(_vm.showForgotPasswordLink)?_c('router-link',{staticClass:\"forgot-password-link\",attrs:{\"to\":\"forgot-password\"}},[_vm._v(_vm._s(_vm.getTranslation('forgotPassword')))]):_vm._e()],1),_c('InputText',{attrs:{\"type\":\"password\",\"value\":_vm.payload.password,\"error\":_vm.errors.password},on:{\"change\":function (value) { return _vm.onChangeField('password', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"flex justify-content-space-between align-items-center\"},[_c('Checkbox',{attrs:{\"checked\":_vm.rememberMe},on:{\"change\":function($event){_vm.rememberMe = !_vm.rememberMe}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('rememberMe'))+\"\\n      \")]),_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('signIn'))+\"\\n      \")])],1)]),_c('div',{staticClass:\"red-color\"},[_vm._v(_vm._s(_vm.error))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"checkbox\",class:{ 'is-checked': _vm.checked, 'is-partially-checked': _vm.partiallyChecked },attrs:{\"type\":\"button\",\"role\":\"checkbox\",\"aria-checked\":_vm.partiallyChecked ? 'mixed' : String(!!_vm.checked)},on:{\"click\":function($event){return _vm.$emit('change')}}},[_c('div',{staticClass:\"checkbox-inner\",class:{ checked: _vm.checked, 'partial-check': _vm.partiallyChecked }},[_c('span',{staticClass:\"checkbox-mobile-indicator\",attrs:{\"aria-hidden\":\"true\"}},[(_vm.checked && !_vm.partiallyChecked)?_c('svg',{attrs:{\"viewBox\":\"0 0 20 20\"}},[_c('path',{attrs:{\"d\":\"M5 10.25 8.4 13.5 15 6.8\"}})]):(_vm.partiallyChecked)?_c('span',{staticClass:\"checkbox-mobile-partial\"}):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Checkbox extends Vue {\r\n  @Prop({ required: false })\r\n  checked?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  partiallyChecked?: boolean;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Checkbox.vue?vue&type=template&id=497a030c&scoped=true&\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Checkbox.vue?vue&type=style&index=0&id=497a030c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"497a030c\",\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('div',{staticClass:\"input-text\"},[_c('label',{staticClass:\"label\"},[(_vm.label)?_c('div',{staticClass:\"label-text\"},[_vm._v(\"\\n      \"+_vm._s(_vm.label)+\"\\n      \"),(_vm.labelGreyText)?_c('span',{staticClass:\"gray-text-color\"},[_vm._v(_vm._s(_vm.labelGreyText))]):_vm._e()]):_vm._e(),((_vm.type)==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],staticClass:\"input\",class:{ error: _vm.error },attrs:{\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.autocomplete ? '' : 'new-password',\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.text)?_vm._i(_vm.text,null)>-1:(_vm.text)},on:{\"keyup\":_vm.handleKeyUp,\"blur\":function($event){return _vm.$emit('blur')},\"focus\":function($event){return _vm.$emit('focus')},\"change\":function($event){var $$a=_vm.text,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.text=$$a.concat([$$v]))}else{$$i>-1&&(_vm.text=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.text=$$c}}}}):((_vm.type)==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],staticClass:\"input\",class:{ error: _vm.error },attrs:{\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.autocomplete ? '' : 'new-password',\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.text,null)},on:{\"keyup\":_vm.handleKeyUp,\"blur\":function($event){return _vm.$emit('blur')},\"focus\":function($event){return _vm.$emit('focus')},\"change\":function($event){_vm.text=null}}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],staticClass:\"input\",class:{ error: _vm.error },attrs:{\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.autocomplete ? '' : 'new-password',\"type\":_vm.type},domProps:{\"value\":(_vm.text)},on:{\"keyup\":_vm.handleKeyUp,\"blur\":function($event){return _vm.$emit('blur')},\"focus\":function($event){return _vm.$emit('focus')},\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}})]),(_vm.hint)?_c('div',{staticClass:\"note hint\"},[_vm._v(\"\\n    \"+_vm._s(_vm.hint)+\"\\n  \")]):_vm._e(),(_vm.error)?_c('div',{staticClass:\"note error\",domProps:{\"innerHTML\":_vm._s(_vm.errorFormatted)}}):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputText extends Vue {\r\n  @Prop({ required: false, default: '' })\r\n  placeholder?: string;\r\n\r\n  @Prop({ required: false })\r\n  value?: string;\r\n\r\n  @Prop({ required: false })\r\n  label?: string;\r\n\r\n  @Prop({ required: false })\r\n  labelGreyText?: string;\r\n\r\n  @Prop({ required: false })\r\n  hint?: string;\r\n\r\n  @Prop({ required: false, default: 'text' })\r\n  type?: string;\r\n\r\n  @Prop({ required: false })\r\n  error?: string | Array<string>;\r\n\r\n  @Prop({ required: false, default: true })\r\n  autocomplete?: boolean;\r\n\r\n  text: string;\r\n\r\n  constructor() {\r\n    super();\r\n    this.text = this.value || '';\r\n  }\r\n\r\n  @Watch('value')\r\n  onChangeValue() {\r\n    this.text = this.value || '';\r\n  }\r\n\r\n  get errorFormatted() {\r\n    return this.error instanceof Array ? this.error.join('<br/>') : this.error;\r\n  }\r\n\r\n  handleKeyUp(e: KeyboardEvent) {\r\n    if (e.keyCode === 13) {\r\n      this.$emit('enter', this.text);\r\n    } else {\r\n      this.$emit('change', this.text);\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputText.vue?vue&type=template&id=7bf8706d&scoped=true&\"\nimport script from \"./InputText.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputText.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputText.vue?vue&type=style&index=0&id=7bf8706d&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7bf8706d\",\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport InputText from '@/components/ui/InputText.vue';\r\n\r\n@Component({\r\n  components: { InputText, AuthLayout, Checkbox }\r\n})\r\nexport default class LoginForm extends Vue {\r\n  loading: boolean = false;\r\n  email: string = '';\r\n  password: string = '';\r\n  error: string = '';\r\n  errors: { [field: string]: Array<string> } = {};\r\n  payload: { [fieldName: string]: string } = {\r\n    email: '',\r\n    password: ''\r\n  };\r\n  rememberMe: boolean = true;\r\n\r\n  @Prop({ default: true })\r\n  showForgotPasswordLink?: boolean;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  async submit() {\r\n    if (this.loading) {\r\n      return;\r\n    }\r\n    this.error = '';\r\n    this.errors = {};\r\n    this.loading = true;\r\n    try {\r\n      await this.$store.dispatch('auth/login', this.payload);\r\n      this.$emit('authorized');\r\n    } catch (e) {\r\n      if (e.response && e.response.data) {\r\n        this.error = e.response.data.message || getTranslation('defaultErrorMessage');\r\n        this.errors = e.response.data.errors;\r\n      } else {\r\n        this.error = e.message || getTranslation('defaultErrorMessage');\r\n      }\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  async onChangeField(fieldName: string, value: string) {\r\n    this.payload[fieldName] = value;\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/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=a0b46caa&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=a0b46caa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a0b46caa\",\n  null\n  \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport LoginForm from '@/components/LoginForm.vue';\r\n\r\n@Component({\r\n  components: { LoginForm, AuthLayout }\r\n})\r\nexport default class Login extends Vue {\r\n  getTranslation = getTranslation;\r\n\r\n  onAuthorize() {\r\n    const redirect = this.$route.query.redirect as string;\r\n    if (redirect && this.isAllowedRedirect(redirect)) {\r\n      window.location.href = redirect;\r\n      return;\r\n    }\r\n    this.$router.push('/').catch(() => {});\r\n  }\r\n\r\n  private isAllowedRedirect(url: string): boolean {\r\n    try {\r\n      const parsed = new URL(url);\r\n      return parsed.hostname.endsWith('.vedarama.ru') || parsed.hostname === 'vedarama.ru';\r\n    } catch {\r\n      return false;\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=1d044ad8&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=1d044ad8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1d044ad8\",\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('AuthLayout',[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('forgotPassword')))]),(_vm.result && _vm.result.data)?_c('div',{staticClass:\"text-center\"},[_vm._v(\"\\n    \"+_vm._s(_vm.result.data.message)+\"\\n  \")]):[_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"placeholder\":\"example@vedarama.com\",\"label\":_vm.getTranslation('enterYourEmail'),\"autocomplete\":false},on:{\"change\":function (value) { return (_vm.email = value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"flex justify-content-space-between\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_vm._v(_vm._s(_vm.getTranslation('authorization')))]),_c('div',[_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('submit'))+\"\\n          \")])])],1)]),_c('div',{staticClass:\"red-color\"},[_vm._v(_vm._s(_vm.error))])]],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\r\nimport Vue from 'vue';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport AuthService from '@/services/Api/AuthService';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport InputText from '@/components/ui/InputText.vue';\r\n\r\n@Component({\r\n  components: { InputText, AuthLayout }\r\n})\r\nexport default class ForgotPassword extends Vue {\r\n  loading = false;\r\n  email = '';\r\n  error = '';\r\n  result: any = null;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  async submit() {\r\n    if (this.loading) {\r\n      return;\r\n    }\r\n    this.loading = true;\r\n    try {\r\n      this.result = await AuthService.forgotPassword(this.email);\r\n      this.loading = false;\r\n    } catch (e) {\r\n      this.loading = false;\r\n      this.error =\r\n        e.response && e.response.data && e.response.data.message\r\n          ? e.response.data.message\r\n          : e.message || getTranslation('defaultErrorMessage');\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ForgotPassword.vue?vue&type=template&id=6526f747&\"\nimport script from \"./ForgotPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./ForgotPassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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('AuthLayout',[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('resetPassword')))]),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"placeholder\":\"example@vedarama.com\",\"label\":_vm.getTranslation('yourEmail'),\"value\":_vm.email,\"autocomplete\":false,\"error\":_vm.errorsByField ? _vm.errorsByField.email : null},on:{\"change\":function (value) { return (_vm.email = value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"password\",\"label\":_vm.getTranslation('password'),\"autocomplete\":false,\"error\":_vm.errorsByField ? _vm.errorsByField.password : null},on:{\"change\":function (value) { return (_vm.password = value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"password\",\"label\":_vm.getTranslation('repeatPassword'),\"autocomplete\":false,\"error\":_vm.errorsByField ? _vm.errorsByField.password_confirmation : null},on:{\"change\":function (value) { return (_vm.passwordConfirmation = value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"flex justify-content-space-between\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_vm._v(_vm._s(_vm.getTranslation('authorization')))]),_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('submit'))+\"\\n      \")])],1)]),_c('div',{staticClass:\"red-color\"},[_vm._v(_vm._s(_vm.error))])])}\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\r\nimport Vue from 'vue';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport AuthService from '@/services/Api/AuthService';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport InputText from '@/components/ui/InputText.vue';\r\n\r\n@Component({\r\n  components: { InputText, AuthLayout }\r\n})\r\nexport default class ResetPassword extends Vue {\r\n  loading = false;\r\n  token = '';\r\n  email = '';\r\n  password = '';\r\n  passwordConfirmation = '';\r\n  error = '';\r\n  errorsByField = null;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  created() {\r\n    this.token = this.$route.params.token;\r\n    this.email = typeof this.$route.query.email === 'string' ? this.$route.query.email : '';\r\n  }\r\n\r\n  async submit() {\r\n    if (this.loading) {\r\n      return;\r\n    }\r\n    this.loading = true;\r\n    try {\r\n      await AuthService.resetPassword(this.token, this.email, this.password, this.passwordConfirmation);\r\n      this.loading = false;\r\n      this.$router.push('/').catch(() => {});\r\n    } catch (e) {\r\n      this.loading = false;\r\n      this.errorsByField = e.response && e.response.data && e.response.data.errors;\r\n      this.error =\r\n        e.response && e.response.data && e.response.data.message\r\n          ? e.response.data.message\r\n          : e.message || getTranslation('defaultErrorMessage');\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=84c45ea2&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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('AuthLayout',[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('registration')))]),(_vm.registered)?_c('div',[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('registrationVerifyEmail'))+\"\\n  \")]):[_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"example@vedarama.com\",\"label\":_vm.getTranslation('yourEmail'),\"value\":_vm.payload.email,\"error\":_vm.errors.email},on:{\"change\":function (value) { return _vm.onChangeField('email', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"password\",\"label\":_vm.getTranslation('password'),\"value\":_vm.payload.password,\"error\":_vm.errors.password},on:{\"change\":function (value) { return _vm.onChangeField('password', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"Иван\",\"label\":_vm.getTranslation('name'),\"value\":_vm.payload.name,\"error\":_vm.errors.name},on:{\"change\":function (value) { return _vm.onChangeField('name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"Петров\",\"label\":_vm.getTranslation('lastName'),\"value\":_vm.payload.last_name,\"error\":_vm.errors.last_name},on:{\"change\":function (value) { return _vm.onChangeField('last_name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"Говинда Дас\",\"label\":_vm.getTranslation('spiritualName'),\"labelGreyText\":_vm.getTranslation('fillIfExists'),\"value\":_vm.payload.spiritual_name,\"error\":_vm.errors.spiritual_name},on:{\"change\":function (value) { return _vm.onChangeField('spiritual_name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('InputText',{attrs:{\"type\":\"text\",\"placeholder\":\"1234\",\"label\":_vm.getTranslation('accessCode'),\"labelGreyText\":_vm.getTranslation('fillIfExists'),\"value\":_vm.payload.access_code,\"error\":_vm.errors.access_code},on:{\"change\":function (value) { return _vm.onChangeField('access_code', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"flex justify-content-space-between\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_vm._v(_vm._s(_vm.getTranslation('authorization')))]),_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('submit'))+\"\\n        \")])],1)]),_c('div',{staticClass:\"red-color\"},[_vm._v(_vm._s(_vm.error))])]],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport AuthService from '@/services/Api/AuthService';\r\nimport Component from 'vue-class-component';\r\nimport InputText from '@/components/ui/InputText.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { AuthLayout, InputText }\r\n})\r\nexport default class ResetPassword extends Vue {\r\n  loading = false;\r\n  registered = false;\r\n  error = '';\r\n  errors: { [field: string]: Array<string> } = {};\r\n  payload: { [fieldName: string]: string } = {\r\n    email: '',\r\n    name: '',\r\n    last_name: '',\r\n    password: '',\r\n    spiritual_name: '',\r\n    access_code: ''\r\n  };\r\n  getTranslation = getTranslation;\r\n\r\n  async submit() {\r\n    if (this.loading) {\r\n      return;\r\n    }\r\n    this.loading = true;\r\n    try {\r\n      this.payload.password_confirmation = this.payload.password;\r\n      await AuthService.register(this.payload);\r\n      this.registered = true;\r\n    } catch (e) {\r\n      this.error =\r\n        e.response && e.response.data && e.response.data.message\r\n          ? e.response.data.message\r\n          : e.message || getTranslation('defaultErrorMessage');\r\n\r\n      this.errors = e.response.data.errors;\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  async onChangeField(fieldName: string, value: string) {\r\n    this.payload[fieldName] = value;\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Registration.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Registration.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Registration.vue?vue&type=template&id=5c5dd968&\"\nimport script from \"./Registration.vue?vue&type=script&lang=ts&\"\nexport * from \"./Registration.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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('AuthLayout',[(_vm.loading)?_c('Loader'):[(_vm.authorized)?[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('verifyEmail')))]),(_vm.needPageReload)?[_c('p',[_vm._v(_vm._s(_vm.getTranslation('tooManyRequests')))]),_c('button',{staticClass:\"button\",on:{\"click\":_vm.reloadPage}},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('refresh'))+\"\\n        \")])]:[(_vm.fail)?_c('p',{staticClass:\"red-color\"},[_vm._v(_vm._s(_vm.getTranslation('verifyEmailFail'))),_c('br')]):_vm._e(),(!_vm.fail && _vm.verificationResent)?_c('p',[_vm._v(_vm._s(_vm.getTranslation('registrationVerifyEmail')))]):_vm._e(),(!_vm.verificationResent)?[_c('p',[_vm._v(_vm._s(_vm.getTranslation('verifyEmailIsNotVerified')))]),_c('button',{staticClass:\"button\",attrs:{\"disabled\":_vm.resendingVerification},on:{\"click\":_vm.resendVerification}},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('submit'))+\"\\n          \")]),_vm._v(\"\\n             \"),_c('button',{staticClass:\"link\",on:{\"click\":_vm.logout}},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('logout'))+\"\\n          \")])]:_vm._e()]]:[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.getTranslation('authorization')))]),_c('LoginForm',{attrs:{\"showForgotPasswordLink\":false},on:{\"authorized\":_vm.verifyEmail}})]]],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\n\n\r\nimport Vue from 'vue';\r\nimport AuthLayout from '@/layouts/AuthLayout.vue';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport AuthService from '@/services/Api/AuthService';\r\nimport Login from '@/views/Login.vue';\r\nimport LoginForm from '@/components/LoginForm.vue';\r\nimport { Action, State } from 'vuex-class';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport { User } from '@/store/modules/user';\r\nimport UserService from '@/services/Api/UserService';\r\nimport { store } from '@/store';\r\nimport { Watch } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { Loader, LoginForm, Login, AuthLayout }\r\n})\r\nexport default class VerifyEmail extends Vue {\r\n  loading = true;\r\n  fail = false;\r\n  resendingVerification = false;\r\n  verificationResent = false;\r\n  needPageReload = false;\r\n\r\n  @State('authorized', { namespace: 'auth' })\r\n  authorized!: boolean;\r\n\r\n  @State('data', { namespace: 'user' })\r\n  user!: User;\r\n\r\n  @Action('logout', { namespace: 'auth' })\r\n  sendLogout!: Function;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  async mounted() {\r\n    if (this.$route.name === 'verify-email') {\r\n      await this.verifyEmail();\r\n    }\r\n    this.loading = false;\r\n  }\r\n\r\n  @Watch('authorized')\r\n  async onAuthorizedChange() {\r\n    this.loading = true;\r\n    await this.verifyEmail();\r\n    this.loading = false;\r\n  }\r\n\r\n  async verifyEmail() {\r\n    const userId = this.$route.params.userId;\r\n    const hash = this.$route.params.hash;\r\n    const expires = this.$route.query.expires || '';\r\n    const signature = this.$route.query.signature || '';\r\n\r\n    if (\r\n      !(userId && hash && typeof expires == 'string' && typeof signature === 'string' && expires && signature)\r\n    ) {\r\n      this.fail = true;\r\n      return;\r\n    }\r\n    const result = await AuthService.verifyEmail(userId, hash, expires, signature).catch(async e => {\r\n      if (e.response.status === 429) {\r\n        this.needPageReload = true;\r\n      }\r\n      if (e.response.status === 401) {\r\n        await this.sendLogout();\r\n      }\r\n      this.fail = true;\r\n    });\r\n    if (result && result.data && result.data.success) {\r\n      await this.$router.replace('/');\r\n      return;\r\n    } else {\r\n      this.fail = true;\r\n    }\r\n  }\r\n\r\n  async resendVerification() {\r\n    this.resendingVerification = true;\r\n    try {\r\n      await AuthService.verifyEmailResend();\r\n      this.fail = false;\r\n      this.resendingVerification = false;\r\n      this.verificationResent = true;\r\n    } catch {\r\n      this.fail = true;\r\n    }\r\n  }\r\n\r\n  reloadPage() {\r\n    window.location.reload();\r\n  }\r\n\r\n  async logout() {\r\n    this.sendLogout();\r\n    await this.$router.replace('/');\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./VerifyEmail.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./VerifyEmail.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VerifyEmail.vue?vue&type=template&id=89ee3518&\"\nimport script from \"./VerifyEmail.vue?vue&type=script&lang=ts&\"\nexport * from \"./VerifyEmail.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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('div',{domProps:{\"innerHTML\":_vm._s(_vm.content)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { store } from '@/store';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\n\r\nexport default class HelpService {\r\n  private static instance: HelpService;\r\n\r\n  apiService: ApiService = new ApiService();\r\n\r\n  private static getInstance() {\r\n    if (!HelpService.instance) {\r\n      HelpService.instance = new HelpService();\r\n    }\r\n    return HelpService.instance;\r\n  }\r\n\r\n  static async getHelp(lang: string): Promise<{ html: string }> {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.help.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .cache()\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n}\r\n","\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { State } from 'vuex-class';\r\nimport Component from 'vue-class-component';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport HelpService from '@/services/Api/HelpService';\r\n\r\n@Component\r\nexport default class Help extends Vue {\r\n  content = '';\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  async mounted() {\r\n    await this.actualizeContent();\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  async onInterfaceLanguageChange() {\r\n    await this.actualizeContent();\r\n  }\r\n\r\n  async actualizeContent() {\r\n    this.$store.commit('tabs/updateActiveTabName', getTranslation('help'));\r\n    const { html } = await HelpService.getHelp(this.interfaceLanguage);\r\n    this.content = html;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Help.vue?vue&type=template&id=4921f488&scoped=true&\"\nimport script from \"./Help.vue?vue&type=script&lang=ts&\"\nexport * from \"./Help.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Help.vue?vue&type=style&index=0&id=4921f488&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4921f488\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CommonLayout',{attrs:{\"mobile-reader\":_vm.mobileReader,\"reader-chrome-visible\":_vm.readerChromeVisible,\"presentation-mode\":_vm.presentationMode},on:{\"toggle-catalog\":_vm.openReaderCatalog,\"search-book\":_vm.openMobileBookSearch,\"toggle-bookmarks\":function($event){_vm.mobileBookmarkSheetVisible = true},\"toggle-theme\":_vm.toggleMobileThemePicker,\"toggle-text-settings\":function($event){_vm.mobileThemePickerVisible = false},\"open-settings\":function($event){return _vm.openMobileView('settings')}}},[_c('div',{staticClass:\"reader-shell\",class:[\n      (\"mobile-view-\" + _vm.mobileView),\n      {\n        'mobile-reader': _vm.mobileReader,\n        'mobile-narrow-visual': _vm.isNarrowVisualViewport,\n        'reader-chrome-hidden': !_vm.readerChromeVisible,\n        'presentation-mode': _vm.presentationMode\n      }\n    ],style:({ '--mobile-visual-width': (_vm.mobileVisualViewportWidth + \"px\") }),on:{\"mousemove\":_vm.onPresentationActivity,\"&touchstart\":function($event){return _vm.onPresentationActivity($event)}}},[_c('div',{staticClass:\"left\",class:{\n        hidden: _vm.$store.state.reader.readMode,\n        'mobile-open': _vm.mobileCatalogVisible,\n        'mobile-library': _vm.mobileView === 'library',\n        'mobile-search-area': _vm.mobileView === 'search-area'\n      },style:({ minWidth: (_vm.leftColumnWidth + \"px\") })},[(_vm.mobileView === 'library')?_c('div',{staticClass:\"mobile-library-header\"},[_c('h1',[_vm._v(_vm._s(_vm.getTranslation('library')))]),(_vm.mobileLanguageMenuVisible)?_c('button',{staticClass:\"mobile-language-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){_vm.mobileLanguageMenuVisible = false}}}):_vm._e(),_c('div',{staticClass:\"mobile-language-picker\"},[_c('button',{ref:\"mobileLanguageTrigger\",staticClass:\"mobile-language-trigger\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('bookTranslation'),\"aria-expanded\":String(_vm.mobileLanguageMenuVisible),\"aria-haspopup\":\"listbox\",\"aria-controls\":\"mobile-catalog-language-menu\"},on:{\"click\":_vm.toggleMobileLanguageMenu}},[_c('span',{staticClass:\"mobile-language-value\"},[_c(_vm.currentCatalogLanguage.icon,{tag:\"component\"}),_c('span',[_vm._v(_vm._s(_vm.currentCatalogLanguage.label))])],1),_c('IconArrowDown',{class:{ rotate: _vm.mobileLanguageMenuVisible }})],1),(_vm.mobileLanguageMenuVisible)?_c('div',{staticClass:\"mobile-language-menu\",attrs:{\"id\":\"mobile-catalog-language-menu\",\"role\":\"listbox\",\"aria-label\":_vm.getTranslation('bookTranslation')}},_vm._l((_vm.catalogLanguages),function(language){return _c('button',{key:language.code,ref:\"mobileLanguageOptions\",refInFor:true,class:{ active: language.code === _vm.navLanguage },attrs:{\"type\":\"button\",\"role\":\"option\",\"aria-selected\":String(language.code === _vm.navLanguage)},on:{\"click\":function($event){return _vm.changeCatalogLanguage(language.code)}}},[_c('span',{staticClass:\"mobile-language-value\"},[_c(language.icon,{tag:\"component\"}),_c('span',[_vm._v(_vm._s(language.label))])],1)])}),0):_vm._e()])]):(_vm.mobileView === 'search-area')?_c('div',{staticClass:\"mobile-search-area-header\"},[_c('button',{staticClass:\"mobile-search-area-back nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('search')},on:{\"click\":_vm.closeMobileSearchArea}},[_c('IconReturn')],1),_c('div',{staticClass:\"mobile-search-area-copy\"},[_c('span',[_vm._v(_vm._s(_vm.getTranslation('search')))]),_c('h1',[_vm._v(_vm._s(_vm.getTranslation('searchScope')))])]),(_vm.selectedBooksCount)?_c('span',{staticClass:\"mobile-search-area-count\"},[_vm._v(\"\\n          \"+_vm._s(_vm.selectedBooksCount)+\"\\n        \")]):_vm._e()]):_vm._e(),(_vm.mobileReader)?_c('div',{staticClass:\"mobile-table-of-contents\"},[_c('header',{staticClass:\"mobile-toc-header\"},[_c('div',[_c('span',[_vm._v(_vm._s(_vm.getTranslation('tableOfContents')))]),_c('h2',[_vm._v(_vm._s(_vm.readerBook ? _vm.readerBook.name : ''))])]),_c('button',{staticClass:\"mobile-catalog-close nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){_vm.mobileCatalogVisible = false}}},[_c('IconCross')],1)]),_c('div',{staticClass:\"mobile-toc-scroll\"},[(_vm.readerBook)?_vm._l((_vm.readerBookRootSections),function(bookSection){return _c('NavBookSection',{key:bookSection.id,attrs:{\"bookSection\":bookSection,\"bookSections\":_vm.readerBook.children,\"level\":0,\"showCheckboxes\":false,\"catalogTree\":true,\"activeSectionSlug\":_vm.$route.params.bookSection || ''}})}):_c('Loader')],2)]):(_vm.isCompactViewport || _vm.navLanguage || _vm.$route.params.language)?_c('Catalog',{staticClass:\"left-inner\",attrs:{\"mobile-mode\":_vm.isCompactViewport\n            ? _vm.mobileView === 'search-area'\n              ? 'search-area'\n              : _vm.mobileView === 'library'\n              ? 'library'\n              : ''\n            : ''}}):_c('NewBooks',{staticClass:\"left-inner\"}),_c('div',{staticClass:\"left-resize\",on:{\"mousedown\":_vm.onMouseDown}})],1),(_vm.mobileCatalogVisible)?_c('button',{staticClass:\"mobile-catalog-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){_vm.mobileCatalogVisible = false}}}):_vm._e(),_c('div',{staticClass:\"main\"},[_c('Search',{attrs:{\"mobile-visible\":_vm.mobileView === 'search' || _vm.mobileView === 'book-search',\"mobile-book-search\":_vm.mobileView === 'book-search',\"mobile-book-name\":_vm.mobileBookSearchName},on:{\"select-search-area\":_vm.openMobileSearchArea,\"close-book-search\":_vm.closeMobileBookSearch,\"mobile-overlay-change\":function($event){_vm.mobileSearchOverlayVisible = $event}}}),_c('TextTypesFilter'),_c('MobileReaderThemePicker',{attrs:{\"visible\":_vm.mobileThemePickerVisible},on:{\"close\":function($event){_vm.mobileThemePickerVisible = false}}}),_c('MobileBookmarkSheet',{attrs:{\"visible\":_vm.mobileBookmarkSheetVisible,\"current-tab\":_vm.activeTab || null,\"bookmarks\":_vm.$store.state.bookmarks.list},on:{\"close\":function($event){_vm.mobileBookmarkSheetVisible = false},\"add\":_vm.addBookmarkAtCurrentPlace,\"move\":_vm.moveBookmarkToCurrentPlace,\"note\":_vm.updateBookmarkNote,\"remove\":_vm.removeBookmark}}),_c('TabsBar'),(_vm.mobileView === 'bookmarks')?_c('MobileBookmarks',{staticClass:\"mobile-screen\",attrs:{\"bookmarks\":_vm.$store.state.bookmarks.list},on:{\"open\":_vm.openMobileBookmark,\"remove\":_vm.removeBookmark}}):_vm._e(),(_vm.mobileView === 'settings')?_c('section',{staticClass:\"mobile-screen mobile-settings\"},[(_vm.mobileSettingsReturnTo)?_c('button',{staticClass:\"mobile-back-to-reading\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.returnToMobileReader}},[_c('span',{staticClass:\"mobile-back-to-reading-icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('IconReturn')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('backToReading')))])]):_vm._e(),_c('h1',[_vm._v(_vm._s(_vm.getTranslation('settings')))]),_c('Settings',{attrs:{\"show-text-visibility\":!!_vm.mobileSettingsReturnTo}})],1):_vm._e(),_c('div',{staticClass:\"content\",class:{ 'mobile-content-hidden': !_vm.showMobileContent },on:{\"click\":_vm.onContentInteraction}},[_c('div',{staticClass:\"content-inner\",class:( _obj = {}, _obj[_vm.$store.state.reader.readMode ? _vm.$store.state.reader.colorMode : 'light'] = _vm.activeTab && _vm.activeTab.link, _obj )},[(!(_vm.activeTab && _vm.activeTab.link))?_c('NewTab'):_vm._e(),(_vm.isCompactViewport)?_c('keep-alive',{attrs:{\"include\":\"BookContent\"}},[(_vm.activeTab && _vm.activeTab.link)?_c('router-view',{ref:\"contentView\"}):_vm._e()],1):(_vm.activeTab && _vm.activeTab.link)?_c('router-view',{ref:\"contentView\"}):_vm._e()],1)])],1),(!_vm.mobileReader && _vm.mobileView !== 'book-search' && !_vm.mobileSearchOverlayVisible)?_c('MobileNavigation',{attrs:{\"active\":_vm.mobileNavigationView,\"reading-available\":!!_vm.currentReadingSession},on:{\"navigate\":_vm.openMobileView}}):_vm._e(),(_vm.presentationMode)?_c('PresentationControls',{attrs:{\"visible\":_vm.presentationControlsVisible,\"book-title\":_vm.presentationBookTitle,\"section-title\":_vm.presentationSectionTitle,\"current-index\":_vm.presentationCurrentIndex,\"total-sections\":_vm.presentationSections.length,\"has-previous\":_vm.presentationHasPrevious,\"has-next\":_vm.presentationHasNext,\"scale\":_vm.$store.state.reader.presentationScale,\"auto-fit\":_vm.$store.state.reader.presentationAutoFit,\"color-mode\":_vm.$store.state.reader.colorMode,\"hidden-text-types\":_vm.$store.state.reader.presentationHideTextTypes},on:{\"previous\":function($event){return _vm.navigatePresentation(-1)},\"next\":function($event){return _vm.navigatePresentation(1)},\"exit\":_vm.exitPresentationMode,\"settings-change\":_vm.onPresentationSettingsChange,\"scale\":_vm.updatePresentationScale,\"auto-fit\":_vm.setPresentationAutoFit,\"color-mode\":_vm.setColorMode,\"toggle-text-type\":_vm.switchPresentationTextTypeFilter}}):_vm._e()],1),_c('Overlay',{attrs:{\"title\":_vm.getTranslation('settings'),\"visible\":_vm.isSettingsVisible},on:{\"close\":_vm.hideSettings}},[_c('Settings')],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:\"layout\",class:{\n    'mobile-reader': _vm.mobileReader,\n    'reader-chrome-hidden': !_vm.readerChromeVisible,\n    'presentation-mode': _vm.presentationMode\n  }},[(!_vm.presentationMode)?_c('Header',{attrs:{\"mobile-reader\":_vm.mobileReader},on:{\"toggle-catalog\":function($event){return _vm.$emit('toggle-catalog')},\"search-book\":function($event){return _vm.$emit('search-book')},\"toggle-bookmarks\":function($event){return _vm.$emit('toggle-bookmarks')},\"toggle-theme\":function($event){return _vm.$emit('toggle-theme')},\"toggle-text-settings\":function($event){return _vm.$emit('toggle-text-settings')},\"open-settings\":function($event){return _vm.$emit('open-settings')}}}):_vm._e(),_c('div',{staticClass:\"content\"},[_c('Sidebar'),_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('div',{staticClass:\"header\",class:{ 'mobile-reader': _vm.mobileReader }},[_c('div',{staticClass:\"logo\"},[_c('router-link',{staticClass:\"logo-link\",attrs:{\"to\":_vm.homeUrl},nativeOn:{\"click\":function($event){return _vm.onLogoClick($event)}}},[_vm._v(\"\\n      VEDARAMA\\n    \")])],1),(_vm.$store.state.reader.readMode)?_c('div',{staticClass:\"reader-controls\"},[_c('button',{staticClass:\"nav-link header-button\",attrs:{\"type\":\"button\",\"aria-label\":_vm.mobileReader && _vm.hasRelatedHistory\n          ? _vm.getTranslation('backToPreviousText')\n          : _vm.getTranslation('exitReadingMode')},on:{\"click\":function($event){_vm.mobileReader ? _vm.leaveMobileReader() : _vm.setReadMode(false)}}},[_c('span',{staticClass:\"header-button-inner\"},[(_vm.mobileReader)?_c('IconReturn'):_c('IconBook'),_c('span',{staticClass:\"header-button-text\"},[_vm._v(_vm._s(_vm.getTranslation('exitReadingMode')))])],1)]),(_vm.mobileReader)?_c('div',{staticClass:\"mobile-reader-title\"},[_vm._v(_vm._s(_vm.readerBook ? _vm.readerBook.name : ''))]):_vm._e(),(_vm.mobileReader)?_c('button',{staticClass:\"nav-link header-button mobile-reader-action\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('showBooksCatalog')},on:{\"click\":function($event){return _vm.$emit('toggle-catalog')}}},[_c('IconList')],1):_vm._e(),(_vm.mobileReader)?_c('button',{staticClass:\"nav-link header-button mobile-reader-action\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('searchInBook')},on:{\"click\":function($event){return _vm.$emit('search-book')}}},[_c('IconSearch')],1):_vm._e(),(_vm.mobileReader)?_c('button',{staticClass:\"nav-link header-button mobile-reader-action mobile-more-button\",class:{ active: _vm.mobileActionsVisible },attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('moreActions'),\"aria-expanded\":String(_vm.mobileActionsVisible),\"aria-haspopup\":\"menu\"},on:{\"click\":function($event){_vm.mobileActionsVisible = !_vm.mobileActionsVisible}}},[_c('IconMore')],1):_vm._e(),(_vm.mobileActionsVisible)?_c('button',{staticClass:\"mobile-reader-menu-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){_vm.mobileActionsVisible = false}}}):_vm._e(),(_vm.mobileActionsVisible)?_c('div',{staticClass:\"mobile-reader-menu\",attrs:{\"role\":\"menu\"}},[_c('button',{attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":_vm.openBookmarks}},[_c('span',{staticClass:\"mobile-reader-menu-icon\"},[_c('IconBookmark')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('bookmarks')))])]),_c('button',{attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":_vm.openThemePicker}},[_c('span',{staticClass:\"mobile-reader-menu-icon\"},[_c('span',{staticClass:\"mobile-theme-swatch\",class:_vm.$store.state.reader.colorMode})]),_c('span',[_vm._v(_vm._s(_vm.getTranslation('colorTheme')))])]),_c('button',{attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":_vm.openTextSettings}},[_c('span',{staticClass:\"mobile-reader-menu-icon\"},[_c('IconTextSettings')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('textSettings')))])])]):_vm._e(),(!_vm.mobileReader)?_c('button',{staticClass:\"nav-link header-button\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('textSettings')},on:{\"click\":_vm.toggleTextSettings}},[_c('span',{staticClass:\"header-button-inner\"},[_c('IconTextSettings'),_c('span',{staticClass:\"header-button-text\"},[_vm._v(_vm._s(_vm.getTranslation('textSettings'))+\"  \\n          \"),_c('IconArrowDown',{class:{ rotate: _vm.$store.state.reader.isTextTypesFiltersVisible }})],1)],1)]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"personal\"},[_c('button',{staticClass:\"user nav-link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.showProfileOverlay = true}}},[_vm._v(\"\\n      \"+_vm._s(_vm.user.data.spiritual_name || _vm.user.data.name + ' ' + _vm.user.data.last_name)+\"\\n    \")]),_c('button',{staticClass:\"logout\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.showLogoutOverlay = true}}},[_c('IconLogout')],1)]),_c('Overlay',{attrs:{\"title\":_vm.getTranslation('profile'),\"visible\":_vm.showProfileOverlay},on:{\"close\":function($event){_vm.showProfileOverlay = false}}},[_c('Profile')],1),_c('Overlay',{attrs:{\"title\":_vm.getTranslation('logOutAreYouSure'),\"visible\":_vm.showLogoutOverlay,\"centered\":true},on:{\"close\":function($event){_vm.showLogoutOverlay = false}}},[_c('div',{staticClass:\"logout-buttons\"},[_c('button',{staticClass:\"button secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.showLogoutOverlay = false}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('cancel'))+\"\\n      \")]),_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.logout()}}},[_vm._v(_vm._s(_vm.getTranslation('logout')))])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"12\",\"height\":\"12\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M5 6h5.5m0 0l-2-2m2 2l-2 2\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}}),_c('path',{attrs:{\"d\":\"M7 .5a.5.5 0 00-.5-.5H2a2 2 0 00-2 2v8a2 2 0 002 2h4.5a.5.5 0 000-1H2a1 1 0 01-1-1V2a1 1 0 011-1h4.5A.5.5 0 007 .5z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{ref:\"dialog\",staticClass:\"overlay\",attrs:{\"role\":\"dialog\",\"aria-modal\":\"true\",\"aria-labelledby\":_vm.titleId,\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown}},[_c('div',{staticClass:\"inner\",class:{ centered: _vm.centered }},[_c('button',{staticClass:\"bg\",attrs:{\"type\":\"button\",\"tabindex\":\"-1\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.$emit('close')}}}),_c('div',{staticClass:\"content\"},[_c('button',{staticClass:\"close nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('CrossBolderIcon')],1),_c('div',{staticClass:\"content-inner\"},[_c('h1',{staticClass:\"title\",attrs:{\"id\":_vm.titleId}},[_vm._v(_vm._s(_vm.title))]),_vm._t(\"default\")],2)])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"14\",\"height\":\"14\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1.707.293A1 1 0 00.293 1.707L1.707.293zm10.586 13.414a1 1 0 001.414-1.414l-1.414 1.414zm1.414-12A1 1 0 0012.293.293l1.414 1.414zM.293 12.293a1 1 0 101.414 1.414L.293 12.293zm0-10.586l12 12 1.414-1.414-12-12L.293 1.707zm12-1.414l-12 12 1.414 1.414 12-12L12.293.293z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport Vue from 'vue';\r\nimport CrossBolderIcon from '@/assets/icons/cross-bolder.svg';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\nlet overlayIndex = 0;\r\n\r\n@Component({\r\n  components: {\r\n    CrossBolderIcon\r\n  }\r\n})\r\nexport default class Overlay extends Vue {\r\n  titleId = `overlay-title-${++overlayIndex}`;\r\n\r\n  previouslyFocused?: HTMLElement;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: false })\r\n  centered?: boolean;\r\n\r\n  @Prop({ required: true })\r\n  title!: string;\r\n\r\n  @Prop({ required: false })\r\n  visible?: boolean;\r\n\r\n  mounted() {\r\n    if (this.visible) {\r\n      this.focusDialog();\r\n    }\r\n  }\r\n\r\n  beforeDestroy() {\r\n    this.restoreFocus();\r\n  }\r\n\r\n  @Watch('visible')\r\n  onVisibleChange(visible: boolean) {\r\n    if (visible) {\r\n      this.focusDialog();\r\n    } else {\r\n      this.restoreFocus();\r\n    }\r\n  }\r\n\r\n  focusDialog() {\r\n    this.previouslyFocused = document.activeElement as HTMLElement;\r\n    this.$nextTick(() => {\r\n      const dialog = this.$refs.dialog as HTMLElement;\r\n      if (dialog) {\r\n        dialog.focus();\r\n      }\r\n    });\r\n  }\r\n\r\n  restoreFocus() {\r\n    if (this.previouslyFocused && document.body.contains(this.previouslyFocused)) {\r\n      this.previouslyFocused.focus();\r\n    }\r\n    this.previouslyFocused = undefined;\r\n  }\r\n\r\n  onKeydown(event: KeyboardEvent) {\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      this.$emit('close');\r\n      return;\r\n    }\r\n    if (event.key !== 'Tab') {\r\n      return;\r\n    }\r\n    const dialog = this.$refs.dialog as HTMLElement;\r\n    const focusable = dialog\r\n      ? (Array.from(\r\n          dialog.querySelectorAll(\r\n            'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n          )\r\n        ) as HTMLElement[]).filter(\r\n          element =>\r\n            element.tabIndex >= 0 &&\r\n            element.getAttribute('aria-hidden') !== 'true' &&\r\n            element.offsetParent !== null\r\n        )\r\n      : [];\r\n    if (!focusable.length) {\r\n      event.preventDefault();\r\n      return;\r\n    }\r\n    const first = focusable[0];\r\n    const last = focusable[focusable.length - 1];\r\n    if (event.shiftKey && document.activeElement === first) {\r\n      event.preventDefault();\r\n      last.focus();\r\n    } else if (!event.shiftKey && document.activeElement === last) {\r\n      event.preventDefault();\r\n      first.focus();\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overlay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Overlay.vue?vue&type=template&id=b4d03bd4&scoped=true&\"\nimport script from \"./Overlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./Overlay.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Overlay.vue?vue&type=style&index=0&id=b4d03bd4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b4d03bd4\",\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('div',{staticClass:\"profile\"},[(_vm.user.subscribe_level)?_c('div',{staticClass:\"link-wrap\"},[_c('div',{staticClass:\"field read-only\"},[_c('div',{staticClass:\"field-value\"},[_vm._v(\"Подписка: \"+_vm._s(_vm.user.subscribe_level))])])]):_vm._e(),_c('hr',{staticClass:\"hr\"}),(_vm.editMode)?_c('div',[_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"label\":_vm.getTranslation('spiritualName'),\"value\":_vm.user.spiritual_name,\"error\":_vm.errors.spiritual_name,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('spiritual_name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"label\":_vm.getTranslation('name'),\"value\":_vm.user.name,\"error\":_vm.errors.name,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"label\":_vm.getTranslation('lastName'),\"value\":_vm.user.last_name,\"error\":_vm.errors.last_name,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('last_name', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('hr',{staticClass:\"hr\"}),_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"label\":_vm.getTranslation('yourEmail'),\"value\":_vm.user.email,\"hint\":_vm.getTranslation('enterNewAddress'),\"error\":_vm.errors.email,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('email', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('hr',{staticClass:\"hr\"}),_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"type\":\"password\",\"label\":_vm.getTranslation('newPassword'),\"error\":_vm.errors.password,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('password', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"field\"},[_c('InputText',{attrs:{\"type\":\"password\",\"label\":_vm.getTranslation('repeatNewPassword'),\"hint\":_vm.getTranslation('toChangePasswordEnterNewPassword'),\"error\":_vm.errors.password_confirmation,\"autocomplete\":false},on:{\"change\":function (value) { return _vm.onChangeField('password_confirmation', value); },\"enter\":function($event){return _vm.submit()}}})],1),_c('div',{staticClass:\"buttons\"},[_c('button',{staticClass:\"button secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.editMode = false}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('cancel'))+\"\\n      \")]),_c('Button',{staticClass:\"button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(_vm._s(_vm.getTranslation('save')))])],1)]):_c('div',[_c('div',{staticClass:\"field read-only\"},[_c('div',{staticClass:\"field-name\"},[_vm._v(_vm._s(_vm.getTranslation('spiritualName')))]),_c('div',{staticClass:\"field-value\"},[_vm._v(_vm._s(_vm.user.spiritual_name))])]),_c('div',{staticClass:\"field read-only\"},[_c('div',{staticClass:\"field-name\"},[_vm._v(_vm._s(_vm.getTranslation('name')))]),_c('div',{staticClass:\"field-value\"},[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"field read-only\"},[_c('div',{staticClass:\"field-name\"},[_vm._v(_vm._s(_vm.getTranslation('lastName')))]),_c('div',{staticClass:\"field-value\"},[_vm._v(_vm._s(_vm.user.last_name))])]),_c('div',{staticClass:\"link-wrap\"},[_c('button',{staticClass:\"link dashed\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.editMode = true}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('enterPersonalData'))+\"\\n      \")])]),_c('hr',{staticClass:\"hr\"}),_c('div',{staticClass:\"field read-only\"},[_c('div',{staticClass:\"field-name\"},[_vm._v(_vm._s(_vm.getTranslation('yourEmail')))]),_c('div',{staticClass:\"field-value\"},[_vm._v(_vm._s(_vm.user.email))])]),_c('div',{staticClass:\"link-wrap\"},[_c('button',{staticClass:\"link dashed\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.editMode = true}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('change'))+\"\\n      \")])]),_c('hr',{staticClass:\"hr\"}),_c('div',{staticClass:\"link-wrap\"},[_c('button',{staticClass:\"link dashed\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.editMode = true}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('changePassword'))+\"\\n      \")])])])])}\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport InputText from '@/components/ui/InputText.vue';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport { User } from '@/store/modules/user';\r\nimport UserService from '@/services/Api/UserService';\r\nimport { getTranslation } from '@/services/Translation';\r\n@Component({\r\n  components: { InputText }\r\n})\r\nexport default class Profile extends Vue {\r\n  editMode: boolean = false;\r\n\r\n  @State('data', { namespace: 'user' })\r\n  user!: User;\r\n\r\n  @Mutation('set', { namespace: 'user' })\r\n  setUser!: Function;\r\n\r\n  payload: { [fieldName: string]: string } = {};\r\n\r\n  errors: { [field: string]: Array<string> } = {};\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  mounted() {\r\n    this.payload = {};\r\n    Object.entries(this.user)\r\n      .filter(([fieldName]) => fieldName !== 'id')\r\n      .forEach(([fieldName, value]) => {\r\n        this.payload[fieldName] = value;\r\n      });\r\n  }\r\n\r\n  async submit() {\r\n    try {\r\n      const payload: { [key: string]: string } = {};\r\n      Object.entries(this.payload)\r\n        .filter(([fieldName, value]) => !!value)\r\n        .forEach(([fieldName, value]) => {\r\n          payload[fieldName] = value;\r\n        });\r\n      const user = await UserService.updateUser(payload);\r\n      this.setUser(user);\r\n      this.editMode = false;\r\n    } catch (e) {\r\n      this.errors = e.response.data.errors;\r\n    }\r\n  }\r\n\r\n  async onChangeField(fieldName: string, value: string) {\r\n    this.payload[fieldName] = value;\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/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=59609a1c&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=59609a1c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"59609a1c\",\n  null\n  \n)\n\nexport default component.exports","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"10\",\"height\":\"6\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 1l4 4 4-4\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"20\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('rect',{attrs:{\"x\":\".5\",\"y\":\".5\",\"width\":\"19\",\"height\":\"15\",\"rx\":\"1.5\",\"stroke\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M12 4h5m-5 2.5h5M12 9h5M3 4h5M3 6.5h5M3 9h5\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}}),_c('path',{attrs:{\"d\":\"M10 1v14\",\"stroke\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"17\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M3.94 3.097c1.494 1.293 3.822.328 3.963-1.641.017-.229.102-.349.186-.419A.642.642 0 018.5.9c.168 0 .314.056.411.137.084.07.17.19.186.419.141 1.97 2.47 2.934 3.962 1.641.174-.15.319-.174.427-.165a.642.642 0 01.388.194c.119.12.183.262.194.388.01.109-.015.253-.165.427-.043.049-.083.099-.12.15-.109.146-.079.347.05.476l.051.052c.19.189.524.113.7-.089 1.217-1.406-.708-3.33-2.114-2.114-.933.808-2.387.206-2.475-1.025-.134-1.855-2.856-1.855-2.99 0-.088 1.23-1.542 1.833-2.475 1.025C3.124 1.2 1.2 3.124 2.416 4.53c.808.933.206 2.387-1.025 2.475-1.855.134-1.855 2.856 0 2.99 1.23.088 1.833 1.542 1.025 2.475-1.217 1.406.708 3.33 2.114 2.114.933-.808 2.387-.205 2.475 1.025.134 1.855 2.856 1.855 2.99 0 .088-1.23 1.542-1.833 2.475-1.025 1.406 1.217 3.33-.708 2.114-2.114a1.65 1.65 0 01-.053-.064 1.045 1.045 0 00-.084-.097c-.454-.454-1.129-.151-.798.4.072.12.157.238.254.35.15.174.174.319.165.427a.642.642 0 01-.194.388.642.642 0 01-.388.194c-.109.01-.253-.015-.427-.165-1.493-1.293-3.82-.328-3.962 1.641-.017.229-.102.348-.186.419a.642.642 0 01-.411.137.642.642 0 01-.411-.137c-.084-.07-.17-.19-.186-.418-.141-1.97-2.47-2.935-3.962-1.642-.174.15-.318.174-.427.165a.642.642 0 01-.388-.194.642.642 0 01-.194-.388c-.01-.109.015-.253.165-.427 1.293-1.493.328-3.82-1.641-3.962-.229-.017-.349-.102-.419-.186A.642.642 0 01.9 8.5c0-.168.056-.314.137-.411.07-.084.19-.17.419-.186 1.97-.141 2.934-2.47 1.641-3.962-.15-.174-.174-.318-.165-.427a.642.642 0 01.194-.388.642.642 0 01.388-.194c.109-.01.253.015.427.165z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M6.5 6.5h9m-9 2h9m-9 2h9\",\"stroke\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"13\",\"height\":\"11\",\"fill\":\"none\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 2.5l2.5 2M1 2.5l2.62-2M1 2.5h7.333S12 2.816 12 6.5s-3.667 4-3.667 4H2.571\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"16\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M15 7.5H5.5m0 3h4m-4 3h8m-8-9h5m-5-3h7\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}}),_c('rect',{attrs:{\"x\":\"1\",\"y\":\"1\",\"width\":\"2\",\"height\":\"1\",\"rx\":\".5\",\"fill\":\"currentColor\"}}),_c('rect',{attrs:{\"x\":\"1\",\"y\":\"7\",\"width\":\"2\",\"height\":\"1\",\"rx\":\".5\",\"fill\":\"currentColor\"}}),_c('rect',{attrs:{\"x\":\"1\",\"y\":\"13\",\"width\":\"2\",\"height\":\"1\",\"rx\":\".5\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"20\",\"height\":\"20\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M13.014 12.305a.5.5 0 10-.707.707l.707-.707zm3.632 5.049a.5.5 0 00.707-.707l-.707.707zm-2.661-9.108a5.744 5.744 0 01-5.743 5.746v1a6.744 6.744 0 006.743-6.746h-1zm-5.743 5.746A5.744 5.744 0 012.5 8.246h-1a6.744 6.744 0 006.742 6.746v-1zM2.5 8.246A5.744 5.744 0 018.242 2.5v-1A6.744 6.744 0 001.5 8.246h1zM8.242 2.5a5.744 5.744 0 015.743 5.746h1A6.744 6.744 0 008.242 1.5v1zm4.065 10.512l4.339 4.341.707-.707-4.339-4.341-.707.707z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M3.25 4.1c0-.75.6-1.35 1.35-1.35h14.8c.75 0 1.35.6 1.35 1.35v17.25L12 15.15l-8.75 6.2V4.1z\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('circle',{attrs:{\"cx\":\"5\",\"cy\":\"12\",\"r\":\"1.6\",\"fill\":\"currentColor\"}}),_c('circle',{attrs:{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1.6\",\"fill\":\"currentColor\"}}),_c('circle',{attrs:{\"cx\":\"19\",\"cy\":\"12\",\"r\":\"1.6\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","const RELATED_TRAIL_QUERY = 'relatedTrail';\r\nconst MAX_RELATED_TRAIL_LENGTH = 12;\r\n\r\ntype QueryValue = string | Array<string | null> | null | undefined;\r\n\r\nexport default class RelatedNavigationService {\r\n  static createTargetUrl(targetUrl: string, currentUrl: string, trailValue?: QueryValue) {\r\n    const trail = RelatedNavigationService.parseTrail(trailValue);\r\n    const sourceUrl = RelatedNavigationService.withTrail(currentUrl, []);\r\n    if (sourceUrl && trail[trail.length - 1] !== sourceUrl) {\r\n      trail.push(sourceUrl);\r\n    }\r\n    return RelatedNavigationService.withTrail(targetUrl, trail.slice(-MAX_RELATED_TRAIL_LENGTH));\r\n  }\r\n\r\n  static getPreviousUrl(trailValue?: QueryValue) {\r\n    const trail = RelatedNavigationService.parseTrail(trailValue);\r\n    const previousUrl = trail.pop();\r\n    return previousUrl ? RelatedNavigationService.withTrail(previousUrl, trail) : '';\r\n  }\r\n\r\n  static hasPrevious(trailValue?: QueryValue) {\r\n    return RelatedNavigationService.parseTrail(trailValue).length > 0;\r\n  }\r\n\r\n  private static parseTrail(value?: QueryValue): Array<string> {\r\n    const raw = Array.isArray(value) ? value[0] : value;\r\n    if (!raw || typeof raw !== 'string') {\r\n      return [];\r\n    }\r\n    try {\r\n      const parsed = JSON.parse(raw);\r\n      return Array.isArray(parsed)\r\n        ? parsed.filter(item => typeof item === 'string' && item.startsWith('/') && !item.startsWith('//'))\r\n        : [];\r\n    } catch (error) {\r\n      return [];\r\n    }\r\n  }\r\n\r\n  private static withTrail(url: string, trail: Array<string>) {\r\n    if (!url || !url.startsWith('/') || url.startsWith('//')) {\r\n      return '';\r\n    }\r\n    const hashIndex = url.indexOf('#');\r\n    const hash = hashIndex >= 0 ? url.slice(hashIndex) : '';\r\n    const withoutHash = hashIndex >= 0 ? url.slice(0, hashIndex) : url;\r\n    const queryIndex = withoutHash.indexOf('?');\r\n    const path = queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;\r\n    const query = new URLSearchParams(queryIndex >= 0 ? withoutHash.slice(queryIndex + 1) : '');\r\n    if (trail.length) {\r\n      query.set(RELATED_TRAIL_QUERY, JSON.stringify(trail));\r\n    } else {\r\n      query.delete(RELATED_TRAIL_QUERY);\r\n    }\r\n    const queryString = query.toString();\r\n    return `${path}${queryString ? `?${queryString}` : ''}${hash}`;\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport IconLogout from '@/assets/icons/logout.svg';\r\nimport { UserState } from '@/store/modules/user';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport Profile from '@/components/Profile.vue';\r\nimport IconArrowDown from '@/assets/icons/arrow-down.svg';\r\nimport IconBook from '@/assets/icons/book.svg';\r\nimport IconTextSettings from '@/assets/icons/text-settings-icon.svg';\r\nimport IconReturn from '@/assets/icons/return.svg';\r\nimport IconList from '@/assets/icons/list.svg';\r\nimport IconSearch from '@/assets/icons/zoom.svg';\r\nimport IconBookmark from '@/assets/icons/bookmark-nav.svg';\r\nimport IconMore from '@/assets/icons/more.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { Book, BookSection } from '@/services/Navigation/types';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\nimport RelatedNavigationService from '@/services/RelatedNavigationService';\r\n\r\n@Component({\r\n  components: {\r\n    Profile,\r\n    Overlay,\r\n    IconLogout,\r\n    IconBook,\r\n    IconList,\r\n    IconSearch,\r\n    IconBookmark,\r\n    IconMore,\r\n    IconReturn,\r\n    IconTextSettings,\r\n    IconArrowDown\r\n  }\r\n})\r\nexport default class Header extends Vue {\r\n  loading: boolean = false;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: false, default: false })\r\n  mobileReader!: boolean;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  currentBook?: Book;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentBookSection?: BookSection;\r\n\r\n  @Action('logout', { namespace: 'auth' })\r\n  sendLogout!: Function;\r\n\r\n  @State('user')\r\n  user!: UserState;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage!: string;\r\n\r\n  @Mutation('setReadMode', { namespace: 'reader' })\r\n  setReadMode!: Function;\r\n\r\n  @Mutation('setLanguage', { namespace: 'navigation' })\r\n  setLanguage!: Function;\r\n\r\n  @Mutation('toggleTextTypesFilter', { namespace: 'reader' })\r\n  toggleTextTypesFilter!: Function;\r\n\r\n  showProfileOverlay: boolean = false;\r\n\r\n  showLogoutOverlay: boolean = false;\r\n\r\n  mobileActionsVisible: boolean = false;\r\n\r\n  get readerBook() {\r\n    return this.currentBook || (this.currentBookSection && this.currentBookSection.book);\r\n  }\r\n\r\n  get compactViewport() {\r\n    return typeof window !== 'undefined' && window.innerWidth <= 1024;\r\n  }\r\n\r\n  get hasRelatedHistory() {\r\n    return RelatedNavigationService.hasPrevious(this.$route.query.relatedTrail as string);\r\n  }\r\n\r\n  get homeUrl() {\r\n    if (!this.compactViewport) {\r\n      return '/';\r\n    }\r\n    const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n    return `/${language}/library`;\r\n  }\r\n\r\n  onLogoClick() {\r\n    this.setReadMode(false);\r\n    if (this.compactViewport) {\r\n      this.setLanguage(this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT);\r\n    } else {\r\n      this.setLanguage('');\r\n    }\r\n  }\r\n\r\n  async logout() {\r\n    try {\r\n      await this.sendLogout();\r\n      this.$router.push('/login').catch(() => {});\r\n    } catch (e) {\r\n      // do nothing\r\n    }\r\n  }\r\n\r\n  leaveMobileReader() {\r\n    const relatedReturnUrl = RelatedNavigationService.getPreviousUrl(this.$route.query\r\n      .relatedTrail as string);\r\n    if (relatedReturnUrl) {\r\n      this.mobileActionsVisible = false;\r\n      this.$router.push(relatedReturnUrl).catch(() => {});\r\n      return;\r\n    }\r\n    this.setReadMode(false);\r\n    if (typeof this.$route.query.query === 'string' && this.$route.query.query) {\r\n      const query = { ...this.$route.query };\r\n      delete query.index;\r\n      delete query.highlight;\r\n      delete query.reading;\r\n      const searchParams = new URLSearchParams();\r\n      Object.entries(query).forEach(([name, value]) => {\r\n        if (typeof value === 'string') {\r\n          searchParams.set(name, value);\r\n        }\r\n      });\r\n      this.$router.push(`/${this.$route.params.language}/search?${searchParams.toString()}`).catch(() => {});\r\n      return;\r\n    }\r\n    const path = this.$route.path\r\n      .split('/')\r\n      .slice(0, -1)\r\n      .join('/');\r\n    this.$router.push(path || '/').catch(() => {});\r\n  }\r\n\r\n  toggleTextSettings() {\r\n    this.$emit('toggle-text-settings');\r\n    this.toggleTextTypesFilter();\r\n  }\r\n\r\n  openBookmarks() {\r\n    this.mobileActionsVisible = false;\r\n    this.$emit('toggle-bookmarks');\r\n  }\r\n\r\n  openThemePicker() {\r\n    this.mobileActionsVisible = false;\r\n    this.$emit('toggle-theme');\r\n  }\r\n\r\n  openTextSettings() {\r\n    this.mobileActionsVisible = false;\r\n    this.$emit('open-settings');\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=543800f8&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=ts&\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=543800f8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"543800f8\",\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('div',{staticClass:\"sidebar\"},[_vm._l((_vm.languages),function(language){return _c('button',{key:language.code,staticClass:\"nav-icon\",class:{ active: _vm.$store.state.navigation.language === language.code },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateLanguage(language.code)}}},[_c(language.icon,{tag:\"component\"})],1)}),_c('div',{staticClass:\"separator\"}),_c('button',{staticClass:\"nav-icon\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.toggleSettings}},[_c('IconSettings')],1),_c('button',{staticClass:\"nav-icon\",on:{\"click\":_vm.openHelp}},[_c('IconHelp')],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M19.093 11.958l.114.217.243.043 5.603.973a.5.5 0 01.273.84l-3.965 4.095-.17.176.034.243.81 5.648a.5.5 0 01-.717.519l-5.097-2.515-.221-.11-.221.11-5.097 2.515a.5.5 0 01-.716-.52l.809-5.647.035-.243-.17-.176-3.966-4.095a.5.5 0 01.273-.84l5.603-.973.243-.043.114-.217 2.65-5.042a.5.5 0 01.886 0l2.65 5.042z\",\"stroke\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"viewBox\":\"0 0 32 32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M21.5 25V6.5h-11V25l5.5-5.143L21.5 25z\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.75\",\"stroke-linejoin\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M18.495 9.237l.06.239.226.098c.496.215.963.486 1.392.805l.198.147.237-.067 2.247-.64a.444.444 0 01.468.128 9.488 9.488 0 011.582 2.736.443.443 0 01-.122.47l-1.68 1.627-.176.171.028.245a7.094 7.094 0 010 1.608l-.028.245.177.171 1.679 1.628c.14.135.178.32.122.47a9.488 9.488 0 01-1.582 2.735.444.444 0 01-.468.128l-2.247-.64-.237-.067-.198.147c-.43.32-.896.59-1.392.805l-.226.098-.06.24-.569 2.264a.444.444 0 01-.346.341 9.566 9.566 0 01-3.16 0l-.082.493.083-.493a.444.444 0 01-.346-.34l-.57-2.266-.06-.239-.226-.098a6.995 6.995 0 01-1.391-.805l-.198-.147-.238.067-2.246.64a.444.444 0 01-.468-.129 9.488 9.488 0 01-1.583-2.735.443.443 0 01.123-.47l-.346-.357.346.357 1.68-1.627.176-.171-.028-.245a7.081 7.081 0 010-1.608l.028-.245-.177-.17-1.68-1.628a.443.443 0 01-.122-.47 9.489 9.489 0 011.583-2.736.444.444 0 01.468-.128l2.246.64.238.067.198-.147c.429-.319.895-.59 1.392-.805l.226-.098.06-.239.569-2.265a.444.444 0 01.346-.341 9.567 9.567 0 013.159 0 .444.444 0 01.346.34l.569 2.266zM16 19a3 3 0 100-6 3 3 0 000 6z\",\"stroke\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M14.852 18.756a.485.485 0 01-.49-.5c.034-.835.156-1.518.367-2.048.252-.632.71-1.253 1.376-1.862.674-.617 1.121-1.116 1.343-1.496.222-.389.333-.796.333-1.223 0-1.287-.577-1.93-1.731-1.93-.548 0-.988.174-1.32.525-.234.246-.388.56-.462.943-.05.267-.266.485-.537.485h-2.226a.472.472 0 01-.481-.505c.105-1.216.552-2.186 1.341-2.911C13.268 7.41 14.496 7 16.05 7c1.569 0 2.786.392 3.651 1.177.866.777 1.299 1.877 1.299 3.302 0 .647-.14 1.26-.422 1.839-.28.571-.773 1.207-1.476 1.908l-.899.88c-.562.555-.884 1.207-.965 1.953l-.015.229a.5.5 0 01-.499.468h-1.872zm-.822 3.507c0-.51.166-.929.5-1.256.34-.335.773-.503 1.298-.503s.954.168 1.287.503c.34.327.511.746.511 1.256 0 .503-.167.918-.5 1.246-.325.327-.758.491-1.298.491s-.977-.164-1.31-.491c-.325-.328-.488-.743-.488-1.246z\",\"stroke\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('mask',{attrs:{\"id\":\"a\",\"fill\":\"#fff\"}},[_c('path',{attrs:{\"d\":\"M27 27H5a1 1 0 01-1-1V6a1 1 0 011-1h9a1 1 0 011 1v1.5a.5.5 0 00.5.5H27a1 1 0 011 1v17a1 1 0 01-1 1z\"}})]),_c('path',{attrs:{\"d\":\"M4 12h24v-1H4v1zm1 16h22v-2H5v2zM27 7H15.5v2H27V7zm-11 .5V6h-2v1.5h2zM14 4H5v2h9V4zM3 6v5.5h2V6H3zm0 5.5V26h2V11.5H3zM29 26V11.5h-2V26h2zm0-14.5V9h-2v2.5h2zM16 6a2 2 0 00-2-2v2h2zm-.5 1a.5.5 0 01.5.5h-2A1.5 1.5 0 0015.5 9V7zM27 9h2a2 2 0 00-2-2v2zm0 19a2 2 0 002-2h-2v2zM5 26H3a2 2 0 002 2v-2zM5 4a2 2 0 00-2 2h2V4z\",\"fill\":\"currentColor\",\"mask\":\"url(#a)\"}}),_c('path',{attrs:{\"d\":\"M9.809 15.03c.29-.053.624-.095 1-.126.383-.03.732-.046 1.047-.046.352 0 .686.039 1 .115.322.077.602.204.84.38.245.176.44.406.586.69.146.284.219.629.219 1.035 0 .629-.173 1.138-.518 1.53a2.5 2.5 0 01-1.31.781l.551.426L15.225 23H14.11l-2.22-3.473-1.127-.172V23H9.81v-7.97zm2.07.656h-.31c-.108 0-.212.004-.311.012l-.288.023c-.084.008-.153.02-.207.034v2.967h.897c.53 0 .966-.13 1.311-.39.345-.261.518-.668.518-1.22 0-.414-.142-.755-.426-1.023-.284-.268-.678-.403-1.184-.403zM21.27 14.95h.92v5.37c0 .484-.064.902-.195 1.254a2.195 2.195 0 01-.54.874c-.23.223-.51.388-.84.495-.33.107-.693.16-1.092.16-.95 0-1.668-.214-2.15-.643-.484-.43-.725-1.081-.725-1.955V14.95h.954v5.106c0 .407.039.752.115 1.035.085.276.207.503.368.679.161.169.36.291.598.368.246.077.53.115.851.115.621 0 1.066-.169 1.334-.506.269-.345.403-.909.403-1.69V14.95z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('mask',{attrs:{\"id\":\"a\",\"fill\":\"#fff\"}},[_c('path',{attrs:{\"d\":\"M27 27H5a1 1 0 01-1-1V6a1 1 0 011-1h9a1 1 0 011 1v1.5a.5.5 0 00.5.5H27a1 1 0 011 1v17a1 1 0 01-1 1z\"}})]),_c('path',{attrs:{\"d\":\"M4 12h24v-1H4v1zm1 16h22v-2H5v2zM27 7H15.5v2H27V7zm-11 .5V6h-2v1.5h2zM14 4H5v2h9V4zM3 6v5.5h2V6H3zm0 5.5V26h2V11.5H3zM29 26V11.5h-2V26h2zm0-14.5V9h-2v2.5h2zM16 6a2 2 0 00-2-2v2h2zm-.5 1a.5.5 0 01.5.5h-2A1.5 1.5 0 0015.5 9V7zM27 9h2a2 2 0 00-2-2v2zm0 19a2 2 0 002-2h-2v2zM5 26H3a2 2 0 002 2v-2zM5 4a2 2 0 00-2 2h2V4z\",\"fill\":\"currentColor\",\"mask\":\"url(#a)\"}}),_c('path',{attrs:{\"d\":\"M10.025 14.982h4.381v.851H10.98v2.633h3.14v.851h-3.14v2.864h3.485v.851h-4.44v-8.05zM17.64 17.765l-.622-1.162h-.046l.115 1.162v5.267h-.897v-8.177h.506l3.853 5.371.598 1.104h.057l-.126-1.104v-5.244h.897v8.177h-.506l-3.83-5.394z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('mask',{attrs:{\"id\":\"a\",\"fill\":\"#fff\"}},[_c('path',{attrs:{\"d\":\"M27 27H5a1 1 0 01-1-1V6a1 1 0 011-1h9a1 1 0 011 1v1.5a.5.5 0 00.5.5H27a1 1 0 011 1v17a1 1 0 01-1 1z\"}})]),_c('path',{attrs:{\"d\":\"M4 12h24v-1H4v1zm1 16h22v-2H5v2zM27 7H15.5v2H27V7zm-11 .5V6h-2v1.5h2zM14 4H5v2h9V4zM3 6v5.5h2V6H3zm0 5.5V26h2V11.5H3zM29 26V11.5h-2V26h2zm0-14.5V9h-2v2.5h2zM16 6a2 2 0 00-2-2v2h2zm-.5 1a.5.5 0 01.5.5h-2A1.5 1.5 0 0015.5 9V7zM27 9h2a2 2 0 00-2-2v2zm0 19a2 2 0 002-2h-2v2zM5 26H3a2 2 0 002 2v-2zM5 4a2 2 0 00-2 2h2V4z\",\"fill\":\"currentColor\",\"mask\":\"url(#a)\"}}),_c('path',{attrs:{\"d\":\"M15.012 19.026h2.93v-2.888H15.37v1.707c0 .501-.119.895-.357 1.181zM20.5 15.34v.8h-1.524V23h-1.034v-3.162h-2.227c-.98 0-1.732-.036-2.253-.108L15.9 23h-1.26l-2.478-3.365v-.74h.875c.503 0 .843-.087 1.02-.262.186-.183.278-.47.278-.86v-1.635H11.5v-.8h9zM18.045 14.11a.568.568 0 01-.212-.454c0-.183.07-.338.212-.465.132-.127.3-.191.503-.191.204 0 .376.064.517.19a.603.603 0 01.212.466c0 .183-.07.335-.212.454a.775.775 0 01-.517.179.724.724 0 01-.503-.18z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Mutation } from 'vuex-class';\r\nimport { LANGUAGE_CODE_ENGLISH, LANGUAGE_CODE_RUSSIAN, LANGUAGE_CODE_SANSKRIT, LANGUAGES } from '@/constants';\r\nimport IconStar from '@/assets/icons/star.svg';\r\nimport IconBookmark from '@/assets/icons/bookmark.svg';\r\nimport IconSettings from '@/assets/icons/settings.svg';\r\nimport IconHelp from '@/assets/icons/help.svg';\r\nimport IconCatalogRu from '@/assets/icons/catalog-ru.svg';\r\nimport IconCatalogEn from '@/assets/icons/catalog-en.svg';\r\nimport IconCatalogSt from '@/assets/icons/catalog-st.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: {\r\n    IconStar,\r\n    IconBookmark,\r\n    IconSettings,\r\n    IconHelp\r\n  }\r\n})\r\nexport default class Sidebar extends Vue {\r\n  @Mutation('setReadMode', { namespace: 'reader' })\r\n  setReadMode!: Function;\r\n\r\n  @Mutation('setLanguage', { namespace: 'navigation' })\r\n  setLanguage!: Function;\r\n\r\n  @Mutation('toggle', { namespace: 'settings' })\r\n  toggleSettings!: Function;\r\n\r\n  get languages() {\r\n    return LANGUAGES.map(code => {\r\n      let icon;\r\n      switch (code) {\r\n        case LANGUAGE_CODE_RUSSIAN:\r\n          icon = IconCatalogRu;\r\n          break;\r\n        case LANGUAGE_CODE_ENGLISH:\r\n          icon = IconCatalogEn;\r\n          break;\r\n        case LANGUAGE_CODE_SANSKRIT:\r\n          icon = IconCatalogSt;\r\n          break;\r\n      }\r\n      return { code, icon };\r\n    });\r\n  }\r\n\r\n  updateLanguage(language: string) {\r\n    this.setReadMode(false);\r\n    this.setLanguage(language);\r\n  }\r\n\r\n  openHelp() {\r\n    this.$store.commit('tabs/openTab');\r\n    this.$store.commit('tabs/updateActiveTabLink', '/help');\r\n    this.$store.commit('tabs/updateActiveTabName', getTranslation('help'));\r\n    this.$router.push('/help');\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=0ddde9cb&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=0ddde9cb&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0ddde9cb\",\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\r\nimport Header from '@/components/Header.vue';\r\nimport Sidebar from '@/components/Sidebar.vue';\r\n\r\nexport default {\r\n  components: { Header, Sidebar },\r\n  props: {\r\n    mobileReader: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    readerChromeVisible: {\r\n      type: Boolean,\r\n      default: true\r\n    },\r\n    presentationMode: {\r\n      type: Boolean,\r\n      default: false\r\n    }\r\n  }\r\n};\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CommonLayout.vue?vue&type=template&id=45138fb0&scoped=true&\"\nimport script from \"./CommonLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./CommonLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CommonLayout.vue?vue&type=style&index=0&id=45138fb0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"45138fb0\",\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('div',{staticClass:\"tabs\",class:{\n    dark: _vm.$store.state.reader.readMode && _vm.$store.state.reader.colorMode === 'dark'\n  }},[_vm._l((_vm.$store.state.tabs.list),function(tab,index){return _c('Tab',{key:index,attrs:{\"name\":tab.name || _vm.getTranslation('newTab'),\"link\":tab.link,\"active\":tab.active},on:{\"click\":function($event){return _vm.onTabClick(index, tab)},\"delete\":function($event){return _vm.onTabDelete(index)}}})}),_c('button',{staticClass:\"nav-icon add-button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$store.commit('tabs/openTab')}}},[_c('div',{staticClass:\"add-button-icon\"},[_c('IconPlus')],1)])],2)}\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:\"tab\",class:[\n    _vm.className,\n    _vm.active ? 'active' : '',\n    _vm.$store.state.reader.readMode && _vm.$store.state.reader.colorMode === 'dark' ? 'dark' : ''\n  ],on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('div',{staticClass:\"tab-inner\"},[_c('div',{staticClass:\"tab-text\"},[(_vm.isSearch)?_c('ZoomIcon',{staticClass:\"tab-text-icon\"}):_vm._e(),_vm._v(\"\\n      \"+_vm._s(_vm.name)+\"\\n    \")],1)]),_c('button',{staticClass:\"nav-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('delete')}}},[_c('CrossIcon')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"18\",\"height\":\"18\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M3.354 2.646a.5.5 0 10-.708.708l.708-.708zm11.292 12.708a.5.5 0 00.708-.708l-.708.708zm.708-12a.5.5 0 00-.708-.708l.708.708zM2.646 14.646a.5.5 0 00.708.708l-.708-.708zm0-11.292l12 12 .708-.708-12-12-.708.708zm12-.708l-12 12 .708.708 12-12-.708-.708z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport CrossIcon from '@/assets/icons/cross.svg';\r\nimport ZoomIcon from '@/assets/icons/zoom.svg';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { CrossIcon, ZoomIcon }\r\n})\r\nexport default class Tab extends Vue {\r\n  @Prop({ required: true })\r\n  name!: string;\r\n\r\n  @Prop({ required: false, default: '' })\r\n  className!: string;\r\n\r\n  @Prop({ required: true })\r\n  active!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  link!: string | undefined;\r\n\r\n  get isSearch() {\r\n    return this.link && this.link.includes('/search');\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=edc7952c&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tab.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=edc7952c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"edc7952c\",\n  null\n  \n)\n\nexport default component.exports","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"18\",\"height\":\"18\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 9h16M9 1v16\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Tab as TabType } from '@/store/modules/tabs';\r\nimport Tab from '@/components/ui/Tab.vue';\r\nimport IconPlus from '@/assets/icons/plus.svg';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { Tab, IconPlus }\r\n})\r\nexport default class TabsBar extends Vue {\r\n  @State('list', { namespace: 'tabs' })\r\n  tabs!: Array<TabType>;\r\n\r\n  @Mutation('closeTab', { namespace: 'tabs' })\r\n  closeTab!: Function;\r\n\r\n  @Mutation('setActiveTab', { namespace: 'tabs' })\r\n  setActiveTab!: Function;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  onTabClick(index: number, tab: TabType) {\r\n    if (tab.active) {\r\n      return;\r\n    }\r\n    this.setActiveTab(index);\r\n    if (tab.active && tab.link && this.$route.fullPath !== tab.link) {\r\n      this.$router.push(tab.link);\r\n    }\r\n  }\r\n\r\n  onTabDelete(index: number) {\r\n    this.closeTab(index);\r\n    const activeTab = this.tabs.find(tab => tab.active);\r\n    if (activeTab && activeTab.link) {\r\n      this.$router.push(activeTab.link);\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabsBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabsBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabsBar.vue?vue&type=template&id=b62ccaba&scoped=true&\"\nimport script from \"./TabsBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabsBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TabsBar.vue?vue&type=style&index=0&id=b62ccaba&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b62ccaba\",\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.readMode)?_c('div',{staticClass:\"search\",class:{ 'mobile-visible': _vm.mobileVisible }},[(_vm.mobileBookSearch)?_c('div',{staticClass:\"mobile-book-search-context\"},[_c('button',{staticClass:\"mobile-book-search-back nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('backToBook')},on:{\"click\":function($event){return _vm.$emit('close-book-search')}}},[_c('IconReturn')],1),_c('div',{staticClass:\"mobile-book-search-copy\"},[_c('span',[_vm._v(_vm._s(_vm.getTranslation('searchInBook')))]),_c('strong',[_vm._v(_vm._s(_vm.mobileBookName))])])]):_vm._e(),_c('div',{staticClass:\"search-bar\"},[_c('div',{staticClass:\"search-left-col\"},[_c('div',{staticClass:\"search-input-wrap\"},[_c('SearchInput',{attrs:{\"placeholder\":_vm.getTranslation('enterSearchQuery'),\"value\":_vm.$route.query.query,\"has-suggestions\":true},on:{\"submit\":_vm.onSearchSubmit,\"clear\":_vm.onSearchClear}}),(_vm.isSearchResultPage)?_c('div',{staticClass:\"search-links\"},[_c('button',{staticClass:\"search-link\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.goToSearchList}},[_c('IconList')],1),(_vm.prevSearchResultUrl)?_c('router-link',{staticClass:\"search-link\",attrs:{\"to\":_vm.prevSearchResultUrl}},[_c('IconArrowSearchLeft')],1):_c('div',{staticClass:\"search-link disabled\"},[_c('IconArrowSearchLeft')],1),(_vm.nextSearchResultUrl)?_c('router-link',{staticClass:\"search-link\",attrs:{\"to\":_vm.nextSearchResultUrl}},[_c('IconArrowSearchRight')],1):_c('div',{staticClass:\"search-link disabled\"},[_c('IconArrowSearchRight')],1)],1):_vm._e()],1)]),_c('div',{staticClass:\"search-right-col\"},[(_vm.currentBook && _vm.currentBook.is_show_edit_link)?_c('a',{staticClass:\"search-edit-button\",attrs:{\"href\":_vm.editUrl,\"target\":\"_blank\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('edit'))+\"\\n      \")]):_vm._e(),(_vm.$route.fullPath !== '/')?_c('button',{staticClass:\"nav-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setReadMode(true)}}},[_c('IconBook')],1):_vm._e()])]),(!_vm.mobileBookSearch)?_c('div',[(_vm.mobileVisible)?_c('div',{staticClass:\"mobile-search-actions\",attrs:{\"role\":\"toolbar\",\"aria-label\":_vm.getTranslation('search')}},[(!_vm.inBookSearch)?_c('button',{staticClass:\"mobile-search-action mobile-search-action-advanced\",class:{ active: _vm.advancedSearch },attrs:{\"type\":\"button\",\"aria-expanded\":String(_vm.advancedSearchPanelExpanded)},on:{\"click\":_vm.toggleAdvancedSearch}},[_c('IconSearchSettings'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('advancedSearch')))])],1):_vm._e(),(!_vm.inBookSearch)?_c('button',{staticClass:\"mobile-search-action mobile-search-action-scope\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.openSearchAreaPicker}},[_c('IconList'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('searchScope')))]),(_vm.selectedBooksCount)?_c('span',{staticClass:\"mobile-search-area-count\"},[_vm._v(_vm._s(_vm.selectedBooksCount))]):_vm._e()],1):_vm._e(),(_vm.hasSearchHistory)?_c('button',{staticClass:\"mobile-search-action mobile-search-action-history\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.openSearchHistory}},[_c('IconHistory'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('history')))])],1):_vm._e()]):_c('div',{staticClass:\"search-left-col flex justify-content-space-between\"},[_c('div',[(!_vm.inBookSearch)?_c('AccordionControl',{attrs:{\"expanded\":_vm.advancedSearch},on:{\"click\":_vm.toggleAdvancedSearch}},[_c('IconSearchSettings'),_vm._v(\" \"+_vm._s(_vm.getTranslation('advancedSearch'))+\"\\n        \")],1):_vm._e()],1),_c('div',[_c('button',{staticClass:\"nav-link button-history\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.showSearchHistoryOverlay = true}}},[_c('span',{staticClass:\"flex align-items-center\"},[_c('IconHistory'),_vm._v(\" \"+_vm._s(_vm.getTranslation('history'))+\"\\n          \")],1)]),(!_vm.mobileVisible && (_vm.currentBook || _vm.searchBookSlug))?_c('button',{staticClass:\"nav-link\",attrs:{\"type\":\"button\"}},[_c('span',{staticClass:\"flex align-items-center\"},[_c('Checkbox',{attrs:{\"checked\":_vm.inBookSearch},on:{\"change\":_vm.onInBookSearchChange}},[_vm._v(\"\\n              \"+_vm._s(_vm.getTranslation('inBookOnly'))+\"\\n            \")])],1)]):_vm._e()])])]):_vm._e(),_c('AccordionContent',{ref:\"searchOptionsPanel\",staticClass:\"search-options-panel\",class:{ dragging: _vm.mobileSheetDragging },style:(_vm.mobileSheetStyle),attrs:{\"expanded\":_vm.advancedSearchPanelExpanded,\"role\":_vm.mobileVisible && _vm.advancedSearchPanelExpanded ? 'dialog' : undefined,\"aria-modal\":_vm.mobileVisible && _vm.advancedSearchPanelExpanded ? 'true' : undefined,\"aria-label\":_vm.mobileVisible && _vm.advancedSearchPanelExpanded ? _vm.getTranslation('advancedSearch') : undefined,\"tabindex\":_vm.mobileVisible && _vm.advancedSearchPanelExpanded ? -1 : undefined,\"height\":\"101\"}},[(_vm.mobileVisible)?_c('div',{staticClass:\"mobile-search-sheet-drag-region\",on:{\"pointerdown\":_vm.startMobileSheetDrag,\"pointermove\":_vm.moveMobileSheetDrag,\"pointerup\":_vm.endMobileSheetDrag,\"pointercancel\":_vm.cancelMobileSheetDrag}},[_c('span')]):_vm._e(),_c('div',{staticClass:\"advanced-search-inner\"},[_c('div',{staticClass:\"advanced-search-top\"},[_c('div',{staticClass:\"flex\"},[(_vm.selectedBooksCount)?_c('div',{staticClass:\"books-selected\"},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('booksSelected'))+\":  \"),_c('span',{staticClass:\"orange-color\"},[_vm._v(_vm._s(_vm.selectedBooksCount))])]):_vm._e(),_c('div',[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('searchScope'))+\":  \"),_c('button',{staticClass:\"nav-link\",class:{ active: !_vm.searchInPoem },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.searchInPoem = false}}},[_vm._v(\"\\n              \"+_vm._s(_vm.getTranslation('searchEverywhere'))+\"\\n            \")]),_vm._v(\"\\n            |\\n            \"),_c('button',{staticClass:\"nav-link\",class:{ active: _vm.searchInPoem },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.searchInPoem = true}}},[_vm._v(\"\\n              \"+_vm._s(_vm.getTranslation('searchPoems'))+\"\\n            \")])])]),_c('div',[_c('button',{staticClass:\"nav-link\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.resetSearchSettings}},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('resetSettings'))+\"\\n          \")])])]),_c('div',{staticClass:\"advanced-search-bottom\"},[_c('Checkbox',{attrs:{\"checked\":_vm.exact},on:{\"change\":function($event){_vm.exact = !_vm.exact}}},[_vm._v(_vm._s(_vm.getTranslation('exactPhrase')))]),_c('Checkbox',{attrs:{\"checked\":_vm.considerDiacritics},on:{\"change\":function($event){_vm.considerDiacritics = !_vm.considerDiacritics}}},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('considerDiacritics'))+\" (ā ≠ а)\\n        \")]),_c('Checkbox',{attrs:{\"checked\":_vm.equalizeWriting},on:{\"change\":function($event){_vm.equalizeWriting = !_vm.equalizeWriting}}},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('equalizeWriting'))+\" (я = йа)\\n        \")]),_c('AccordionControl',{attrs:{\"expanded\":_vm.showHelp},on:{\"click\":_vm.toggleHelp}},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('searchOperatorsHelper'))+\"\\n        \")])],1)])]),_c('AccordionContent',{ref:\"searchHelpPanel\",staticClass:\"search-help-panel\",class:{ dragging: _vm.mobileSheetDragging },style:(_vm.mobileSheetStyle),attrs:{\"expanded\":_vm.showHelp,\"role\":_vm.mobileVisible && _vm.showHelp ? 'dialog' : undefined,\"aria-modal\":_vm.mobileVisible && _vm.showHelp ? 'true' : undefined,\"aria-label\":_vm.mobileVisible && _vm.showHelp ? _vm.getTranslation('searchOperatorsHelper') : undefined,\"tabindex\":_vm.mobileVisible && _vm.showHelp ? -1 : undefined,\"height\":\"400\"}},[(_vm.mobileVisible)?_c('div',{staticClass:\"mobile-search-sheet-drag-region\",on:{\"pointerdown\":_vm.startMobileSheetDrag,\"pointermove\":_vm.moveMobileSheetDrag,\"pointerup\":_vm.endMobileSheetDrag,\"pointercancel\":_vm.cancelMobileSheetDrag}},[_c('span')]):_vm._e(),_c('div',{staticClass:\"help\",domProps:{\"innerHTML\":_vm._s(_vm.getTranslation('searchHelp'))}})]),(_vm.mobileVisible && _vm.mobileSheetLayerVisible)?_c('button',{staticClass:\"mobile-search-backdrop\",class:{ closing: !_vm.advancedSearchPanelExpanded && !_vm.showHelp },attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":_vm.closeMobilePanels}}):_vm._e(),_c('Overlay',{staticClass:\"search-history-overlay\",attrs:{\"title\":_vm.getTranslation('searchHistory'),\"visible\":_vm.showSearchHistoryOverlay},on:{\"close\":_vm.closeSearchHistory}},[_c('SearchHistory',{staticClass:\"search-history\",on:{\"click\":_vm.closeSearchHistory,\"cleared\":function($event){return _vm.onSearchHistoryState(false)},\"state-change\":_vm.onSearchHistoryState}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"20\",\"height\":\"20\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M10.904 11.256a.5.5 0 10-.707.707l.707-.707zm2.394 3.808a.5.5 0 00.707-.707l-.707.707zm-2.393-5.521a2.425 2.425 0 01-2.424 2.425v1a3.425 3.425 0 003.424-3.425h-1zm-2.424 2.425a2.425 2.425 0 01-2.424-2.425h-1a3.425 3.425 0 003.424 3.425v-1zM6.057 9.543A2.425 2.425 0 018.48 7.117v-1a3.425 3.425 0 00-3.424 3.426h1zM8.48 7.117a2.425 2.425 0 012.424 2.426h1a3.425 3.425 0 00-3.424-3.426v1zm1.716 4.846l3.1 3.1.708-.706-3.1-3.101-.708.707z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M3.94 4.097c1.494 1.293 3.822.328 3.963-1.641.017-.229.102-.349.186-.419A.642.642 0 018.5 1.9c.168 0 .314.056.411.137.084.07.17.19.186.419.141 1.97 2.47 2.934 3.962 1.641.174-.15.319-.174.427-.165a.642.642 0 01.388.194c.119.12.183.262.194.388.01.109-.015.253-.165.427-1.293 1.493-.328 3.82 1.641 3.962.229.017.348.102.419.186a.642.642 0 01.137.411.642.642 0 01-.137.411c-.07.084-.19.17-.418.186a2.359 2.359 0 00-1.563.73c-.143.15-.12.384.027.53.2.2.54.148.76-.032.224-.184.51-.307.84-.33 1.855-.134 1.855-2.856 0-2.99-1.23-.088-1.833-1.542-1.025-2.475 1.217-1.406-.708-3.33-2.114-2.114-.933.808-2.387.206-2.475-1.025-.134-1.855-2.856-1.855-2.99 0-.088 1.23-1.542 1.833-2.475 1.025C3.124 2.2 1.2 4.124 2.416 5.53c.808.933.206 2.387-1.025 2.475-1.855.134-1.855 2.856 0 2.99 1.23.088 1.833 1.542 1.025 2.475-1.217 1.406.708 3.33 2.114 2.114.933-.808 2.387-.205 2.475 1.025.134 1.855 2.856 1.855 2.99 0a1.48 1.48 0 01.33-.84c.18-.22.232-.56.032-.76-.146-.146-.38-.17-.53-.027-.406.385-.684.92-.73 1.563-.017.228-.102.347-.186.418a.642.642 0 01-.411.137.642.642 0 01-.411-.137c-.084-.07-.17-.19-.186-.419-.141-1.97-2.47-2.934-3.962-1.641-.174.15-.318.174-.427.165a.642.642 0 01-.388-.194.642.642 0 01-.194-.388c-.01-.109.015-.253.165-.427 1.293-1.493.328-3.82-1.641-3.962-.229-.017-.349-.102-.419-.186A.642.642 0 01.9 9.5c0-.168.056-.314.137-.411.07-.084.19-.17.419-.186 1.97-.141 2.934-2.47 1.641-3.962-.15-.174-.174-.318-.165-.427a.642.642 0 01.194-.388.642.642 0 01.388-.194c.109-.01.253.015.427.165z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"20\",\"height\":\"20\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M8.273 6v4.5l3.5 1.5\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M15.773 10a7 7 0 01-13.591 2.361.536.536 0 00-.499-.361c-.333 0-.577.315-.467.63a8 8 0 100-5.259c-.11.314.134.629.467.629a.535.535 0 00.499-.361A7 7 0 0115.774 10z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M1.244 9.32c-.092.05-.263-.007-.307-.102L.01 7.213c-.043-.094.071-.155.206-.11l2.866.941c.135.045.19.162.1.212L1.244 9.319z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"11\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M15 5.5H5.667M1 5.5l4.667 5M1 5.5l4.667-5M1 5.5h4.667m0 0L8 8M5.667 5.5L8 3\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"11\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 5.5h9.333M15 5.5l-4.667-5M15 5.5l-4.667 5M15 5.5h-4.667m0 0L8 3m2.333 2.5L8 8\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"search-wrap\",class:{ 'has-query': _vm.query && _vm.query.length, 'is-loading': _vm.loadingSuggestions }},[_c('InputText',{staticClass:\"input-search\",attrs:{\"placeholder\":_vm.placeholder,\"value\":_vm.query},on:{\"focus\":_vm.handleInputFocus,\"blur\":_vm.handleInputBlur,\"change\":_vm.handleInputChange,\"enter\":_vm.handlePressEnter}}),_c('div',{staticClass:\"search-right\"},[_c('div',{staticClass:\"search-loader\"},[_c('Loader',{attrs:{\"hidden\":!_vm.loadingSuggestions}})],1),(_vm.query && _vm.query.length)?_c('button',{staticClass:\"search-button\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":_vm.handleClear}},[_c('span',{staticClass:\"search-button-inner\"},[_c('IconCross')],1)]):_vm._e(),_c('button',{staticClass:\"search-button\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('search')},on:{\"click\":_vm.handlePressEnter}},[_c('span',{staticClass:\"search-button-inner\"},[_c('ZoomIcon')],1)])]),(_vm.hasSuggestions && _vm.suggestions.length)?_c('div',{staticClass:\"search-suggestions\"},[_vm._l((_vm.suggestions),function(suggestion){return _c('button',{key:suggestion.title,staticClass:\"search-suggestions-item\",attrs:{\"type\":\"button\"},domProps:{\"innerHTML\":_vm._s(suggestion.title)},on:{\"click\":function($event){return _vm.handleSuggestionClick(suggestion.value)}}})}),_c('button',{staticClass:\"search-suggestions-all link\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.handlePressEnter}},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('allResults'))+\"\\n    \")])],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Book, Category } from '@/services/Navigation/types';\r\n\r\nexport interface SearchScopeOptions {\r\n  book_slug?: string;\r\n  books?: Array<number>;\r\n  categories?: Array<number>;\r\n  book_sections?: Array<string>;\r\n}\r\n\r\nexport interface CategoryBookMapping {\r\n  id: number | string;\r\n  books: Array<number>;\r\n}\r\n\r\nexport default class SearchScopeService {\r\n  static hasActiveScope(options: SearchScopeOptions = {}) {\r\n    return (\r\n      !!options.book_slug ||\r\n      !!(options.books && options.books.length) ||\r\n      !!(options.categories && options.categories.length) ||\r\n      !!(options.book_sections && options.book_sections.length)\r\n    );\r\n  }\r\n\r\n  static getBranchCategoryIds(categories: Array<Category>, categoryId: number) {\r\n    const branchIds = new Set<number>([Number(categoryId)]);\r\n    let previousSize = 0;\r\n    while (branchIds.size !== previousSize) {\r\n      previousSize = branchIds.size;\r\n      categories.forEach(category => {\r\n        if (branchIds.has(Number(category.parent_id))) {\r\n          branchIds.add(Number(category.id));\r\n        }\r\n      });\r\n    }\r\n    return branchIds;\r\n  }\r\n\r\n  static getUnloadedBookCategoryIds(categories: Array<Category>, categoryId: number) {\r\n    const branchIds = SearchScopeService.getBranchCategoryIds(categories, categoryId);\r\n    return categories\r\n      .filter(category => {\r\n        return branchIds.has(Number(category.id)) && category.is_books_exist && !category.bookIds.length;\r\n      })\r\n      .map(category => Number(category.id));\r\n  }\r\n\r\n  static applyCategoryBookMappings(\r\n    categories: Array<Category>,\r\n    requestedCategoryIds: Array<number>,\r\n    mappings: Array<CategoryBookMapping>\r\n  ) {\r\n    const requestedIds = new Set(requestedCategoryIds.map(Number));\r\n    const mappingById = new Map(mappings.map(mapping => [Number(mapping.id), mapping.books.map(Number)]));\r\n    return categories.map(category =>\r\n      requestedIds.has(Number(category.id))\r\n        ? {\r\n            ...category,\r\n            bookIds: mappingById.get(Number(category.id)) || []\r\n          }\r\n        : category\r\n    );\r\n  }\r\n\r\n  static getSelectedBookIds(books: Array<Book>, categories: Array<Category>) {\r\n    const selectedBookIds = new Set<number>();\r\n    books.forEach(book => selectedBookIds.add(Number(book.id)));\r\n    categories.forEach(category => {\r\n      category.bookIds.forEach(bookId => selectedBookIds.add(Number(bookId)));\r\n    });\r\n    return selectedBookIds;\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport InputText from '@/components/ui/InputText.vue';\r\nimport ZoomIcon from '@/assets/icons/zoom.svg';\r\nimport IconCross from '@/assets/icons/cross.svg';\r\nimport SearchService, { SearchBaseOptions } from '@/services/Api/SearchService';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport { Getter } from 'vuex-class';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport SearchScopeService from '@/services/SearchScopeService';\r\n\r\n@Component({\r\n  components: { Loader, InputText, ZoomIcon, IconCross }\r\n})\r\nexport default class SearchInput extends Vue {\r\n  query: string;\r\n\r\n  suggestionTimeout?: number;\r\n\r\n  suggestions: Array<{ title: string; url: string }> = [];\r\n\r\n  loadingSuggestions: boolean = false;\r\n\r\n  suggestionsRequestId: number = 0;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: false, default: '' })\r\n  placeholder!: string;\r\n\r\n  @Prop({ required: false })\r\n  value?: string;\r\n\r\n  @Prop({ required: false })\r\n  hasSuggestions?: boolean;\r\n\r\n  @Getter('searchOptions', { namespace: 'search' })\r\n  searchOptions!: SearchBaseOptions;\r\n\r\n  constructor() {\r\n    super();\r\n    this.query = this.value || '';\r\n  }\r\n\r\n  @Watch('value')\r\n  onValueChange() {\r\n    this.query = this.value || '';\r\n  }\r\n\r\n  handleInputChange(value: string) {\r\n    this.query = value;\r\n    this.$emit('change', value);\r\n    this.actualizeSuggestions();\r\n  }\r\n\r\n  handlePressEnter() {\r\n    this.$emit('submit', this.query);\r\n    this.resetSuggestions();\r\n  }\r\n\r\n  handleClear() {\r\n    this.query = '';\r\n    this.$emit('clear');\r\n    this.resetSuggestions();\r\n  }\r\n\r\n  handleInputFocus() {\r\n    this.actualizeSuggestions();\r\n  }\r\n\r\n  handleInputBlur() {\r\n    setTimeout(() => {\r\n      this.resetSuggestions();\r\n    }, 200);\r\n  }\r\n\r\n  handleSuggestionClick(suggestion: string) {\r\n    this.$emit('submit', suggestion);\r\n    this.resetSuggestions();\r\n  }\r\n\r\n  actualizeSuggestions() {\r\n    if (!this.hasSuggestions) {\r\n      return;\r\n    }\r\n    if (this.suggestionTimeout) {\r\n      clearTimeout(this.suggestionTimeout);\r\n    }\r\n    this.suggestionTimeout = setTimeout(async () => {\r\n      const suggestions = await this.fetchSuggestions();\r\n      if (suggestions) {\r\n        this.suggestions = suggestions;\r\n      }\r\n    }, 400);\r\n  }\r\n\r\n  async fetchSuggestions() {\r\n    if (!(this.query && this.query.length > 2)) {\r\n      return [];\r\n    }\r\n    if (SearchScopeService.hasActiveScope(this.searchOptions)) {\r\n      this.loadingSuggestions = false;\r\n      return [];\r\n    }\r\n    this.loadingSuggestions = true;\r\n    const requestId = ++this.suggestionsRequestId;\r\n    const { language } = this.$route.params;\r\n    const { query } = this;\r\n    try {\r\n      const response = await SearchService.getSuggestions(language, query, this.searchOptions);\r\n      const scopeIsStillGlobal = !SearchScopeService.hasActiveScope(this.searchOptions);\r\n      const suggestionIsCurrent =\r\n        this.query === query && requestId === this.suggestionsRequestId && scopeIsStillGlobal;\r\n      return suggestionIsCurrent && response ? response.data : undefined;\r\n    } catch (e) {\r\n      return [];\r\n    } finally {\r\n      if (requestId === this.suggestionsRequestId) {\r\n        this.loadingSuggestions = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  resetSuggestions() {\r\n    this.suggestions = [];\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchInput.vue?vue&type=template&id=2f73b7d4&scoped=true&\"\nimport script from \"./SearchInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchInput.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchInput.vue?vue&type=style&index=0&id=2f73b7d4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2f73b7d4\",\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('button',{staticClass:\"nav-link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('span',{staticClass:\"flex align-items-center\"},[_vm._t(\"default\"),_vm._v(\" \"),_c('IconArrowDown',{staticClass:\"arrow\",class:{ 'upside-down': _vm.expanded }})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport IconArrowDown from '@/assets/icons/arrow-down.svg';\r\n\r\n@Component({\r\n  components: {\r\n    IconArrowDown\r\n  }\r\n})\r\nexport default class AccordionControl extends Vue {\r\n  @Prop({ required: true })\r\n  expanded?: boolean;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionControl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionControl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccordionControl.vue?vue&type=template&id=0d8e2f8c&scoped=true&\"\nimport script from \"./AccordionControl.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccordionControl.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AccordionControl.vue?vue&type=style&index=0&id=0d8e2f8c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0d8e2f8c\",\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('div',{staticClass:\"accordion-content\",class:{ collapsed: !_vm.expanded },style:({ maxHeight: (_vm.height + \"px\") })},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component\r\nexport default class AccordionContent extends Vue {\r\n  @Prop({ required: true })\r\n  expanded?: boolean;\r\n\r\n  @Prop({ required: false, default: 100 })\r\n  height?: number;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AccordionContent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccordionContent.vue?vue&type=template&id=78a753a8&scoped=true&\"\nimport script from \"./AccordionContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccordionContent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AccordionContent.vue?vue&type=style&index=0&id=78a753a8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"78a753a8\",\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Getter, Mutation, State } from 'vuex-class';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\nimport router from '@/router';\r\nimport IconBook from '@/assets/icons/book.svg';\r\nimport IconSearchSettings from '@/assets/icons/search-settings.svg';\r\nimport IconHistory from '@/assets/icons/history.svg';\r\nimport IconArrowSearchLeft from '@/assets/icons/arrow-search-left.svg';\r\nimport IconArrowSearchRight from '@/assets/icons/arrow-search-right.svg';\r\nimport IconList from '@/assets/icons/list.svg';\r\nimport IconReturn from '@/assets/icons/return.svg';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport SearchInput from '@/components/ui/SearchInput.vue';\r\nimport AccordionControl from '@/components/ui/AccordionControl.vue';\r\nimport AccordionContent from '@/components/ui/AccordionContent.vue';\r\nimport { Book, BookSection, Category } from '@/services/Navigation/types';\r\nimport SearchService, { SearchItem } from '@/services/Api/SearchService';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport SearchHistory from '@/components/SearchHistory.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: {\r\n    SearchHistory,\r\n    AccordionControl,\r\n    AccordionContent,\r\n    Checkbox,\r\n    SearchInput,\r\n    IconBook,\r\n    IconSearchSettings,\r\n    IconHistory,\r\n    IconArrowSearchLeft,\r\n    IconArrowSearchRight,\r\n    IconList,\r\n    IconReturn,\r\n    Overlay\r\n  }\r\n})\r\nexport default class Search extends Vue {\r\n  @Prop({ required: false, default: false })\r\n  mobileVisible!: boolean;\r\n\r\n  @Prop({ required: false, default: false })\r\n  mobileBookSearch!: boolean;\r\n\r\n  @Prop({ required: false, default: '' })\r\n  mobileBookName!: string;\r\n\r\n  showHelp: boolean = false;\r\n\r\n  showSearchHistoryOverlay: boolean = false;\r\n\r\n  hasSearchHistory: boolean = false;\r\n\r\n  searchQuery: string | null = null; // null means it is not initialised\r\n\r\n  searchInPoem: boolean | null = null; // null means it is not initialised\r\n\r\n  exact: boolean | null = null; // null means it is not initialised\r\n\r\n  considerDiacritics: boolean | null = null; // null means it is not initialised\r\n\r\n  equalizeWriting: boolean | null = null; // null means it is not initialised\r\n\r\n  mobileSheetDragStartY: number | null = null;\r\n\r\n  mobileSheetDragOffset: number = 0;\r\n\r\n  mobileSheetDragging: boolean = false;\r\n\r\n  mobileSheetPointerId: number | null = null;\r\n\r\n  mobilePanelTrigger: HTMLElement | null = null;\r\n\r\n  mobileSheetCloseTimer: number | null = null;\r\n\r\n  mobileSheetLayerVisible: boolean = false;\r\n\r\n  advancedSearchPanelVisible: boolean = false;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @State('results', { namespace: 'search' })\r\n  searchResults!: Array<SearchItem>;\r\n\r\n  @State('inBookSearch', { namespace: 'search' })\r\n  inBookSearch!: boolean;\r\n\r\n  @State('advancedSearch', { namespace: 'search' })\r\n  advancedSearch!: boolean;\r\n\r\n  @State('readMode', { namespace: 'reader' })\r\n  readMode!: boolean;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage!: string;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  currentBook?: Book;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentBookSection?: BookSection;\r\n\r\n  @Getter('checkedBooks', { namespace: 'navigation' })\r\n  checkedBooks!: Array<Book>;\r\n\r\n  @Getter('checkedCategories', { namespace: 'navigation' })\r\n  checkedCategories!: Array<Category>;\r\n\r\n  @Getter('selectedBooksCount', { namespace: 'navigation' })\r\n  selectedBooksCount!: number;\r\n\r\n  @Mutation('setReadMode', { namespace: 'reader' })\r\n  setReadMode!: Function;\r\n\r\n  @Mutation('setInBookSearch', { namespace: 'search' })\r\n  setInBookSearch!: Function;\r\n\r\n  @Mutation('setNeedUpdate', { namespace: 'search' })\r\n  setNeedUpdate!: Function;\r\n\r\n  @Mutation('setResults', { namespace: 'search' })\r\n  setResults!: Function;\r\n\r\n  @Mutation('setResultsCount', { namespace: 'search' })\r\n  setResultsCount!: Function;\r\n\r\n  @Mutation('setPriorityResults', { namespace: 'search' })\r\n  setPriorityResults!: Function;\r\n\r\n  @Mutation('setAdvancedSearch', { namespace: 'search' })\r\n  setAdvancedSearch!: Function;\r\n\r\n  @Mutation('setShowSearchResultsFlag', { namespace: 'navigation' })\r\n  setShowSearchResultsFlag!: Function;\r\n\r\n  mounted() {\r\n    this.actualizeSearchParams(); // initialize search params\r\n    this.actualizeShowAdvancedSearch(); // and actualize show-advanced-search flag\r\n    document.addEventListener('keydown', this.onDocumentKeydown);\r\n    this.syncMobileSheetDocumentState();\r\n    this.refreshSearchHistoryAvailability();\r\n  }\r\n\r\n  beforeDestroy() {\r\n    document.removeEventListener('keydown', this.onDocumentKeydown);\r\n    if (this.mobileSheetCloseTimer !== null) {\r\n      window.clearTimeout(this.mobileSheetCloseTimer);\r\n    }\r\n    document.documentElement.classList.remove('mobile-search-sheet-open', 'mobile-search-history-open');\r\n    this.$emit('mobile-overlay-change', false);\r\n  }\r\n\r\n  @Watch('$route')\r\n  onRouteChange(to: any, from?: any) {\r\n    this.actualizeSearchParams();\r\n    this.actualizeShowAdvancedSearch();\r\n    const languageChanged = Boolean(\r\n      from && to && to.params && from.params && to.params.language !== from.params.language\r\n    );\r\n    if (\r\n      languageChanged &&\r\n      to.name === 'search-results' &&\r\n      typeof to.query.query === 'string' &&\r\n      to.query.query.trim()\r\n    ) {\r\n      this.setResults([]);\r\n      this.setResultsCount(0);\r\n      this.setPriorityResults(null);\r\n      this.setNeedUpdate(true);\r\n    }\r\n  }\r\n\r\n  @Watch('searchQuery')\r\n  @Watch('searchInPoem')\r\n  @Watch('exact')\r\n  @Watch('considerDiacritics')\r\n  @Watch('equalizeWriting')\r\n  async onChangeParams(to: string | boolean, from: string | boolean | null) {\r\n    if (this.$route.name === 'search-results' && from !== null) {\r\n      await this.updateUrl();\r\n    }\r\n  }\r\n\r\n  @Watch('advancedSearchPanelVisible')\r\n  @Watch('showHelp')\r\n  onMobileSheetVisibilityChange() {\r\n    this.syncMobileSheetDocumentState();\r\n  }\r\n\r\n  @Watch('showSearchHistoryOverlay')\r\n  onSearchHistoryVisibilityChange(visible: boolean) {\r\n    document.documentElement.classList.toggle('mobile-search-history-open', this.mobileVisible && visible);\r\n    this.emitMobileOverlayState();\r\n  }\r\n\r\n  @Watch('mobileVisible')\r\n  onMobileVisibilityChange(visible: boolean) {\r\n    if (visible) {\r\n      this.refreshSearchHistoryAvailability();\r\n    } else {\r\n      this.closeSearchHistory();\r\n    }\r\n    this.syncMobileSheetDocumentState();\r\n  }\r\n\r\n  get isSearchResultPage() {\r\n    const { index } = this.$route.query;\r\n    return typeof index === 'string';\r\n  }\r\n\r\n  get currentSearchResultIndex() {\r\n    const { index } = this.$route.query;\r\n    if (typeof index === 'string') {\r\n      return parseInt(index, 10);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  get prevSearchResultUrl() {\r\n    if (this.currentSearchResultIndex === null) {\r\n      return '';\r\n    }\r\n    const index = this.currentSearchResultIndex - 1;\r\n    const searchItem = this.searchResults[index];\r\n    if (!searchItem) {\r\n      return '';\r\n    }\r\n    return UrlBuilderService.getSearchResultItemUrl(searchItem, index);\r\n  }\r\n\r\n  get nextSearchResultUrl() {\r\n    if (this.currentSearchResultIndex === null) {\r\n      return '';\r\n    }\r\n    const index = this.currentSearchResultIndex + 1;\r\n    const searchItem = this.searchResults[index];\r\n    if (!searchItem) {\r\n      return '';\r\n    }\r\n    return UrlBuilderService.getSearchResultItemUrl(searchItem, index);\r\n  }\r\n\r\n  get searchListUrl() {\r\n    const query = new URLSearchParams();\r\n    const searchLanguage =\r\n      typeof this.$route.query.searchLanguage === 'string'\r\n        ? this.$route.query.searchLanguage\r\n        : this.$route.params.language;\r\n    Object.entries(this.$route.query).forEach(([name, value]) => {\r\n      if (\r\n        !['index', 'highlight', 'reading', 'scope', 'searchLanguage'].includes(name) &&\r\n        typeof value === 'string'\r\n      ) {\r\n        query.set(name, value);\r\n      }\r\n    });\r\n    return `/${searchLanguage}/search?${query.toString()}`;\r\n  }\r\n\r\n  get editUrl() {\r\n    if (!(this.currentBook && this.currentBookSection)) {\r\n      return '';\r\n    }\r\n    return this.currentBook.edit_link.replace('{index}', this.currentBookSection.index.toString());\r\n  }\r\n\r\n  get mobileSheetStyle() {\r\n    return this.mobileSheetDragOffset\r\n      ? { transform: `translate(-50%, ${this.mobileSheetDragOffset}px)` }\r\n      : undefined;\r\n  }\r\n\r\n  get advancedSearchPanelExpanded() {\r\n    return this.mobileVisible ? this.advancedSearchPanelVisible : this.advancedSearch;\r\n  }\r\n\r\n  get searchBookSlug() {\r\n    if (this.mobileVisible && !this.mobileBookSearch) {\r\n      return '';\r\n    }\r\n    return this.currentBook ? this.currentBook.slug : (this.$route.query.slug as string) || '';\r\n  }\r\n\r\n  get searchBookId() {\r\n    if (this.mobileVisible && !this.mobileBookSearch) {\r\n      return undefined;\r\n    }\r\n    if (this.currentBook && this.currentBook.slug === this.searchBookSlug) {\r\n      return this.currentBook.id;\r\n    }\r\n    const routeBookId = this.$route.query.bookId;\r\n    if (typeof routeBookId !== 'string') {\r\n      return undefined;\r\n    }\r\n    const parsedBookId = parseInt(routeBookId, 10);\r\n    return parsedBookId > 0 ? parsedBookId : undefined;\r\n  }\r\n\r\n  actualizeSearchParams() {\r\n    this.searchQuery = (this.$route.query.query || '') as string;\r\n    this.searchInPoem = this.$route.query.searchInPoem === '1';\r\n    this.exact = this.$route.query.exact === '1';\r\n    this.considerDiacritics = this.$route.query.considerDiacritics === '1';\r\n    this.equalizeWriting = this.$route.query.equalizeWriting === '1';\r\n    if (this.$route.name === 'search-results') {\r\n      const compactViewport = typeof window !== 'undefined' && window.innerWidth <= 1024;\r\n      const requestedMobileBookSearch = this.$route.query.bookSearch === '1';\r\n      const hasBookSlug = typeof this.$route.query.slug === 'string';\r\n      const mobileBookSearchRoute = compactViewport && requestedMobileBookSearch && hasBookSlug;\r\n      this.setInBookSearch(\r\n        this.mobileBookSearch ||\r\n          mobileBookSearchRoute ||\r\n          (!compactViewport && this.$route.query.inBookOnly === '1')\r\n      );\r\n    }\r\n  }\r\n\r\n  async onSearchSubmit(searchQuery: string) {\r\n    this.searchQuery = searchQuery;\r\n    if (searchQuery.trim()) {\r\n      this.hasSearchHistory = true;\r\n    }\r\n    await this.updateUrl();\r\n  }\r\n\r\n  async refreshSearchHistoryAvailability() {\r\n    if (!this.mobileVisible) {\r\n      return;\r\n    }\r\n    try {\r\n      const history = await SearchService.getSearchHistory();\r\n      this.hasSearchHistory = Array.isArray(history) && history.length > 0;\r\n    } catch (e) {\r\n      // Keep the action available so an API error can be shown in the history view.\r\n      this.hasSearchHistory = true;\r\n    }\r\n  }\r\n\r\n  openSearchHistory() {\r\n    document.documentElement.classList.add('mobile-search-history-open');\r\n    this.showSearchHistoryOverlay = true;\r\n    this.emitMobileOverlayState();\r\n  }\r\n\r\n  closeSearchHistory() {\r\n    this.showSearchHistoryOverlay = false;\r\n    document.documentElement.classList.remove('mobile-search-history-open');\r\n    this.emitMobileOverlayState();\r\n  }\r\n\r\n  onSearchHistoryState(hasItems: boolean) {\r\n    this.hasSearchHistory = hasItems;\r\n    if (!hasItems) {\r\n      this.closeSearchHistory();\r\n    }\r\n  }\r\n\r\n  async onSearchClear() {\r\n    this.searchQuery = '';\r\n    this.setResults([]);\r\n    this.setResultsCount(0);\r\n    this.setPriorityResults(null);\r\n    this.setNeedUpdate(false);\r\n    this.setShowSearchResultsFlag(false);\r\n    if (this.$route.name === 'search-results' && this.$route.query.query) {\r\n      const language = this.navLanguage || this.$route.params.language || LANGUAGE_CODE_DEFAULT;\r\n      if (this.mobileBookSearch && this.searchBookSlug) {\r\n        const query = new URLSearchParams({\r\n          slug: this.searchBookSlug,\r\n          inBookOnly: '1',\r\n          bookSearch: '1'\r\n        });\r\n        if (this.searchBookId) {\r\n          query.set('bookId', this.searchBookId.toString());\r\n        }\r\n        if (typeof this.$route.query.returnTo === 'string') {\r\n          query.set('returnTo', this.$route.query.returnTo);\r\n        }\r\n        await this.$router.replace(`/${language}/search?${query.toString()}`);\r\n      } else {\r\n        await this.$router.replace(`/${language}/search`);\r\n      }\r\n    }\r\n  }\r\n\r\n  async updateUrl() {\r\n    const language = this.navLanguage || this.$route.params.language || LANGUAGE_CODE_DEFAULT; // language priority: left sidebar, url\r\n    const query = this.searchQuery;\r\n    if (!query) {\r\n      return;\r\n    }\r\n    const options = {\r\n      searchInPoem: !!this.searchInPoem,\r\n      exact: !!this.exact,\r\n      considerDiacritics: !!this.considerDiacritics,\r\n      equalizeWriting: !!this.equalizeWriting\r\n    };\r\n    const newPath = UrlBuilderService.getSearchQueryUrl({\r\n      language,\r\n      query,\r\n      bookSlug: this.searchBookSlug || undefined,\r\n      bookId: this.searchBookId,\r\n      inBookOnly: this.inBookSearch,\r\n      bookSearch: this.mobileBookSearch,\r\n      returnTo:\r\n        this.mobileBookSearch && typeof this.$route.query.returnTo === 'string'\r\n          ? this.$route.query.returnTo\r\n          : undefined,\r\n      ...options\r\n    });\r\n    if (this.$route.fullPath !== newPath) {\r\n      try {\r\n        await this.$router.push(newPath);\r\n      } catch (error) {\r\n        if (!(error && (error as { name?: string }).name === 'NavigationDuplicated')) {\r\n          throw error;\r\n        }\r\n      }\r\n    }\r\n    this.setNeedUpdate(true); // see watcher in SearchResults.vue\r\n  }\r\n\r\n  actualizeShowAdvancedSearch() {\r\n    this.setAdvancedSearch(\r\n      this.exact ||\r\n        this.considerDiacritics ||\r\n        this.equalizeWriting ||\r\n        this.searchInPoem ||\r\n        this.selectedBooksCount > 0 ||\r\n        (this.checkedCategories && this.checkedCategories.length > 0)\r\n    );\r\n  }\r\n\r\n  async onInBookSearchChange() {\r\n    this.setInBookSearch(!this.inBookSearch);\r\n    if (this.inBookSearch) {\r\n      this.searchInPoem = false;\r\n      this.exact = false;\r\n      this.considerDiacritics = false;\r\n      this.equalizeWriting = false;\r\n      this.setAdvancedSearch(false);\r\n    }\r\n    if (this.searchQuery) {\r\n      await this.updateUrl();\r\n    }\r\n  }\r\n\r\n  resetSearchSettings() {\r\n    this.searchInPoem = false;\r\n    this.exact = false;\r\n    this.considerDiacritics = false;\r\n    this.equalizeWriting = false;\r\n    this.setInBookSearch(false);\r\n    this.setAdvancedSearch(false);\r\n    this.advancedSearchPanelVisible = false;\r\n    this.showHelp = false;\r\n    this.$store.commit('navigation/uncheckAll');\r\n  }\r\n\r\n  toggleAdvancedSearch() {\r\n    this.resetMobileSheetDrag();\r\n    if (this.mobileVisible) {\r\n      if (!this.advancedSearchPanelVisible) {\r\n        this.rememberMobilePanelTrigger();\r\n        this.setAdvancedSearch(true);\r\n      }\r\n      this.advancedSearchPanelVisible = !this.advancedSearchPanelVisible;\r\n      this.showHelp = false;\r\n      this.focusActiveMobilePanel();\r\n      return;\r\n    }\r\n    if (!this.advancedSearch) {\r\n      this.rememberMobilePanelTrigger();\r\n    }\r\n    this.setAdvancedSearch(!this.advancedSearch);\r\n    this.showHelp = false;\r\n    this.focusActiveMobilePanel();\r\n  }\r\n\r\n  toggleHelp() {\r\n    this.resetMobileSheetDrag();\r\n    if (!this.showHelp) {\r\n      this.rememberMobilePanelTrigger();\r\n    }\r\n    this.showHelp = !this.showHelp;\r\n    this.focusActiveMobilePanel();\r\n  }\r\n\r\n  openSearchAreaPicker() {\r\n    this.resetMobileSheetDrag();\r\n    this.setAdvancedSearch(true);\r\n    this.advancedSearchPanelVisible = false;\r\n    this.showHelp = false;\r\n    this.$emit('select-search-area');\r\n  }\r\n\r\n  closeMobilePanels() {\r\n    this.resetMobileSheetDrag();\r\n    this.advancedSearchPanelVisible = false;\r\n    this.showHelp = false;\r\n    this.$nextTick(() => {\r\n      if (this.mobilePanelTrigger && document.contains(this.mobilePanelTrigger)) {\r\n        this.mobilePanelTrigger.focus();\r\n      }\r\n      this.mobilePanelTrigger = null;\r\n    });\r\n  }\r\n\r\n  onDocumentKeydown(event: KeyboardEvent) {\r\n    if (!this.mobileVisible || (!this.advancedSearchPanelExpanded && !this.showHelp)) {\r\n      return;\r\n    }\r\n    if (event.key === 'Escape') {\r\n      this.closeMobilePanels();\r\n      return;\r\n    }\r\n    if (event.key === 'Tab') {\r\n      this.trapMobilePanelFocus(event);\r\n    }\r\n  }\r\n\r\n  rememberMobilePanelTrigger() {\r\n    if (!this.mobileVisible || this.mobilePanelTrigger) {\r\n      return;\r\n    }\r\n    const activeElement = document.activeElement;\r\n    if (activeElement instanceof HTMLElement && activeElement !== document.body) {\r\n      this.mobilePanelTrigger = activeElement;\r\n    }\r\n  }\r\n\r\n  focusActiveMobilePanel() {\r\n    if (!this.mobileVisible) {\r\n      return;\r\n    }\r\n    this.$nextTick(() => {\r\n      const panel = this.getActiveMobilePanel();\r\n      if (panel) {\r\n        panel.focus();\r\n      }\r\n    });\r\n  }\r\n\r\n  getActiveMobilePanel(): HTMLElement | null {\r\n    const ref = this.showHelp ? this.$refs.searchHelpPanel : this.$refs.searchOptionsPanel;\r\n    if (!ref) {\r\n      return null;\r\n    }\r\n    return ((ref as Vue).$el || ref) as HTMLElement;\r\n  }\r\n\r\n  trapMobilePanelFocus(event: KeyboardEvent) {\r\n    const panel = this.getActiveMobilePanel();\r\n    if (!panel) {\r\n      return;\r\n    }\r\n    const focusable = Array.from(\r\n      panel.querySelectorAll<HTMLElement>(\r\n        'button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n      )\r\n    ).filter(element => element.offsetParent !== null);\r\n    if (!focusable.length) {\r\n      event.preventDefault();\r\n      panel.focus();\r\n      return;\r\n    }\r\n    const first = focusable[0];\r\n    const last = focusable[focusable.length - 1];\r\n    if (event.shiftKey && (document.activeElement === first || document.activeElement === panel)) {\r\n      event.preventDefault();\r\n      last.focus();\r\n    } else if (!event.shiftKey && document.activeElement === last) {\r\n      event.preventDefault();\r\n      first.focus();\r\n    }\r\n  }\r\n\r\n  startMobileSheetDrag(event: PointerEvent) {\r\n    this.mobileSheetPointerId = event.pointerId;\r\n    this.mobileSheetDragStartY = event.clientY;\r\n    this.mobileSheetDragging = true;\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (dragRegion.setPointerCapture) {\r\n      dragRegion.setPointerCapture(event.pointerId);\r\n    }\r\n  }\r\n\r\n  moveMobileSheetDrag(event: PointerEvent) {\r\n    if (this.mobileSheetDragStartY === null || this.mobileSheetPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    this.mobileSheetDragOffset = Math.max(0, event.clientY - this.mobileSheetDragStartY);\r\n    if (this.mobileSheetDragOffset > 0 && event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  endMobileSheetDrag(event: PointerEvent) {\r\n    if (this.mobileSheetPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (\r\n      dragRegion.releasePointerCapture &&\r\n      dragRegion.hasPointerCapture &&\r\n      dragRegion.hasPointerCapture(event.pointerId)\r\n    ) {\r\n      dragRegion.releasePointerCapture(event.pointerId);\r\n    }\r\n    if (this.mobileSheetDragOffset >= 64) {\r\n      this.closeMobilePanels();\r\n      return;\r\n    }\r\n    this.resetMobileSheetDrag();\r\n  }\r\n\r\n  cancelMobileSheetDrag() {\r\n    this.resetMobileSheetDrag();\r\n  }\r\n\r\n  resetMobileSheetDrag() {\r\n    this.mobileSheetDragStartY = null;\r\n    this.mobileSheetDragOffset = 0;\r\n    this.mobileSheetDragging = false;\r\n    this.mobileSheetPointerId = null;\r\n  }\r\n\r\n  syncMobileSheetDocumentState() {\r\n    if (!this.mobileVisible) {\r\n      this.mobileSheetLayerVisible = false;\r\n      document.documentElement.classList.remove('mobile-search-sheet-open');\r\n      this.emitMobileOverlayState();\r\n      return;\r\n    }\r\n    if (this.mobileSheetCloseTimer !== null) {\r\n      window.clearTimeout(this.mobileSheetCloseTimer);\r\n      this.mobileSheetCloseTimer = null;\r\n    }\r\n    if (this.advancedSearchPanelExpanded || this.showHelp) {\r\n      this.mobileSheetLayerVisible = true;\r\n      document.documentElement.classList.add('mobile-search-sheet-open');\r\n      this.emitMobileOverlayState();\r\n      return;\r\n    }\r\n    this.mobileSheetCloseTimer = window.setTimeout(() => {\r\n      this.mobileSheetLayerVisible = false;\r\n      document.documentElement.classList.remove('mobile-search-sheet-open');\r\n      this.mobileSheetCloseTimer = null;\r\n      this.emitMobileOverlayState();\r\n    }, 240);\r\n  }\r\n\r\n  emitMobileOverlayState() {\r\n    this.$emit(\r\n      'mobile-overlay-change',\r\n      this.mobileVisible && (this.mobileSheetLayerVisible || this.showSearchHistoryOverlay)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Converts object to url params string\r\n   * @see https://stackoverflow.com/a/23639793/2393499\r\n   */\r\n  static objectToUrlParams(object: { [key: string]: string | (string | null)[] }) {\r\n    return Object.entries(object)\r\n      .map(([key, val]) => (val ? `${key}=${val}` : key))\r\n      .join('&');\r\n  }\r\n\r\n  goToSearchList() {\r\n    router.push(this.searchListUrl);\r\n    this.setShowSearchResultsFlag(true);\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=488f0a76&scoped=true&\"\nimport script from \"./Search.vue?vue&type=script&lang=ts&\"\nexport * from \"./Search.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Search.vue?vue&type=style&index=0&id=488f0a76&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"488f0a76\",\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('div',{staticClass:\"new-tab\"},[_c('h2',[_vm._v(_vm._s(_vm.getTranslation('newTab')))]),_c('div',{staticClass:\"text\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('useSearch'))+\" \"),_c('span',{staticClass:\"gray-text-color\"},[_vm._v(\"(\"+_vm._s(_vm.getTranslation('above'))+\")\")]),_c('br'),_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('orOpenBookInCatalog'))+\"\\n    \"),_c('span',{staticClass:\"gray-text-color\"},[_vm._v(\"(\"+_vm._s(_vm.getTranslation('onLeft'))+\")\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component\r\nexport default class NewTab extends Vue {\r\n  getTranslation = getTranslation;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewTab.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewTab.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewTab.vue?vue&type=template&id=48961ade&scoped=true&\"\nimport script from \"./NewTab.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewTab.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewTab.vue?vue&type=style&index=0&id=48961ade&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"48961ade\",\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.$store.state.reader.readMode)?_c('div',{staticClass:\"text-filters-container\",class:{ collapsed: !_vm.$store.state.reader.isTextTypesFiltersVisible }},[_c('button',{staticClass:\"text-filters-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":_vm.close}}),_c('div',{ref:\"dialog\",staticClass:\"text-filters\",class:{ dragging: _vm.dragging },style:({ transform: _vm.dragOffset ? (\"translate(-50%, \" + _vm.dragOffset + \"px)\") : undefined }),attrs:{\"role\":\"dialog\",\"aria-modal\":\"true\",\"aria-label\":_vm.getTranslation('textSettings'),\"tabindex\":_vm.$store.state.reader.isTextTypesFiltersVisible ? -1 : undefined}},[_c('header',{staticClass:\"text-filters-header\",on:{\"pointerdown\":_vm.startDrag,\"pointermove\":_vm.moveDrag,\"pointerup\":_vm.endDrag,\"pointercancel\":_vm.cancelDrag}},[_c('span',{staticClass:\"text-filters-handle\"}),_c('h2',[_vm._v(_vm._s(_vm.getTranslation('show')))])]),_c('div',{staticClass:\"text-filters-inner\"},[_c('div',{staticClass:\"text-filters-label\"},[_vm._v(_vm._s(_vm.getTranslation('show'))+\":\")]),_vm._l((_vm.textTypes),function(textType){return _c('Checkbox',{key:textType.code,staticClass:\"text-filters-checkbox\",attrs:{\"checked\":!_vm.$store.state.reader.hideTextTypes ||\n            (_vm.$store.state.reader.hideTextTypes &&\n              !_vm.$store.state.reader.hideTextTypes.includes(textType.code))},on:{\"change\":function($event){return _vm.switchTextTypeFilter(textType.code)}}},[_vm._v(\"\\n        \"+_vm._s(textType.name)+\"\\n      \")])})],2)])]):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { Watch } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { Checkbox }\r\n})\r\nexport default class TextTypesFilter extends Vue {\r\n  dragStartY: number | null = null;\r\n\r\n  dragOffset: number = 0;\r\n\r\n  dragging: boolean = false;\r\n\r\n  dragPointerId: number | null = null;\r\n\r\n  dialogTrigger: HTMLElement | null = null;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  @Mutation('switchTextTypeFilter', { namespace: 'reader' })\r\n  switchTextTypeFilter!: Function;\r\n\r\n  @Mutation('setTextTypesFilterVisible', { namespace: 'reader' })\r\n  setTextTypesFilterVisible!: Function;\r\n\r\n  textTypes = this.getTextTypes();\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  mounted() {\r\n    document.addEventListener('keydown', this.onDocumentKeydown);\r\n  }\r\n\r\n  beforeDestroy() {\r\n    document.removeEventListener('keydown', this.onDocumentKeydown);\r\n  }\r\n\r\n  onDocumentKeydown(event: KeyboardEvent) {\r\n    if (!this.visible) {\r\n      return;\r\n    }\r\n    if (event.key === 'Escape') {\r\n      this.close();\r\n      return;\r\n    }\r\n    if (event.key === 'Tab') {\r\n      this.trapFocus(event);\r\n    }\r\n  }\r\n\r\n  get visible() {\r\n    return this.$store.state.reader.isTextTypesFiltersVisible;\r\n  }\r\n\r\n  @Watch('visible')\r\n  onVisibilityChange(visible: boolean) {\r\n    if (visible) {\r\n      const activeElement = document.activeElement;\r\n      this.dialogTrigger =\r\n        activeElement instanceof HTMLElement && activeElement !== document.body ? activeElement : null;\r\n      this.$nextTick(() => {\r\n        const dialog = this.$refs.dialog as HTMLElement;\r\n        if (dialog) {\r\n          window.requestAnimationFrame(() => dialog.focus());\r\n        }\r\n      });\r\n      return;\r\n    }\r\n    this.$nextTick(() => {\r\n      if (this.dialogTrigger && document.contains(this.dialogTrigger)) {\r\n        this.dialogTrigger.focus();\r\n      }\r\n      this.dialogTrigger = null;\r\n    });\r\n  }\r\n\r\n  trapFocus(event: KeyboardEvent) {\r\n    const dialog = this.$refs.dialog as HTMLElement;\r\n    if (!dialog) {\r\n      return;\r\n    }\r\n    const focusable = Array.from(\r\n      dialog.querySelectorAll<HTMLElement>(\r\n        'button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n      )\r\n    ).filter(element => element.offsetParent !== null);\r\n    if (!focusable.length) {\r\n      event.preventDefault();\r\n      dialog.focus();\r\n      return;\r\n    }\r\n    const first = focusable[0];\r\n    const last = focusable[focusable.length - 1];\r\n    if (event.shiftKey && (document.activeElement === first || document.activeElement === dialog)) {\r\n      event.preventDefault();\r\n      last.focus();\r\n    } else if (!event.shiftKey && document.activeElement === last) {\r\n      event.preventDefault();\r\n      first.focus();\r\n    }\r\n  }\r\n\r\n  getTextTypes() {\r\n    return [\r\n      { code: 'sanskrit', name: getTranslation('sanskrit') },\r\n      { code: 'diacritic', name: getTranslation('diacritic') },\r\n      { code: 'word-by-word', name: getTranslation('wordByWordTranslation') },\r\n      { code: 'translate', name: getTranslation('translation') },\r\n      { code: 'comment', name: getTranslation('comment') }\r\n    ];\r\n  }\r\n\r\n  close() {\r\n    this.dragStartY = null;\r\n    this.dragOffset = 0;\r\n    this.dragging = false;\r\n    this.dragPointerId = null;\r\n    this.setTextTypesFilterVisible(false);\r\n  }\r\n\r\n  startDrag(event: PointerEvent) {\r\n    const target = event.target as HTMLElement;\r\n    if (target.closest('button')) {\r\n      return;\r\n    }\r\n    this.dragPointerId = event.pointerId;\r\n    this.dragStartY = event.clientY;\r\n    this.dragging = true;\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (dragRegion.setPointerCapture) {\r\n      dragRegion.setPointerCapture(event.pointerId);\r\n    }\r\n  }\r\n\r\n  moveDrag(event: PointerEvent) {\r\n    if (this.dragStartY === null || this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    this.dragOffset = Math.max(0, event.clientY - this.dragStartY);\r\n    if (this.dragOffset > 0 && event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  endDrag(event: PointerEvent) {\r\n    if (this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (\r\n      dragRegion.releasePointerCapture &&\r\n      dragRegion.hasPointerCapture &&\r\n      dragRegion.hasPointerCapture(event.pointerId)\r\n    ) {\r\n      dragRegion.releasePointerCapture(event.pointerId);\r\n    }\r\n    if (this.dragOffset >= 64) {\r\n      this.close();\r\n      return;\r\n    }\r\n    this.dragStartY = null;\r\n    this.dragOffset = 0;\r\n    this.dragging = false;\r\n    this.dragPointerId = null;\r\n  }\r\n\r\n  cancelDrag() {\r\n    this.dragStartY = null;\r\n    this.dragOffset = 0;\r\n    this.dragging = false;\r\n    this.dragPointerId = null;\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  onChangeInterfaceLang() {\r\n    this.textTypes = this.getTextTypes();\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TextTypesFilter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./TextTypesFilter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextTypesFilter.vue?vue&type=template&id=726063da&scoped=true&\"\nimport script from \"./TextTypesFilter.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextTypesFilter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TextTypesFilter.vue?vue&type=style&index=0&id=726063da&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"726063da\",\n  null\n  \n)\n\nexport default component.exports","class StorageService {\r\n  storageName: string;\r\n\r\n  constructor() {\r\n    this.storageName = 'vedarama';\r\n  }\r\n\r\n  save(name: string, value: object | string | number) {\r\n    const storage = this.read();\r\n    storage[name] = value;\r\n    localStorage.setItem(this.storageName, JSON.stringify(storage));\r\n  }\r\n\r\n  get(name: string) {\r\n    return this.read()[name];\r\n  }\r\n\r\n  private read() {\r\n    const data = localStorage.getItem(this.storageName) || '{}';\r\n    return JSON.parse(data);\r\n  }\r\n}\r\n\r\nexport default new StorageService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"nav-catalog-head\"},[_c('h2',[_vm._v(_vm._s(_vm.onLanguage))]),(!_vm.showSearchResults && !_vm.navLoading)?_c('NavRubrics',{attrs:{\"categories\":_vm.lists,\"current\":_vm.listType},on:{\"change\":_vm.changeListType}}):_vm._e()],1),(_vm.navLoading)?_c('div',{staticClass:\"nav-catalog-loader\"},[_c('Loader')],1):(_vm.showBlockingCatalogError)?_c('div',{staticClass:\"nav-catalog-error red-color\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('errorOccurred'))),_c('br'),_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('tryToRefreshPage'))),_c('br')]):_c('div',{staticClass:\"nav-catalog-content\"},[(!_vm.showSearchResults)?_c('div',{staticClass:\"nav-catalog-search\"},[_c('div',{staticClass:\"nav-catalog-search-row\"},[_c('SearchInput',{attrs:{\"placeholder\":_vm.getTranslation('catalogSearch'),\"value\":_vm.filterQuery},on:{\"submit\":_vm.onSearch,\"clear\":function($event){return _vm.onSearch('')}}}),(_vm.mobileMode === 'library')?_c('button',{staticClass:\"mobile-collapse-all nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('collapseAllBranches'),\"title\":_vm.getTranslation('collapseAllBranches')},on:{\"click\":function($event){return _vm.collapseAll()}}},[_c('CollapseListIcon'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('collapse')))])],1):_vm._e()],1)]):_vm._e(),(_vm.showSearchResults)?_c('div',{staticClass:\"nav-return-to-catalog\"},[_c('button',{staticClass:\"nav-link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.returnToCatalog()}}},[_c('ReturnIcon'),_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation(_vm.advancedSearch ? 'selectSearchAreaInCatalog' : 'showBooksCatalog'))+\"\\n      \")],1)]):_vm._e(),_c('div',{staticClass:\"nav-catalog-content-inner\",class:{ light: _vm.showSearchResults }},[(_vm.showSearchResults)?_c('div',{staticClass:\"nav-search-info\"},[_c('div',[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('found'))+\": \\n          \"),(_vm.searchLoading || _vm.navLoading)?_c('div',{staticClass:\"nav-search-loader\"},[_c('Loader',{attrs:{\"active\":true}})],1):_c('b',[_vm._v(_vm._s(_vm.searchResultsCount))])]),_c('div',[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('foundBooks'))+\":\\n          \"),_c('b',[_vm._v(_vm._s(_vm.data.foundBooks ? Object.keys(_vm.data.foundBooks).length : 0))])])]):_vm._e(),(_vm.showCheckboxes)?_c('div',{staticClass:\"nav-catalog-check-control-buttons\"},[_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.checkAll()}}},[_vm._v(_vm._s(_vm.getTranslation('selectAll')))]),_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.uncheckAll()}}},[_vm._v(_vm._s(_vm.getTranslation('reset')))])]):_vm._e(),_c('div',{ref:\"tree\",staticClass:\"nav-catalog-tree\"},[(_vm.data)?_c('div',{staticClass:\"nav-catalog-tree-inner\"},[(_vm.showSearchResults)?_c('div',_vm._l((_vm.data.foundBooks),function(book){return _c('div',{key:book.id},[_c('NavBook',{attrs:{\"book\":book,\"showCheckboxes\":_vm.showCheckboxes,\"showEntriesCount\":_vm.showEntriesCount}})],1)}),0):_c('div',[(_vm.listType === 'categories')?[(_vm.filterQuery)?[_vm._l((_vm.filteredCategories),function(item){return _c('NavCategory',{key:item.id,attrs:{\"category\":item,\"showCheckboxes\":_vm.showCheckboxes}})}),_vm._l((_vm.filteredBooks),function(item){return _c('NavBook',{key:item.id,attrs:{\"book\":item,\"showCheckboxes\":_vm.showCheckboxes}})})]:_vm._l((_vm.data.categories),function(item){return _c('div',{key:item.id},[(item.depth === 0)?_c('NavCategory',{attrs:{\"category\":item,\"showCheckboxes\":_vm.showCheckboxes}}):_vm._e()],1)})]:(_vm.listType === 'authors')?[(_vm.filterQuery)?_vm._l((_vm.filteredAuthors),function(item){return _c('NavAuthor',{key:item.id,attrs:{\"author\":item,\"showCheckboxes\":_vm.showCheckboxes}})}):_vm._l((_vm.data.authorsAlphabet),function(letter){return _c('NavLetter',{key:letter.id,attrs:{\"letter\":letter,\"listType\":_vm.listType,\"showCheckboxes\":_vm.showCheckboxes}})})]:(_vm.listType === 'books')?[(_vm.filterQuery)?_vm._l((_vm.filteredBooks),function(item){return _c('NavBook',{key:item.id,attrs:{\"book\":item,\"showCheckboxes\":_vm.showCheckboxes}})}):_vm._l((_vm.data.booksAlphabet),function(item){return _c('NavLetter',{key:item.id,attrs:{\"letter\":item,\"listType\":_vm.listType,\"showCheckboxes\":_vm.showCheckboxes}})})]:_vm._e()],2)]):_vm._e()])])]),_c('div',{staticClass:\"nav-bottom-bar\"},[_c('button',{staticClass:\"nav-link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.collapseAll()}}},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('collapseAllBranches'))+\"\\n    \")])])])}\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:\"categories\"},_vm._l((_vm.categories),function(name,code){return _c('button',{key:code,staticClass:\"category\",class:{ active: code === _vm.current },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('change', code)}}},[_vm._v(\"\\n    \"+_vm._s(name)+\"\\n  \")])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class NavRubrics extends Vue {\r\n  @Prop({ required: true })\r\n  categories!: { [key: string]: string };\r\n\r\n  @Prop({ required: true })\r\n  current!: string;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavRubrics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavRubrics.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavRubrics.vue?vue&type=template&id=360c1e06&scoped=true&\"\nimport script from \"./NavRubrics.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavRubrics.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavRubrics.vue?vue&type=style&index=0&id=360c1e06&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"360c1e06\",\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('div',[_c('NavItemFolder',{attrs:{\"text\":_vm.category.name,\"highlight\":_vm.category.highlight,\"offset\":_vm.offset,\"expanded\":_vm.category.expanded,\"primary\":true,\"searchMatch\":_vm.category.searchMatch,\"showCheckbox\":_vm.showCheckboxes,\"checkboxChecked\":_vm.category.checked,\"checkboxPartiallyChecked\":_vm.category.partiallyChecked,\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.toggleExpand()},\"check\":function($event){return _vm.toggleCheck()}}}),(_vm.children && _vm.children.length > 0 && _vm.category.expanded && !_vm.loading)?_c('div',_vm._l((_vm.children),function(child){return _c('NavCategory',{key:child.id,attrs:{\"category\":child,\"level\":_vm.level + 1,\"showCheckboxes\":_vm.showCheckboxes}})}),1):_vm._e(),(_vm.books.length > 0 && _vm.category.expanded && !_vm.loading)?_c('div',_vm._l((_vm.books),function(book){return _c('NavBook',{key:book.id,attrs:{\"book\":book,\"level\":_vm.level + 1,\"category\":_vm.category,\"showCheckboxes\":_vm.showCheckboxes}})}),1):_vm._e()],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:\"nav-item-link\",class:{\n    highlight: _vm.highlight,\n    primary: _vm.primary,\n    searchMatch: _vm.searchMatch,\n    'size-tablet': _vm.catalogListScale === _vm.LIST_SCALE_TABLET,\n    'size-auto': _vm.catalogListScale === _vm.LIST_SCALE_AUTO\n  },style:({ paddingLeft: (_vm.offset + \"px\") })},[(_vm.showEntriesCount)?_c('NavItemEntriesCount',{attrs:{\"count\":_vm.entriesCount}}):_vm._e(),_c('NavItemIcon',{attrs:{\"icon\":\"dot\"}}),_c('router-link',{staticClass:\"nav-item-link-text\",attrs:{\"to\":_vm.to},nativeOn:{\"click\":function($event){return _vm.onNavigate($event)}}},[_c('NavItemText',{attrs:{\"text\":_vm.text}})],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:\"icon\",class:(\"icon-\" + _vm.icon)},[(_vm.icon === 'plus')?_c('PlusIcon'):_vm._e(),(_vm.icon === 'minus')?_c('MinusIcon'):_vm._e(),(_vm.icon === 'book')?_c('NavBookIcon',{staticClass:\"book-icon\"}):_vm._e(),(_vm.icon === 'dot')?_c('div',{staticClass:\"dot\"},[_vm._v(\"·\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"18\",\"height\":\"18\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 9h16\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"13\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M2.5 15.453h10V3.5m-10 11.953V3.5m0 11.953c-.932 0-2-.48-2-1.444V1.985m2 1.515h10m-10 0c-1 0-2-.433-2-1.515m12 1.515v-3h-10c-1 0-2 .567-2 1.485\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport PlusIcon from '@/assets/icons/plus.svg';\r\nimport MinusIcon from '@/assets/icons/minus.svg';\r\nimport NavBookIcon from '@/assets/icons/nav-book.svg';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { MinusIcon, PlusIcon, NavBookIcon }\r\n})\r\nexport default class NavItemIcon extends Vue {\r\n  @Prop({\r\n    required: true,\r\n    validator: (value: string) => ['plus', 'minus', 'dot', 'book'].indexOf(value) !== -1\r\n  })\r\n  icon!: string;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavItemIcon.vue?vue&type=template&id=14d0350d&scoped=true&\"\nimport script from \"./NavItemIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavItemIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavItemIcon.vue?vue&type=style&index=0&id=14d0350d&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"14d0350d\",\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('div',{staticClass:\"nav-item-text\",domProps:{\"innerHTML\":_vm._s(_vm.textFormatted)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default class StringService {\r\n  /**\r\n   * Capitalize first letter of a string\r\n   * @param str\r\n   * @see https://stackoverflow.com/a/3291856\r\n   */\r\n  static capitalize(str: string) {\r\n    return str.charAt(0).toUpperCase() + str.slice(1);\r\n  }\r\n\r\n  static replaceAll(string: string, search: string, replace: string) {\r\n    return string.split(search).join(replace);\r\n  }\r\n\r\n  /**\r\n   * https://stackoverflow.com/a/1714899/2393499\r\n   * @param obj\r\n   */\r\n  static objectToQueryString(obj: { [key: string]: any }) {\r\n    const str = [];\r\n    for (const key in obj)\r\n      if (obj.hasOwnProperty(key)) {\r\n        str.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key].toString()));\r\n      }\r\n    return str.join('&');\r\n  }\r\n}\r\n","\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { State } from 'vuex-class';\r\nimport StringService from '@/services/StringService';\r\n\r\n@Component\r\nexport default class NavItemText extends Vue {\r\n  @Prop({ required: true })\r\n  text!: string;\r\n\r\n  @State('filterQuery', { namespace: 'navigation' })\r\n  filterQuery!: string;\r\n\r\n  get textFormatted() {\r\n    if (this.filterQuery) {\r\n      let re = this.filterQuery;\r\n      // russian diacritic\r\n      re = StringService.replaceAll(re, 'а', '[аā]');\r\n      re = StringService.replaceAll(re, 'р', '[р]');\r\n      re = StringService.replaceAll(re, 'у', '[yӯ]');\r\n      re = StringService.replaceAll(re, 'и', '[иӣ]');\r\n      re = StringService.replaceAll(re, 'д', '[д]');\r\n      re = StringService.replaceAll(re, 'т', '[т]');\r\n      re = StringService.replaceAll(re, 'н', '[н]');\r\n      re = StringService.replaceAll(re, 'х', '[х]');\r\n      re = StringService.replaceAll(re, 'х', '[н]');\r\n      re = StringService.replaceAll(re, 'л', '[л]');\r\n      re = StringService.replaceAll(re, 'ш', '[ш]');\r\n      re = StringService.replaceAll(re, 'м', '[м]');\r\n      // eng diacritic\r\n      re = StringService.replaceAll(re, 's', '[s|ṣ|ś]');\r\n      re = StringService.replaceAll(re, 'r', '[ṝṛr]');\r\n      re = StringService.replaceAll(re, 'u', '[ūu]');\r\n      re = StringService.replaceAll(re, 'i', '[īi]');\r\n      re = StringService.replaceAll(re, 'a', '[āa]');\r\n      re = StringService.replaceAll(re, 'd', '[dḍ]');\r\n      re = StringService.replaceAll(re, 't', '[ṭt]');\r\n      re = StringService.replaceAll(re, 'n', '[nṅñṇ]');\r\n      re = StringService.replaceAll(re, 'h', '[ḥh]');\r\n      re = StringService.replaceAll(re, 'l', '[lḷỿḹ]');\r\n      re = StringService.replaceAll(re, 'm', '[mṁḿ]');\r\n\r\n      return this.text.replace(new RegExp(`(${re})`, 'ig'), '<b>$1</b>');\r\n    }\r\n    return this.text;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavItemText.vue?vue&type=template&id=779ffeae&scoped=true&\"\nimport script from \"./NavItemText.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavItemText.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavItemText.vue?vue&type=style&index=0&id=779ffeae&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"779ffeae\",\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('div',{staticClass:\"nav-item-entries\"},[_vm._v(\"\\n  \"+_vm._s(_vm.count)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class NavItemEntriesCount extends Vue {\r\n  @Prop({ required: true })\r\n  count!: number;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemEntriesCount.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemEntriesCount.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavItemEntriesCount.vue?vue&type=template&id=0f968ad8&scoped=true&\"\nimport script from \"./NavItemEntriesCount.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavItemEntriesCount.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavItemEntriesCount.vue?vue&type=style&index=0&id=0f968ad8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0f968ad8\",\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport NavItemIcon from '@/components/nav/NavItemIcon.vue';\r\nimport NavItemText from '@/components/nav/NavItemText.vue';\r\nimport NavItemEntriesCount from '@/components/nav/NavItemEntriesCount.vue';\r\nimport { State } from 'vuex-class';\r\nimport { LIST_SCALE_AUTO, LIST_SCALE_TABLET } from '@/constants';\r\n\r\n@Component({\r\n  components: { NavItemEntriesCount, Checkbox, NavItemIcon, NavItemText }\r\n})\r\nexport default class NavItemLink extends Vue {\r\n  LIST_SCALE_AUTO = LIST_SCALE_AUTO;\r\n\r\n  LIST_SCALE_TABLET = LIST_SCALE_TABLET;\r\n\r\n  @Prop({ required: true })\r\n  highlight!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  searchMatch!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  to!: string;\r\n\r\n  @Prop({ required: true })\r\n  text!: string;\r\n\r\n  @Prop({ required: true })\r\n  offset!: number;\r\n\r\n  @Prop({ required: true })\r\n  primary!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  checked!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  showEntriesCount?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  entriesCount?: number;\r\n\r\n  @State('catalogListScale', { namespace: 'reader' })\r\n  catalogListScale!: string;\r\n\r\n  onNavigate() {\r\n    this.$nextTick(() => {\r\n      this.$root.$emit('reader-link-selected', { link: this.to, name: this.text });\r\n    });\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavItemLink.vue?vue&type=template&id=a5c385c0&scoped=true&\"\nimport script from \"./NavItemLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavItemLink.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavItemLink.vue?vue&type=style&index=0&id=a5c385c0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a5c385c0\",\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('div',{staticClass:\"nav-item-folder\",class:{\n    'size-tablet': _vm.catalogListScale === _vm.LIST_SCALE_TABLET,\n    'size-auto': _vm.catalogListScale === _vm.LIST_SCALE_AUTO\n  }},[_c('div',{staticClass:\"nav-item-folder-row\",class:{ 'with-checkbox': _vm.showCheckbox },style:({ paddingLeft: (_vm.offset + \"px\") })},[(_vm.showEntriesCount)?_c('NavItemEntriesCount',{attrs:{\"count\":_vm.entriesCount}}):_vm._e(),_c('button',{staticClass:\"nav-item-button\",class:{\n        highlight: _vm.highlight,\n        primary: _vm.primary,\n        searchMatch: _vm.searchMatch\n      },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[(_vm.loading)?_c('Loader',{staticClass:\"nav-item-loading\"}):_c('NavItemIcon',{attrs:{\"icon\":_vm.bookIcon ? 'book' : _vm.expanded ? 'minus' : 'plus'}})],1),(_vm.showCheckbox)?_c('Checkbox',{staticClass:\"checkbox\",class:{\n        'size-auto': _vm.catalogListScale === _vm.LIST_SCALE_AUTO,\n        'size-tablet': _vm.catalogListScale === _vm.LIST_SCALE_TABLET\n      },attrs:{\"checked\":_vm.checkboxChecked,\"partially-checked\":_vm.checkboxPartiallyChecked},on:{\"change\":function($event){return _vm.$emit('check')}}}):_vm._e(),(_vm.link)?_c('router-link',{staticClass:\"nav-item-link\",class:{\n        highlight: _vm.highlight,\n        primary: _vm.primary,\n        searchMatch: _vm.searchMatch\n      },attrs:{\"to\":_vm.link},nativeOn:{\"click\":function($event){return _vm.onNavigate($event)}}},[_c('NavItemText',{attrs:{\"text\":_vm.text}})],1):_c('button',{staticClass:\"nav-item-button\",class:{\n        highlight: _vm.highlight,\n        primary: _vm.primary,\n        searchMatch: _vm.searchMatch\n      },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('NavItemText',{attrs:{\"text\":_vm.text}})],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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport NavItemIcon from '@/components/nav/NavItemIcon.vue';\r\nimport NavItemText from '@/components/nav/NavItemText.vue';\r\nimport NavItemEntriesCount from '@/components/nav/NavItemEntriesCount.vue';\r\nimport { State } from 'vuex-class';\r\nimport { LIST_SCALE_TABLET, LIST_SCALE_AUTO } from '@/constants';\r\n\r\n@Component({\r\n  components: { Loader, Checkbox, NavItemIcon, NavItemText, NavItemEntriesCount }\r\n})\r\nexport default class NavItemFolder extends Vue {\r\n  LIST_SCALE_TABLET = LIST_SCALE_TABLET;\r\n  LIST_SCALE_AUTO = LIST_SCALE_AUTO;\r\n\r\n  @Prop({ required: true })\r\n  highlight!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  searchMatch!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  text!: string;\r\n\r\n  @Prop({ required: true })\r\n  expanded!: boolean;\r\n\r\n  @Prop({ required: true })\r\n  offset!: number;\r\n\r\n  @Prop({ required: true })\r\n  primary!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  bookIcon?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  link?: string;\r\n\r\n  @Prop({ required: false })\r\n  showCheckbox?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  checkboxChecked?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  checkboxPartiallyChecked?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  showEntriesCount?: boolean;\r\n\r\n  @Prop({ required: false })\r\n  entriesCount?: number;\r\n\r\n  @Prop({ required: false })\r\n  loading?: boolean;\r\n\r\n  @State('catalogListScale', { namespace: 'reader' })\r\n  catalogListScale!: string;\r\n\r\n  onNavigate() {\r\n    this.$root.$emit('reader-link-selected', { link: this.link, name: this.text });\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemFolder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemFolder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavItemFolder.vue?vue&type=template&id=5ed149a6&scoped=true&\"\nimport script from \"./NavItemFolder.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavItemFolder.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavItemFolder.vue?vue&type=style&index=0&id=5ed149a6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5ed149a6\",\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.book.visible)?_c('div',[_c('NavItemFolder',{attrs:{\"text\":_vm.bookName,\"highlight\":_vm.highlight,\"offset\":_vm.offset,\"expanded\":_vm.book.expanded,\"primary\":true,\"searchMatch\":_vm.book.searchMatch,\"bookIcon\":true,\"link\":_vm.url,\"showCheckbox\":_vm.showCheckboxes,\"checkboxChecked\":_vm.book.checked,\"checkboxPartiallyChecked\":_vm.book.partiallyChecked,\"showEntriesCount\":_vm.showEntriesCount,\"entriesCount\":_vm.book.doc_count,\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.toggleExpand()},\"check\":function($event){return _vm.toggleCheck()}}}),(_vm.bookSections && _vm.bookSections.length > 0 && _vm.book.expanded)?_c('div',_vm._l((_vm.bookSections),function(bookSection){return _c('div',{key:bookSection.id},[(bookSection.depth === 0)?_c('NavBookSection',{attrs:{\"bookSection\":bookSection,\"bookSections\":_vm.bookSections,\"level\":_vm.level + 1,\"category\":_vm.category,\"author\":_vm.author,\"showCheckboxes\":_vm.showCheckboxes,\"showEntriesCount\":_vm.showEntriesCount}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.bookSection.visible)?_c('div',{staticClass:\"nav-section\",class:{\n    'current-section': _vm.isCurrentSection,\n    'current-section-path': _vm.isInCurrentPath && !_vm.isCurrentSection\n  },attrs:{\"data-section-slug\":_vm.bookSection.slug}},[(_vm.bookSection.is_parent || _vm.hasChildren)?_c('NavItemFolder',{attrs:{\"text\":_vm.bookSection.name,\"highlight\":_vm.highlight,\"offset\":_vm.offset,\"expanded\":_vm.displayExpanded,\"showCheckbox\":_vm.showCheckboxes,\"checkboxChecked\":_vm.bookSection.checked,\"checkboxPartiallyChecked\":_vm.bookSection.partiallyChecked,\"primary\":false,\"searchMatch\":_vm.bookSection.searchMatch,\"showEntriesCount\":_vm.showEntriesCount,\"entriesCount\":_vm.entriesCount},on:{\"click\":function($event){return _vm.toggleExpand()},\"check\":function($event){return _vm.toggleCheck()}}}):_c('NavItemLink',{attrs:{\"highlight\":_vm.highlight,\"to\":_vm.url,\"text\":_vm.bookSection.name,\"checked\":_vm.bookSection.checked,\"offset\":_vm.offset,\"primary\":false,\"searchMatch\":_vm.bookSection.searchMatch,\"showEntriesCount\":_vm.showEntriesCount,\"entriesCount\":_vm.entriesCount}}),(_vm.hasChildren && _vm.displayExpanded)?_c('div',_vm._l((_vm.children),function(child){return _c('NavBookSection',{key:child.id,attrs:{\"bookSection\":child,\"bookSections\":_vm.bookSections,\"level\":_vm.level + 1,\"category\":_vm.category,\"author\":_vm.author,\"showCheckboxes\":_vm.showCheckboxes,\"showEntriesCount\":_vm.showEntriesCount,\"catalogTree\":_vm.catalogTree,\"activeSectionSlug\":_vm.activeSectionSlug}})}),1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const LEVEL_OFFSET_PX = 28; // px\r\nexport const LABEL_OFFSET_PX = 16; // px\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport NavItemLink from '@/components/nav/NavItemLink.vue';\r\nimport NavItemFolder from '@/components/nav/NavItemFolder.vue';\r\nimport { Author, BookSection, Category, NavigationData } from '@/services/Navigation/types';\r\nimport { Getter, Mutation, State } from 'vuex-class';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport { LABEL_OFFSET_PX, LEVEL_OFFSET_PX } from '@/services/Navigation/constants';\r\n\r\n@Component({\r\n  name: 'NavBookSection',\r\n  components: { NavBookSection, NavItemLink, NavItemFolder }\r\n})\r\nexport default class NavBookSection extends Vue {\r\n  @Prop({ required: true })\r\n  bookSections!: Array<BookSection>;\r\n\r\n  @Prop({ required: true })\r\n  bookSection!: BookSection;\r\n\r\n  @Prop({ required: false, default: 0 })\r\n  level!: number;\r\n\r\n  @Prop({ required: true })\r\n  showCheckboxes!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  category!: Category;\r\n\r\n  @Prop({ required: false })\r\n  author!: Author;\r\n\r\n  @Prop({ required: false })\r\n  showEntriesCount?: boolean;\r\n\r\n  @Prop({ required: false, default: false })\r\n  catalogTree!: boolean;\r\n\r\n  @Prop({ required: false, default: '' })\r\n  activeSectionSlug!: string;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  navData!: NavigationData;\r\n\r\n  @Mutation('toggleBookSectionExpand', { namespace: 'navigation' })\r\n  toggleBookSectionExpand!: Function;\r\n\r\n  @Mutation('toggleBookSectionCheck', { namespace: 'navigation' })\r\n  toggleBookSectionCheck!: Function;\r\n\r\n  @Mutation('toggleFoundBookSectionCheck', { namespace: 'navigation' })\r\n  toggleFoundBookSectionCheck!: Function;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage!: string;\r\n\r\n  @State('showSearchResultsFlag', { namespace: 'navigation' })\r\n  showSearchResultsFlag?: boolean;\r\n\r\n  get offset() {\r\n    if (!this.level) {\r\n      return LABEL_OFFSET_PX;\r\n    }\r\n    return this.level * LEVEL_OFFSET_PX + LABEL_OFFSET_PX;\r\n  }\r\n\r\n  get children() {\r\n    return this.bookSections.filter(section => section.parentId && section.parentId === this.bookSection.id);\r\n  }\r\n\r\n  get url() {\r\n    const url = UrlBuilderService.getBookSectionUrl({\r\n      language: this.bookSection.book.language,\r\n      categorySlug: this.category ? this.category.slug : '',\r\n      authorSlug: this.author ? this.author.slug : '',\r\n      bookSlug: this.bookSection.book.slug,\r\n      bookSectionSlug: this.bookSection.slug\r\n    });\r\n    return this.catalogTree ? `${url}?reading=1&toc=1` : url;\r\n  }\r\n\r\n  get highlight() {\r\n    if (this.catalogTree && this.activeSectionSlug) {\r\n      return this.isInCurrentPath;\r\n    }\r\n    const { category } = this.$route.params;\r\n    if (this.category && category && this.category.slug !== category) {\r\n      return false;\r\n    }\r\n    return this.bookSection.highlight;\r\n  }\r\n\r\n  get isCurrentSection() {\r\n    return !!(this.catalogTree && this.activeSectionSlug && this.bookSection.slug === this.activeSectionSlug);\r\n  }\r\n\r\n  get isInCurrentPath() {\r\n    if (!(this.catalogTree && this.activeSectionSlug)) {\r\n      return false;\r\n    }\r\n    let section = this.bookSections.find(item => item.slug === this.activeSectionSlug);\r\n    while (section) {\r\n      if (section.id === this.bookSection.id) {\r\n        return true;\r\n      }\r\n      section = section.parentId ? this.bookSections.find(item => item.id === section!.parentId) : undefined;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  get displayExpanded() {\r\n    return this.bookSection.expanded || this.isInCurrentPath;\r\n  }\r\n\r\n  get hasChildren() {\r\n    return this.children && this.children.length;\r\n  }\r\n\r\n  get entriesCount() {\r\n    if (!this.hasChildren) {\r\n      return this.bookSection.doc_count;\r\n    }\r\n\r\n    return this.children.reduce((docCount, bookSection) => docCount + (bookSection.doc_count || 0), 0);\r\n  }\r\n\r\n  toggleExpand() {\r\n    this.toggleBookSectionExpand({\r\n      bookSectionId: this.bookSection.id,\r\n      bookSlug: this.bookSection.book.slug,\r\n      catalogTree: this.catalogTree\r\n    });\r\n  }\r\n\r\n  toggleCheck() {\r\n    if (this.showSearchResultsFlag) {\r\n      this.toggleFoundBookSectionCheck({\r\n        bookSectionId: this.bookSection.id,\r\n        bookSlug: this.bookSection.book.slug\r\n      });\r\n    } else {\r\n      this.toggleBookSectionCheck({\r\n        bookSectionId: this.bookSection.id,\r\n        bookSlug: this.bookSection.book.slug\r\n      });\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavBookSection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavBookSection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavBookSection.vue?vue&type=template&id=8cc6901a&\"\nimport script from \"./NavBookSection.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavBookSection.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport NavItemLink from '@/components/nav/NavItemLink.vue';\r\nimport NavItemFolder from '@/components/nav/NavItemFolder.vue';\r\nimport { Author, Book, Category, NavigationData } from '@/services/Navigation/types';\r\nimport NavBookSection from '@/components/nav/NavBookSection.vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport { LABEL_OFFSET_PX, LEVEL_OFFSET_PX } from '@/services/Navigation/constants';\r\nimport { SearchBaseOptions } from '@/services/Api/SearchService';\r\n\r\n@Component({\r\n  components: { NavBookSection, NavItemLink, NavItemFolder }\r\n})\r\nexport default class NavBook extends Vue {\r\n  @Prop({ required: true })\r\n  book!: Book;\r\n\r\n  @Prop({ required: false })\r\n  category!: Category;\r\n\r\n  @Prop({ required: false })\r\n  author!: Author;\r\n\r\n  @Prop({ required: false, default: 0 })\r\n  level!: number;\r\n\r\n  @Prop({ required: false })\r\n  showCheckboxes!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  showEntriesCount?: boolean;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  navData!: NavigationData;\r\n\r\n  @Getter('searchOptions', { namespace: 'search' })\r\n  searchOptions!: SearchBaseOptions;\r\n\r\n  @Getter('showSearchResults', { namespace: 'navigation' })\r\n  showSearchResults?: boolean;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage!: string;\r\n\r\n  @Action('fetchBookSections', { namespace: 'navigation' })\r\n  fetchBookSections!: Function;\r\n\r\n  @Action('searchBookSections', { namespace: 'navigation' })\r\n  searchBookSections!: Function;\r\n\r\n  @Mutation('toggleBookExpand', { namespace: 'navigation' })\r\n  toggleBookExpand!: Function;\r\n\r\n  @Mutation('toggleFoundBookExpand', { namespace: 'navigation' })\r\n  toggleFoundBookExpand!: Function;\r\n\r\n  @Mutation('toggleBookCheck', { namespace: 'navigation' })\r\n  toggleBookCheck!: Function;\r\n\r\n  @Mutation('toggleFoundBookCheck', { namespace: 'navigation' })\r\n  toggleFoundBookCheck!: Function;\r\n\r\n  loading: boolean = false;\r\n\r\n  async mounted() {\r\n    if (this.needBookSectionsLoad) {\r\n      await this.loadBookSections();\r\n    }\r\n  }\r\n\r\n  @Watch('book.expanded')\r\n  async onBookExpand(to: boolean, from: boolean) {\r\n    if (to !== from && this.needBookSectionsLoad) {\r\n      // if category is expanded and has books and there is no loaded books yet\r\n      await this.loadBookSections();\r\n    }\r\n  }\r\n\r\n  get offset() {\r\n    if (!this.level) {\r\n      return LABEL_OFFSET_PX;\r\n    }\r\n    return this.level * LEVEL_OFFSET_PX + LABEL_OFFSET_PX;\r\n  }\r\n\r\n  get url() {\r\n    return UrlBuilderService.getBookUrl({\r\n      language: this.book.language,\r\n      categorySlug: this.category ? this.category.slug : '',\r\n      authorSlug: this.author ? this.author.slug : '',\r\n      bookSlug: this.book.slug\r\n    });\r\n  }\r\n\r\n  get highlight() {\r\n    const { category, author } = this.$route.params;\r\n    if (this.category && category && this.category.slug !== category) {\r\n      // in case one book linked to several categories\r\n      return false;\r\n    }\r\n    if (this.author && author && this.author.slug !== author) {\r\n      // in case one book has several authors\r\n      return false;\r\n    }\r\n    return this.book.highlight;\r\n  }\r\n\r\n  get bookSections() {\r\n    return this.book.children;\r\n  }\r\n\r\n  get needBookSectionsLoad() {\r\n    return this.book.expanded && !this.bookSections.length;\r\n  }\r\n\r\n  get bookName() {\r\n    return (this.book.status ? `[${this.book.status}] ` : '') + this.book.name;\r\n  }\r\n\r\n  toggleExpand() {\r\n    if (this.showSearchResults) {\r\n      this.toggleFoundBookExpand(this.book.slug);\r\n    } else {\r\n      this.toggleBookExpand(this.book.slug);\r\n    }\r\n  }\r\n\r\n  toggleCheck() {\r\n    if (this.showSearchResults) {\r\n      this.toggleFoundBookCheck(this.book.slug);\r\n    } else {\r\n      this.toggleBookCheck(this.book.slug);\r\n    }\r\n  }\r\n\r\n  async loadBookSections() {\r\n    this.loading = true;\r\n    try {\r\n      if (this.showSearchResults) {\r\n        // if it's a search query\r\n        await this.searchBookSections({\r\n          language: this.$store.state.navigation.language,\r\n          query: this.$route.query.query,\r\n          bookSlug: this.book.slug,\r\n          ...this.searchOptions\r\n        });\r\n      } else {\r\n        // if we expand a book in the catalog (without search)\r\n        await this.fetchBookSections({\r\n          language: this.$store.state.navigation.language,\r\n          bookSlug: this.book.slug\r\n        });\r\n      }\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavBook.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavBook.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavBook.vue?vue&type=template&id=83fa76f6&\"\nimport script from \"./NavBook.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavBook.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport NavItemLink from '@/components/nav/NavItemLink.vue';\r\nimport NavItemFolder from '@/components/nav/NavItemFolder.vue';\r\nimport { Book, Category, NavigationData } from '@/services/Navigation/types';\r\nimport NavBook from '@/components/nav/NavBook.vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport { LABEL_OFFSET_PX, LEVEL_OFFSET_PX } from '@/services/Navigation/constants';\r\n\r\n@Component({\r\n  name: 'NavCategory',\r\n  components: { NavBook, NavCategory, NavItemLink, NavItemFolder }\r\n})\r\nexport default class NavCategory extends Vue {\r\n  @Prop({ required: true })\r\n  category!: Category;\r\n\r\n  @Prop({ required: false, default: 0 })\r\n  level!: number;\r\n\r\n  @Prop({ required: true })\r\n  showCheckboxes!: boolean;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  navData!: NavigationData;\r\n\r\n  @Action('fetchCategoryBooks', { namespace: 'navigation' })\r\n  fetchCategoryBooks!: Function;\r\n\r\n  @Mutation('toggleCategoryExpand', { namespace: 'navigation' })\r\n  toggleCategoryExpand!: Function;\r\n\r\n  @Action('toggleCategorySelection', { namespace: 'navigation' })\r\n  toggleCategorySelection!: Function;\r\n\r\n  loading: boolean = false;\r\n\r\n  async mounted() {\r\n    if (this.needBooksLoad) {\r\n      await this.loadBooks();\r\n    }\r\n  }\r\n\r\n  @Watch('category.expanded')\r\n  async onCategoryExpand(to: boolean, from: boolean) {\r\n    if (to !== from && this.needBooksLoad) {\r\n      // if category is expanded and has books and there is no loaded books yet\r\n      await this.loadBooks();\r\n    }\r\n  }\r\n\r\n  get offset() {\r\n    if (!this.level) {\r\n      return LABEL_OFFSET_PX;\r\n    }\r\n    return this.level * LEVEL_OFFSET_PX + LABEL_OFFSET_PX;\r\n  }\r\n\r\n  get children() {\r\n    const { categories } = this.navData;\r\n    if (this.category.is_parent) {\r\n      return categories.filter(category => category.parent_id === this.category.id);\r\n    }\r\n    return [];\r\n  }\r\n\r\n  get books() {\r\n    const { books } = this.navData;\r\n    return Object.values(books).filter((book: Book) => this.category.bookIds.includes(book.id));\r\n  }\r\n\r\n  get needBooksLoad() {\r\n    return this.category.expanded && this.category.is_books_exist && !this.books.length;\r\n  }\r\n\r\n  toggleExpand() {\r\n    this.toggleCategoryExpand(this.category.id);\r\n  }\r\n\r\n  toggleCheck() {\r\n    this.toggleCategorySelection(this.category.id);\r\n  }\r\n\r\n  async loadBooks() {\r\n    this.loading = true;\r\n    await this.fetchCategoryBooks({\r\n      language: this.$store.state.navigation.language,\r\n      categoryId: this.category.id\r\n    });\r\n    this.loading = false;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavCategory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavCategory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavCategory.vue?vue&type=template&id=5179cee3&\"\nimport script from \"./NavCategory.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavCategory.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/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 (_vm.letter.visible)?_c('div',[_c('NavItemFolder',{attrs:{\"highlight\":_vm.letter.highlight,\"text\":_vm.letter.name,\"offset\":\"16\",\"expanded\":_vm.letter.expanded,\"primary\":true,\"searchMatch\":_vm.letter.searchMatch,\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.toggleExpand()}}}),(_vm.listType === 'books' && _vm.books.length > 0 && _vm.letter.expanded)?_c('div',_vm._l((_vm.books),function(book){return _c('NavBook',{key:book.id,attrs:{\"book\":book,\"level\":1,\"showCheckboxes\":_vm.showCheckboxes}})}),1):_vm._e(),(_vm.listType === 'authors' && _vm.authors && _vm.authors.length > 0 && _vm.letter.expanded)?_c('div',_vm._l((_vm.authors),function(author){return _c('NavAuthor',{key:author.id,attrs:{\"author\":author,\"level\":1,\"showCheckboxes\":_vm.showCheckboxes}})}),1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.author.visible)?_c('div',[_c('NavItemFolder',{attrs:{\"text\":_vm.author.name,\"highlight\":_vm.author.highlight,\"offset\":_vm.offset,\"expanded\":_vm.author.expanded,\"primary\":true,\"searchMatch\":_vm.author.searchMatch,\"link\":_vm.url,\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.toggleExpand()}}}),(_vm.books.length > 0 && _vm.author.expanded)?_c('div',_vm._l((_vm.books),function(book){return _c('NavBook',{key:book.id,attrs:{\"book\":book,\"level\":_vm.level + 1,\"author\":_vm.author,\"showCheckboxes\":_vm.showCheckboxes}})}),1):_vm._e()],1):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport NavItemFolder from '@/components/nav/NavItemFolder.vue';\r\nimport { Author, Book, NavigationData } from '@/services/Navigation/types';\r\nimport NavBook from '@/components/nav/NavBook.vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport { NavigationState } from '@/store/modules/navigation';\r\nimport { LABEL_OFFSET_PX, LEVEL_OFFSET_PX } from '@/services/Navigation/constants';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\n\r\n@Component({\r\n  components: { NavBook, NavItemFolder }\r\n})\r\nexport default class NavAuthor extends Vue {\r\n  @Prop({ required: true })\r\n  author!: Author;\r\n\r\n  @Prop({ required: false, default: 0 })\r\n  level!: number;\r\n\r\n  @Prop({ required: true })\r\n  showCheckboxes!: boolean;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  navData!: NavigationData;\r\n\r\n  @Action('fetchAuthorBooks', { namespace: 'navigation' })\r\n  fetchAuthorBooks!: Function;\r\n\r\n  @Mutation('toggleAuthorExpand', { namespace: 'navigation' })\r\n  toggleAuthorExpand!: Function;\r\n\r\n  loading: boolean = false;\r\n\r\n  async mounted() {\r\n    if (this.needBooksLoad) {\r\n      await this.loadBooks();\r\n    }\r\n  }\r\n\r\n  @Watch('author.expanded')\r\n  async onAuthorExpand(to: boolean, from: boolean) {\r\n    if (to !== from && this.needBooksLoad) {\r\n      // if author is expanded and has books and there is no loaded books yet\r\n      await this.loadBooks();\r\n    }\r\n  }\r\n\r\n  get offset() {\r\n    if (!this.level) {\r\n      return LABEL_OFFSET_PX;\r\n    }\r\n    return this.level * LEVEL_OFFSET_PX + LABEL_OFFSET_PX;\r\n  }\r\n\r\n  get books() {\r\n    const { books } = this.navData;\r\n    return this.author.bookIds.map(bookId => Object.values(books).find(book => book.id === bookId));\r\n  }\r\n\r\n  get url() {\r\n    return UrlBuilderService.getAuthorUrl({\r\n      language: this.$store.state.navigation.language,\r\n      authorSlug: this.author.slug\r\n    });\r\n  }\r\n\r\n  get needBooksLoad() {\r\n    return this.author.expanded && !this.books.length;\r\n  }\r\n\r\n  toggleExpand() {\r\n    this.toggleAuthorExpand(this.author.id);\r\n  }\r\n\r\n  async loadBooks() {\r\n    this.loading = true;\r\n    await this.fetchAuthorBooks({\r\n      language: this.$store.state.navigation.language,\r\n      authorId: this.author.id\r\n    });\r\n    this.loading = false;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavAuthor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavAuthor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavAuthor.vue?vue&type=template&id=3f89e4da&\"\nimport script from \"./NavAuthor.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavAuthor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport NavItemLink from '@/components/nav/NavItemLink.vue';\r\nimport NavItemFolder from '@/components/nav/NavItemFolder.vue';\r\nimport { AuthorLetter, Book, BookLetter, NavigationData } from '@/services/Navigation/types';\r\nimport NavBook from '@/components/nav/NavBook.vue';\r\nimport { Action, Getter, Mutation } from 'vuex-class';\r\nimport NavAuthor from '@/components/nav/NavAuthor.vue';\r\n\r\n@Component({\r\n  components: { NavBook, NavAuthor, NavItemLink, NavItemFolder }\r\n})\r\nexport default class NavLetter extends Vue {\r\n  @Prop({ required: true })\r\n  letter!: BookLetter | AuthorLetter;\r\n\r\n  @Prop({ required: true })\r\n  listType!: 'books' | 'authors';\r\n\r\n  @Prop({ required: true })\r\n  showCheckboxes!: boolean;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  navData!: NavigationData;\r\n\r\n  @Action('fetchLetterBooks', { namespace: 'navigation' })\r\n  fetchLetterBooks!: Function;\r\n\r\n  @Mutation('actualizeHighlight', { namespace: 'navigation' })\r\n  actualizeHighlight!: Function;\r\n\r\n  @Mutation('toggleBookLetterExpand', { namespace: 'navigation' })\r\n  toggleBookLetterExpand!: Function;\r\n\r\n  @Mutation('toggleAuthorLetterExpand', { namespace: 'navigation' })\r\n  toggleAuthorLetterExpand!: Function;\r\n\r\n  loading: boolean = false;\r\n\r\n  async mounted() {\r\n    await this.loadBooksIfNeeded();\r\n  }\r\n\r\n  @Watch('letter.expanded')\r\n  async onLetterExpand(to: boolean, from: boolean) {\r\n    if (to !== from) {\r\n      await this.loadBooksIfNeeded();\r\n    }\r\n  }\r\n\r\n  async loadBooksIfNeeded() {\r\n    if (!this.needBooksLoad) {\r\n      return;\r\n    }\r\n    await this.loadBooks();\r\n    this.actualizeHighlight();\r\n  }\r\n\r\n  get books() {\r\n    const { books } = this.navData;\r\n    return Object.values(books).filter(book => (this.letter as BookLetter).bookIds.includes(book.id));\r\n  }\r\n\r\n  get authors() {\r\n    const { authors } = this.navData;\r\n    return authors.filter(author => (this.letter as AuthorLetter).authorIds.includes(author.id));\r\n  }\r\n\r\n  get needBooksLoad() {\r\n    return this.letter.expanded && this.listType === 'books' && !(this.letter as BookLetter).bookIds.length;\r\n  }\r\n\r\n  toggleExpand() {\r\n    if (this.listType === 'books') {\r\n      this.toggleBookLetterExpand(this.letter.id);\r\n    } else {\r\n      this.toggleAuthorLetterExpand(this.letter.id);\r\n    }\r\n  }\r\n\r\n  async loadBooks() {\r\n    this.loading = true;\r\n    try {\r\n      await this.fetchLetterBooks({\r\n        language: this.$store.state.navigation.language,\r\n        letterName: this.letter.name\r\n      });\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavLetter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavLetter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavLetter.vue?vue&type=template&id=60a40b5e&\"\nimport script from \"./NavLetter.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavLetter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/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 { AnyNavEntity, Books, ListType } from '@/services/Navigation/types';\r\nimport { LIST_TYPE_DEFAULT } from '@/constants';\r\n\r\nexport default class Helpers {\r\n  public static collapseAll<T extends AnyNavEntity>(array: Array<T>): Array<T> {\r\n    return array.map(item => ({ ...item, expanded: false }));\r\n  }\r\n\r\n  public static collapseBooks(origin: Books) {\r\n    const books = { ...origin };\r\n    for (let slug in books) {\r\n      books[slug].expanded = false;\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static checkAll<T extends AnyNavEntity>(array: Array<T>): Array<T> {\r\n    return array.map(item => ({ ...item, checked: true, partiallyChecked: false }));\r\n  }\r\n\r\n  public static checkBooks(origin: Books) {\r\n    const books = { ...origin };\r\n    for (let slug in books) {\r\n      books[slug].checked = true;\r\n      books[slug].partiallyChecked = false;\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static checkBookSections(origin: Books) {\r\n    const books = { ...origin };\r\n    for (let slug in books) {\r\n      books[slug].children = books[slug].children.map(one => ({\r\n        ...one,\r\n        checked: true,\r\n        partiallyChecked: false\r\n      }));\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static uncheckAll<T extends AnyNavEntity>(array: Array<T>): Array<T> {\r\n    return array.map(item => ({ ...item, checked: false, partiallyChecked: false }));\r\n  }\r\n\r\n  public static uncheckBooks(origin: Books) {\r\n    const books = { ...origin };\r\n    for (let slug in books) {\r\n      books[slug].checked = false;\r\n      books[slug].partiallyChecked = false;\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static uncheckBookSections(origin: Books) {\r\n    const books = { ...origin };\r\n    for (let slug in books) {\r\n      for (let j in books[slug].children) {\r\n        books[slug].children = books[slug].children.map(one => ({\r\n          ...one,\r\n          checked: false,\r\n          partiallyChecked: false\r\n        }));\r\n      }\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static getParents(array: Array<{ [key: string]: any }>, startIndex: number) {\r\n    const parents: Array<{ [key: string]: any }> = [];\r\n    const initialDepth = array[startIndex].depth;\r\n    let previousDepth = initialDepth;\r\n    if (previousDepth === 0) {\r\n      return parents;\r\n    }\r\n    for (let i = startIndex; i >= 0; i--) {\r\n      const item = array[i];\r\n      // we need to update each item with less depth on each level of depth\r\n      if (item.depth < initialDepth && item.depth < previousDepth) {\r\n        parents.push(item);\r\n        previousDepth = item.depth;\r\n      }\r\n      // if current item depth is zero - this is a root item, no parents left\r\n      if (item.depth === 0) {\r\n        return parents;\r\n      }\r\n    }\r\n    return parents;\r\n  }\r\n\r\n  public static updateParents(\r\n    array: Array<{ [key: string]: any }>,\r\n    startIndex: number,\r\n    callback: (item: { [key: string]: any }) => { [key: string]: any }\r\n  ) {\r\n    const initialDepth = array[startIndex].depth;\r\n    let previousDepth = initialDepth;\r\n    if (previousDepth === 0) {\r\n      return array;\r\n    }\r\n    for (let i = startIndex; i >= 0; i--) {\r\n      const item = array[i];\r\n      // we need to update each item with less depth on each level of depth\r\n      if (item.depth < initialDepth && item.depth < previousDepth) {\r\n        array[i] = Object.assign(array[i], callback(item));\r\n        previousDepth = item.depth;\r\n      }\r\n      // if current item depth is zero - this is a root item, no parents left\r\n      if (item.depth === 0) {\r\n        return array;\r\n      }\r\n    }\r\n    return array;\r\n  }\r\n\r\n  public static updateChildren(\r\n    array: Array<{ [key: string]: any }>,\r\n    startIndex: number,\r\n    callback: (item: { [key: string]: any }) => { [key: string]: any }\r\n  ) {\r\n    const initialDepth = array[startIndex].depth;\r\n    for (let i = startIndex; i < array.length; i++) {\r\n      const item = array[i];\r\n      // if current item has equal or greater depth then the initial one - then there is no children left\r\n      if (item.depth <= initialDepth && i !== startIndex) {\r\n        return array;\r\n      }\r\n      // we need to update all items with greater depth\r\n      if (item.depth > initialDepth) {\r\n        array[i] = Object.assign(array[i], callback(item));\r\n      }\r\n    }\r\n    return array;\r\n  }\r\n\r\n  public static *flatten(\r\n    array: Array<{ [key: string]: any }>,\r\n    childrenPropName: string,\r\n    depth: number = 0,\r\n    parentId: number | null = null\r\n  ): Generator<{ [key: string]: any }> {\r\n    for (const item of array) {\r\n      const isParent = !!item[childrenPropName] && item[childrenPropName].length > 0;\r\n      const id = item.id || item.code; // todo: this workaround for book sections without ID\r\n      yield {\r\n        ...item,\r\n        id,\r\n        depth,\r\n        isParent,\r\n        parentId\r\n      };\r\n      if (isParent) {\r\n        yield* Helpers.flatten(item[childrenPropName], childrenPropName, depth + 1, item.id || item.code);\r\n      }\r\n    }\r\n  }\r\n\r\n  public static parseListTypeFromUrl(url: string): ListType {\r\n    const slug = url.split('/')[2];\r\n    return slug && ['categories', 'authors', 'books'].includes(slug) ? (slug as ListType) : LIST_TYPE_DEFAULT;\r\n  }\r\n}\r\n","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M3 7.5L5.5 10 8 7.5m-5 9L5.5 14 8 16.5\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M12 6h9m-9 6h9m-9 6h9\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport NavRubrics from '@/components/nav/NavRubrics.vue';\r\nimport { Book, BookSection, ListType, NavigationData } from '@/services/Navigation/types';\r\nimport SearchInput from '@/components/ui/SearchInput.vue';\r\nimport { Prop, Ref, Watch } from 'vue-property-decorator';\r\nimport { Route } from 'vue-router';\r\nimport NavCategory from '@/components/nav/NavCategory.vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport NavLetter from '@/components/nav/NavLetter.vue';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport ReturnIcon from '@/assets/icons/return.svg';\r\nimport { SearchBaseOptions } from '@/services/Api/SearchService';\r\nimport NavBook from '@/components/nav/NavBook.vue';\r\nimport Helpers from '@/services/Navigation/Helpers';\r\nimport NavAuthor from '@/components/nav/NavAuthor.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport StringService from '@/services/StringService';\r\nimport { TranslationStrings } from '@/translations/types';\r\nimport { LANGUAGE_CODE_RUSSIAN } from '@/constants';\r\nimport CollapseListIcon from '@/assets/icons/collapse-list.svg';\r\n\r\n@Component({\r\n  components: {\r\n    NavAuthor,\r\n    NavBook,\r\n    Loader,\r\n    NavLetter,\r\n    NavCategory,\r\n    NavRubrics,\r\n    SearchInput,\r\n    CollapseListIcon,\r\n    ReturnIcon\r\n  }\r\n})\r\nexport default class Catalog extends Vue {\r\n  @Prop({ required: false, default: '' })\r\n  mobileMode!: '' | 'library' | 'search-area';\r\n\r\n  lists = {\r\n    categories: getTranslation('filterCategories'),\r\n    authors: getTranslation('filterAuthors'),\r\n    books: getTranslation('filterBooks')\r\n  };\r\n  getTranslation = getTranslation;\r\n\r\n  @Ref('tree')\r\n  refTree?: HTMLDivElement;\r\n\r\n  @Action('highlightLetterByBookSlug', { namespace: 'navigation' })\r\n  highlightLetterByBookSlug!: Function;\r\n\r\n  @Mutation('actualizeHighlight', { namespace: 'navigation' })\r\n  actualizeHighlight!: Function;\r\n\r\n  @Mutation('collapseAll', { namespace: 'navigation' })\r\n  collapseAll!: Function;\r\n\r\n  @Mutation('checkAll', { namespace: 'navigation' })\r\n  checkAll!: Function;\r\n\r\n  @Mutation('uncheckAll', { namespace: 'navigation' })\r\n  uncheckAll!: Function;\r\n\r\n  @Mutation('setListType', { namespace: 'navigation' })\r\n  setListType!: Function;\r\n\r\n  @Getter('dataFromStateLanguage', { namespace: 'navigation' })\r\n  data!: NavigationData;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  currentBook?: Book;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentBookSection?: BookSection;\r\n\r\n  @Getter('searchOptions', { namespace: 'search' })\r\n  searchOptions!: SearchBaseOptions;\r\n\r\n  @State('resultsCount', { namespace: 'search' })\r\n  searchResultsCount!: number;\r\n\r\n  @Getter('showSearchResults', { namespace: 'navigation' })\r\n  showSearchResults?: boolean;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage?: string;\r\n\r\n  @State('loading', { namespace: 'navigation' })\r\n  navLoading?: boolean;\r\n\r\n  @State('error', { namespace: 'navigation' })\r\n  navigationError!: boolean | Error;\r\n\r\n  @State('loading', { namespace: 'search' })\r\n  searchLoading?: boolean;\r\n\r\n  @State('advancedSearch', { namespace: 'search' })\r\n  advancedSearch?: boolean;\r\n\r\n  @State('listType', { namespace: 'navigation' })\r\n  listType!: ListType;\r\n\r\n  @State('filterQuery', { namespace: 'navigation' })\r\n  filterQuery!: string;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  highlightScrollTimeout?: number;\r\n\r\n  async mounted() {\r\n    this.$el.addEventListener('wheel', this.cancelPendingHighlightScroll, { passive: true });\r\n    this.$el.addEventListener('touchstart', this.cancelPendingHighlightScroll, { passive: true });\r\n    this.$store.commit('navigation/setShowSearchResultsFlag', this.isSearchResultsPage);\r\n    if (!this.mobileMode) {\r\n      this.setListType(Helpers.parseListTypeFromUrl(this.$route.path));\r\n    }\r\n    await this.fetchData();\r\n  }\r\n\r\n  beforeDestroy() {\r\n    this.cancelPendingHighlightScroll();\r\n    this.$el.removeEventListener('wheel', this.cancelPendingHighlightScroll);\r\n    this.$el.removeEventListener('touchstart', this.cancelPendingHighlightScroll);\r\n  }\r\n\r\n  @Watch('currentBook.id')\r\n  @Watch('currentBookSection.id')\r\n  async onNavigationBookSection(to: number) {\r\n    if (to) {\r\n      this.cancelPendingHighlightScroll();\r\n      this.highlightScrollTimeout = window.setTimeout(this.scrollToHighlighted, 50);\r\n    }\r\n  }\r\n\r\n  cancelPendingHighlightScroll() {\r\n    if (this.highlightScrollTimeout !== undefined) {\r\n      window.clearTimeout(this.highlightScrollTimeout);\r\n      this.highlightScrollTimeout = undefined;\r\n    }\r\n  }\r\n\r\n  @Watch('navLanguage') // if user switch language in the left sidebar\r\n  async onNavLanguageChange(to: string, from: string) {\r\n    if (to !== from) {\r\n      await this.fetchData();\r\n      if (!this.mobileMode) {\r\n        this.$store.commit('navigation/updateFilterQuery', '');\r\n      }\r\n    }\r\n  }\r\n\r\n  @Watch('showSearchResults') // if user sent search request or switched back to catalog\r\n  async onShowSearchResultsChange(to: boolean, from: boolean) {\r\n    if (to !== from) {\r\n      await this.fetchData();\r\n    }\r\n  }\r\n\r\n  @Watch('$route')\r\n  async onRouteChange(to: Route, from: Route) {\r\n    if (this.isSearchResultsPage && this.getSearchParamsHash(from) !== this.getSearchParamsHash(to)) {\r\n      // if search params changed and we need to refresh left column search results\r\n      await this.fetchData();\r\n      this.$store.commit('navigation/setShowSearchResultsFlag', true);\r\n    }\r\n    if (!this.mobileMode) {\r\n      this.setListType(Helpers.parseListTypeFromUrl(to.path));\r\n    }\r\n    if (\r\n      this.listType === 'books' &&\r\n      to.params.book &&\r\n      from.params.book !== to.params.book &&\r\n      !this.currentBook\r\n    ) {\r\n      // if list type is books and book was changed and there is no book's data in the store - we assume that this book was not loaded due to book's letter was not expanded yet\r\n      await this.highlightLetter();\r\n    }\r\n    this.actualizeHighlight();\r\n  }\r\n\r\n  @Watch('listType')\r\n  onListTypeChange() {\r\n    this.actualizeHighlight();\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  async onChangeInterfaceLang() {\r\n    this.lists = {\r\n      categories: getTranslation('filterCategories'),\r\n      authors: getTranslation('filterAuthors'),\r\n      books: getTranslation('filterBooks')\r\n    };\r\n  }\r\n\r\n  get onLanguage() {\r\n    let beforeText = '';\r\n    let afterText = '';\r\n    if (this.interfaceLanguage == LANGUAGE_CODE_RUSSIAN) {\r\n      beforeText = getTranslation('books') + ' ';\r\n    } else {\r\n      afterText = ' ' + getTranslation('books').toLocaleLowerCase();\r\n    }\r\n\r\n    if (!this.navLanguage) {\r\n      return beforeText + '' + afterText;\r\n    }\r\n\r\n    return (\r\n      beforeText +\r\n      getTranslation(`onLanguageCatalog${StringService.capitalize(\r\n        this.navLanguage\r\n      )}` as keyof TranslationStrings) +\r\n      afterText\r\n    );\r\n  }\r\n\r\n  get showCheckboxes() {\r\n    if (this.mobileMode === 'library') {\r\n      return false;\r\n    }\r\n    if (this.mobileMode === 'search-area') {\r\n      return true;\r\n    }\r\n    return this.advancedSearch;\r\n  }\r\n\r\n  get isSearchResultsPage() {\r\n    return this.$route.name === 'search-results';\r\n  }\r\n\r\n  get showEntriesCount() {\r\n    return this.isSearchResultsPage && this.showSearchResults;\r\n  }\r\n\r\n  get filteredCategories() {\r\n    if (this.filterQuery && this.data.filter.categoryIds) {\r\n      return this.data.categories.filter(category => this.data.filter.categoryIds.includes(category.id));\r\n    }\r\n    return [];\r\n  }\r\n\r\n  get filteredAuthors() {\r\n    if (this.filterQuery && this.data.filter.authorIds) {\r\n      return this.data.authors.filter(author => this.data.filter.authorIds.includes(author.id));\r\n    }\r\n    return [];\r\n  }\r\n\r\n  get filteredBooks() {\r\n    return this.data.filter.bookSlugs.map(slug => this.data.books[slug]).filter(book => book);\r\n  }\r\n\r\n  get hasCatalogData() {\r\n    return !!(\r\n      this.data &&\r\n      (this.data.categories.length ||\r\n        this.data.authors.length ||\r\n        this.data.booksAlphabet.length ||\r\n        this.data.authorsAlphabet.length ||\r\n        Object.keys(this.data.books || {}).length)\r\n    );\r\n  }\r\n\r\n  get showBlockingCatalogError() {\r\n    return !!this.navigationError && !this.hasCatalogData;\r\n  }\r\n\r\n  async fetchData() {\r\n    if (!this.$store.state.navigation.language) {\r\n      return;\r\n    }\r\n\r\n    const routeQuery = typeof this.$route.query.query === 'string' ? this.$route.query.query.trim() : '';\r\n    if (this.isSearchResultsPage && this.showSearchResults && routeQuery) {\r\n      await this.$store.dispatch('navigation/searchBooks', {\r\n        language: this.$store.state.navigation.language,\r\n        query: routeQuery,\r\n        ...this.searchOptions\r\n      });\r\n    } else {\r\n      if (this.isSearchResultsPage && this.showSearchResults && !routeQuery) {\r\n        this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n      }\r\n      const language = this.$store.state.navigation.language;\r\n      const cachedData = this.$store.state.navigation.data[language];\r\n      const hasCachedCatalog =\r\n        this.mobileMode &&\r\n        cachedData &&\r\n        (cachedData.categories.length ||\r\n          cachedData.authors.length ||\r\n          cachedData.booksAlphabet.length ||\r\n          cachedData.authorsAlphabet.length);\r\n      if (hasCachedCatalog) {\r\n        this.actualizeHighlight();\r\n        return;\r\n      }\r\n      await this.$store.dispatch('navigation/fetch', this.$store.state.navigation.language);\r\n      if (this.listType === 'books' && this.$route.params.book) {\r\n        // since initially we don't know which letter should be highlighted in the book catalog, we have to send additional request to the backend\r\n        await this.highlightLetter();\r\n      }\r\n    }\r\n  }\r\n\r\n  async highlightLetter() {\r\n    await this.highlightLetterByBookSlug({\r\n      language: this.$route.params.language,\r\n      bookSlug: this.$route.params.book\r\n    });\r\n  }\r\n\r\n  getSearchParamsHash(route: Route) {\r\n    const searchParamNames = ['query', 'searchInPoem', 'exact', 'considerDiacritics', 'equalizeWriting'];\r\n    const result: { [key: string]: string } = {};\r\n    Object.entries(route.query)\r\n      .filter(([name]) => searchParamNames.includes(name))\r\n      .forEach(([name, value]) => {\r\n        result[name.toString()] = value.toString();\r\n      });\r\n    return JSON.stringify(result);\r\n  }\r\n\r\n  async changeListType(listType: ListType) {\r\n    this.setListType(listType);\r\n    await this.filter(this.filterQuery);\r\n    this.actualizeHighlight();\r\n  }\r\n\r\n  async onSearch(filterQuery: string) {\r\n    if (filterQuery.length) {\r\n      await this.filter(filterQuery);\r\n    } else {\r\n      this.$store.commit('navigation/resetFilter');\r\n    }\r\n    this.$store.commit('navigation/updateFilterQuery', filterQuery);\r\n    this.$forceUpdate();\r\n  }\r\n\r\n  async filter(filterQuery: string) {\r\n    if (!filterQuery) {\r\n      return;\r\n    }\r\n    await this.$store.dispatch('navigation/filter', {\r\n      language: this.$store.state.navigation.language,\r\n      query: filterQuery\r\n    });\r\n  }\r\n\r\n  scrollToHighlighted() {\r\n    this.highlightScrollTimeout = undefined;\r\n    if (!this.refTree) {\r\n      return;\r\n    }\r\n    const activeLinks = this.refTree.querySelectorAll('.router-link-active') as NodeListOf<HTMLElement>;\r\n    const highlight = activeLinks[activeLinks.length - 1];\r\n    const scroll = this.refTree.querySelector('.nav-catalog-tree-inner');\r\n    if (highlight && highlight.parentElement && scroll) {\r\n      scroll.scrollTo({\r\n        top: highlight.parentElement.offsetTop - this.refTree.offsetHeight * 0.5,\r\n        behavior: 'auto'\r\n      });\r\n    }\r\n  }\r\n\r\n  returnToCatalog() {\r\n    this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=5027b406&scoped=true&\"\nimport script from \"./Catalog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Catalog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=5027b406&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5027b406\",\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('div',{staticClass:\"books\"},[_c('h2',[_vm._v(_vm._s(_vm.getTranslation('catalogsUpdate')))]),_c('div',{staticClass:\"languages\"},[_c('NavRubrics',{attrs:{\"categories\":_vm.languages,\"current\":_vm.currentLanguage},on:{\"change\":_vm.changeLanguage}})],1),_c('div',{staticClass:\"list\"},_vm._l((_vm.newBooks),function(book,index){return _c('div',{key:(\"book-\" + index)},[(book.month)?_c('div',{staticClass:\"book-month\"},[_vm._v(\"\\n        \"+_vm._s(book.month)+\"\\n      \")]):_vm._e(),_c('router-link',{staticClass:\"book\",attrs:{\"to\":book.url}},[_c('div',{staticClass:\"book-title\"},[_vm._v(\"\\n          \"+_vm._s(book.name)+\"\\n        \")]),_c('div',{staticClass:\"book-author\"},[_vm._v(\"\\n          \"+_vm._s(book.authors.join(', '))+\"\\n        \")])])],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { store } from '@/store';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\n\r\nexport default class BooksService {\r\n  private static instance: BooksService;\r\n\r\n  private apiService: ApiService = new ApiService();\r\n\r\n  private static getInstance() {\r\n    if (!BooksService.instance) {\r\n      BooksService.instance = new BooksService();\r\n    }\r\n    return BooksService.instance;\r\n  }\r\n\r\n  static async getNewBooks() {\r\n    const endpoint = endpoints.books.newBooks;\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setParams({\r\n        language: store.state.reader.interfaceLanguage || LANGUAGE_CODE_DEFAULT\r\n      })\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getBookCover(lang: string, book: string) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.books.cover.replace(':lang', lang).replace(':book', book))\r\n      .setToken(store.state.auth.token)\r\n      .cache()\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getBookSectionContent(lang: string, book: string, section: string) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(\r\n        endpoints.books.content\r\n          .replace(':lang', lang)\r\n          .replace(':book', book)\r\n          .replace(':section', section)\r\n      )\r\n      .setToken(store.state.auth.token)\r\n      .cache()\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport NavRubrics from '@/components/nav/NavRubrics.vue';\r\nimport BooksService from '@/services/Api/BooksService';\r\nimport Component from 'vue-class-component';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport { State } from 'vuex-class';\r\n\r\ninterface Book {\r\n  language: string;\r\n  slug: string;\r\n  created_at: string;\r\n}\r\n\r\n@Component({\r\n  components: { NavRubrics }\r\n})\r\nexport default class NewBooks extends Vue {\r\n  newBooksAll: Array<Book> = [];\r\n  newBooks: Array<Book> = [];\r\n  currentLanguage: string = 'all';\r\n  languages: { [key: string]: string } | null = null;\r\n  getTranslation = getTranslation;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  created() {\r\n    this.languages = {\r\n      all: getTranslation('all'),\r\n      ru: getTranslation('onLanguageRu'),\r\n      en: getTranslation('onLanguageEn')\r\n    };\r\n  }\r\n\r\n  async mounted() {\r\n    await this.getNewBooks();\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  async onChangeInterfaceLang() {\r\n    this.languages = {\r\n      all: getTranslation('all'),\r\n      ru: getTranslation('onLanguageRu'),\r\n      en: getTranslation('onLanguageEn')\r\n    };\r\n    await this.getNewBooks();\r\n  }\r\n\r\n  async getNewBooks() {\r\n    try {\r\n      this.newBooksAll = await BooksService.getNewBooks();\r\n      this.newBooksAll = this.newBooksAll.map(book => ({\r\n        ...book,\r\n        url: UrlBuilderService.getBookUrl({ language: book.language, bookSlug: book.slug })\r\n      }));\r\n      this.changeLanguage('all');\r\n    } catch (e) {\r\n      // do nothing\r\n    }\r\n  }\r\n\r\n  prepareMonths() {\r\n    let previousMonth = '';\r\n    this.newBooks = this.newBooks.map(newBook => {\r\n      if (newBook.created_at === previousMonth) {\r\n        return newBook;\r\n      }\r\n      previousMonth = newBook.created_at;\r\n      return {\r\n        ...newBook,\r\n        month: newBook.created_at\r\n      };\r\n    });\r\n  }\r\n\r\n  changeLanguage(language: 'all' | 'ru' | 'en') {\r\n    if (language === 'all') {\r\n      this.newBooks = this.newBooksAll.slice(0);\r\n    } else {\r\n      this.newBooks = this.newBooksAll.filter(book => book.language === language);\r\n    }\r\n    this.prepareMonths();\r\n    this.currentLanguage = language;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewBooks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewBooks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewBooks.vue?vue&type=template&id=769dda2a&scoped=true&\"\nimport script from \"./NewBooks.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewBooks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewBooks.vue?vue&type=style&index=0&id=769dda2a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"769dda2a\",\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('div',{staticClass:\"settings\"},[_c('div',{staticClass:\"item\"},[_c('span',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.getTranslation('interfaceLanguage')))]),_c('div',{staticClass:\"item-options\"},[_c('button',{staticClass:\"item-option\",class:{ active: _vm.interfaceLanguage === _vm.LANGUAGE_CODE_RUSSIAN },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setInterfaceLanguage(_vm.LANGUAGE_CODE_RUSSIAN)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('russian'))+\"\\n      \")]),_c('button',{staticClass:\"item-option\",class:{ active: _vm.interfaceLanguage === _vm.LANGUAGE_CODE_ENGLISH },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setInterfaceLanguage(_vm.LANGUAGE_CODE_ENGLISH)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('english'))+\"\\n      \")])])]),_c('div',{staticClass:\"item item-catalog-density\"},[_c('span',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.getTranslation('structureScale')))]),_c('div',{staticClass:\"item-options\"},[_c('button',{staticClass:\"item-option\",class:{ active: _vm.catalogListScale === _vm.LIST_SCALE_TABLET },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setCatalogListScale(_vm.LIST_SCALE_TABLET)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('tablet'))+\"\\n      \")]),_c('button',{staticClass:\"item-option\",class:{ active: _vm.catalogListScale === _vm.LIST_SCALE_DESKTOP },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setCatalogListScale(_vm.LIST_SCALE_DESKTOP)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('pc'))+\"\\n      \")]),_c('button',{staticClass:\"item-option\",class:{ active: _vm.catalogListScale === _vm.LIST_SCALE_AUTO },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setCatalogListScale(_vm.LIST_SCALE_AUTO)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('auto'))+\"\\n      \")])])]),(_vm.showTextVisibility)?_c('div',{staticClass:\"item item-text-visibility\"},[_c('span',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.getTranslation('show')))]),_c('div',{staticClass:\"settings-text-types\",attrs:{\"role\":\"group\",\"aria-label\":_vm.getTranslation('show')}},_vm._l((_vm.textTypes),function(textType){return _c('Checkbox',{key:textType.code,staticClass:\"settings-text-type\",attrs:{\"checked\":_vm.isTextTypeVisible(textType.code)},on:{\"change\":function($event){return _vm.switchTextTypeFilter(textType.code)}}},[_vm._v(\"\\n        \"+_vm._s(textType.name)+\"\\n      \")])}),1)]):_vm._e(),_c('div',{staticClass:\"item item-text-scale\"},[_c('span',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.getTranslation('textScale')))]),_c('div',{staticClass:\"scale-control\"},[_c('button',{staticClass:\"item-scale\",attrs:{\"type\":\"button\",\"aria-label\":((_vm.getTranslation('textScale')) + \" -\"),\"disabled\":_vm.scale <= 0.6},on:{\"click\":function($event){return _vm.setScale(_vm.scale - 0.1)}}},[_c('MinusIcon')],1),_c('span',{staticClass:\"item-percents\"},[_vm._v(_vm._s(Math.round(_vm.scale * 100))+\"%\")]),_c('button',{staticClass:\"item-scale\",attrs:{\"type\":\"button\",\"aria-label\":((_vm.getTranslation('textScale')) + \" +\"),\"disabled\":_vm.scale >= 1.5},on:{\"click\":function($event){return _vm.setScale(_vm.scale + 0.1)}}},[_c('PlusIcon')],1)])]),_c('div',{staticClass:\"example\"},[_c('div',{staticClass:\"note\"},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('textExample'))+\"\\n    \")]),_c('SettingsExample')],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:\"settings-example\",class:_vm.$store.state.reader.colorMode || 'light',style:({ fontSize: ((10 * _vm.scale) + \"px\") })},[_c('h1',{staticClass:\"title\"},[_vm._v(\"БГ 3.4\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isTextTypeVisible('sanskrit')),expression:\"isTextTypeVisible('sanskrit')\"}],staticClass:\"paragraph paragraph--type-sanskrit\"},[_vm._v(\"\\n    न कर्मणामनारम्भान्नैष्कर्म्यं पुरुषोऽश्नुते ।\\n  \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isTextTypeVisible('diacritic')),expression:\"isTextTypeVisible('diacritic')\"}],staticClass:\"paragraph paragraph--type-diacritic\"},[_c('p',[_vm._v(\"na karmaṇām anārambhān naiṣkarmyaṁ puruṣo 'śnute\")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isTextTypeVisible('word-by-word')),expression:\"isTextTypeVisible('word-by-word')\"}],staticClass:\"paragraph paragraph--type-word-by-word\"},[_c('div',{staticClass:\"note\"},[_vm._v(\"\\n      Пословный перевод:\\n    \")]),_vm._m(0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isTextTypeVisible('translate')),expression:\"isTextTypeVisible('translate')\"}],staticClass:\"paragraph paragraph--type-literary\"},[_c('div',{staticClass:\"note\"},[_vm._v(\"\\n      Перевод:\\n    \")]),_c('p',[_vm._v(\"\\n      Просто воздерживаясь от деятельности, человек не освободится от её последствий.\\n    \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isTextTypeVisible('comment')),expression:\"isTextTypeVisible('comment')\"}],staticClass:\"paragraph paragraph--type-comment\"},[_c('div',{staticClass:\"note\"},[_vm._v(\"\\n      Комментарий:\\n    \")]),_c('p',[_vm._v(\"\\n      Отречься от мира может только тот, кто очистился от материальной скверны, выполняя предписанные ему\\n      обязанности. Различные виды деятельности рекомендованы в Ведах прежде всего для того, чтобы очистить\\n      сердце оскверненных материализмом людей.\\n    \")])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('em',[_vm._v(\"na\")]),_vm._v(\" — не; \"),_c('em',[_vm._v(\"karmaṇām\")]),_vm._v(\" — предписанных обязанностей; \"),_c('em',[_vm._v(\"anārambhāt\")]),_vm._v(\" — без исполнения;\\n      \"),_c('em',[_vm._v(\"naiṣkarmyam\")]),_vm._v(\" — свободы от последствий деятельности.\\n    \")])}]\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport { State } from 'vuex-class';\r\n\r\n@Component({\r\n  components: { Overlay }\r\n})\r\nexport default class SettingsExample extends Vue {\r\n  @State('scale', { namespace: 'reader' })\r\n  scale!: number;\r\n\r\n  @State('hideTextTypes', { namespace: 'reader' })\r\n  hideTextTypes!: Array<string>;\r\n\r\n  isTextTypeVisible(code: string) {\r\n    return !this.hideTextTypes || !this.hideTextTypes.includes(code);\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsExample.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsExample.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsExample.vue?vue&type=template&id=2f7dbebe&scoped=true&\"\nimport script from \"./SettingsExample.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsExample.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SettingsExample.vue?vue&type=style&index=0&id=2f7dbebe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2f7dbebe\",\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\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport SettingsExample from '@/components/settings/SettingsExample.vue';\r\nimport Checkbox from '@/components/ui/Checkbox.vue';\r\nimport MinusIcon from '@/assets/icons/minus.svg';\r\nimport PlusIcon from '@/assets/icons/plus.svg';\r\nimport {\r\n  LANGUAGE_CODE_RUSSIAN,\r\n  LANGUAGE_CODE_ENGLISH,\r\n  LIST_SCALE_TABLET,\r\n  LIST_SCALE_DESKTOP,\r\n  LIST_SCALE_AUTO\r\n} from '@/constants';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component({\r\n  components: { SettingsExample, Checkbox, Overlay, MinusIcon, PlusIcon }\r\n})\r\nexport default class Settings extends Vue {\r\n  @Prop({ required: false, default: false })\r\n  showTextVisibility!: boolean;\r\n\r\n  LANGUAGE_CODE_RUSSIAN = LANGUAGE_CODE_RUSSIAN;\r\n  LANGUAGE_CODE_ENGLISH = LANGUAGE_CODE_ENGLISH;\r\n  LIST_SCALE_TABLET = LIST_SCALE_TABLET;\r\n  LIST_SCALE_DESKTOP = LIST_SCALE_DESKTOP;\r\n  LIST_SCALE_AUTO = LIST_SCALE_AUTO;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @State('scale', { namespace: 'reader' })\r\n  scale!: number;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  @State('catalogListScale', { namespace: 'reader' })\r\n  catalogListScale!: string;\r\n\r\n  @State('hideTextTypes', { namespace: 'reader' })\r\n  hideTextTypes!: Array<string>;\r\n\r\n  @Mutation('setScale', { namespace: 'reader' })\r\n  setScale!: Function;\r\n\r\n  @Mutation('setInterfaceLanguage', { namespace: 'reader' })\r\n  setInterfaceLanguage!: Function;\r\n\r\n  @Mutation('setCatalogListScale', { namespace: 'reader' })\r\n  setCatalogListScale!: Function;\r\n\r\n  @Mutation('switchTextTypeFilter', { namespace: 'reader' })\r\n  switchTextTypeFilter!: Function;\r\n\r\n  get textTypes() {\r\n    return [\r\n      { code: 'sanskrit', name: getTranslation('sanskrit') },\r\n      { code: 'diacritic', name: getTranslation('diacritic') },\r\n      { code: 'word-by-word', name: getTranslation('wordByWordTranslation') },\r\n      { code: 'translate', name: getTranslation('translation') },\r\n      { code: 'comment', name: getTranslation('comment') }\r\n    ];\r\n  }\r\n\r\n  isTextTypeVisible(code: string) {\r\n    return !this.hideTextTypes || !this.hideTextTypes.includes(code);\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=51e6b620&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=51e6b620&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"51e6b620\",\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('nav',{staticClass:\"mobile-navigation\",attrs:{\"aria-label\":_vm.getTranslation('navigation')}},_vm._l((_vm.items),function(item){return _c('button',{key:item.code,staticClass:\"mobile-navigation-item\",class:[(\"mobile-navigation-item-\" + (item.code)), { active: _vm.active === item.code }],attrs:{\"type\":\"button\",\"aria-current\":_vm.active === item.code ? 'page' : undefined,\"disabled\":item.code === 'reading' && !_vm.readingAvailable},on:{\"click\":function($event){return _vm.$emit('navigate', item.code)}}},[_c('span',{staticClass:\"mobile-navigation-content\"},[_c('span',{staticClass:\"mobile-navigation-icon\",attrs:{\"aria-hidden\":\"true\"}},[_c(item.icon,{tag:\"component\"})],1),_c('span',{staticClass:\"mobile-navigation-label\"},[_vm._v(_vm._s(item.label))])])])}),0)}\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport IconLibrary from '@/assets/icons/nav-book.svg';\r\nimport IconSearch from '@/assets/icons/zoom.svg';\r\nimport IconReading from '@/assets/icons/book.svg';\r\nimport IconBookmark from '@/assets/icons/bookmark-nav.svg';\r\nimport IconSettings from '@/assets/icons/settings.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { IconLibrary, IconSearch, IconReading, IconBookmark, IconSettings }\r\n})\r\nexport default class MobileNavigation extends Vue {\r\n  @Prop({ required: true })\r\n  active!: string;\r\n\r\n  @Prop({ required: false, default: false })\r\n  readingAvailable!: boolean;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  items = this.getItems();\r\n\r\n  @Watch('$store.state.reader.interfaceLanguage')\r\n  onInterfaceLanguageChange() {\r\n    this.items = this.getItems();\r\n  }\r\n\r\n  getItems() {\r\n    return [\r\n      { code: 'library', label: getTranslation('library'), icon: IconLibrary },\r\n      { code: 'search', label: getTranslation('search'), icon: IconSearch },\r\n      { code: 'reading', label: getTranslation('reading'), icon: IconReading },\r\n      { code: 'bookmarks', label: getTranslation('bookmarks'), icon: IconBookmark },\r\n      { code: 'settings', label: getTranslation('settings'), icon: IconSettings }\r\n    ];\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileNavigation.vue?vue&type=template&id=185b04a8&scoped=true&\"\nimport script from \"./MobileNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobileNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MobileNavigation.vue?vue&type=style&index=0&id=185b04a8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"185b04a8\",\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('section',{staticClass:\"mobile-bookmarks\"},[_c('header',{staticClass:\"mobile-screen-header\"},[_c('div',{staticClass:\"mobile-screen-title\"},[_c('h1',[_vm._v(_vm._s(_vm.getTranslation('bookmarks')))]),_c('span',{staticClass:\"bookmarks-count\"},[_vm._v(_vm._s(_vm.bookmarks.length))])])]),(_vm.bookmarks.length)?_c('div',{staticClass:\"bookmarks-list\"},_vm._l((_vm.bookmarks),function(bookmark){return _c('article',{key:bookmark.id,staticClass:\"bookmark-item\"},[_c('button',{staticClass:\"bookmark-main\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('open', bookmark)}}},[_c('span',{staticClass:\"bookmark-icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('IconBookmark')],1),_c('span',{staticClass:\"bookmark-copy\"},[_c('span',{staticClass:\"bookmark-kind\"},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('bookmark'))+\"\\n          \")]),_c('span',{staticClass:\"bookmark-title\"},[_vm._v(_vm._s(bookmark.bookName))]),_c('span',{staticClass:\"bookmark-meta\"},[_c('span',{staticClass:\"bookmark-language\"},[_vm._v(_vm._s(_vm.languageLabel(bookmark)))]),(bookmark.location)?_c('span',{staticClass:\"bookmark-location\"},[_vm._v(_vm._s(bookmark.location))]):_vm._e()]),(bookmark.note)?_c('span',{staticClass:\"bookmark-note\"},[_vm._v(_vm._s(bookmark.note))]):_vm._e()])]),_c('button',{staticClass:\"bookmark-delete nav-icon\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('deleteBookmark')},on:{\"click\":function($event){return _vm.$emit('remove', bookmark)}}},[_c('IconCross')],1)])}),0):_c('div',{staticClass:\"bookmarks-empty\"},[_c('IconBookmark'),_c('p',[_vm._v(_vm._s(_vm.getTranslation('noBookmarks')))])],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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { Bookmark } from '@/store/modules/bookmarks';\r\nimport IconBookmark from '@/assets/icons/bookmark.svg';\r\nimport IconCross from '@/assets/icons/cross.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({ components: { IconBookmark, IconCross } })\r\nexport default class MobileBookmarks extends Vue {\r\n  @Prop({ required: true })\r\n  bookmarks!: Array<Bookmark>;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  languageLabel(bookmark: Bookmark) {\r\n    const language = bookmark.language.toUpperCase();\r\n    return language === 'ST' ? 'SAN' : language;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileBookmarks.vue?vue&type=template&id=7ced25c6&scoped=true&\"\nimport script from \"./MobileBookmarks.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobileBookmarks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MobileBookmarks.vue?vue&type=style&index=0&id=7ced25c6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7ced25c6\",\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('transition',{attrs:{\"name\":\"theme-sheet\"}},[(_vm.visible)?_c('div',{staticClass:\"theme-picker-container\"},[_c('button',{staticClass:\"theme-picker-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){return _vm.$emit('close')}}}),_c('section',{ref:\"dialog\",staticClass:\"theme-picker\",class:{ dragging: _vm.dragging },style:({ transform: _vm.dragOffset ? (\"translate(-50%, \" + _vm.dragOffset + \"px)\") : undefined }),attrs:{\"role\":\"dialog\",\"aria-modal\":\"true\",\"aria-label\":_vm.getTranslation('colorTheme'),\"tabindex\":\"-1\"}},[_c('header',{staticClass:\"theme-picker-header\",on:{\"pointerdown\":_vm.startDrag,\"pointermove\":_vm.moveDrag,\"pointerup\":_vm.endDrag,\"pointercancel\":_vm.cancelDrag}},[_c('span',{staticClass:\"theme-picker-handle\"}),_c('h2',[_vm._v(_vm._s(_vm.getTranslation('colorTheme')))])]),_c('div',{staticClass:\"theme-options\",attrs:{\"role\":\"radiogroup\",\"aria-label\":_vm.getTranslation('colorTheme')}},_vm._l((_vm.themes),function(theme){return _c('button',{key:theme.code,staticClass:\"theme-option\",class:{ active: _vm.colorMode === theme.code },attrs:{\"type\":\"button\",\"role\":\"radio\",\"aria-checked\":String(_vm.colorMode === theme.code)},on:{\"click\":function($event){return _vm.selectTheme(theme.code)}}},[_c('span',{staticClass:\"theme-preview\",class:theme.code},[_c('span'),_c('span'),_c('span')]),_c('span',{staticClass:\"theme-name\"},[_vm._v(_vm._s(theme.name))])])}),0)])]):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { Mutation, State } from 'vuex-class';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\ntype ColorMode = 'light' | 'mixed' | 'dark';\r\n\r\n@Component\r\nexport default class MobileReaderThemePicker extends Vue {\r\n  @Prop({ required: true, default: false })\r\n  visible!: boolean;\r\n\r\n  @State('colorMode', { namespace: 'reader' })\r\n  colorMode!: ColorMode;\r\n\r\n  @Mutation('setColorMode', { namespace: 'reader' })\r\n  setColorMode!: (colorMode: ColorMode) => void;\r\n\r\n  dragStartY: number | null = null;\r\n\r\n  dragOffset: number = 0;\r\n\r\n  dragPointerId: number | null = null;\r\n\r\n  dragging: boolean = false;\r\n\r\n  previouslyFocused: HTMLElement | null = null;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  get themes() {\r\n    return [\r\n      { code: 'light' as ColorMode, name: getTranslation('colorThemeLight') },\r\n      { code: 'mixed' as ColorMode, name: getTranslation('colorThemeMixed') },\r\n      { code: 'dark' as ColorMode, name: getTranslation('colorThemeDark') }\r\n    ];\r\n  }\r\n\r\n  mounted() {\r\n    document.addEventListener('keydown', this.onDocumentKeydown);\r\n    if (this.visible) {\r\n      this.focusDialog();\r\n    }\r\n  }\r\n\r\n  beforeDestroy() {\r\n    document.removeEventListener('keydown', this.onDocumentKeydown);\r\n    this.restoreFocus();\r\n  }\r\n\r\n  @Watch('visible')\r\n  onVisibleChange(visible: boolean) {\r\n    if (visible) {\r\n      this.focusDialog();\r\n    } else {\r\n      this.restoreFocus();\r\n    }\r\n  }\r\n\r\n  selectTheme(theme: ColorMode) {\r\n    this.setColorMode(theme);\r\n  }\r\n\r\n  focusDialog() {\r\n    const activeElement = document.activeElement;\r\n    this.previouslyFocused =\r\n      activeElement instanceof HTMLElement && activeElement !== document.body ? activeElement : null;\r\n    this.$nextTick(() => {\r\n      const dialog = this.$refs.dialog as HTMLElement;\r\n      if (dialog) {\r\n        dialog.focus();\r\n      }\r\n    });\r\n  }\r\n\r\n  restoreFocus() {\r\n    if (this.previouslyFocused && document.contains(this.previouslyFocused)) {\r\n      this.previouslyFocused.focus();\r\n    }\r\n    this.previouslyFocused = null;\r\n  }\r\n\r\n  onDocumentKeydown(event: KeyboardEvent) {\r\n    if (!this.visible) {\r\n      return;\r\n    }\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      this.$emit('close');\r\n      return;\r\n    }\r\n    if (event.key !== 'Tab') {\r\n      return;\r\n    }\r\n    const dialog = this.$refs.dialog as HTMLElement;\r\n    const options = dialog\r\n      ? (Array.from(dialog.querySelectorAll('button:not([disabled])')) as HTMLElement[])\r\n      : [];\r\n    if (!options.length) {\r\n      event.preventDefault();\r\n      dialog.focus();\r\n      return;\r\n    }\r\n    const first = options[0];\r\n    const last = options[options.length - 1];\r\n    if (event.shiftKey && (document.activeElement === first || document.activeElement === dialog)) {\r\n      event.preventDefault();\r\n      last.focus();\r\n    } else if (!event.shiftKey && document.activeElement === last) {\r\n      event.preventDefault();\r\n      first.focus();\r\n    }\r\n  }\r\n\r\n  startDrag(event: PointerEvent) {\r\n    this.dragPointerId = event.pointerId;\r\n    this.dragStartY = event.clientY;\r\n    this.dragging = true;\r\n    const target = event.currentTarget as HTMLElement;\r\n    if (target.setPointerCapture) {\r\n      target.setPointerCapture(event.pointerId);\r\n    }\r\n  }\r\n\r\n  moveDrag(event: PointerEvent) {\r\n    if (this.dragStartY === null || this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    this.dragOffset = Math.max(0, event.clientY - this.dragStartY);\r\n    if (this.dragOffset && event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  endDrag(event: PointerEvent) {\r\n    if (this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    if (this.dragOffset >= 64) {\r\n      this.resetDrag();\r\n      this.$emit('close');\r\n      return;\r\n    }\r\n    this.resetDrag();\r\n  }\r\n\r\n  cancelDrag() {\r\n    this.resetDrag();\r\n  }\r\n\r\n  resetDrag() {\r\n    this.dragStartY = null;\r\n    this.dragOffset = 0;\r\n    this.dragPointerId = null;\r\n    this.dragging = false;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileReaderThemePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileReaderThemePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileReaderThemePicker.vue?vue&type=template&id=7845a36e&scoped=true&\"\nimport script from \"./MobileReaderThemePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobileReaderThemePicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MobileReaderThemePicker.vue?vue&type=style&index=0&id=7845a36e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7845a36e\",\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.visible)?_c('div',{staticClass:\"bookmark-sheet-layer\"},[_c('button',{staticClass:\"bookmark-sheet-backdrop\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":function($event){return _vm.$emit('close')}}}),_c('section',{staticClass:\"bookmark-sheet\",class:{ dragging: _vm.dragging },style:({ transform: (\"translateY(\" + _vm.dragOffset + \"px)\") }),attrs:{\"aria-label\":_vm.getTranslation('bookmarks')}},[_c('div',{staticClass:\"bookmark-sheet-drag-zone\",on:{\"pointerdown\":_vm.startDrag,\"pointermove\":_vm.moveDrag,\"pointerup\":_vm.finishDrag,\"pointercancel\":_vm.finishDrag}},[_c('span',{staticClass:\"bookmark-sheet-handle\"})]),_c('div',{staticClass:\"bookmark-sheet-content\"},[_c('header',[_c('span',[_vm._v(_vm._s(_vm.getTranslation('bookmarks')))]),_c('h2',[_vm._v(_vm._s(_vm.currentTab ? _vm.currentTab.bookName : ''))])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.draftNote),expression:\"draftNote\"}],staticClass:\"bookmark-note-input new-bookmark-note\",attrs:{\"placeholder\":_vm.getTranslation('bookmarkNotePlaceholder'),\"rows\":\"2\"},domProps:{\"value\":(_vm.draftNote)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.draftNote=$event.target.value},_vm.resizeTextarea]}}),_c('button',{staticClass:\"add-bookmark-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addBookmark}},[_c('IconBookmark'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('addBookmarkHere')))])],1),(_vm.manualBookmarks.length)?_c('div',{staticClass:\"bookmarks-in-book\"},[_c('div',{staticClass:\"bookmarks-in-book-heading\"},[_c('span',[_vm._v(_vm._s(_vm.getTranslation('bookmarks')))]),_c('small',[_vm._v(_vm._s(_vm.manualBookmarks.length))])]),_vm._l((_vm.manualBookmarks),function(bookmark){return _c('article',{key:bookmark.id,staticClass:\"bookmark-in-book\",class:{ editing: _vm.editingBookmarkId === bookmark.id }},[_c('div',{staticClass:\"bookmark-in-book-header\"},[_c('div',{staticClass:\"bookmark-in-book-copy\"},[_c('span',[_vm._v(_vm._s(bookmark.location))]),_c('small',[_vm._v(_vm._s(_vm.progressLabel(bookmark)))]),(bookmark.note && _vm.editingBookmarkId !== bookmark.id)?_c('p',[_vm._v(_vm._s(bookmark.note))]):_vm._e()]),(_vm.editingBookmarkId !== bookmark.id)?_c('button',{staticClass:\"bookmark-actions-toggle\",class:{ active: _vm.openActionsBookmarkId === bookmark.id },attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('moreActions'),\"aria-expanded\":String(_vm.openActionsBookmarkId === bookmark.id)},on:{\"click\":function($event){return _vm.toggleActions(bookmark)}}},[_c('IconMore')],1):_vm._e()]),(_vm.openActionsBookmarkId === bookmark.id && _vm.editingBookmarkId !== bookmark.id)?_c('div',{staticClass:\"bookmark-actions-menu vertical\",attrs:{\"role\":\"menu\"}},[_c('button',{staticClass:\"edit-bookmark-button\",attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":function($event){return _vm.startEditing(bookmark)}}},[_c('span',{staticClass:\"bookmark-action-icon\"},[_c('IconNote')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('edit')))])]),_c('button',{staticClass:\"move-bookmark-button\",attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":function($event){return _vm.moveBookmark(bookmark)}}},[_c('span',{staticClass:\"bookmark-action-icon\"},[_c('IconReturn')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('moveBookmarkHere')))])]),_c('button',{staticClass:\"remove-bookmark-button\",attrs:{\"type\":\"button\",\"role\":\"menuitem\"},on:{\"click\":function($event){return _vm.removeBookmark(bookmark)}}},[_c('span',{staticClass:\"bookmark-action-icon\"},[_c('IconCross')],1),_c('span',[_vm._v(_vm._s(_vm.getTranslation('deleteBookmark')))])])]):_vm._e(),(_vm.editingBookmarkId === bookmark.id)?_c('div',{staticClass:\"bookmark-note-editor\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editingNote),expression:\"editingNote\"}],staticClass:\"bookmark-note-input bookmark-note-edit\",attrs:{\"aria-label\":_vm.getTranslation('note'),\"rows\":\"2\"},domProps:{\"value\":(_vm.editingNote)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.editingNote=$event.target.value},_vm.resizeTextarea]}}),_c('div',{staticClass:\"bookmark-edit-actions\"},[_c('button',{staticClass:\"save-bookmark-note-button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.saveNote(bookmark)}}},[_vm._v(\"\\n                \"+_vm._s(_vm.getTranslation('save'))+\"\\n              \")]),_c('button',{staticClass:\"move-edited-bookmark-button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.moveEditedBookmark(bookmark)}}},[_c('IconReturn'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('moveBookmarkHere')))])],1),_c('button',{staticClass:\"cancel-bookmark-edit-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.cancelEditing}},[_vm._v(\"\\n                \"+_vm._s(_vm.getTranslation('cancel'))+\"\\n              \")])])]):_vm._e()])})],2):_vm._e()])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"12\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M2.5 4.514h7m-7 6.019h4M2.5 7.5h7m2 7.046H.5V.502h11v14.043z\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { Bookmark } from '@/store/modules/bookmarks';\r\nimport { Tab } from '@/store/modules/tabs';\r\nimport IconBookmark from '@/assets/icons/bookmark.svg';\r\nimport IconCross from '@/assets/icons/cross.svg';\r\nimport IconMore from '@/assets/icons/more.svg';\r\nimport IconNote from '@/assets/icons/note.svg';\r\nimport IconReturn from '@/assets/icons/return.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({ components: { IconBookmark, IconCross, IconMore, IconNote, IconReturn } })\r\nexport default class MobileBookmarkSheet extends Vue {\r\n  @Prop({ required: true })\r\n  visible!: boolean;\r\n\r\n  @Prop({ default: null })\r\n  currentTab!: Tab | null;\r\n\r\n  @Prop({ required: true })\r\n  bookmarks!: Array<Bookmark>;\r\n\r\n  dragOffset = 0;\r\n  dragStartY = 0;\r\n  dragging = false;\r\n  draftNote = '';\r\n  editingBookmarkId: string | number | null = null;\r\n  editingNote = '';\r\n  openActionsBookmarkId: string | number | null = null;\r\n  getTranslation = getTranslation;\r\n\r\n  get manualBookmarks() {\r\n    if (!this.currentTab || !this.currentTab.bookKey) {\r\n      return [];\r\n    }\r\n    return this.bookmarks.filter(\r\n      bookmark => bookmark.type === 'manual' && bookmark.bookKey === this.currentTab!.bookKey\r\n    );\r\n  }\r\n\r\n  @Watch('visible')\r\n  resetDrag() {\r\n    this.dragOffset = 0;\r\n    this.dragging = false;\r\n    this.draftNote = '';\r\n    this.editingBookmarkId = null;\r\n    this.editingNote = '';\r\n    this.openActionsBookmarkId = null;\r\n  }\r\n\r\n  startDrag(event: PointerEvent) {\r\n    this.dragging = true;\r\n    this.dragStartY = event.clientY;\r\n    (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\r\n  }\r\n\r\n  moveDrag(event: PointerEvent) {\r\n    if (!this.dragging) {\r\n      return;\r\n    }\r\n    this.dragOffset = Math.max(0, event.clientY - this.dragStartY);\r\n  }\r\n\r\n  finishDrag(event: PointerEvent) {\r\n    if (!this.dragging) {\r\n      return;\r\n    }\r\n    this.dragging = false;\r\n    if ((event.currentTarget as HTMLElement).hasPointerCapture(event.pointerId)) {\r\n      (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\r\n    }\r\n    if (this.dragOffset > 72) {\r\n      this.$emit('close');\r\n    }\r\n    this.dragOffset = 0;\r\n  }\r\n\r\n  progressLabel(bookmark: Bookmark) {\r\n    return `${Math.round(bookmark.position * 100)}%`;\r\n  }\r\n\r\n  addBookmark() {\r\n    this.$emit('add', this.draftNote.trim());\r\n    this.draftNote = '';\r\n  }\r\n\r\n  toggleActions(bookmark: Bookmark) {\r\n    this.openActionsBookmarkId = this.openActionsBookmarkId === bookmark.id ? null : bookmark.id;\r\n  }\r\n\r\n  startEditing(bookmark: Bookmark) {\r\n    this.editingBookmarkId = bookmark.id;\r\n    this.editingNote = bookmark.note || '';\r\n    this.openActionsBookmarkId = null;\r\n    this.$nextTick(() => {\r\n      const textarea = this.$el.querySelector('.bookmark-in-book.editing .bookmark-note-edit');\r\n      if (textarea instanceof HTMLTextAreaElement) {\r\n        this.resizeTextarea(textarea);\r\n        textarea.focus();\r\n      }\r\n    });\r\n  }\r\n\r\n  saveNote(bookmark: Bookmark) {\r\n    this.$emit('note', { bookmark, note: this.editingNote.trim() });\r\n    this.cancelEditing();\r\n  }\r\n\r\n  moveBookmark(bookmark: Bookmark) {\r\n    this.openActionsBookmarkId = null;\r\n    this.$emit('move', bookmark);\r\n  }\r\n\r\n  moveEditedBookmark(bookmark: Bookmark) {\r\n    this.$emit('move', { ...bookmark, note: this.editingNote.trim() });\r\n    this.cancelEditing();\r\n  }\r\n\r\n  removeBookmark(bookmark: Bookmark) {\r\n    this.openActionsBookmarkId = null;\r\n    this.$emit('remove', bookmark);\r\n  }\r\n\r\n  cancelEditing() {\r\n    this.editingBookmarkId = null;\r\n    this.editingNote = '';\r\n  }\r\n\r\n  resizeTextarea(eventOrElement: Event | HTMLTextAreaElement) {\r\n    const textarea =\r\n      eventOrElement instanceof HTMLTextAreaElement\r\n        ? eventOrElement\r\n        : (eventOrElement.currentTarget as HTMLTextAreaElement);\r\n    textarea.style.height = 'auto';\r\n    textarea.style.height = `${textarea.scrollHeight}px`;\r\n    textarea.style.overflowY = 'hidden';\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarkSheet.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileBookmarkSheet.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileBookmarkSheet.vue?vue&type=template&id=7e66e80a&scoped=true&\"\nimport script from \"./MobileBookmarkSheet.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobileBookmarkSheet.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MobileBookmarkSheet.vue?vue&type=style&index=0&id=7e66e80a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7e66e80a\",\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('div',{staticClass:\"presentation-controls\",class:{ visible: _vm.visible, 'settings-open': _vm.settingsVisible },on:{\"click\":function($event){$event.stopPropagation();}}},[_c('header',{staticClass:\"presentation-header\"},[_c('div',{staticClass:\"presentation-brand\"},[_vm._v(\"VEDARAMA\")]),_c('div',{staticClass:\"presentation-identity\"},[_c('span',[_vm._v(_vm._s(_vm.bookTitle))]),_c('strong',[_vm._v(_vm._s(_vm.sectionTitle))])]),_c('button',{staticClass:\"presentation-exit\",attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('exitPresentationMode')},on:{\"click\":function($event){return _vm.$emit('exit')}}},[_c('IconCross'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('exitPresentationMode')))])],1)]),_c('button',{staticClass:\"presentation-edge presentation-edge-previous\",attrs:{\"type\":\"button\",\"disabled\":!_vm.hasPrevious,\"aria-label\":_vm.getTranslation('previousSection')},on:{\"click\":function($event){return _vm.$emit('previous')}}},[_c('IconArrowLeft')],1),_c('button',{staticClass:\"presentation-edge presentation-edge-next\",attrs:{\"type\":\"button\",\"disabled\":!_vm.hasNext,\"aria-label\":_vm.getTranslation('nextSection')},on:{\"click\":function($event){return _vm.$emit('next')}}},[_c('IconArrowRight')],1),_c('footer',{staticClass:\"presentation-footer\"},[_c('button',{staticClass:\"presentation-nav-button\",attrs:{\"type\":\"button\",\"disabled\":!_vm.hasPrevious,\"aria-label\":_vm.getTranslation('previousSection')},on:{\"click\":function($event){return _vm.$emit('previous')}}},[_c('IconArrowLeft')],1),_c('div',{staticClass:\"presentation-position\",attrs:{\"aria-live\":\"polite\"}},[_c('strong',[_vm._v(_vm._s(_vm.sectionTitle))]),_c('span',[_vm._v(_vm._s(_vm.currentIndex + 1)+\" / \"+_vm._s(_vm.totalSections))])]),_c('button',{staticClass:\"presentation-nav-button\",attrs:{\"type\":\"button\",\"disabled\":!_vm.hasNext,\"aria-label\":_vm.getTranslation('nextSection')},on:{\"click\":function($event){return _vm.$emit('next')}}},[_c('IconArrowRight')],1),_c('span',{staticClass:\"presentation-footer-divider\"}),_c('button',{staticClass:\"presentation-settings-button\",class:{ active: _vm.settingsVisible },attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('presentationSettings'),\"aria-expanded\":String(_vm.settingsVisible)},on:{\"click\":_vm.toggleSettings}},[_c('IconSettings')],1)]),(_vm.settingsVisible)?_c('aside',{staticClass:\"presentation-settings\"},[_c('div',{staticClass:\"presentation-settings-header\"},[_c('div',[_c('span',[_vm._v(_vm._s(_vm.getTranslation('presentationMode')))]),_c('h2',[_vm._v(_vm._s(_vm.getTranslation('presentationSettings')))])]),_c('button',{attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('close')},on:{\"click\":_vm.toggleSettings}},[_c('IconCross')],1)]),_c('div',{staticClass:\"presentation-setting-group\"},[_c('span',{staticClass:\"presentation-setting-label\"},[_vm._v(_vm._s(_vm.getTranslation('colorTheme')))]),_c('div',{staticClass:\"presentation-theme-options\",attrs:{\"role\":\"radiogroup\"}},_vm._l((_vm.themes),function(theme){return _c('button',{key:theme.code,class:[theme.code, { active: _vm.colorMode === theme.code }],attrs:{\"type\":\"button\",\"aria-label\":theme.label,\"aria-checked\":String(_vm.colorMode === theme.code),\"role\":\"radio\"},on:{\"click\":function($event){return _vm.$emit('color-mode', theme.code)}}},[_c('span'),_vm._v(\"\\n          \"+_vm._s(theme.label)+\"\\n        \")])}),0)]),_c('div',{staticClass:\"presentation-setting-group\"},[_c('span',{staticClass:\"presentation-setting-label\"},[_vm._v(_vm._s(_vm.getTranslation('textScale')))]),_c('div',{staticClass:\"presentation-scale-control\"},[_c('button',{attrs:{\"type\":\"button\",\"disabled\":_vm.scale <= 0.7,\"aria-label\":((_vm.getTranslation('textScale')) + \" -\")},on:{\"click\":function($event){_vm.$emit('scale', Math.max(0.7, _vm.scale - 0.1))}}},[_c('IconMinus')],1),_c('strong',[_vm._v(_vm._s(Math.round(_vm.scale * 100))+\"%\")]),_c('button',{attrs:{\"type\":\"button\",\"disabled\":_vm.scale >= 1.8,\"aria-label\":((_vm.getTranslation('textScale')) + \" +\")},on:{\"click\":function($event){_vm.$emit('scale', Math.min(1.8, _vm.scale + 0.1))}}},[_c('IconPlus')],1),_c('button',{staticClass:\"presentation-fit-button\",class:{ active: _vm.autoFit },attrs:{\"type\":\"button\",\"aria-pressed\":String(_vm.autoFit)},on:{\"click\":function($event){return _vm.$emit('auto-fit', !_vm.autoFit)}}},[_c('IconPresentation'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('fitToScreen')))])],1)])]),_c('div',{staticClass:\"presentation-setting-group\"},[_c('span',{staticClass:\"presentation-setting-label\"},[_vm._v(_vm._s(_vm.getTranslation('show')))]),_c('div',{staticClass:\"presentation-text-types\"},_vm._l((_vm.textTypes),function(type){return _c('button',{key:type.code,class:{ active: _vm.isTypeVisible(type.code) },attrs:{\"type\":\"button\",\"aria-pressed\":String(_vm.isTypeVisible(type.code))},on:{\"click\":function($event){return _vm.$emit('toggle-text-type', type.code)}}},[_c('span',{staticClass:\"presentation-check\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(_vm._s(type.label))])])}),0)])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"14\",\"height\":\"9\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M13 4.5H1m0 0l4 4m-4-4l4-4\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"14\",\"height\":\"9\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M1 4.5h12m0 0l-4-4m4 4l-4 4\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('rect',{attrs:{\"x\":\"2.5\",\"y\":\"3.5\",\"width\":\"19\",\"height\":\"14\",\"rx\":\"1.5\",\"stroke\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M8 21l4-3.5 4 3.5\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M8 8h8m-8 3h6\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\"}})])\n          )\n        }\n      }\n    ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport IconArrowLeft from '@/assets/icons/nav-arrow-left.svg';\r\nimport IconArrowRight from '@/assets/icons/nav-arrow-right.svg';\r\nimport IconCross from '@/assets/icons/cross.svg';\r\nimport IconMinus from '@/assets/icons/minus.svg';\r\nimport IconPlus from '@/assets/icons/plus.svg';\r\nimport IconPresentation from '@/assets/icons/presentation.svg';\r\nimport IconSettings from '@/assets/icons/settings.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: {\r\n    IconArrowLeft,\r\n    IconArrowRight,\r\n    IconCross,\r\n    IconMinus,\r\n    IconPlus,\r\n    IconPresentation,\r\n    IconSettings\r\n  }\r\n})\r\nexport default class PresentationControls extends Vue {\r\n  @Prop({ default: false }) visible!: boolean;\r\n  @Prop({ default: '' }) bookTitle!: string;\r\n  @Prop({ default: '' }) sectionTitle!: string;\r\n  @Prop({ default: 0 }) currentIndex!: number;\r\n  @Prop({ default: 0 }) totalSections!: number;\r\n  @Prop({ default: false }) hasPrevious!: boolean;\r\n  @Prop({ default: false }) hasNext!: boolean;\r\n  @Prop({ default: 1 }) scale!: number;\r\n  @Prop({ default: true }) autoFit!: boolean;\r\n  @Prop({ default: 'light' }) colorMode!: 'light' | 'dark' | 'mixed';\r\n  @Prop({ default: () => [] }) hiddenTextTypes!: Array<string>;\r\n\r\n  settingsVisible = false;\r\n  getTranslation = getTranslation;\r\n\r\n  get themes() {\r\n    return [\r\n      { code: 'light', label: getTranslation('colorThemeLight') },\r\n      { code: 'mixed', label: getTranslation('colorThemeMixed') },\r\n      { code: 'dark', label: getTranslation('colorThemeDark') }\r\n    ];\r\n  }\r\n\r\n  get textTypes() {\r\n    return [\r\n      { code: 'sanskrit', label: getTranslation('sanskrit') },\r\n      { code: 'diacritic', label: getTranslation('diacritic') },\r\n      { code: 'word-by-word', label: getTranslation('wordByWordTranslation') },\r\n      { code: 'translate', label: getTranslation('translation') },\r\n      { code: 'comment', label: getTranslation('comment') }\r\n    ];\r\n  }\r\n\r\n  isTypeVisible(code: string) {\r\n    return !this.hiddenTextTypes.includes(code);\r\n  }\r\n\r\n  toggleSettings() {\r\n    this.settingsVisible = !this.settingsVisible;\r\n    this.$emit('settings-change', this.settingsVisible);\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./PresentationControls.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./PresentationControls.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PresentationControls.vue?vue&type=template&id=24702030&scoped=true&\"\nimport script from \"./PresentationControls.vue?vue&type=script&lang=ts&\"\nexport * from \"./PresentationControls.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PresentationControls.vue?vue&type=style&index=0&id=24702030&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"24702030\",\n  null\n  \n)\n\nexport default component.exports","import StorageService from '@/services/StorageService';\r\nimport { Module, MutationTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\n\r\nexport interface Tab {\r\n  name: string;\r\n  link: null | string;\r\n  active: boolean;\r\n  bookKey?: null | string;\r\n  bookName?: string;\r\n  location?: string;\r\n  position?: number;\r\n  paragraphAnchor?: string;\r\n  updatedAt?: string;\r\n  sectionPositions?: { [link: string]: number };\r\n}\r\n\r\nexport type TabsState = {\r\n  list: Array<Tab>;\r\n  closed?: { [bookKey: string]: Tab };\r\n  currentReading?: Tab | null;\r\n  ownerKey?: string;\r\n};\r\n\r\nconst emptyTab = {\r\n  name: '',\r\n  link: null,\r\n  active: true,\r\n  bookKey: null,\r\n  bookName: '',\r\n  location: '',\r\n  position: 0,\r\n  paragraphAnchor: '',\r\n  updatedAt: '',\r\n  sectionPositions: {}\r\n};\r\n\r\nconst tabsStorageKey = (ownerKey: string) => `tabs:${ownerKey}`;\r\nconst closedTabsStorageKey = (ownerKey: string) => `closedTabs:${ownerKey}`;\r\nconst currentReadingStorageKey = (ownerKey: string) => `currentReading:${ownerKey}`;\r\n\r\nconst saveTabs = (state: TabsState) => {\r\n  StorageService.save(tabsStorageKey(state.ownerKey || 'guest'), state.list);\r\n};\r\n\r\nconst saveClosedTabs = (state: TabsState) => {\r\n  StorageService.save(closedTabsStorageKey(state.ownerKey || 'guest'), state.closed || {});\r\n};\r\n\r\nconst saveCurrentReading = (state: TabsState) => {\r\n  StorageService.save(currentReadingStorageKey(state.ownerKey || 'guest'), state.currentReading || {});\r\n};\r\n\r\nexport const getBookKeyFromLink = (link?: null | string): string | null => {\r\n  if (!link) {\r\n    return null;\r\n  }\r\n  const segments = link\r\n    .split('?')[0]\r\n    .split('/')\r\n    .filter(Boolean);\r\n  if (segments.length >= 3 && segments[1] === 'books') {\r\n    return `${segments[0]}:${segments[2]}`;\r\n  }\r\n  if (segments.length >= 4 && ['categories', 'authors'].includes(segments[1])) {\r\n    return `${segments[0]}:${segments[3]}`;\r\n  }\r\n  return null;\r\n};\r\n\r\nexport const isBookSectionLink = (link?: null | string): boolean => {\r\n  if (!link) {\r\n    return false;\r\n  }\r\n  const segments = link\r\n    .split('?')[0]\r\n    .split('/')\r\n    .filter(Boolean);\r\n  if (segments[1] === 'books') {\r\n    return segments.length >= 4;\r\n  }\r\n  return ['categories', 'authors'].includes(segments[1]) && segments.length >= 5;\r\n};\r\n\r\nconst getLegacyBookDetails = (tab: Tab, bookKey: string | null) => {\r\n  if (!bookKey) {\r\n    return { bookName: tab.bookName || '', location: tab.location || '' };\r\n  }\r\n  const parts = (tab.name || '').split(' — ');\r\n  return {\r\n    bookName: tab.bookName || parts[0] || '',\r\n    location: tab.location || (parts.length > 1 ? parts.slice(1).join(' — ') : '')\r\n  };\r\n};\r\n\r\nexport const normalizeTabs = (tabs: Array<Tab> | null | undefined): Array<Tab> => {\r\n  const normalized = Array.isArray(tabs)\r\n    ? tabs\r\n        .filter(tab => tab && typeof tab === 'object')\r\n        .map(tab => {\r\n          const link = tab.link || null;\r\n          const bookKey = tab.bookKey || getBookKeyFromLink(link);\r\n          return {\r\n            name: tab.name || '',\r\n            link,\r\n            active: !!tab.active,\r\n            bookKey,\r\n            position: typeof tab.position === 'number' ? tab.position : 0,\r\n            paragraphAnchor: tab.paragraphAnchor || '',\r\n            updatedAt: tab.updatedAt || '',\r\n            sectionPositions: tab.sectionPositions || {},\r\n            ...getLegacyBookDetails(tab, bookKey)\r\n          };\r\n        })\r\n    : [];\r\n  if (!normalized.length) {\r\n    return [{ ...emptyTab }];\r\n  }\r\n  let activeIndex = -1;\r\n  normalized.forEach((tab, index) => {\r\n    if (tab.active) {\r\n      activeIndex = index;\r\n    }\r\n  });\r\n  if (activeIndex < 0) {\r\n    activeIndex = 0;\r\n  }\r\n  return normalized.map((tab, index) => ({ ...tab, active: index === activeIndex }));\r\n};\r\n\r\nexport const normalizeCurrentReading = (value: Tab | null | undefined): Tab | null => {\r\n  if (!(value && typeof value === 'object' && value.link)) {\r\n    return null;\r\n  }\r\n  const bookKey = value.bookKey || getBookKeyFromLink(value.link);\r\n  if (!bookKey || !isBookSectionLink(value.link)) {\r\n    return null;\r\n  }\r\n  return {\r\n    name: value.name || value.bookName || '',\r\n    link: value.link.split('?')[0],\r\n    active: false,\r\n    bookKey,\r\n    bookName: value.bookName || value.name || '',\r\n    location: value.location || '',\r\n    position: typeof value.position === 'number' ? Math.max(0, Math.min(1, value.position)) : 0,\r\n    paragraphAnchor: value.paragraphAnchor || '',\r\n    updatedAt: value.updatedAt || '',\r\n    sectionPositions: value.sectionPositions || {}\r\n  };\r\n};\r\n\r\nconst state: TabsState = {\r\n  list: normalizeTabs(StorageService.get(tabsStorageKey('guest'))),\r\n  closed: StorageService.get(closedTabsStorageKey('guest')) || {},\r\n  currentReading: normalizeCurrentReading(StorageService.get(currentReadingStorageKey('guest'))),\r\n  ownerKey: 'guest'\r\n};\r\n\r\nconst mutations: MutationTree<TabsState> = {\r\n  switchOwner(state: TabsState, ownerKey: string) {\r\n    const nextOwnerKey = ownerKey || 'guest';\r\n    if (state.ownerKey === nextOwnerKey) {\r\n      return;\r\n    }\r\n    state.ownerKey = nextOwnerKey;\r\n    state.list = normalizeTabs(StorageService.get(tabsStorageKey(nextOwnerKey)));\r\n    state.closed = StorageService.get(closedTabsStorageKey(nextOwnerKey)) || {};\r\n    state.currentReading = normalizeCurrentReading(\r\n      StorageService.get(currentReadingStorageKey(nextOwnerKey))\r\n    );\r\n  },\r\n  updateCurrentReading(state: TabsState, payload: Tab) {\r\n    const current =\r\n      state.currentReading && state.currentReading.bookKey === payload.bookKey ? state.currentReading : null;\r\n    const reading = normalizeCurrentReading({\r\n      ...(current || {}),\r\n      ...payload,\r\n      active: false,\r\n      sectionPositions: payload.sectionPositions || (current && current.sectionPositions) || {}\r\n    } as Tab);\r\n    if (!reading) {\r\n      return;\r\n    }\r\n    state.currentReading = reading;\r\n    saveCurrentReading(state);\r\n  },\r\n  openTab(state: TabsState) {\r\n    state.list.map(tab => Object.assign(tab, { active: false }));\r\n    state.list.push({ ...emptyTab });\r\n    saveTabs(state);\r\n  },\r\n  closeTab(state, index) {\r\n    if (!state.list[index]) {\r\n      return;\r\n    }\r\n    const closingTab = state.list[index];\r\n    const wasActive = closingTab.active;\r\n    if (closingTab.bookKey) {\r\n      state.closed = state.closed || {};\r\n      state.closed[closingTab.bookKey] = { ...closingTab, active: false };\r\n      saveClosedTabs(state);\r\n    }\r\n    state.list.splice(index, 1);\r\n    if (state.list.length === 0) {\r\n      state.list.push({ ...emptyTab });\r\n    } else if (wasActive) {\r\n      state.list[Math.min(index, state.list.length - 1)].active = true;\r\n    }\r\n    saveTabs(state);\r\n  },\r\n  setActiveTab(state, index) {\r\n    if (!state.list[index]) {\r\n      return;\r\n    }\r\n    state.list.map(tab => Object.assign(tab, { active: false }));\r\n    state.list[index].active = true;\r\n    saveTabs(state);\r\n  },\r\n  keepOnlyActiveTab(state) {\r\n    const activeTab = state.list.find(tab => tab.active);\r\n    if (!activeTab) {\r\n      return;\r\n    }\r\n    state.closed = state.closed || {};\r\n    state.list.forEach(tab => {\r\n      if (tab !== activeTab && tab.bookKey) {\r\n        state.closed![tab.bookKey] = { ...tab, active: false };\r\n      }\r\n    });\r\n    state.list = [activeTab];\r\n    saveClosedTabs(state);\r\n    saveTabs(state);\r\n  },\r\n  activateBookTab(state, payload) {\r\n    state.closed = state.closed || {};\r\n    const existingIndex = state.list.findIndex(tab => tab.bookKey === payload.bookKey);\r\n    const activeEmptyIndex = state.list.findIndex(tab => tab.active && !tab.link);\r\n    const targetIndex =\r\n      existingIndex >= 0 ? existingIndex : activeEmptyIndex >= 0 ? activeEmptyIndex : state.list.length;\r\n    const existingTab =\r\n      (existingIndex >= 0 ? state.list[existingIndex] : state.closed[payload.bookKey]) ||\r\n      state.list[targetIndex];\r\n    const keepSavedSection =\r\n      !!payload.preserveLastLocation && !!existingTab && isBookSectionLink(existingTab.link);\r\n    const bookName =\r\n      payload.bookName ||\r\n      (existingTab && existingTab.bookName) ||\r\n      (existingTab && existingTab.name) ||\r\n      (payload.location === undefined ? payload.name : '') ||\r\n      '';\r\n    const location =\r\n      payload.location !== undefined\r\n        ? payload.location\r\n        : existingTab && existingTab.location\r\n        ? existingTab.location\r\n        : '';\r\n    const keepExistingPosition =\r\n      keepSavedSection ||\r\n      (!!existingTab && existingTab.link === payload.link && payload.position === undefined);\r\n    const savedSectionPosition =\r\n      existingTab &&\r\n      existingTab.sectionPositions &&\r\n      typeof existingTab.sectionPositions[payload.link] === 'number'\r\n        ? existingTab.sectionPositions[payload.link]\r\n        : 0;\r\n    const position =\r\n      payload.position !== undefined\r\n        ? payload.position\r\n        : keepExistingPosition && existingTab && typeof existingTab.position === 'number'\r\n        ? existingTab.position\r\n        : savedSectionPosition;\r\n    const tab: Tab = {\r\n      name: payload.name || (existingTab && existingTab.name) || bookName,\r\n      link: keepSavedSection ? existingTab.link : payload.link,\r\n      active: true,\r\n      bookKey: payload.bookKey,\r\n      bookName,\r\n      location,\r\n      position,\r\n      paragraphAnchor:\r\n        payload.paragraphAnchor !== undefined\r\n          ? payload.paragraphAnchor\r\n          : keepExistingPosition && existingTab\r\n          ? existingTab.paragraphAnchor || ''\r\n          : '',\r\n      updatedAt: payload.updatedAt || (existingTab && existingTab.updatedAt) || '',\r\n      sectionPositions: (existingTab && existingTab.sectionPositions) || {}\r\n    };\r\n\r\n    state.list.forEach(item => {\r\n      item.active = false;\r\n    });\r\n    if (existingTab) {\r\n      if (targetIndex < state.list.length) {\r\n        state.list.splice(targetIndex, 1, tab);\r\n      } else {\r\n        state.list.push(tab);\r\n      }\r\n    } else {\r\n      state.list.push(tab);\r\n    }\r\n    if (state.closed[payload.bookKey]) {\r\n      delete state.closed[payload.bookKey];\r\n      saveClosedTabs(state);\r\n    }\r\n    saveTabs(state);\r\n  },\r\n  activateRouteTab(state, payload) {\r\n    const activeIndex = state.list.findIndex(tab => tab.active);\r\n    const activeTab = state.list[activeIndex];\r\n    if (activeTab && activeTab.bookKey) {\r\n      const routeTabIndex = state.list.findIndex(tab => !tab.bookKey && tab.link === payload.link);\r\n      state.list.forEach(tab => {\r\n        tab.active = false;\r\n      });\r\n      if (routeTabIndex >= 0) {\r\n        state.list[routeTabIndex].active = true;\r\n      } else {\r\n        state.list.push({\r\n          ...emptyTab,\r\n          name: payload.name || '',\r\n          link: payload.link\r\n        });\r\n      }\r\n    } else if (activeTab) {\r\n      activeTab.link = payload.link;\r\n      if (payload.name) {\r\n        activeTab.name = payload.name;\r\n      }\r\n    }\r\n    saveTabs(state);\r\n  },\r\n  updateActiveTabLink(state, link) {\r\n    const index = state.list.findIndex(tab => tab.active);\r\n    if (index < 0) {\r\n      return;\r\n    }\r\n    state.list[index].link = link;\r\n    saveTabs(state);\r\n  },\r\n  updateActiveTabName(state, name) {\r\n    const index = state.list.findIndex(tab => tab.active);\r\n    if (index < 0) {\r\n      return;\r\n    }\r\n    state.list[index].name = name;\r\n    saveTabs(state);\r\n  },\r\n  updateActiveTabDetails(state, details) {\r\n    const tab = state.list.find(item => item.active);\r\n    if (!tab) {\r\n      return;\r\n    }\r\n    if (details.name !== undefined) {\r\n      tab.name = details.name;\r\n    }\r\n    if (details.bookName !== undefined) {\r\n      tab.bookName = details.bookName;\r\n    }\r\n    if (details.location !== undefined) {\r\n      tab.location = details.location;\r\n    }\r\n    if (details.link !== undefined) {\r\n      tab.link = details.link;\r\n    }\r\n    if (details.position !== undefined) {\r\n      tab.position = details.position;\r\n    }\r\n    if (details.paragraphAnchor !== undefined) {\r\n      tab.paragraphAnchor = details.paragraphAnchor;\r\n    }\r\n    if (details.updatedAt !== undefined) {\r\n      tab.updatedAt = details.updatedAt;\r\n    }\r\n    saveTabs(state);\r\n  },\r\n  updateBookTabDetails(state, payload) {\r\n    const tab = state.list.find(item => item.bookKey === payload.bookKey);\r\n    if (!tab) {\r\n      return;\r\n    }\r\n    Object.assign(tab, payload.details);\r\n    if (\r\n      payload.details.link &&\r\n      typeof payload.details.position === 'number' &&\r\n      isBookSectionLink(payload.details.link)\r\n    ) {\r\n      tab.sectionPositions = tab.sectionPositions || {};\r\n      tab.sectionPositions[payload.details.link] = payload.details.position;\r\n    }\r\n    saveTabs(state);\r\n  },\r\n  mergeServerReadingTabs(state, records) {\r\n    if (!Array.isArray(records)) {\r\n      return;\r\n    }\r\n    records.forEach(record => {\r\n      if (!(record && record.language && record.slug)) {\r\n        return;\r\n      }\r\n      const bookKey = `${record.language}:${record.slug}`;\r\n      if (state.closed && state.closed[bookKey]) {\r\n        return;\r\n      }\r\n      const sectionSlug = record.section_slug || '';\r\n      const link = sectionSlug\r\n        ? `/${record.language}/books/${record.slug}/${sectionSlug}`\r\n        : `/${record.language}/books/${record.slug}`;\r\n      const serverUpdatedAt = record.updated_at || '';\r\n      const serverSession = normalizeCurrentReading({\r\n        name: record.name || '',\r\n        bookName: record.name || '',\r\n        link,\r\n        active: false,\r\n        bookKey,\r\n        location: record.section_name || sectionSlug,\r\n        position: Number(record.scroll_ratio) || 0,\r\n        paragraphAnchor: record.paragraph_anchor || '',\r\n        updatedAt: serverUpdatedAt,\r\n        sectionPositions: record.section_positions || {}\r\n      });\r\n      if (\r\n        serverSession &&\r\n        (!state.currentReading ||\r\n          !state.currentReading.updatedAt ||\r\n          !serverUpdatedAt ||\r\n          serverUpdatedAt >= state.currentReading.updatedAt)\r\n      ) {\r\n        state.currentReading = serverSession;\r\n      }\r\n      const existing = state.list.find(tab => tab.bookKey === bookKey);\r\n      const serverIsNewer =\r\n        !existing || !existing.updatedAt || !serverUpdatedAt || serverUpdatedAt >= existing.updatedAt;\r\n      const serverClearedStaleSection = !!existing && !sectionSlug && isBookSectionLink(existing.link);\r\n      if (existing && (serverIsNewer || serverClearedStaleSection)) {\r\n        existing.name = record.name || existing.name;\r\n        existing.bookName = record.name || existing.bookName;\r\n        existing.link = link;\r\n        existing.location = record.section_name || sectionSlug;\r\n        existing.position = Number(record.scroll_ratio) || 0;\r\n        existing.updatedAt = serverUpdatedAt;\r\n        existing.sectionPositions = {\r\n          ...(existing.sectionPositions || {}),\r\n          ...(record.section_positions || {})\r\n        };\r\n      } else if (!existing) {\r\n        state.list.push({\r\n          name: record.name || '',\r\n          link,\r\n          active: false,\r\n          bookKey,\r\n          bookName: record.name || '',\r\n          location: record.section_name || sectionSlug,\r\n          position: Number(record.scroll_ratio) || 0,\r\n          updatedAt: serverUpdatedAt,\r\n          sectionPositions: record.section_positions || {}\r\n        });\r\n      }\r\n    });\r\n    saveTabs(state);\r\n    saveCurrentReading(state);\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  mutations\r\n} as Module<TabsState, RootState>;\r\n","import StorageService from '@/services/StorageService';\r\nimport { Module, MutationTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\n\r\nexport type BookmarkType = 'manual';\r\n\r\nexport interface Bookmark {\r\n  id: string | number;\r\n  type: BookmarkType;\r\n  bookKey: string;\r\n  bookName: string;\r\n  language: string;\r\n  book: string;\r\n  link: string;\r\n  location: string;\r\n  position: number;\r\n  anchor?: string;\r\n  note?: string;\r\n  updatedAt: string;\r\n}\r\n\r\nexport interface BookmarksState {\r\n  list: Array<Bookmark>;\r\n  ownerKey: string;\r\n}\r\n\r\nconst storageKey = (ownerKey: string) => `bookmarks:${ownerKey}`;\r\n\r\nconst save = (state: BookmarksState) => {\r\n  StorageService.save(storageKey(state.ownerKey || 'guest'), state.list);\r\n};\r\n\r\nconst normalize = (records: Array<Bookmark> | null | undefined): Array<Bookmark> =>\r\n  (Array.isArray(records) ? records : [])\r\n    .filter(record => record && record.bookKey && record.link)\r\n    .map(record => ({\r\n      ...record,\r\n      type: 'manual',\r\n      position: Number(record.position) || 0,\r\n      anchor: record.anchor || '',\r\n      note: record.note || '',\r\n      updatedAt: record.updatedAt || ''\r\n    }));\r\n\r\nexport const mapServerBookmark = (record: any): Bookmark | null => {\r\n  if (!(record && record.language && record.slug)) {\r\n    return null;\r\n  }\r\n  const sectionSlug = record.section_slug || '';\r\n  return {\r\n    id: record.id,\r\n    type: 'manual',\r\n    bookKey: `${record.language}:${record.slug}`,\r\n    bookName: record.name || '',\r\n    language: record.language,\r\n    book: record.slug,\r\n    link: sectionSlug\r\n      ? `/${record.language}/books/${record.slug}/${sectionSlug}`\r\n      : `/${record.language}/books/${record.slug}`,\r\n    location: record.section_name || sectionSlug,\r\n    position: Number(record.scroll_ratio) || 0,\r\n    anchor: record.paragraph_anchor || '',\r\n    note: record.note || '',\r\n    updatedAt: record.updated_at || ''\r\n  };\r\n};\r\n\r\nconst state: BookmarksState = {\r\n  list: normalize(StorageService.get(storageKey('guest'))),\r\n  ownerKey: 'guest'\r\n};\r\n\r\nconst mutations: MutationTree<BookmarksState> = {\r\n  switchOwner(state, ownerKey: string) {\r\n    const nextOwnerKey = ownerKey || 'guest';\r\n    if (state.ownerKey === nextOwnerKey) {\r\n      return;\r\n    }\r\n    state.ownerKey = nextOwnerKey;\r\n    state.list = normalize(StorageService.get(storageKey(nextOwnerKey)));\r\n  },\r\n  mergeServerRecords(state, records: Array<any>) {\r\n    if (!Array.isArray(records)) {\r\n      return;\r\n    }\r\n    const localBookmarks = state.list.filter(item => String(item.id).startsWith('local:'));\r\n    const serverBookmarks = records.map(mapServerBookmark).filter(Boolean) as Array<Bookmark>;\r\n    state.list = [...localBookmarks, ...serverBookmarks];\r\n    state.list.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));\r\n    save(state);\r\n  },\r\n  upsert(state, bookmark: Bookmark) {\r\n    const normalized = normalize([bookmark])[0];\r\n    if (!normalized) {\r\n      return;\r\n    }\r\n    const index = state.list.findIndex(item => String(item.id) === String(normalized.id));\r\n    if (index >= 0) {\r\n      state.list.splice(index, 1, normalized);\r\n    } else {\r\n      state.list.unshift(normalized);\r\n    }\r\n    state.list.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));\r\n    save(state);\r\n  },\r\n  remove(state, id: string | number) {\r\n    state.list = state.list.filter(item => String(item.id) !== String(id));\r\n    save(state);\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  mutations\r\n} as Module<BookmarksState, RootState>;\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport { Getter, Mutation, State } from 'vuex-class';\r\nimport { Route } from 'vue-router';\r\nimport CommonLayout from '@/layouts/CommonLayout.vue';\r\nimport TabsBar from '@/components/TabsBar.vue';\r\nimport Search from '@/components/Search.vue';\r\nimport NewTab from '@/views/content/NewTab.vue';\r\nimport TextTypesFilter from '@/components/TextTypesFilter.vue';\r\nimport StorageService from '@/services/StorageService';\r\nimport Catalog from '@/views/nav/Catalog.vue';\r\nimport NewBooks from '@/views/nav/NewBooks.vue';\r\nimport StringService from '@/services/StringService';\r\nimport Settings from '@/components/settings/Settings.vue';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport IconCross from '@/assets/icons/cross.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport MobileNavigation from '@/components/mobile/MobileNavigation.vue';\r\nimport MobileBookmarks from '@/components/mobile/MobileBookmarks.vue';\r\nimport MobileReaderThemePicker from '@/components/mobile/MobileReaderThemePicker.vue';\r\nimport MobileBookmarkSheet from '@/components/mobile/MobileBookmarkSheet.vue';\r\nimport PresentationControls from '@/components/presentation/PresentationControls.vue';\r\nimport { LANGUAGE_CODE_DEFAULT, LIST_TYPE_DEFAULT } from '@/constants';\r\nimport { getBookKeyFromLink, isBookSectionLink, Tab } from '@/store/modules/tabs';\r\nimport NavBookSection from '@/components/nav/NavBookSection.vue';\r\nimport { Book, BookSection, ListType } from '@/services/Navigation/types';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport IconArrowDown from '@/assets/icons/arrow-down.svg';\r\nimport IconCatalogRu from '@/assets/icons/catalog-ru.svg';\r\nimport IconCatalogEn from '@/assets/icons/catalog-en.svg';\r\nimport IconCatalogSt from '@/assets/icons/catalog-st.svg';\r\nimport IconReturn from '@/assets/icons/return.svg';\r\nimport UserService from '@/services/Api/UserService';\r\nimport { Bookmark, mapServerBookmark } from '@/store/modules/bookmarks';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\n\r\ntype MobileView =\r\n  | 'library'\r\n  | 'search'\r\n  | 'search-area'\r\n  | 'book-search'\r\n  | 'reading'\r\n  | 'bookmarks'\r\n  | 'settings'\r\n  | 'content';\r\n\r\ninterface MobileViewTransition {\r\n  finished: Promise<void>;\r\n  ready?: Promise<void>;\r\n  updateCallbackDone?: Promise<void>;\r\n  skipTransition?: () => void;\r\n}\r\n\r\ninterface ViewTransitionDocument extends Document {\r\n  startViewTransition?: (update: () => Promise<void> | void) => MobileViewTransition;\r\n}\r\n\r\ninterface MobileVisualViewport {\r\n  width: number;\r\n  addEventListener: (type: 'resize', listener: EventListener) => void;\r\n  removeEventListener: (type: 'resize', listener: EventListener) => void;\r\n}\r\n\r\ninterface MobileWindow extends Window {\r\n  visualViewport?: MobileVisualViewport;\r\n}\r\n\r\nconst MOBILE_SECTION_ORDER: { [view in MobileView]: number } = {\r\n  library: 0,\r\n  content: 0,\r\n  search: 1,\r\n  'search-area': 1,\r\n  'book-search': 1,\r\n  reading: 2,\r\n  bookmarks: 3,\r\n  settings: 4\r\n};\r\n\r\ninterface ReaderScrollEvent {\r\n  direction: 'up' | 'down';\r\n  delta: number;\r\n  top: number;\r\n  max: number;\r\n}\r\n\r\ninterface MobileCatalogExpansionState {\r\n  categories: number[];\r\n  authors: number[];\r\n  bookLetters: number[];\r\n  authorLetters: number[];\r\n  books: string[];\r\n  foundBooks: string[];\r\n  sections: string[];\r\n}\r\n\r\ninterface MobileCatalogState {\r\n  listType: ListType;\r\n  filterQuery: string;\r\n  expanded: MobileCatalogExpansionState;\r\n  scrollTop: number;\r\n}\r\n\r\ntype MobileCatalogStates = {\r\n  [language: string]: {\r\n    library: MobileCatalogState;\r\n    searchArea: MobileCatalogState;\r\n  };\r\n};\r\n\r\nconst MIN_LEFT_COLUMN_WIDTH = 288;\r\nconst MAX_LEFT_COLUMN_WIDTH = 488;\r\nconst LEFT_COLUMN_LOCAL_STORAGE_PARAM = 'leftColumnWidth';\r\nconst MOBILE_SEARCH_ROUTE_LOCAL_STORAGE_PARAM = 'mobileSearchRoute';\r\nconst MOBILE_CATALOG_STATES_LOCAL_STORAGE_PARAM = 'mobileCatalogStates';\r\nconst SAVED_LEFT_COLUMN_WIDTH = parseInt(StorageService.get(LEFT_COLUMN_LOCAL_STORAGE_PARAM));\r\nconst SAVED_MOBILE_SEARCH_ROUTES = StorageService.get(MOBILE_SEARCH_ROUTE_LOCAL_STORAGE_PARAM);\r\nconst SAVED_MOBILE_CATALOG_STATES = StorageService.get(MOBILE_CATALOG_STATES_LOCAL_STORAGE_PARAM);\r\nconst getInitialMobileSearchRoutes = () => {\r\n  if (\r\n    SAVED_MOBILE_SEARCH_ROUTES &&\r\n    typeof SAVED_MOBILE_SEARCH_ROUTES === 'object' &&\r\n    !Array.isArray(SAVED_MOBILE_SEARCH_ROUTES)\r\n  ) {\r\n    return { ...SAVED_MOBILE_SEARCH_ROUTES };\r\n  }\r\n  if (typeof SAVED_MOBILE_SEARCH_ROUTES === 'string') {\r\n    const language = SAVED_MOBILE_SEARCH_ROUTES.split('/').filter(Boolean)[0];\r\n    return language ? { [language]: SAVED_MOBILE_SEARCH_ROUTES } : {};\r\n  }\r\n  return {};\r\n};\r\nconst defaultMobileCatalogState = () => ({\r\n  listType: LIST_TYPE_DEFAULT as ListType,\r\n  filterQuery: '',\r\n  scrollTop: 0,\r\n  expanded: {\r\n    categories: [],\r\n    authors: [],\r\n    bookLetters: [],\r\n    authorLetters: [],\r\n    books: [],\r\n    foundBooks: [],\r\n    sections: []\r\n  }\r\n});\r\nconst getInitialMobileCatalogStates = (): MobileCatalogStates => {\r\n  if (\r\n    !SAVED_MOBILE_CATALOG_STATES ||\r\n    typeof SAVED_MOBILE_CATALOG_STATES !== 'object' ||\r\n    Array.isArray(SAVED_MOBILE_CATALOG_STATES) ||\r\n    SAVED_MOBILE_CATALOG_STATES.library ||\r\n    SAVED_MOBILE_CATALOG_STATES.searchArea\r\n  ) {\r\n    return {};\r\n  }\r\n  return { ...SAVED_MOBILE_CATALOG_STATES };\r\n};\r\nconst BOOK_ROUTE_NAMES = [\r\n  'book',\r\n  'book-section',\r\n  'category-book',\r\n  'category-book-section',\r\n  'author-book',\r\n  'author-book-section'\r\n];\r\nconst BOOK_SECTION_ROUTE_NAMES = ['book-section', 'category-book-section', 'author-book-section'];\r\n\r\n@Component({\r\n  components: {\r\n    IconCross,\r\n    IconReturn,\r\n    IconArrowDown,\r\n    Loader,\r\n    MobileNavigation,\r\n    MobileBookmarks,\r\n    MobileBookmarkSheet,\r\n    MobileReaderThemePicker,\r\n    PresentationControls,\r\n    NavBookSection,\r\n    Overlay,\r\n    Settings,\r\n    NewBooks,\r\n    Catalog,\r\n    CommonLayout,\r\n    Search,\r\n    TabsBar,\r\n    NewTab,\r\n    TextTypesFilter\r\n  }\r\n})\r\nexport default class Reader extends Vue {\r\n  leftColumnWidth: number;\r\n\r\n  mobileCatalogVisible: boolean = false;\r\n\r\n  mobileLanguageMenuVisible: boolean = false;\r\n\r\n  mobileThemePickerVisible: boolean = false;\r\n\r\n  mobileBookmarkSheetVisible: boolean = false;\r\n\r\n  mobileTocInitializedBookKey: string = '';\r\n\r\n  mobileView: MobileView = 'library';\r\n\r\n  mobileBookSearchName: string = '';\r\n\r\n  mobileBookSearchSlug: string = '';\r\n\r\n  mobileSearchOverlayVisible: boolean = false;\r\n\r\n  mobileReadingResumePending: boolean = false;\r\n\r\n  mobileTransitionToken: number = 0;\r\n\r\n  mobileActiveTransition?: MobileViewTransition;\r\n\r\n  mobileTransitionTimer?: number;\r\n\r\n  mobileReaderNavigationRequest?: Promise<void>;\r\n\r\n  mobileReaderNavigationKey: string = '';\r\n\r\n  mobileSearchRoutes: { [language: string]: string } = getInitialMobileSearchRoutes();\r\n\r\n  mobileCatalogStates: MobileCatalogStates = getInitialMobileCatalogStates();\r\n\r\n  mobileCatalogRestoreToken: number = 0;\r\n\r\n  isCompactViewport: boolean = false;\r\n\r\n  isNarrowVisualViewport: boolean = false;\r\n\r\n  mobileVisualViewportWidth: number = 0;\r\n\r\n  readerChromeVisible: boolean = true;\r\n\r\n  readerScrollDirection: 'up' | 'down' | '' = '';\r\n\r\n  readerScrollDistance: number = 0;\r\n\r\n  readerEndPinToken: number = 0;\r\n\r\n  presentationControlsVisible: boolean = true;\r\n\r\n  presentationSettingsOpen: boolean = false;\r\n\r\n  presentationControlsTimer?: number;\r\n\r\n  presentationOwnsFullscreen: boolean = false;\r\n\r\n  prevPageX: number = 0;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @State('visible', { namespace: 'settings' })\r\n  isSettingsVisible!: boolean;\r\n\r\n  @Mutation('hide', { namespace: 'settings' })\r\n  hideSettings!: Function;\r\n\r\n  @Mutation('setLanguage', { namespace: 'navigation' })\r\n  setNavLanguage!: Function;\r\n\r\n  @Mutation('setReadMode', { namespace: 'reader' })\r\n  setReadMode!: Function;\r\n\r\n  @Mutation('setTextTypesFilterVisible', { namespace: 'reader' })\r\n  setTextTypesFilterVisible!: Function;\r\n\r\n  @State('presentationMode', { namespace: 'reader' })\r\n  presentationMode!: boolean;\r\n\r\n  @Mutation('setPresentationMode', { namespace: 'reader' })\r\n  setPresentationMode!: Function;\r\n\r\n  @Mutation('setPresentationScale', { namespace: 'reader' })\r\n  setPresentationScale!: Function;\r\n\r\n  @Mutation('setPresentationAutoFit', { namespace: 'reader' })\r\n  setPresentationAutoFit!: Function;\r\n\r\n  @Mutation('switchPresentationTextTypeFilter', { namespace: 'reader' })\r\n  switchPresentationTextTypeFilter!: Function;\r\n\r\n  @Mutation('setColorMode', { namespace: 'reader' })\r\n  setColorMode!: Function;\r\n\r\n  @State('language', { namespace: 'navigation' })\r\n  navLanguage!: string;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  currentBook?: Book;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentBookSection?: BookSection;\r\n\r\n  @Getter('currentBookSections', { namespace: 'navigation' })\r\n  currentBookSections?: Array<BookSection>;\r\n\r\n  @Getter('checkedBooks', { namespace: 'navigation' })\r\n  checkedBooks!: Array<Book>;\r\n\r\n  @Getter('selectedBooksCount', { namespace: 'navigation' })\r\n  selectedBooksCount!: number;\r\n\r\n  constructor() {\r\n    super();\r\n    this.leftColumnWidth = Reader.normalizeLeftColumnWidth(SAVED_LEFT_COLUMN_WIDTH) || MIN_LEFT_COLUMN_WIDTH;\r\n  }\r\n\r\n  mounted() {\r\n    this.updateViewport();\r\n    window.addEventListener('resize', this.updateViewport);\r\n    if (this.visualViewport) {\r\n      this.visualViewport.addEventListener('resize', this.updateViewport);\r\n    }\r\n    document.addEventListener('keydown', this.onDocumentKeydown);\r\n    document.addEventListener('fullscreenchange', this.onFullscreenChange);\r\n    this.$root.$on('reader-scroll', this.onReaderScroll);\r\n    this.$root.$on('reader-link-selected', this.onReaderLinkSelected);\r\n    this.onRouteChange(this.$route);\r\n    this.hydrateReadingState();\r\n  }\r\n\r\n  beforeDestroy() {\r\n    window.removeEventListener('resize', this.updateViewport);\r\n    if (this.visualViewport) {\r\n      this.visualViewport.removeEventListener('resize', this.updateViewport);\r\n    }\r\n    if (this.mobileTransitionTimer !== undefined) {\r\n      window.clearTimeout(this.mobileTransitionTimer);\r\n    }\r\n    document.removeEventListener('keydown', this.onDocumentKeydown);\r\n    document.removeEventListener('fullscreenchange', this.onFullscreenChange);\r\n    this.$root.$off('reader-scroll', this.onReaderScroll);\r\n    this.$root.$off('reader-link-selected', this.onReaderLinkSelected);\r\n    this.readerEndPinToken += 1;\r\n    if (this.presentationControlsTimer !== undefined) {\r\n      window.clearTimeout(this.presentationControlsTimer);\r\n    }\r\n    this.setPresentationMode(false);\r\n  }\r\n\r\n  @Watch('$route')\r\n  onRouteChange(to: Route, from?: Route) {\r\n    if (typeof this.syncPresentationModeWithRoute === 'function') {\r\n      this.syncPresentationModeWithRoute(to);\r\n    }\r\n    this.mobileCatalogVisible = false;\r\n    this.mobileLanguageMenuVisible = false;\r\n    this.mobileThemePickerVisible = false;\r\n    this.mobileBookmarkSheetVisible = false;\r\n    this.readerEndPinToken += 1;\r\n    this.resetReaderScrollIntent();\r\n    if (this.isCompactViewport) {\r\n      if (to.name === 'search-results' && to.query.scope !== '1' && to.query.bookSearch !== '1') {\r\n        this.mobileSearchRoutes[to.params.language] = to.fullPath;\r\n        StorageService.save(MOBILE_SEARCH_ROUTE_LOCAL_STORAGE_PARAM, this.mobileSearchRoutes);\r\n      }\r\n      this.syncMobileViewWithRoute();\r\n      if (!from || to.path !== from.path) {\r\n        this.readerChromeVisible = true;\r\n        this.setTextTypesFilterVisible(false);\r\n      }\r\n    }\r\n    let route = to.path;\r\n    if (to.query) {\r\n      let query = { ...to.query };\r\n      delete query.reading;\r\n      delete query.bookmark;\r\n      const queryString = StringService.objectToQueryString(query);\r\n      route = queryString.length ? `${route}?${queryString}` : route;\r\n    }\r\n    const routeName = to.name || '';\r\n    if (BOOK_ROUTE_NAMES.includes(routeName) && to.params.language && to.params.book) {\r\n      UserService.openReadingTab(to.params.language, to.params.book);\r\n      const isSectionRoute = BOOK_SECTION_ROUTE_NAMES.includes(routeName);\r\n      this.$store.commit('tabs/activateBookTab', {\r\n        bookKey: `${to.params.language}:${to.params.book}`,\r\n        link: route,\r\n        location: isSectionRoute ? to.params.bookSection : undefined,\r\n        preserveLastLocation: !isSectionRoute\r\n      });\r\n    } else {\r\n      this.$store.commit('tabs/activateRouteTab', { link: route });\r\n    }\r\n    if (this.isCompactViewport) {\r\n      this.$store.commit('tabs/keepOnlyActiveTab');\r\n    }\r\n    this.updateNavLanguage();\r\n    if (typeof this.ensureMobileReaderNavigation === 'function') {\r\n      this.ensureMobileReaderNavigation(to);\r\n    }\r\n  }\r\n\r\n  @Watch('$store.state.navigation.loading')\r\n  onNavigationLoadingChange(loading: boolean, wasLoading: boolean) {\r\n    if (!this.isCompactViewport || loading || !wasLoading) {\r\n      return;\r\n    }\r\n    if (this.mobileView === 'library' || this.mobileView === 'search-area') {\r\n      this.restoreMobileCatalogState(this.mobileView === 'library' ? 'library' : 'searchArea');\r\n    }\r\n  }\r\n\r\n  updateNavLanguage() {\r\n    // initialization of language variable\r\n    // we initialize it here, since it's the parent component for all components in the left column, where this variable could be used\r\n    if (this.isCompactViewport && !this.$route.params.language) {\r\n      if (!this.navLanguage) {\r\n        this.setNavLanguage(LANGUAGE_CODE_DEFAULT);\r\n      }\r\n      return;\r\n    }\r\n    this.setNavLanguage(this.$route.params.language || '');\r\n  }\r\n\r\n  ensureMobileReaderNavigation(route: Route) {\r\n    if (\r\n      !this.isCompactViewport ||\r\n      !BOOK_SECTION_ROUTE_NAMES.includes(route.name || '') ||\r\n      !route.params.language ||\r\n      !route.params.book\r\n    ) {\r\n      return;\r\n    }\r\n    const language = route.params.language;\r\n    const bookSlug = route.params.book;\r\n    const sectionSlug = route.params.bookSection || '';\r\n    const cachedSection = this.currentBookSection;\r\n    if (\r\n      cachedSection &&\r\n      cachedSection.book.language === language &&\r\n      cachedSection.book.slug === bookSlug &&\r\n      cachedSection.slug === route.params.bookSection\r\n    ) {\r\n      this.$store.commit('navigation/setError', false);\r\n      return;\r\n    }\r\n    const navigationKey = `${language}:${bookSlug}:${sectionSlug}`;\r\n    if (this.mobileReaderNavigationRequest && this.mobileReaderNavigationKey === navigationKey) {\r\n      return;\r\n    }\r\n    this.mobileReaderNavigationKey = navigationKey;\r\n    this.mobileReaderNavigationRequest = this.prepareMobileReaderNavigation(language, bookSlug, sectionSlug)\r\n      .catch(() => {\r\n        // BookContent owns the visible error state for a failed direct route.\r\n      })\r\n      .finally(() => {\r\n        this.mobileReaderNavigationRequest = undefined;\r\n        this.mobileReaderNavigationKey = '';\r\n      });\r\n  }\r\n\r\n  async prepareMobileReaderNavigation(language: string, bookSlug: string, sectionSlug: string = '') {\r\n    this.setNavLanguage(language);\r\n    let navigationData = this.$store.state.navigation.data[language];\r\n    if (!navigationData || !navigationData.booksAlphabet.length) {\r\n      await this.$store.dispatch('navigation/fetch', language);\r\n      navigationData = this.$store.state.navigation.data[language];\r\n    }\r\n    const cachedBook = navigationData && navigationData.books[bookSlug];\r\n    const hasRequestedSection =\r\n      cachedBook &&\r\n      (!sectionSlug ||\r\n        cachedBook.is_article ||\r\n        cachedBook.children.some((section: BookSection) => section.slug === sectionSlug));\r\n    if (hasRequestedSection) {\r\n      this.$store.commit('navigation/setError', false);\r\n      return;\r\n    }\r\n    await this.$store.dispatch('navigation/highlightLetterByBookSlug', {\r\n      language,\r\n      bookSlug\r\n    });\r\n  }\r\n\r\n  get activeTab() {\r\n    return this.$store.state.tabs.list.find((tab: { active: boolean }) => tab.active);\r\n  }\r\n\r\n  get currentReadingSession() {\r\n    return this.$store.state.tabs.currentReading as Tab | null;\r\n  }\r\n\r\n  get readerBook() {\r\n    return this.currentBook || (this.currentBookSection && this.currentBookSection.book);\r\n  }\r\n\r\n  get readerBookRootSections() {\r\n    return this.readerBook\r\n      ? (this.readerBook.children || []).filter((section: BookSection) => section.depth === 0)\r\n      : [];\r\n  }\r\n\r\n  get presentationSections() {\r\n    return this.currentBookSections || [];\r\n  }\r\n\r\n  get presentationCurrentIndex() {\r\n    if (!this.currentBookSection) {\r\n      return 0;\r\n    }\r\n    return Math.max(\r\n      0,\r\n      this.presentationSections.findIndex(section => section.id === this.currentBookSection!.id)\r\n    );\r\n  }\r\n\r\n  get presentationHasPrevious() {\r\n    return this.presentationCurrentIndex > 0;\r\n  }\r\n\r\n  get presentationHasNext() {\r\n    return this.presentationCurrentIndex < this.presentationSections.length - 1;\r\n  }\r\n\r\n  get presentationBookTitle() {\r\n    return this.readerBook ? this.readerBook.name : '';\r\n  }\r\n\r\n  get presentationSectionTitle() {\r\n    return this.currentBookSection ? this.currentBookSection.name : '';\r\n  }\r\n\r\n  get visualViewport() {\r\n    return (window as MobileWindow).visualViewport;\r\n  }\r\n\r\n  get catalogLanguages() {\r\n    return [\r\n      { code: 'ru', label: getTranslation('russian'), icon: IconCatalogRu },\r\n      { code: 'en', label: getTranslation('english'), icon: IconCatalogEn },\r\n      { code: 'st', label: getTranslation('sanskrit'), icon: IconCatalogSt }\r\n    ];\r\n  }\r\n\r\n  get currentCatalogLanguage() {\r\n    return (\r\n      this.catalogLanguages.find(language => language.code === this.navLanguage) || this.catalogLanguages[0]\r\n    );\r\n  }\r\n\r\n  get isBookSectionRoute() {\r\n    return ['book-section', 'category-book-section', 'author-book-section'].includes(this.$route.name || '');\r\n  }\r\n\r\n  get isBookRoute() {\r\n    return ['book', 'category-book', 'author-book'].includes(this.$route.name || '');\r\n  }\r\n\r\n  get mobileReader() {\r\n    return this.isCompactViewport && this.isBookSectionRoute;\r\n  }\r\n\r\n  get showMobileContent() {\r\n    return (\r\n      this.mobileView === 'content' ||\r\n      (['search', 'book-search'].includes(this.mobileView) && this.$route.name === 'search-results')\r\n    );\r\n  }\r\n\r\n  get mobileNavigationView() {\r\n    if (\r\n      this.mobileReadingResumePending ||\r\n      this.mobileView === 'reading' ||\r\n      (this.mobileView === 'content' && this.isBookSectionRoute)\r\n    ) {\r\n      return 'reading';\r\n    }\r\n    if (this.mobileView === 'content') {\r\n      return 'library';\r\n    }\r\n    return ['search-area', 'book-search'].includes(this.mobileView) ? 'search' : this.mobileView;\r\n  }\r\n\r\n  get mobileSettingsReturnTo() {\r\n    const returnTo = this.$route.query.returnTo;\r\n    return typeof returnTo === 'string' && this.isSafeInternalRoute(returnTo) ? returnTo : '';\r\n  }\r\n\r\n  updateViewport() {\r\n    const wasCompact = this.isCompactViewport;\r\n    this.isCompactViewport = window.innerWidth <= 1024;\r\n    this.mobileVisualViewportWidth = this.visualViewport ? this.visualViewport.width : window.innerWidth;\r\n    this.isNarrowVisualViewport = this.isCompactViewport && this.mobileVisualViewportWidth < 240;\r\n    if (this.isCompactViewport && !wasCompact) {\r\n      this.syncMobileViewWithRoute();\r\n    } else if (!this.isCompactViewport && wasCompact) {\r\n      this.readerChromeVisible = true;\r\n      if (!this.presentationMode) {\r\n        this.setReadMode(false);\r\n      }\r\n    }\r\n  }\r\n\r\n  syncMobileViewWithRoute() {\r\n    if (this.isBookSectionRoute) {\r\n      this.mobileView = 'content';\r\n      this.setReadMode(true);\r\n      return;\r\n    }\r\n    this.setReadMode(false);\r\n    if (this.$route.name === 'search-results') {\r\n      if (this.$route.query.bookSearch === '1' && typeof this.$route.query.slug === 'string') {\r\n        this.mobileView = 'book-search';\r\n        const bookSlug = this.$route.query.slug;\r\n        const bookKey = `${this.$route.params.language}:${bookSlug}`;\r\n        const bookTab = this.$store.state.tabs.list.find(\r\n          (tab: Tab) => tab.bookKey === bookKey && tab.bookName\r\n        ) as Tab | undefined;\r\n        const preservedBookName = this.mobileBookSearchSlug === bookSlug ? this.mobileBookSearchName : '';\r\n        this.mobileBookSearchName = (bookTab && bookTab.bookName) || preservedBookName || bookSlug;\r\n        this.mobileBookSearchSlug = bookSlug;\r\n        this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n        return;\r\n      }\r\n      this.mobileView = this.$route.query.scope === '1' ? 'search-area' : 'search';\r\n      this.restoreMobileCatalogState(this.mobileView === 'search-area' ? 'searchArea' : 'library');\r\n      this.$store.commit(\r\n        'navigation/setShowSearchResultsFlag',\r\n        this.mobileView === 'search' &&\r\n          typeof this.$route.query.query === 'string' &&\r\n          !!this.$route.query.query\r\n      );\r\n    } else if (this.$route.name === 'mobile-library') {\r\n      this.mobileView = 'library';\r\n      this.restoreMobileCatalogState('library');\r\n      this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n    } else if (this.$route.name === 'mobile-bookmarks') {\r\n      this.mobileView = 'bookmarks';\r\n    } else if (this.$route.name === 'mobile-settings') {\r\n      this.mobileView = 'settings';\r\n    } else if (this.isBookRoute || this.$route.name === 'author-bio' || this.$route.name === 'help') {\r\n      this.mobileView = 'content';\r\n    } else if (this.$route.path === '/') {\r\n      this.mobileView = 'library';\r\n      this.restoreMobileCatalogState('library');\r\n      this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n    }\r\n    if (this.mobileView === 'library' && !this.navLanguage) {\r\n      this.setNavLanguage(this.$route.params.language || LANGUAGE_CODE_DEFAULT);\r\n    }\r\n  }\r\n\r\n  openMobileView(view: MobileView) {\r\n    if (this.mobileReadingResumePending) {\r\n      return;\r\n    }\r\n    const previousView = this.mobileView;\r\n    const readingReturnTo = this.mobileReader ? this.captureMobileReadingReturnRoute() : '';\r\n    const navigate = async () => {\r\n      if (previousView === 'search-area') {\r\n        this.saveMobileCatalogState('searchArea');\r\n      } else if (previousView === 'library') {\r\n        this.saveMobileCatalogState('library');\r\n      }\r\n      this.mobileCatalogVisible = false;\r\n      this.readerChromeVisible = true;\r\n      this.setTextTypesFilterVisible(false);\r\n      if (view === 'reading') {\r\n        this.mobileReadingResumePending = true;\r\n        try {\r\n          await this.resumeCurrentReading();\r\n        } finally {\r\n          this.mobileReadingResumePending = false;\r\n        }\r\n        return;\r\n      }\r\n      this.mobileView = view;\r\n      this.setReadMode(false);\r\n      const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n      if (view === 'library') {\r\n        this.restoreMobileCatalogState('library');\r\n        this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n        this.setNavLanguage(language);\r\n        const libraryRoute = `/${language}/library`;\r\n        if (this.$route.path !== libraryRoute) {\r\n          await this.$router.push(libraryRoute);\r\n        }\r\n        return;\r\n      }\r\n      if (view === 'search') {\r\n        const savedSearchRoute = this.mobileSearchRoutes[language] || '';\r\n        const searchRoute = this.sanitizeGlobalSearchRoute(savedSearchRoute || `/${language}/search`);\r\n        if (this.$route.fullPath !== searchRoute) {\r\n          await this.$router.push(searchRoute);\r\n        } else {\r\n          this.$store.commit(\r\n            'navigation/setShowSearchResultsFlag',\r\n            typeof this.$route.query.query === 'string' && !!this.$route.query.query\r\n          );\r\n        }\r\n        return;\r\n      }\r\n      if (view === 'bookmarks' || view === 'settings') {\r\n        const route =\r\n          view === 'settings' && readingReturnTo\r\n            ? `/${language}/settings?${new URLSearchParams({ returnTo: readingReturnTo }).toString()}`\r\n            : `/${language}/${view}`;\r\n        if (this.$route.path !== route) {\r\n          await this.$router.push(route);\r\n        }\r\n      }\r\n    };\r\n\r\n    const fromIndex = MOBILE_SECTION_ORDER[previousView];\r\n    const toIndex = MOBILE_SECTION_ORDER[view];\r\n    const viewTransitionDocument = document as ViewTransitionDocument;\r\n    const reduceMotion =\r\n      typeof window.matchMedia === 'function' &&\r\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n    if (\r\n      !this.isCompactViewport ||\r\n      view === 'reading' ||\r\n      fromIndex === toIndex ||\r\n      reduceMotion ||\r\n      !viewTransitionDocument.startViewTransition\r\n    ) {\r\n      navigate();\r\n      return;\r\n    }\r\n\r\n    const transitionClass =\r\n      toIndex > fromIndex ? 'mobile-section-transition-forward' : 'mobile-section-transition-backward';\r\n    const transitionToken = ++this.mobileTransitionToken;\r\n    document.documentElement.classList.remove(\r\n      'mobile-section-transition-forward',\r\n      'mobile-section-transition-backward'\r\n    );\r\n    document.documentElement.classList.add(transitionClass);\r\n    if (this.mobileActiveTransition && this.mobileActiveTransition.skipTransition) {\r\n      this.mobileActiveTransition.skipTransition();\r\n    }\r\n    const transition = viewTransitionDocument.startViewTransition(async () => {\r\n      await navigate();\r\n      await this.$nextTick();\r\n    });\r\n    this.mobileActiveTransition = transition;\r\n    if (this.mobileTransitionTimer !== undefined) {\r\n      window.clearTimeout(this.mobileTransitionTimer);\r\n    }\r\n    this.mobileTransitionTimer = window.setTimeout(() => {\r\n      if (this.mobileActiveTransition === transition && transition.skipTransition) {\r\n        transition.skipTransition();\r\n      }\r\n      this.finishMobileViewTransition(transition, transitionClass, transitionToken);\r\n    }, 400);\r\n    if (transition.ready) {\r\n      transition.ready.catch(() => {});\r\n    }\r\n    if (transition.updateCallbackDone) {\r\n      transition.updateCallbackDone.catch(() => {});\r\n    }\r\n    transition.finished.then(\r\n      () => this.finishMobileViewTransition(transition, transitionClass, transitionToken),\r\n      () => this.finishMobileViewTransition(transition, transitionClass, transitionToken)\r\n    );\r\n  }\r\n\r\n  finishMobileViewTransition(\r\n    transition: MobileViewTransition,\r\n    transitionClass: string,\r\n    transitionToken: number\r\n  ) {\r\n    if (this.mobileActiveTransition === transition) {\r\n      this.mobileActiveTransition = undefined;\r\n      if (this.mobileTransitionTimer !== undefined) {\r\n        window.clearTimeout(this.mobileTransitionTimer);\r\n        this.mobileTransitionTimer = undefined;\r\n      }\r\n    }\r\n    if (transitionToken === this.mobileTransitionToken) {\r\n      document.documentElement.classList.remove(transitionClass);\r\n    }\r\n  }\r\n\r\n  sanitizeGlobalSearchRoute(route: string) {\r\n    const [path, queryString = ''] = route.split('?');\r\n    const query = new URLSearchParams(queryString);\r\n    ['slug', 'bookId', 'inBookOnly', 'bookSearch', 'returnTo', 'index', 'highlight', 'reading'].forEach(\r\n      name => query.delete(name)\r\n    );\r\n    const normalizedQuery = query.toString();\r\n    return normalizedQuery ? `${path}?${normalizedQuery}` : path;\r\n  }\r\n\r\n  async resumeCurrentReading() {\r\n    const session = this.currentReadingSession;\r\n    if (!(session && session.bookKey && session.link)) {\r\n      return false;\r\n    }\r\n    const [language, book] = session.bookKey.split(':');\r\n    const link = session.link.split('?')[0];\r\n    const segments = link.split('/').filter(Boolean);\r\n    const section = segments[segments.length - 1] === book ? '' : segments[segments.length - 1];\r\n    await this.prepareMobileReaderNavigation(language, book, section);\r\n    this.$store.commit('tabs/activateBookTab', {\r\n      bookKey: session.bookKey,\r\n      link,\r\n      name: session.name,\r\n      bookName: session.bookName,\r\n      location: session.location,\r\n      position: session.position,\r\n      paragraphAnchor: session.paragraphAnchor || ''\r\n    });\r\n    this.$store.commit('tabs/keepOnlyActiveTab');\r\n    const route = {\r\n      path: link,\r\n      query: {\r\n        reading: '1',\r\n        resume: '1',\r\n        position: String(Math.max(0, Math.min(1, Number(session.position) || 0))),\r\n        ...(session.paragraphAnchor ? { anchor: session.paragraphAnchor } : {})\r\n      }\r\n    };\r\n    try {\r\n      await this.$router.push(route);\r\n    } catch (error) {\r\n      if (!(error && (error as { name?: string }).name === 'NavigationDuplicated')) {\r\n        return false;\r\n      }\r\n    }\r\n    this.mobileView = 'content';\r\n    this.setReadMode(true);\r\n    return true;\r\n  }\r\n\r\n  openMobileBookSearch() {\r\n    const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n    const book = this.$route.params.book;\r\n    if (!book) {\r\n      return;\r\n    }\r\n    const returnTo = this.captureMobileReadingReturnRoute() || this.$route.fullPath;\r\n    const query = new URLSearchParams({\r\n      slug: book,\r\n      inBookOnly: '1',\r\n      bookSearch: '1',\r\n      returnTo\r\n    });\r\n    const currentBookId =\r\n      (this.currentBook && this.currentBook.slug === book && this.currentBook.id) ||\r\n      (this.currentBookSection &&\r\n        this.currentBookSection.book.slug === book &&\r\n        this.currentBookSection.book.id);\r\n    if (currentBookId) {\r\n      query.set('bookId', currentBookId.toString());\r\n    }\r\n    const bookTab = this.$store.state.tabs.list.find(\r\n      (tab: Tab) => tab.bookKey === `${language}:${book}` && tab.bookName\r\n    ) as Tab | undefined;\r\n    this.mobileBookSearchName = (bookTab && bookTab.bookName) || book;\r\n    this.mobileBookSearchSlug = book;\r\n    this.$router.push(`/${language}/search?${query.toString()}`);\r\n  }\r\n\r\n  closeMobileBookSearch() {\r\n    const returnTo = this.$route.query.returnTo;\r\n    if (typeof returnTo === 'string' && returnTo) {\r\n      this.$store.commit('navigation/setError', false);\r\n      this.$router.replace(returnTo);\r\n      return;\r\n    }\r\n    const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n    const book = this.$route.query.slug;\r\n    this.$router.push(\r\n      typeof book === 'string' && book ? `/${language}/books/${book}` : `/${language}/library`\r\n    );\r\n  }\r\n\r\n  captureMobileReadingReturnRoute() {\r\n    if (!this.isBookSectionRoute) {\r\n      return '';\r\n    }\r\n    const payload = this.currentBookmarkPayload();\r\n    const query = new URLSearchParams();\r\n    Object.entries(this.$route.query || {}).forEach(([name, value]) => {\r\n      if (typeof value === 'string' && !['bookmark', 'toc', 'resume', 'position', 'anchor'].includes(name)) {\r\n        query.set(name, value);\r\n      }\r\n    });\r\n    query.set('reading', '1');\r\n    if (payload) {\r\n      query.set('resume', '1');\r\n      query.set('position', String(Math.max(0, Math.min(1, Number(payload.position) || 0))));\r\n      if (payload.anchor) {\r\n        query.set('anchor', payload.anchor);\r\n      }\r\n    }\r\n    const queryString = query.toString();\r\n    return queryString ? `${this.$route.path}?${queryString}` : this.$route.path;\r\n  }\r\n\r\n  isSafeInternalRoute(route: string) {\r\n    return route.startsWith('/') && !route.startsWith('//') && !/[\\r\\n]/.test(route);\r\n  }\r\n\r\n  returnToMobileReader() {\r\n    const returnTo = this.mobileSettingsReturnTo;\r\n    if (!returnTo) {\r\n      return;\r\n    }\r\n    this.$store.commit('navigation/setError', false);\r\n    this.$router.replace(returnTo).catch(() => {});\r\n  }\r\n\r\n  openMobileSearchArea() {\r\n    this.saveMobileCatalogState('library');\r\n    this.restoreMobileCatalogState('searchArea');\r\n    this.$store.commit('navigation/setShowSearchResultsFlag', false);\r\n    this.mobileView = 'search-area';\r\n    this.mobileCatalogVisible = false;\r\n    this.mobileLanguageMenuVisible = false;\r\n    this.readerChromeVisible = true;\r\n    this.setTextTypesFilterVisible(false);\r\n    this.setReadMode(false);\r\n    if (this.$route.name === 'search-results' && this.$route.query.scope !== '1') {\r\n      this.$router.push({ query: { ...this.$route.query, scope: '1' } });\r\n    }\r\n  }\r\n\r\n  closeMobileSearchArea() {\r\n    this.saveMobileCatalogState('searchArea');\r\n    this.restoreMobileCatalogState('library');\r\n    this.mobileView = 'search';\r\n    this.readerChromeVisible = true;\r\n    this.$store.commit(\r\n      'navigation/setShowSearchResultsFlag',\r\n      typeof this.$route.query.query === 'string' && !!this.$route.query.query\r\n    );\r\n    if (this.$route.name === 'search-results' && this.$route.query.scope === '1') {\r\n      const query = { ...this.$route.query };\r\n      delete query.scope;\r\n      this.$router.replace({ query });\r\n    }\r\n  }\r\n\r\n  changeCatalogLanguage(language: string) {\r\n    if (this.isCompactViewport && this.mobileView === 'library') {\r\n      this.saveMobileCatalogState('library');\r\n    }\r\n    this.setNavLanguage(language);\r\n    this.mobileLanguageMenuVisible = false;\r\n    if (this.isCompactViewport && this.mobileView === 'library') {\r\n      const libraryRoute = `/${language}/library`;\r\n      if (this.$route.path !== libraryRoute) {\r\n        this.$router.push(libraryRoute);\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleMobileLanguageMenu() {\r\n    this.mobileLanguageMenuVisible = !this.mobileLanguageMenuVisible;\r\n    if (this.mobileLanguageMenuVisible) {\r\n      this.$nextTick(() => {\r\n        const options = (this.$refs.mobileLanguageOptions || []) as HTMLElement[];\r\n        const selectedIndex = this.catalogLanguages.findIndex(language => language.code === this.navLanguage);\r\n        const selected = options[Math.max(0, selectedIndex)];\r\n        if (selected) {\r\n          selected.focus();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  closeMobileLanguageMenu(restoreFocus: boolean = false) {\r\n    this.mobileLanguageMenuVisible = false;\r\n    if (restoreFocus) {\r\n      this.$nextTick(() => {\r\n        const trigger = this.$refs.mobileLanguageTrigger as HTMLElement;\r\n        if (trigger) {\r\n          trigger.focus();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  onDocumentKeydown(event: KeyboardEvent) {\r\n    if (this.presentationMode) {\r\n      this.onPresentationActivity();\r\n      if (event.key === 'Escape') {\r\n        event.preventDefault();\r\n        this.exitPresentationMode();\r\n        return;\r\n      }\r\n      if (this.presentationSettingsOpen) {\r\n        return;\r\n      }\r\n      if (['ArrowLeft', 'PageUp'].includes(event.key)) {\r\n        event.preventDefault();\r\n        this.navigatePresentation(-1);\r\n        return;\r\n      }\r\n      if (['ArrowRight', 'PageDown', ' '].includes(event.key)) {\r\n        event.preventDefault();\r\n        this.navigatePresentation(1);\r\n      }\r\n      return;\r\n    }\r\n    if (!this.mobileLanguageMenuVisible) {\r\n      return;\r\n    }\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      this.closeMobileLanguageMenu(true);\r\n      return;\r\n    }\r\n    if (event.key === 'Tab') {\r\n      this.closeMobileLanguageMenu();\r\n      return;\r\n    }\r\n    if (!['ArrowDown', 'ArrowUp'].includes(event.key)) {\r\n      return;\r\n    }\r\n    const options = (this.$refs.mobileLanguageOptions || []) as HTMLElement[];\r\n    if (!options.length) {\r\n      return;\r\n    }\r\n    event.preventDefault();\r\n    const currentIndex = options.indexOf(document.activeElement as HTMLElement);\r\n    const direction = event.key === 'ArrowDown' ? 1 : -1;\r\n    const nextIndex = (currentIndex + direction + options.length) % options.length;\r\n    options[nextIndex].focus();\r\n  }\r\n\r\n  syncPresentationModeWithRoute(route: Route) {\r\n    const requested = BOOK_SECTION_ROUTE_NAMES.includes(route.name || '') && route.query.presentation === '1';\r\n    if (requested) {\r\n      this.setReadMode(true);\r\n      this.setPresentationMode(true);\r\n      this.onPresentationActivity();\r\n    } else if (this.presentationMode) {\r\n      this.deactivatePresentation(false);\r\n    }\r\n  }\r\n\r\n  enterPresentationMode() {\r\n    if (!this.isBookSectionRoute) {\r\n      return;\r\n    }\r\n    this.mobileCatalogVisible = false;\r\n    this.mobileThemePickerVisible = false;\r\n    this.mobileBookmarkSheetVisible = false;\r\n    this.setTextTypesFilterVisible(false);\r\n    this.setReadMode(true);\r\n    this.setPresentationMode(true);\r\n    this.presentationSettingsOpen = false;\r\n    this.onPresentationActivity();\r\n\r\n    const query: { [key: string]: any } = {\r\n      ...this.$route.query,\r\n      reading: '1',\r\n      presentation: '1'\r\n    };\r\n    delete query.bookmark;\r\n    delete query.resume;\r\n    delete query.toc;\r\n    delete query.position;\r\n    delete query.anchor;\r\n    this.$router.replace({ path: this.$route.path, query }).catch(() => {});\r\n\r\n    const fullscreenElement = document.documentElement as HTMLElement & {\r\n      requestFullscreen?: () => Promise<void>;\r\n    };\r\n    if (!document.fullscreenElement && fullscreenElement.requestFullscreen) {\r\n      this.presentationOwnsFullscreen = true;\r\n      fullscreenElement.requestFullscreen().catch(() => {\r\n        this.presentationOwnsFullscreen = false;\r\n      });\r\n    }\r\n  }\r\n\r\n  exitPresentationMode() {\r\n    this.deactivatePresentation(true);\r\n  }\r\n\r\n  deactivatePresentation(syncRoute: boolean) {\r\n    this.setPresentationMode(false);\r\n    this.presentationSettingsOpen = false;\r\n    this.presentationControlsVisible = true;\r\n    if (this.presentationControlsTimer !== undefined) {\r\n      window.clearTimeout(this.presentationControlsTimer);\r\n      this.presentationControlsTimer = undefined;\r\n    }\r\n    const shouldExitFullscreen = this.presentationOwnsFullscreen && !!document.fullscreenElement;\r\n    this.presentationOwnsFullscreen = false;\r\n    if (shouldExitFullscreen && document.exitFullscreen) {\r\n      document.exitFullscreen().catch(() => {});\r\n    }\r\n    if (syncRoute && this.$route.query.presentation === '1') {\r\n      const query = { ...this.$route.query };\r\n      delete query.presentation;\r\n      this.$router.replace({ path: this.$route.path, query }).catch(() => {});\r\n    }\r\n  }\r\n\r\n  onFullscreenChange() {\r\n    if (this.presentationMode && this.presentationOwnsFullscreen && !document.fullscreenElement) {\r\n      this.presentationOwnsFullscreen = false;\r\n      this.deactivatePresentation(true);\r\n    }\r\n  }\r\n\r\n  onPresentationActivity() {\r\n    if (!this.presentationMode) {\r\n      return;\r\n    }\r\n    this.presentationControlsVisible = true;\r\n    if (this.presentationControlsTimer !== undefined) {\r\n      window.clearTimeout(this.presentationControlsTimer);\r\n    }\r\n    if (this.presentationSettingsOpen) {\r\n      this.presentationControlsTimer = undefined;\r\n      return;\r\n    }\r\n    this.presentationControlsTimer = window.setTimeout(() => {\r\n      this.presentationControlsVisible = false;\r\n      this.presentationControlsTimer = undefined;\r\n    }, 3000);\r\n  }\r\n\r\n  onPresentationSettingsChange(open: boolean) {\r\n    this.presentationSettingsOpen = open;\r\n    this.onPresentationActivity();\r\n  }\r\n\r\n  updatePresentationScale(scale: number) {\r\n    this.setPresentationAutoFit(false);\r\n    this.setPresentationScale(Number(scale.toFixed(1)));\r\n    this.onPresentationActivity();\r\n  }\r\n\r\n  navigatePresentation(direction: number) {\r\n    const target = this.presentationSections[this.presentationCurrentIndex + direction];\r\n    if (!target) {\r\n      return;\r\n    }\r\n    const path = UrlBuilderService.getBookSectionUrl({\r\n      language: target.book.language,\r\n      categorySlug: this.$route.params.category,\r\n      authorSlug: this.$route.params.author,\r\n      bookSlug: target.book.slug,\r\n      bookSectionSlug: target.slug\r\n    });\r\n    this.$router.push({ path, query: { reading: '1', presentation: '1' } }).catch(() => {});\r\n    this.onPresentationActivity();\r\n  }\r\n\r\n  saveMobileCatalogState(context: 'library' | 'searchArea') {\r\n    const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n    const states = this.getMobileCatalogStates(language);\r\n    const scrollElement = this.getMobileCatalogScrollElement(context);\r\n    states[context] = {\r\n      listType: this.$store.state.navigation.listType,\r\n      filterQuery: this.$store.state.navigation.filterQuery,\r\n      expanded: this.captureMobileCatalogExpansion(),\r\n      scrollTop: scrollElement ? scrollElement.scrollTop : states[context].scrollTop || 0\r\n    };\r\n    StorageService.save(MOBILE_CATALOG_STATES_LOCAL_STORAGE_PARAM, this.mobileCatalogStates);\r\n  }\r\n\r\n  async restoreMobileCatalogState(context: 'library' | 'searchArea') {\r\n    const language = this.$route.params.language || this.navLanguage || LANGUAGE_CODE_DEFAULT;\r\n    const state = this.getMobileCatalogStates(language)[context];\r\n    const restoreToken = ++this.mobileCatalogRestoreToken;\r\n    if (this.$store.state.navigation.language !== language) {\r\n      this.setNavLanguage(language);\r\n    }\r\n    this.$store.commit('navigation/setListType', state.listType);\r\n    this.$store.commit('navigation/updateFilterQuery', state.filterQuery);\r\n    this.$store.commit('navigation/resetFilter');\r\n    if (state.filterQuery) {\r\n      await this.$store.dispatch('navigation/filter', {\r\n        language,\r\n        query: state.filterQuery\r\n      });\r\n    }\r\n    if (\r\n      restoreToken !== this.mobileCatalogRestoreToken ||\r\n      this.$store.state.navigation.language !== language\r\n    ) {\r\n      return;\r\n    }\r\n    this.$store.commit('navigation/restoreExpansionState', state.expanded);\r\n    await this.$nextTick();\r\n    window.requestAnimationFrame(() => {\r\n      if (restoreToken !== this.mobileCatalogRestoreToken) {\r\n        return;\r\n      }\r\n      const scrollElement = this.getMobileCatalogScrollElement(context);\r\n      if (scrollElement) {\r\n        scrollElement.scrollTop = state.scrollTop || 0;\r\n      }\r\n    });\r\n  }\r\n\r\n  getMobileCatalogStates(language: string) {\r\n    if (!this.mobileCatalogStates[language]) {\r\n      this.$set(this.mobileCatalogStates, language, {\r\n        library: defaultMobileCatalogState(),\r\n        searchArea: defaultMobileCatalogState()\r\n      });\r\n    }\r\n    return this.mobileCatalogStates[language];\r\n  }\r\n\r\n  getMobileCatalogScrollElement(context: 'library' | 'searchArea') {\r\n    const modeClass = context === 'library' ? 'mobile-library' : 'mobile-search-area';\r\n    const root = this.$el as HTMLElement | undefined;\r\n    if (!(root && typeof root.querySelector === 'function')) {\r\n      return null;\r\n    }\r\n    return root.querySelector(`.left.${modeClass} .nav-catalog-tree-inner`) as HTMLElement | null;\r\n  }\r\n\r\n  captureMobileCatalogExpansion(): MobileCatalogExpansionState {\r\n    const data = this.$store.getters['navigation/dataFromStateLanguage'];\r\n    const sections: string[] = [];\r\n    const collectSections = (items: Array<BookSection>, bookSlug: string) => {\r\n      items.forEach(section => {\r\n        if (section.expanded) {\r\n          sections.push(`${bookSlug}:${section.id}`);\r\n        }\r\n        collectSections(section.children || [], bookSlug);\r\n      });\r\n    };\r\n    Object.values(data.books || {}).forEach((book: any) => collectSections(book.children || [], book.slug));\r\n    Object.values(data.foundBooks || {}).forEach((book: any) =>\r\n      collectSections(book.children || [], book.slug)\r\n    );\r\n    return {\r\n      categories: (data.categories || []).filter((item: any) => item.expanded).map((item: any) => item.id),\r\n      authors: (data.authors || []).filter((item: any) => item.expanded).map((item: any) => item.id),\r\n      bookLetters: (data.booksAlphabet || [])\r\n        .filter((item: any) => item.expanded)\r\n        .map((item: any) => item.id),\r\n      authorLetters: (data.authorsAlphabet || [])\r\n        .filter((item: any) => item.expanded)\r\n        .map((item: any) => item.id),\r\n      books: Object.values(data.books || {})\r\n        .filter((item: any) => item.expanded)\r\n        .map((item: any) => item.slug),\r\n      foundBooks: Object.values(data.foundBooks || {})\r\n        .filter((item: any) => item.expanded)\r\n        .map((item: any) => item.slug),\r\n      sections\r\n    };\r\n  }\r\n\r\n  openReaderCatalog() {\r\n    this.readerChromeVisible = true;\r\n    this.setTextTypesFilterVisible(false);\r\n    this.mobileThemePickerVisible = false;\r\n    if (this.readerBook && this.mobileTocInitializedBookKey !== this.readerBook.slug) {\r\n      this.$store.commit('navigation/collapseBookTree', this.readerBook.slug);\r\n      this.mobileTocInitializedBookKey = this.readerBook.slug;\r\n    }\r\n    this.mobileCatalogVisible = true;\r\n    if (typeof this.$nextTick === 'function') {\r\n      this.$nextTick(() => this.scrollCurrentTocSectionIntoView());\r\n    }\r\n  }\r\n\r\n  scrollCurrentTocSectionIntoView() {\r\n    const root = this.$el as HTMLElement | undefined;\r\n    if (!(root && typeof root.querySelector === 'function')) {\r\n      return;\r\n    }\r\n    const scroll = root.querySelector('.mobile-toc-scroll') as HTMLElement | null;\r\n    const current = root.querySelector(\r\n      '.mobile-toc-scroll .nav-section.current-section'\r\n    ) as HTMLElement | null;\r\n    if (!(scroll && current)) {\r\n      return;\r\n    }\r\n    scroll.scrollLeft = 0;\r\n    const scrollRect = scroll.getBoundingClientRect();\r\n    const currentRect = current.getBoundingClientRect();\r\n    scroll.scrollTop +=\r\n      currentRect.top - scrollRect.top - Math.max(12, (scroll.clientHeight - currentRect.height) / 2);\r\n  }\r\n\r\n  toggleMobileThemePicker() {\r\n    this.readerChromeVisible = true;\r\n    this.mobileCatalogVisible = false;\r\n    this.setTextTypesFilterVisible(false);\r\n    this.mobileThemePickerVisible = !this.mobileThemePickerVisible;\r\n  }\r\n\r\n  onReaderScroll(event: ReaderScrollEvent | string) {\r\n    if (\r\n      !this.mobileReader ||\r\n      this.mobileCatalogVisible ||\r\n      this.mobileThemePickerVisible ||\r\n      this.$store.state.reader.isTextTypesFiltersVisible\r\n    ) {\r\n      return;\r\n    }\r\n    const scrollEvent: ReaderScrollEvent =\r\n      typeof event === 'string'\r\n        ? { direction: event as 'up' | 'down', delta: 16, top: 100, max: 1000 }\r\n        : event;\r\n    const remaining = Math.max(0, scrollEvent.max - scrollEvent.top);\r\n    if (scrollEvent.top <= 16) {\r\n      this.readerChromeVisible = true;\r\n      this.resetReaderScrollIntent();\r\n      return;\r\n    }\r\n    if (remaining <= 32) {\r\n      const shouldPinEnd = !this.readerChromeVisible;\r\n      this.readerChromeVisible = true;\r\n      this.resetReaderScrollIntent();\r\n      if (shouldPinEnd) {\r\n        this.$nextTick(this.pinReaderToEnd);\r\n      }\r\n      return;\r\n    }\r\n    if (this.readerScrollDirection !== scrollEvent.direction) {\r\n      this.readerScrollDirection = scrollEvent.direction;\r\n      this.readerScrollDistance = 0;\r\n    }\r\n    this.readerScrollDistance += scrollEvent.delta;\r\n    if (scrollEvent.direction === 'down' && this.readerChromeVisible && this.readerScrollDistance >= 72) {\r\n      this.readerChromeVisible = false;\r\n      this.resetReaderScrollIntent();\r\n    } else if (\r\n      scrollEvent.direction === 'up' &&\r\n      !this.readerChromeVisible &&\r\n      this.readerScrollDistance >= 48\r\n    ) {\r\n      this.readerChromeVisible = true;\r\n      this.resetReaderScrollIntent();\r\n    }\r\n  }\r\n\r\n  resetReaderScrollIntent() {\r\n    this.readerScrollDirection = '';\r\n    this.readerScrollDistance = 0;\r\n  }\r\n\r\n  pinReaderToEnd() {\r\n    const root = this.$el as HTMLElement | undefined;\r\n    if (!(root && typeof root.querySelector === 'function')) {\r\n      return;\r\n    }\r\n    const scroll = root.querySelector('.book-content .scroll') as HTMLElement | null;\r\n    if (!scroll) {\r\n      return;\r\n    }\r\n    const token = ++this.readerEndPinToken;\r\n    const startedAt = performance.now();\r\n    const pin = () => {\r\n      if (token !== this.readerEndPinToken) {\r\n        return;\r\n      }\r\n      scroll.scrollTop = Math.max(0, scroll.scrollHeight - scroll.clientHeight);\r\n      if (performance.now() - startedAt < 240) {\r\n        window.requestAnimationFrame(pin);\r\n      }\r\n    };\r\n    window.requestAnimationFrame(pin);\r\n  }\r\n\r\n  showReaderChrome() {\r\n    if (this.mobileReader && !this.readerChromeVisible) {\r\n      this.readerChromeVisible = true;\r\n    }\r\n  }\r\n\r\n  onContentInteraction() {\r\n    if (this.presentationMode) {\r\n      this.onPresentationActivity();\r\n      return;\r\n    }\r\n    this.showReaderChrome();\r\n  }\r\n\r\n  async hydrateReadingState() {\r\n    if (!this.$store.state.auth.authorized) {\r\n      return;\r\n    }\r\n    try {\r\n      const readingTabs = await UserService.getReadingTabs();\r\n      this.$store.commit('tabs/mergeServerReadingTabs', readingTabs);\r\n      if (this.isCompactViewport) {\r\n        this.$store.commit('tabs/keepOnlyActiveTab');\r\n      }\r\n    } catch (e) {\r\n      // Local tabs remain available while an older backend is being upgraded.\r\n    }\r\n    try {\r\n      const bookmarks = await UserService.getBookmarks();\r\n      this.$store.commit('bookmarks/mergeServerRecords', bookmarks);\r\n    } catch (e) {\r\n      // Guest and offline bookmarks remain available from local storage.\r\n    }\r\n  }\r\n\r\n  currentBookmarkPayload() {\r\n    const activeTab = this.activeTab as Tab | undefined;\r\n    const contentView = (this.$refs && this.$refs.contentView) as\r\n      | { captureCurrentReadingPosition?: () => any }\r\n      | undefined;\r\n    const livePosition =\r\n      contentView && typeof contentView.captureCurrentReadingPosition === 'function'\r\n        ? contentView.captureCurrentReadingPosition()\r\n        : null;\r\n    const tab = livePosition\r\n      ? ({\r\n          ...activeTab,\r\n          bookKey: livePosition.bookKey,\r\n          link: livePosition.link,\r\n          location: livePosition.location,\r\n          position: livePosition.position,\r\n          paragraphAnchor: livePosition.paragraphAnchor\r\n        } as Tab)\r\n      : activeTab;\r\n    if (!(tab && tab.bookKey && tab.link)) {\r\n      return null;\r\n    }\r\n    const [language, book] = tab.bookKey.split(':');\r\n    const segments = tab.link\r\n      .split('?')[0]\r\n      .split('/')\r\n      .filter(Boolean);\r\n    const section = segments[segments.length - 1] === book ? '' : segments[segments.length - 1];\r\n    return {\r\n      language,\r\n      book,\r\n      section,\r\n      position: Number(tab.position) || 0,\r\n      anchor: tab.paragraphAnchor || '',\r\n      tab\r\n    };\r\n  }\r\n\r\n  resolveBookmarkSection(bookmark: Bookmark) {\r\n    if (!bookmark.anchor) {\r\n      return '';\r\n    }\r\n    const bookmarkAnchor = bookmark.anchor;\r\n    const data = this.$store.state.navigation.data[bookmark.language];\r\n    const book = data && data.books ? data.books[bookmark.book] : null;\r\n    if (!(book && Array.isArray(book.children))) {\r\n      return '';\r\n    }\r\n    const candidates = book.children\r\n      .map((section: BookSection) => ({\r\n        slug: section.slug,\r\n        anchorPrefix: `paragraph-${String(section.slug || section.id || 'section')\r\n          .toLowerCase()\r\n          .replace(/[^a-z0-9]+/g, '-')\r\n          .replace(/^-|-$/g, '')}-`\r\n      }))\r\n      .sort(\r\n        (left: { anchorPrefix: string }, right: { anchorPrefix: string }) =>\r\n          right.anchorPrefix.length - left.anchorPrefix.length\r\n      );\r\n    const match = candidates.find((candidate: { anchorPrefix: string }) =>\r\n      bookmarkAnchor.startsWith(candidate.anchorPrefix)\r\n    );\r\n    return match ? match.slug : '';\r\n  }\r\n\r\n  replaceBookmarkSectionInLink(link: string, bookSlug: string, sectionSlug: string) {\r\n    const segments = link\r\n      .split('?')[0]\r\n      .split('/')\r\n      .filter(Boolean);\r\n    const lastSegment = segments[segments.length - 1];\r\n    if (lastSegment === bookSlug) {\r\n      segments.push(sectionSlug);\r\n    } else {\r\n      segments[segments.length - 1] = sectionSlug;\r\n    }\r\n    return `/${segments.join('/')}`;\r\n  }\r\n\r\n  localBookmark(\r\n    payload: ReturnType<Reader['currentBookmarkPayload']>,\r\n    id?: string | number,\r\n    note: string = ''\r\n  ) {\r\n    if (!payload) {\r\n      return null;\r\n    }\r\n    return {\r\n      id:\r\n        id ||\r\n        `local:${Date.now()}:${Math.random()\r\n          .toString(36)\r\n          .slice(2)}`,\r\n      type: 'manual' as const,\r\n      bookKey: payload.tab.bookKey as string,\r\n      bookName:\r\n        payload.tab.bookName || payload.tab.name || (this.readerBook && this.readerBook.name) || payload.book,\r\n      language: payload.language,\r\n      book: payload.book,\r\n      link: payload.tab.link as string,\r\n      location: payload.tab.location || payload.section,\r\n      position: payload.position,\r\n      anchor: payload.anchor,\r\n      note,\r\n      updatedAt: new Date().toISOString()\r\n    };\r\n  }\r\n\r\n  async addBookmarkAtCurrentPlace(note: string = '') {\r\n    const payload = this.currentBookmarkPayload();\r\n    const local = this.localBookmark(payload, undefined, note);\r\n    if (!(payload && local)) {\r\n      return;\r\n    }\r\n    this.$store.commit('bookmarks/upsert', local);\r\n    if (this.$store.state.auth.authorized) {\r\n      try {\r\n        const saved = await UserService.createBookmark({\r\n          language: payload.language,\r\n          book: payload.book,\r\n          section: payload.section,\r\n          position: payload.position,\r\n          paragraph_anchor: payload.anchor,\r\n          note\r\n        });\r\n        const bookmark = saved ? mapServerBookmark(saved) : null;\r\n        if (bookmark) {\r\n          this.$store.commit('bookmarks/remove', local.id);\r\n          this.$store.commit('bookmarks/upsert', bookmark);\r\n        }\r\n      } catch (e) {\r\n        // The local bookmark remains available until synchronization can be retried.\r\n      }\r\n    }\r\n    this.mobileBookmarkSheetVisible = false;\r\n  }\r\n\r\n  async moveBookmarkToCurrentPlace(bookmark: Bookmark) {\r\n    const payload = this.currentBookmarkPayload();\r\n    if (!(payload && bookmark.bookKey === payload.tab.bookKey)) {\r\n      return;\r\n    }\r\n    const moved = this.localBookmark(payload, bookmark.id, bookmark.note || '');\r\n    if (!moved) {\r\n      return;\r\n    }\r\n    this.$store.commit('bookmarks/upsert', moved);\r\n    if (this.$store.state.auth.authorized && typeof bookmark.id === 'number') {\r\n      try {\r\n        const saved = await UserService.updateBookmark(bookmark.id, {\r\n          language: payload.language,\r\n          book: payload.book,\r\n          section: payload.section,\r\n          position: payload.position,\r\n          paragraph_anchor: payload.anchor,\r\n          note: bookmark.note || ''\r\n        });\r\n        const serverBookmark = mapServerBookmark(saved);\r\n        if (serverBookmark) {\r\n          this.$store.commit('bookmarks/upsert', serverBookmark);\r\n        }\r\n      } catch (e) {\r\n        this.$store.commit('bookmarks/upsert', bookmark);\r\n      }\r\n    }\r\n    this.mobileBookmarkSheetVisible = false;\r\n  }\r\n\r\n  async removeBookmark(bookmark: Bookmark) {\r\n    this.$store.commit('bookmarks/remove', bookmark.id);\r\n    if (this.$store.state.auth.authorized && typeof bookmark.id === 'number') {\r\n      UserService.removeBookmark(bookmark.id).catch(() => {\r\n        this.$store.commit('bookmarks/upsert', bookmark);\r\n      });\r\n    }\r\n  }\r\n\r\n  async updateBookmarkNote(payload: { bookmark: Bookmark; note: string }) {\r\n    const updated = {\r\n      ...payload.bookmark,\r\n      note: payload.note,\r\n      updatedAt: new Date().toISOString()\r\n    };\r\n    this.$store.commit('bookmarks/upsert', updated);\r\n    if (\r\n      !this.$store.state.auth.authorized ||\r\n      typeof payload.bookmark.id !== 'number' ||\r\n      !UserService.bookmarksApiEnabled\r\n    ) {\r\n      return;\r\n    }\r\n    const segments = payload.bookmark.link\r\n      .split('?')[0]\r\n      .split('/')\r\n      .filter(Boolean);\r\n    const section = segments[segments.length - 1] === payload.bookmark.book ? '' : segments.pop() || '';\r\n    try {\r\n      const saved = await UserService.updateBookmark(payload.bookmark.id, {\r\n        language: payload.bookmark.language,\r\n        book: payload.bookmark.book,\r\n        section,\r\n        position: payload.bookmark.position,\r\n        paragraph_anchor: payload.bookmark.anchor || '',\r\n        note: payload.note\r\n      });\r\n      const bookmark = saved ? mapServerBookmark(saved) : null;\r\n      if (bookmark) {\r\n        this.$store.commit('bookmarks/upsert', bookmark);\r\n      }\r\n    } catch (e) {\r\n      this.$store.commit('bookmarks/upsert', payload.bookmark);\r\n    }\r\n  }\r\n\r\n  async openMobileBookmark(bookmark: Bookmark) {\r\n    const sectionSlug = bookmark.link\r\n      .split('?')[0]\r\n      .split('/')\r\n      .filter(Boolean)\r\n      .pop();\r\n    const storedSection = sectionSlug && sectionSlug !== bookmark.book ? sectionSlug : '';\r\n    await this.prepareMobileReaderNavigation(bookmark.language, bookmark.book, storedSection);\r\n    const resolvedSection =\r\n      typeof this.resolveBookmarkSection === 'function' ? this.resolveBookmarkSection(bookmark) : '';\r\n    const bookmarkSection = resolvedSection || storedSection;\r\n    if (bookmarkSection && bookmarkSection !== storedSection) {\r\n      await this.prepareMobileReaderNavigation(bookmark.language, bookmark.book, bookmarkSection);\r\n    }\r\n    const bookmarkLink =\r\n      bookmarkSection && bookmarkSection !== storedSection\r\n        ? this.replaceBookmarkSectionInLink(bookmark.link, bookmark.book, bookmarkSection)\r\n        : bookmark.link;\r\n    this.$store.commit('tabs/activateBookTab', {\r\n      bookKey: bookmark.bookKey,\r\n      link: bookmarkLink,\r\n      name: `${bookmark.bookName} — ${bookmark.location}`,\r\n      bookName: bookmark.bookName,\r\n      location: bookmark.location,\r\n      position: bookmark.position,\r\n      paragraphAnchor: bookmark.anchor || ''\r\n    });\r\n    this.$store.commit('tabs/keepOnlyActiveTab');\r\n    const bookmarkRoute = {\r\n      path: bookmarkLink,\r\n      query: {\r\n        bookmark: '1',\r\n        position: String(Math.max(0, Math.min(1, Number(bookmark.position) || 0))),\r\n        ...(bookmark.anchor ? { anchor: bookmark.anchor } : {}),\r\n        reading: '1'\r\n      }\r\n    };\r\n    if (this.$route.path !== bookmarkLink || this.$route.query.anchor !== bookmark.anchor) {\r\n      try {\r\n        await this.$router.push(bookmarkRoute);\r\n      } catch (error) {\r\n        if (!(error && (error as { name?: string }).name === 'NavigationDuplicated')) {\r\n          return;\r\n        }\r\n      }\r\n    }\r\n    this.mobileView = 'content';\r\n  }\r\n\r\n  onReaderLinkSelected(payload: { link: string; name: string }) {\r\n    const bookKey = getBookKeyFromLink(payload.link);\r\n    if (bookKey) {\r\n      const sectionLink = isBookSectionLink(payload.link);\r\n      this.$store.commit('tabs/activateBookTab', {\r\n        bookKey,\r\n        link: payload.link,\r\n        name: payload.name,\r\n        bookName: sectionLink ? undefined : payload.name,\r\n        location: sectionLink ? payload.name : undefined,\r\n        preserveLastLocation: !sectionLink\r\n      });\r\n    } else {\r\n      this.$store.commit('tabs/updateActiveTabLink', payload.link);\r\n      this.$store.commit('tabs/updateActiveTabName', payload.name);\r\n    }\r\n    if (!this.isCompactViewport) {\r\n      return;\r\n    }\r\n    this.$store.commit('tabs/keepOnlyActiveTab');\r\n    this.mobileCatalogVisible = false;\r\n    this.mobileView = 'content';\r\n    if (payload.link.split('?')[0] === this.$route.path) {\r\n      this.syncMobileViewWithRoute();\r\n    }\r\n  }\r\n\r\n  onMouseMove(e: MouseEvent) {\r\n    let leftColumnWidth = this.leftColumnWidth;\r\n    leftColumnWidth += e.pageX - this.prevPageX;\r\n    leftColumnWidth = Reader.normalizeLeftColumnWidth(leftColumnWidth);\r\n    this.leftColumnWidth = leftColumnWidth;\r\n    this.prevPageX = e.pageX;\r\n  }\r\n\r\n  onMouseUp() {\r\n    StorageService.save(LEFT_COLUMN_LOCAL_STORAGE_PARAM, this.leftColumnWidth);\r\n    document.removeEventListener('mousemove', this.onMouseMove);\r\n    document.removeEventListener('mouseup', this.onMouseUp);\r\n    document.body.classList.remove('disable-text-select');\r\n  }\r\n\r\n  onMouseDown(e: MouseEvent) {\r\n    document.addEventListener('mousemove', this.onMouseMove);\r\n    document.addEventListener('mouseup', this.onMouseUp);\r\n    document.body.classList.add('disable-text-select');\r\n    this.prevPageX = e.pageX;\r\n  }\r\n\r\n  static normalizeLeftColumnWidth(leftColumnWidth: number) {\r\n    let normalized = Math.min(leftColumnWidth, MAX_LEFT_COLUMN_WIDTH);\r\n    normalized = Math.max(normalized, MIN_LEFT_COLUMN_WIDTH);\r\n    return normalized;\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Reader.vue?vue&type=template&id=158387b2&scoped=true&\"\nimport script from \"./Reader.vue?vue&type=script&lang=ts&\"\nexport * from \"./Reader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Reader.vue?vue&type=style&index=0&id=158387b2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"158387b2\",\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('div',{staticClass:\"book-content\",class:[\n    _vm.textTypeVisibilityClasses,\n    {\n      'has-mobile-pagination': !!_vm.mobilePaginationType,\n      'presentation-mode': _vm.presentationMode\n    }\n  ],on:{\"click\":_vm.onClickOnNote}},[_c('Loader',{attrs:{\"hidden\":!_vm.loading || _vm.blockingError}}),(_vm.blockingError)?_c('div',{staticClass:\"book-content-error red-color\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('errorOccurred'))),_c('br'),_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('tryToRefreshPage'))+\"\\n  \")]):_vm._e(),_c('div',{staticClass:\"container\",class:{ hidden: _vm.loading || _vm.blockingError }},[_c('Loader',{staticClass:\"mini-loader\",attrs:{\"hidden\":!_vm.loadingMore}}),_c('div',{ref:\"scroll\",staticClass:\"scroll\"},[_vm._l((_vm.currentBookSectionsWithContent.filter(function (one) { return one; })),function(bookSection){return _c('div',{key:bookSection.book.id + bookSection.code,staticClass:\"page\",class:{\n          loading: _vm.loading,\n          'presentation-current': _vm.isPresentationCurrentSection(bookSection)\n        },style:(_vm.getPageStyle(bookSection)),attrs:{\"data-page\":_vm.getBookSectionUrl(bookSection),\"data-is-parent\":bookSection.isParent}},[(bookSection.content.isFirst)?_c('h1',{staticClass:\"book-title\"},[_vm._v(\"\\n          \"+_vm._s(_vm.formatBookTitle(bookSection.content.book_title))+\"\\n        \")]):_vm._e(),(!bookSection.content.is_article)?_c('h1',{staticClass:\"title\"},[_vm._v(\"\\n          \"+_vm._s(bookSection.content.title)+\"\\n        \")]):_vm._e(),(bookSection.content.entities.length)?_c('div',_vm._l((bookSection.content.entities),function(entity,index){return _c('div',{key:index,staticClass:\"paragraph\",class:(\"paragraph--type-\" + (entity.type)),attrs:{\"id\":_vm.getParagraphAnchor(bookSection, index),\"data-paragraph-anchor\":_vm.getParagraphAnchor(bookSection, index)}},[(entity.type === 'literary')?_c('div',{staticClass:\"note\"},[_vm._v(_vm._s(_vm.getTranslation('translation'))+\":\")]):_vm._e(),(entity.type === 'word-by-word')?_c('div',{staticClass:\"note\"},[_vm._v(\"\\n              \"+_vm._s(_vm.getTranslation('wordByWordTranslation'))+\":\\n            \")]):_vm._e(),(entity.type === 'comment')?_c('div',{staticClass:\"note\"},[_vm._v(_vm._s(_vm.getTranslation('comment'))+\":\")]):_vm._e(),(entity.type === 'comment-plus')?_c('div',{staticClass:\"note\"},[_vm._v(\"\\n              \"+_vm._s(_vm.getTranslation('comment'))+\". \"+_vm._s(_vm.getTranslation('author'))+\"\\n              \"),_c('router-link',{attrs:{\"to\":_vm.getAuthorUrl(entity.properties.author.slug)}},[_vm._v(_vm._s(entity.properties.author.name))]),_vm._v(\":\\n            \")],1):_vm._e(),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.getContent(entity))}})])}),0):_vm._e()])}),(_vm.contextMenu.link)?_c('ContextMenu',{attrs:{\"top\":_vm.contextMenu.top,\"left\":_vm.contextMenu.left,\"link\":_vm.contextMenu.link},on:{\"close\":function($event){_vm.contextMenu.link = ''}}}):_vm._e()],2)],1),(_vm.currentBookSectionWithContent && !_vm.presentationMode)?_c('BottomBar',{attrs:{\"book-content\":_vm.currentBookSectionWithContent.content,\"mobile-pagination-type\":_vm.mobilePaginationType,\"tab-name\":_vm.tabName}}):_vm._e(),_c('BookNoteOverlay',{attrs:{\"title\":_vm.note.title,\"visible\":_vm.note.visible},on:{\"close\":function($event){_vm.note.visible = false}}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.note.content)}})])],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.currentSection)?_c('div',{staticClass:\"bottom-bar-wrapper\",class:{ 'mobile-pagination-hidden': !_vm.mobilePaginationType && !_vm.hasRelatedBooks }},[_c('BottomBarTooltip',{attrs:{\"visible\":_vm.showBookInfo},on:{\"close\":function($event){_vm.showBookInfo = false}}},[(_vm.showBookInfo)?_c('BottomBarBookInfo'):_vm._e()],1),_c('BottomBarTooltip',{attrs:{\"visible\":_vm.showRelatedBooks},on:{\"close\":function($event){_vm.showRelatedBooks = false}}},[_c('BottomBarRelated',{attrs:{\"book-name\":_vm.bookContent.related_archi_book_name,\"data\":_vm.bookContent.related_poem_in_books}})],1),_c('div',{staticClass:\"bottom-bar\"},[_c('div',{staticClass:\"bottom-bar-left\"},[_c('div',{staticClass:\"bottom-bar-block nav-link\",class:{ active: _vm.showBookInfo },on:{\"click\":function($event){_vm.showBookInfo = !_vm.showBookInfo}}},[_c('div',{staticClass:\"bottom-bar-icon\"},[_c('InfoIcon')],1),_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('aboutBook'))+\"\\n      \")]),_vm._l((_vm.currentSection.book.translations),function(translation){return _c('router-link',{key:translation.code,staticClass:\"bottom-bar-block nav-link\",attrs:{\"to\":_vm.getTranslationUrl(translation.code)}},[_c('div',{staticClass:\"bottom-bar-icon\"},[_c('GlobeIcon')],1),_vm._v(\"\\n        \"+_vm._s(translation.short_name)+\"\\n      \")])}),(_vm.hasRelatedBooks)?_c('div',{staticClass:\"bottom-bar-block nav-link\",class:{ active: _vm.showRelatedBooks },on:{\"click\":function($event){_vm.showRelatedBooks = !_vm.showRelatedBooks}}},[_c('div',{staticClass:\"bottom-bar-icon\"},[_c('BookCoverIcon')],1),_vm._v(\"\\n        \"+_vm._s(_vm.bookContent.related_poem_in_books.length)+\"\\n      \")]):_vm._e()],2),_c('div',{staticClass:\"bottom-bar-center\"},[(_vm.pagination.section)?_c('BottomBarControl',{staticClass:\"bottom-bar-control\",class:{ 'mobile-pagination-visible': _vm.mobilePaginationType === 'section' },attrs:{\"name\":_vm.getTranslation('bookSection'),\"type\":\"nav\",\"number\":_vm.pagination.section,\"list\":_vm.pagination.sections,\"prevUrl\":_vm.prevSectionUrl,\"nextUrl\":_vm.nextSectionUrl}}):_vm._e(),(_vm.pagination.chapter)?_c('BottomBarControl',{staticClass:\"bottom-bar-control\",class:{ 'mobile-pagination-visible': _vm.mobilePaginationType === 'chapter' },attrs:{\"name\":_vm.getTranslation('bookChapter'),\"type\":\"nav\",\"number\":_vm.pagination.chapter,\"list\":_vm.pagination.chapters,\"prevUrl\":_vm.prevChapterUrl,\"nextUrl\":_vm.nextChapterUrl}}):_vm._e(),(_vm.pagination.poem)?_c('BottomBarControl',{staticClass:\"bottom-bar-control\",class:{ 'mobile-pagination-visible': _vm.mobilePaginationType === 'poem' },attrs:{\"name\":_vm.getTranslation('bookPoem'),\"type\":\"nav\",\"number\":_vm.pagination.poem,\"list\":_vm.pagination.poems,\"prevUrl\":_vm.prevPoemUrl,\"nextUrl\":_vm.nextPoemUrl}}):_vm._e()],1),(_vm.hasRelatedBooks)?_c('button',{staticClass:\"nav-icon mobile-related-books\",class:{ active: _vm.showRelatedBooks },attrs:{\"type\":\"button\",\"aria-label\":_vm.getTranslation('textInOtherBooksAction'),\"aria-expanded\":String(_vm.showRelatedBooks)},on:{\"click\":function($event){_vm.showRelatedBooks = !_vm.showRelatedBooks}}},[_c('BookCoverIcon'),_c('span',[_vm._v(_vm._s(_vm.relatedBooksCount))])],1):_vm._e(),_c('div',{staticClass:\"bottom-bar-right\"},[(_vm.$store.state.reader.readMode)?_c('BottomBarControl',{staticClass:\"bottom-bar-control\",attrs:{\"name\":_vm.getTranslation('colorTheme'),\"type\":\"color-mode\"}}):_vm._e(),_c('BottomBarControl',{staticClass:\"bottom-bar-control\",attrs:{\"name\":_vm.getTranslation('scale'),\"type\":\"scale\",\"number\":((Math.round(_vm.scale * 100)) + \"%\"),\"canIncreaseScale\":_vm.scale > 0.6,\"canDecreaseScale\":_vm.scale < 1.5},on:{\"increaseScale\":function($event){return _vm.setScale(_vm.scale + 0.1)},\"decreaseScale\":function($event){return _vm.setScale(_vm.scale - 0.1)}}})],1)])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"-1 -1 18 18\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M8 .5l.3-.4L8-.125 7.7.1l.3.4zm0 15l-.265.424.29.182.275-.206-.3-.4zM7.5.5v15h1V.5h-1zm4.5 8h3.5v-1H12v1zM7.7.9c.62.465 1.579 1.396 2.38 2.645C10.877 4.792 11.5 6.324 11.5 8h1c0-1.924-.712-3.642-1.58-4.995C10.056 1.654 9.014.635 8.3.1l-.6.8zm.6 15c.713-.535 1.755-1.554 2.62-2.905.868-1.353 1.58-3.071 1.58-4.995h-1c0 1.676-.622 3.208-1.42 4.455-.801 1.249-1.76 2.18-2.38 2.645l.6.8zM.5 8.5H4v-1H.5v1zm3.5 0h8v-1H4v1zM7.7.1c-.713.535-1.755 1.554-2.62 2.905C4.211 4.358 3.5 6.076 3.5 8h1c0-1.676.622-3.208 1.42-4.455C6.722 2.296 7.68 1.365 8.3.9L7.7.1zm.565 14.976C7.027 14.302 4.5 11.775 4.5 8h-1c0 4.225 2.807 7.031 4.235 7.924l.53-.848zM2.205 2.904c1.925 1.4 6.942 3.38 11.59 0l-.59-.808c-4.152 3.02-8.668 1.267-10.41 0l-.59.808zm.563 10.518c1.744-1.11 6.29-2.656 10.464 0l.536-.844c-4.626-2.944-9.614-1.223-11.536 0l.536.844zM15 8a7 7 0 01-7 7v2a9 9 0 009-9h-2zm-7 7a7 7 0 01-7-7h-2a9 9 0 009 9v-2zM1 8a7 7 0 017-7v-2a9 9 0 00-9 9h2zm7-7a7 7 0 017 7h2a9 9 0 00-9-9v2z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"14\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M3 15.453h10V3.5M3 15.453V3.5m0 11.953c-.932 0-2-.48-2-1.444V1.985M3 3.5h10m-10 0c-1 0-2-.433-2-1.515M13 3.5v-3H3c-1 0-2 .567-2 1.485\",\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])\n          )\n        }\n      }\n    ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bottom-bar-control\"},[_c('div',{staticClass:\"bottom-bar-control-name\"},[_vm._v(_vm._s(_vm.name)+\":\")]),(_vm.type === 'color-mode')?_c('div',{staticClass:\"bottom-bar-control-value\"},[_c('button',{staticClass:\"bottom-bar-control-color-mode\",class:{ active: _vm.$store.state.reader.colorMode === 'mixed' },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setColorMode('mixed')}}},[_c('div',{staticClass:\"bottom-bar-control-color-mode-circle mixed\"})]),_c('button',{staticClass:\"bottom-bar-control-color-mode\",class:{\n        active: _vm.$store.state.reader.colorMode === 'light' || !_vm.$store.state.reader.colorMode\n      },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setColorMode('light')}}},[_c('div',{staticClass:\"bottom-bar-control-color-mode-circle light\"})]),_c('button',{staticClass:\"bottom-bar-control-color-mode\",class:{ active: _vm.$store.state.reader.colorMode === 'dark' },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setColorMode('dark')}}},[_c('div',{staticClass:\"bottom-bar-control-color-mode-circle dark\"})])]):_c('div',{staticClass:\"bottom-bar-control-value\"},[(_vm.prevUrl || _vm.nextUrl || _vm.type === 'scale')?_c('div',{staticClass:\"bottom-bar-control-action\"},[(_vm.prevUrl && _vm.type === 'nav')?_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":_vm.prevUrl}},[_c('ArrowLeftIcon')],1):_vm._e(),(_vm.type === 'scale' && _vm.canIncreaseScale)?_c('button',{staticClass:\"nav-icon\",on:{\"click\":function($event){return _vm.$emit('decreaseScale')}}},[_c('MinusIcon')],1):_vm._e()],1):_vm._e(),_c('BottomBarControlValue',{attrs:{\"list\":_vm.list,\"number\":_vm.number}}),(_vm.prevUrl || _vm.nextUrl || _vm.type === 'scale')?_c('div',{staticClass:\"bottom-bar-control-action\"},[(_vm.nextUrl && _vm.type === 'nav')?_c('router-link',{staticClass:\"nav-icon\",attrs:{\"to\":_vm.nextUrl}},[_c('ArrowRightIcon')],1):_vm._e(),(_vm.type === 'scale' && _vm.canDecreaseScale)?_c('button',{staticClass:\"nav-icon\",on:{\"click\":function($event){return _vm.$emit('increaseScale')}}},[_c('PlusIcon')],1):_vm._e()],1):_vm._e()],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',[(_vm.list && _vm.list.length > 1 && _vm.listIsVisible)?_c('div',{ref:\"list\",staticClass:\"bottom-bar-control-list\"},_vm._l((_vm.list),function(item){return _c('router-link',{key:item.number,staticClass:\"nav-link bottom-bar-control-list-value\",class:{ current: _vm.number === item.number },attrs:{\"type\":\"button\",\"to\":_vm.getItemUrl(item)}},[_vm._v(\"\\n      \"+_vm._s(item.number)+\"\\n    \")])}),1):_vm._e(),_c('button',{ref:\"button\",staticClass:\"bottom-bar-control-value\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.listIsVisible = !_vm.listIsVisible}}},[_vm._v(\"\\n    \"+_vm._s(_vm.number)+\"\\n  \")])])}\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Ref } from 'vue-property-decorator';\r\nimport { PagingItem } from '@/services/Navigation/types';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\n\r\n@Component\r\nexport default class BottomBarControlValue extends Vue {\r\n  listIsVisible: boolean = false;\r\n\r\n  @Prop({ required: true })\r\n  number!: number;\r\n\r\n  @Prop({ required: false })\r\n  list!: Array<number>;\r\n\r\n  @Ref('button')\r\n  refButton?: HTMLButtonElement;\r\n\r\n  @Ref('list')\r\n  refList?: HTMLDivElement;\r\n\r\n  mounted() {\r\n    document.addEventListener('click', this.handleClickOutside, false);\r\n  }\r\n\r\n  updated() {\r\n    if (!this.refList) {\r\n      return;\r\n    }\r\n    const current = this.refList.querySelector('.current') as HTMLDivElement;\r\n    if (this.listIsVisible && current) {\r\n      this.refList.scrollTo({ top: current.offsetTop });\r\n    }\r\n  }\r\n\r\n  handleClickOutside(e: MouseEvent) {\r\n    if (!this.refButton) {\r\n      return;\r\n    }\r\n    if (this.listIsVisible && !this.refButton.contains(e.target as Node)) {\r\n      this.listIsVisible = false;\r\n    }\r\n  }\r\n\r\n  getItemUrl(item: PagingItem) {\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: this.$route.params.language,\r\n      categorySlug: this.$route.params.category,\r\n      bookSlug: this.$route.params.book,\r\n      bookSectionSlug: item.bookSectionSlug\r\n    });\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControlValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControlValue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBarControlValue.vue?vue&type=template&id=969344be&scoped=true&\"\nimport script from \"./BottomBarControlValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBarControlValue.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBarControlValue.vue?vue&type=style&index=0&id=969344be&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"969344be\",\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\r\n// import store from '@/store';\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport ArrowLeftIcon from '@/assets/icons/nav-arrow-left.svg';\r\nimport ArrowRightIcon from '@/assets/icons/nav-arrow-right.svg';\r\nimport MinusIcon from '@/assets/icons/minus.svg';\r\nimport PlusIcon from '@/assets/icons/plus.svg';\r\nimport BottomBarControlValue from '@/components/bottom-bar/BottomBarControlValue.vue';\r\nimport { Mutation } from 'vuex-class';\r\n\r\n@Component({\r\n  components: {\r\n    BottomBarControlValue,\r\n    ArrowLeftIcon,\r\n    ArrowRightIcon,\r\n    MinusIcon,\r\n    PlusIcon\r\n  }\r\n})\r\nexport default class BottomBarControl extends Vue {\r\n  @Prop({ required: true })\r\n  name!: string;\r\n\r\n  @Prop({ required: false })\r\n  number!: number;\r\n\r\n  @Prop({ required: true })\r\n  type!: string;\r\n\r\n  @Prop({ required: false })\r\n  list!: Array<number>;\r\n\r\n  @Prop({ required: false })\r\n  prevUrl!: string;\r\n\r\n  @Prop({ required: false })\r\n  nextUrl!: string;\r\n\r\n  @Prop({ required: false })\r\n  canIncreaseScale!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  canDecreaseScale!: boolean;\r\n\r\n  @Mutation('setColorMode', { namespace: 'reader' })\r\n  setColorMode!: Function;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarControl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBarControl.vue?vue&type=template&id=6b18d0d4&scoped=true&\"\nimport script from \"./BottomBarControl.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBarControl.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBarControl.vue?vue&type=style&index=0&id=6b18d0d4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6b18d0d4\",\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('div',[(_vm.previousRelatedUrl)?_c('button',{staticClass:\"related-books-return\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.returnToPrevious}},[_c('IconReturn'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('backToPreviousText')))])],1):_vm._e(),_c('div',{staticClass:\"related-books-title\",domProps:{\"innerHTML\":_vm._s(_vm.textInOtherBooks)}}),_vm._l((_vm.preparedData),function(item){return _c('div',{key:item.name,staticClass:\"related-books-item\"},[_c('span',{staticClass:\"related-books-item-name\"},[_vm._v(_vm._s(item.name)+\" —\")]),_c('span',{staticClass:\"related-books-item-translations\"},[_vm._l((item.translations),function(translation,index){return [(index > 0)?_c('span',{key:((translation.code) + \"-separator\"),attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n           | \\n        \")]):_vm._e(),_c('router-link',{key:translation.code,attrs:{\"to\":translation.url}},[_vm._v(\"\\n          \"+_vm._s(translation.short_name)+\"\\n        \")])]})],2)])})],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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Getter, State } from 'vuex-class';\r\nimport { BookSection } from '@/services/Navigation/types';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport RelatedNavigationService from '@/services/RelatedNavigationService';\r\nimport IconReturn from '@/assets/icons/return.svg';\r\n\r\n@Component({ components: { IconReturn } })\r\nexport default class BottomBarRelated extends Vue {\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentSection?: BookSection;\r\n\r\n  @Prop({ required: true })\r\n  data!: any;\r\n\r\n  @Prop({ required: true })\r\n  bookName!: string;\r\n\r\n  @State('interfaceLanguage', { namespace: 'reader' })\r\n  interfaceLanguage!: string;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  get preparedData() {\r\n    return this.data\r\n      .map((book: any) => ({\r\n        ...book,\r\n        translations: book.translations\r\n          .filter((translation: any) => translation.section_slug)\r\n          .map((translation: any) => {\r\n            const url = UrlBuilderService.getBookSectionUrl({\r\n              language: translation.code,\r\n              bookSlug: book.slug,\r\n              bookSectionSlug: translation.section_slug\r\n            });\r\n            const targetUrl = this.$route.query.reading ? `${url}?reading=1` : url;\r\n            return {\r\n              ...translation,\r\n              url: RelatedNavigationService.createTargetUrl(targetUrl, this.$route.fullPath, this.$route.query\r\n                .relatedTrail as string)\r\n            };\r\n          })\r\n      }))\r\n      .filter((book: any) => book.translations.length > 0);\r\n  }\r\n\r\n  get previousRelatedUrl() {\r\n    return RelatedNavigationService.getPreviousUrl(this.$route.query.relatedTrail as string);\r\n  }\r\n\r\n  returnToPrevious() {\r\n    if (this.previousRelatedUrl) {\r\n      this.$router.push(this.previousRelatedUrl);\r\n    }\r\n  }\r\n\r\n  get textInOtherBooks() {\r\n    return getTranslation('textInOtherBooks')\r\n      .replace('%bookName%', this.bookName)\r\n      .replace('%currentSectionSlug%', this.currentSection ? this.currentSection.slug : '');\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarRelated.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarRelated.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBarRelated.vue?vue&type=template&id=25b64716&scoped=true&\"\nimport script from \"./BottomBarRelated.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBarRelated.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBarRelated.vue?vue&type=style&index=0&id=25b64716&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"25b64716\",\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('div',{staticClass:\"bottom-bar-tooltip\",class:{ visible: _vm.visible, dragging: _vm.dragging },style:({ transform: _vm.dragOffset ? (\"translateY(\" + _vm.dragOffset + \"px)\") : undefined })},[_c('button',{staticClass:\"nav-link bottom-bar-tooltip-close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('CrossIcon')],1),_c('div',{staticClass:\"bottom-bar-tooltip-drag-region\",on:{\"pointerdown\":_vm.startDrag,\"pointermove\":_vm.moveDrag,\"pointerup\":_vm.endDrag,\"pointercancel\":_vm.cancelDrag}},[_c('span')]),_c('div',{staticClass:\"bottom-bar-tooltip-inner\"},[_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport CrossIcon from '@/assets/icons/cross.svg';\r\n\r\n@Component({\r\n  components: {\r\n    CrossIcon\r\n  }\r\n})\r\nexport default class BottomBarTooltip extends Vue {\r\n  @Prop({ required: true })\r\n  visible!: boolean;\r\n\r\n  dragStartY: number | null = null;\r\n\r\n  dragOffset: number = 0;\r\n\r\n  dragging: boolean = false;\r\n\r\n  dragPointerId: number | null = null;\r\n\r\n  startDrag(event: PointerEvent) {\r\n    this.dragPointerId = event.pointerId;\r\n    this.dragStartY = event.clientY;\r\n    this.dragging = true;\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (dragRegion.setPointerCapture) {\r\n      dragRegion.setPointerCapture(event.pointerId);\r\n    }\r\n  }\r\n\r\n  moveDrag(event: PointerEvent) {\r\n    if (this.dragStartY === null || this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    this.dragOffset = Math.max(0, event.clientY - this.dragStartY);\r\n    if (this.dragOffset > 0 && event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  endDrag(event: PointerEvent) {\r\n    if (this.dragPointerId !== event.pointerId) {\r\n      return;\r\n    }\r\n    const dragRegion = event.currentTarget as HTMLElement;\r\n    if (\r\n      dragRegion.releasePointerCapture &&\r\n      dragRegion.hasPointerCapture &&\r\n      dragRegion.hasPointerCapture(event.pointerId)\r\n    ) {\r\n      dragRegion.releasePointerCapture(event.pointerId);\r\n    }\r\n    if (this.dragOffset >= 64) {\r\n      this.resetDrag();\r\n      this.$emit('close');\r\n      return;\r\n    }\r\n    this.resetDrag();\r\n  }\r\n\r\n  cancelDrag() {\r\n    this.resetDrag();\r\n  }\r\n\r\n  resetDrag() {\r\n    this.dragStartY = null;\r\n    this.dragOffset = 0;\r\n    this.dragging = false;\r\n    this.dragPointerId = null;\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBarTooltip.vue?vue&type=template&id=faab7fc8&scoped=true&\"\nimport script from \"./BottomBarTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBarTooltip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBarTooltip.vue?vue&type=style&index=0&id=faab7fc8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"faab7fc8\",\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.bookDetails)?_c('div',[_c('div',{staticClass:\"bottom-bar-book-info-title\"},[_vm._v(\"\\n    \"+_vm._s(_vm.currentBook.name)+\"\\n  \")]),(_vm.bookDetails.authors && _vm.bookDetails.authors.length)?_c('div',[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('author'))+\":\\n    \"),_vm._l((_vm.bookDetails.authors),function(author,index){return _c('router-link',{key:author.slug,attrs:{\"to\":_vm.getAuthorLink(author.slug)}},[(index > 0 && index !== _vm.bookDetails.authors.length - 1)?[_vm._v(\"\\n        , \\n      \")]:_vm._e(),_vm._v(\"\\n      \"+_vm._s(author.name)+\"\\n    \")],2)})],2):_vm._e(),(_vm.bookDetails.commentators && _vm.bookDetails.commentators.length)?_c('div',[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation(_vm.bookDetails.commentators.length > 1 ? 'commentators' : 'commentator'))+\":\\n    \"+_vm._s(_vm.bookDetails.commentators.join(', '))+\"\\n  \")]):_vm._e(),(_vm.bookDetails.categories && _vm.bookDetails.categories.length)?_c('div',{staticClass:\"categories\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('bookInCategories'))+\":\\n    \"),_vm._l((_vm.bookDetails.categories),function(categoriesChain){return _c('div',{key:JSON.stringify(categoriesChain),staticClass:\"categories-chain\"},[_vm._v(\"\\n      \"+_vm._s(categoriesChain.map(function (category) { return category.name; }).join(' • '))+\"\\n    \")])})],2):_vm._e()]):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport { Getter } from 'vuex-class';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { Book } from '@/services/Navigation/types';\r\nimport BooksService from '@/services/Api/BooksService';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\n\r\n@Component\r\nexport default class BottomBarBookInfo extends Vue {\r\n  bookDetails: any = null;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  currentBook?: Book;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  async mounted() {\r\n    await this.fetchBookDetails();\r\n  }\r\n\r\n  @Watch('currentBook.id')\r\n  async onChangeBookId() {\r\n    await this.fetchBookDetails();\r\n  }\r\n\r\n  async fetchBookDetails() {\r\n    if (this.currentBook) {\r\n      this.bookDetails = await BooksService.getBookCover(this.currentBook.language, this.currentBook.slug);\r\n    }\r\n  }\r\n\r\n  getAuthorLink(slug: string) {\r\n    return UrlBuilderService.getAuthorUrl({ language: this.$route.params.language, authorSlug: slug });\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarBookInfo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarBookInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBarBookInfo.vue?vue&type=template&id=8af5143c&scoped=true&\"\nimport script from \"./BottomBarBookInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBarBookInfo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBarBookInfo.vue?vue&type=style&index=0&id=8af5143c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8af5143c\",\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport InfoIcon from '@/assets/icons/info.svg';\r\nimport GlobeIcon from '@/assets/icons/globe.svg';\r\nimport BookCoverIcon from '@/assets/icons/book-cover.svg';\r\nimport BottomBarControl from '@/components/bottom-bar/BottomBarControl.vue';\r\nimport { Book, BookSection, PagingItem } from '@/services/Navigation/types';\r\nimport { Getter, Mutation, State } from 'vuex-class';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport BottomBarRelated from '@/components/bottom-bar/BottomBarRelated.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport BottomBarTooltip from '@/components/bottom-bar/BottomBarTooltip.vue';\r\nimport BottomBarBookInfo from '@/components/bottom-bar/BottomBarBookInfo.vue';\r\n\r\ninterface Pagination {\r\n  chapter: number | null;\r\n  poem: number | null;\r\n  section: number | null;\r\n  chapters: Array<any>;\r\n  sections: Array<any>;\r\n  poems: Array<any>;\r\n}\r\n\r\n@Component({\r\n  components: {\r\n    BottomBarBookInfo,\r\n    BottomBarTooltip,\r\n    BottomBarRelated,\r\n    BottomBarControl,\r\n    InfoIcon,\r\n    GlobeIcon,\r\n    BookCoverIcon\r\n  }\r\n})\r\nexport default class BottomBar extends Vue {\r\n  book: Book | null = null;\r\n\r\n  showRelatedBooks = false;\r\n\r\n  showBookInfo = false;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: true })\r\n  bookContent!: any;\r\n\r\n  @Prop({ default: '' })\r\n  mobilePaginationType!: string;\r\n\r\n  @State('scale', { namespace: 'reader' })\r\n  scale!: number;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentSection?: BookSection;\r\n\r\n  @Getter('pagination', { namespace: 'navigation' })\r\n  pagination!: Pagination;\r\n\r\n  @Mutation('setScale', { namespace: 'reader' })\r\n  setScale!: Function;\r\n\r\n  @Watch('$route')\r\n  onRouteChange() {\r\n    this.showRelatedBooks = false;\r\n  }\r\n\r\n  get relatedBooksCount() {\r\n    const relatedBooks = this.bookContent && this.bookContent.related_poem_in_books;\r\n    return Array.isArray(relatedBooks)\r\n      ? relatedBooks.filter(\r\n          book =>\r\n            Array.isArray(book.translations) &&\r\n            book.translations.some((translation: any) => !!translation.section_slug)\r\n        ).length\r\n      : 0;\r\n  }\r\n\r\n  get hasRelatedBooks() {\r\n    const currentSection = this.currentSection;\r\n    if (!currentSection || !this.relatedBooksCount) {\r\n      return false;\r\n    }\r\n    return (\r\n      (currentSection.number_code_section || 0) > 0 ||\r\n      (currentSection.number_code_chapter || 0) > 0 ||\r\n      (currentSection.number_code_poem || 0) > 0\r\n    );\r\n  }\r\n\r\n  getEntityIndex(list: Array<PagingItem>, number: number) {\r\n    return list.findIndex(one => one.number === number);\r\n  }\r\n\r\n  getPrevUrl(list: Array<PagingItem>, number: number) {\r\n    const index = this.getEntityIndex(list, number);\r\n    const pagingItem = list[index - 1];\r\n    if (!pagingItem) {\r\n      return null;\r\n    }\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: this.$route.params.language,\r\n      categorySlug: this.$route.params.category,\r\n      bookSlug: this.$route.params.book,\r\n      bookSectionSlug: pagingItem.bookSectionSlug\r\n    });\r\n  }\r\n\r\n  getNextUrl(list: Array<PagingItem>, number: number) {\r\n    const index = this.getEntityIndex(list, number);\r\n    const pagingItem = list[index + 1];\r\n    if (!pagingItem) {\r\n      return null;\r\n    }\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: this.$route.params.language,\r\n      categorySlug: this.$route.params.category,\r\n      bookSlug: this.$route.params.book,\r\n      bookSectionSlug: pagingItem.bookSectionSlug\r\n    });\r\n  }\r\n\r\n  get prevChapterUrl() {\r\n    return this.pagination.chapter\r\n      ? this.getPrevUrl(this.pagination.chapters, this.pagination.chapter)\r\n      : null;\r\n  }\r\n\r\n  get nextChapterUrl() {\r\n    return this.pagination.chapter\r\n      ? this.getNextUrl(this.pagination.chapters, this.pagination.chapter)\r\n      : null;\r\n  }\r\n\r\n  get prevSectionUrl() {\r\n    return this.pagination.section\r\n      ? this.getPrevUrl(this.pagination.sections, this.pagination.section)\r\n      : null;\r\n  }\r\n\r\n  get nextSectionUrl() {\r\n    return this.pagination.section\r\n      ? this.getNextUrl(this.pagination.sections, this.pagination.section)\r\n      : null;\r\n  }\r\n\r\n  get prevPoemUrl() {\r\n    return this.pagination.poem ? this.getPrevUrl(this.pagination.poems, this.pagination.poem) : null;\r\n  }\r\n\r\n  get nextPoemUrl() {\r\n    return this.pagination.poem ? this.getNextUrl(this.pagination.poems, this.pagination.poem) : null;\r\n  }\r\n\r\n  get bookUrl() {\r\n    return UrlBuilderService.getBookUrl({\r\n      language: this.$route.params.language,\r\n      categorySlug: this.$route.params.category,\r\n      bookSlug: this.$route.params.book\r\n    });\r\n  }\r\n\r\n  getTranslationUrl(code: string) {\r\n    if (!this.currentSection) {\r\n      return '';\r\n    }\r\n    const { number_code_chapter, number_code_poem, number_code_section } = this.currentSection;\r\n\r\n    if (number_code_chapter || number_code_poem || number_code_section) {\r\n      return UrlBuilderService.getBookSectionUrl({\r\n        language: code,\r\n        categorySlug: this.$route.params.category,\r\n        bookSlug: this.$route.params.book,\r\n        bookSectionSlug: this.$route.params.bookSection\r\n      });\r\n    }\r\n    return UrlBuilderService.getBookUrl({\r\n      language: code,\r\n      categorySlug: this.$route.params.category,\r\n      bookSlug: this.$route.params.book\r\n    });\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BottomBar.vue?vue&type=template&id=36395ba8&scoped=true&\"\nimport script from \"./BottomBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./BottomBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BottomBar.vue?vue&type=style&index=0&id=36395ba8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"36395ba8\",\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('Overlay',{attrs:{\"visible\":_vm.visible,\"title\":_vm.title,\"centered\":true},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"content-note\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"flex justify-content-center align-items-center\"},[_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('close'))+\"\\n    \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport Overlay from '@/components/ui/Overlay.vue';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { Overlay }\r\n})\r\nexport default class BookNoteOverlay extends Vue {\r\n  @Prop({ required: true })\r\n  title!: boolean;\r\n\r\n  @Prop({ required: false })\r\n  visible?: boolean;\r\n\r\n  getTranslation = getTranslation;\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookNoteOverlay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookNoteOverlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookNoteOverlay.vue?vue&type=template&id=5d78f988&scoped=true&\"\nimport script from \"./BookNoteOverlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookNoteOverlay.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BookNoteOverlay.vue?vue&type=style&index=0&id=5d78f988&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5d78f988\",\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('div',{ref:\"contextMenu\",staticClass:\"context-menu\",style:({ top: (_vm.top + \"px\"), left: (_vm.left + \"px\") }),attrs:{\"role\":\"menu\"}},[_c('div',{staticClass:\"context-menu-header\"},[_vm._v(_vm._s(_vm.getTranslation('open'))+\"...\")]),_c('button',{staticClass:\"context-menu-item\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.openLink(true)}}},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('inNewTab'))+\"\\n  \")]),_c('button',{staticClass:\"context-menu-item\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.openLink()}}},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('inCurrentTab'))+\"\\n  \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { Ref } from 'vue-property-decorator';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component\r\nexport default class ContextMenu extends Vue {\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: true })\r\n  link!: string;\r\n\r\n  @Prop({ required: true })\r\n  top!: number;\r\n\r\n  @Prop({ required: true })\r\n  left!: number;\r\n\r\n  @Ref('contextMenu')\r\n  refContextMenu!: HTMLDivElement;\r\n\r\n  mounted() {\r\n    setTimeout(() => {\r\n      document.body.addEventListener('click', this.onClickOutside);\r\n    }, 100);\r\n  }\r\n\r\n  destroyed() {\r\n    document.body.removeEventListener('click', this.onClickOutside);\r\n  }\r\n\r\n  onClickOutside(e: MouseEvent) {\r\n    if (!(e.target === this.refContextMenu || this.refContextMenu.contains(e.target as Node))) {\r\n      this.$emit('close');\r\n    }\r\n  }\r\n\r\n  openLink(newTab = false) {\r\n    if (newTab) {\r\n      this.$store.commit('tabs/openTab');\r\n    }\r\n    this.$router.push(this.link);\r\n    this.$emit('close');\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContextMenu.vue?vue&type=template&id=c1660ed2&scoped=true&\"\nimport script from \"./ContextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContextMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContextMenu.vue?vue&type=style&index=0&id=c1660ed2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c1660ed2\",\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Ref, Watch } from 'vue-property-decorator';\r\nimport { Getter, State } from 'vuex-class';\r\nimport BooksService from '@/services/Api/BooksService';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport BottomBar from '@/components/bottom-bar/BottomBar.vue';\r\nimport { BookSection } from '@/services/Navigation/types';\r\nimport router from '@/router';\r\nimport { Route } from 'vue-router';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport BookNoteOverlay from '@/components/BookNoteOverlay.vue';\r\nimport StringService from '@/services/StringService';\r\nimport ContextMenu from '@/components/ContextMenu.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport UserService from '@/services/Api/UserService';\r\n\r\ninterface BookSectionWithContent extends BookSection {\r\n  content: {\r\n    book_title: string;\r\n    entities: Array<any>;\r\n    isFirst: boolean;\r\n    title: string;\r\n    is_article: boolean;\r\n  };\r\n}\r\n\r\ninterface ReadingPosition {\r\n  bookKey: string;\r\n  language: string;\r\n  book: string;\r\n  section: string;\r\n  location: string;\r\n  link: string;\r\n  position: number;\r\n  paragraphAnchor?: string;\r\n}\r\n\r\ninterface Pagination {\r\n  chapter: number | null;\r\n  poem: number | null;\r\n  section: number | null;\r\n  chapters: Array<any>;\r\n  sections: Array<any>;\r\n  poems: Array<any>;\r\n}\r\n\r\n@Component({\r\n  components: { ContextMenu, BookNoteOverlay, BottomBar, Loader }\r\n})\r\nexport default class BookContent extends Vue {\r\n  loading: boolean = false;\r\n  loadingMore: boolean = false;\r\n  contentError: boolean = false;\r\n  loadingSectionKey: string | null = null;\r\n  preloadingSectionKeys: Array<string> = [];\r\n  loadingContinuousSection: boolean = false;\r\n  sectionContentRequests: { [key: string]: Promise<BookSectionWithContent> } = {};\r\n  continuousFillPromise?: Promise<void>;\r\n  bookSectionsWithContent: { [bookId: number]: Array<BookSectionWithContent> } = {};\r\n  onScrollTimeout?: number;\r\n  readingPositionTimeout?: number;\r\n  viewportResizeTimeout?: number;\r\n  presentationFitFrame?: number;\r\n  presentationFontSize = 28;\r\n  pendingReadingPosition?: ReadingPosition;\r\n  lastReadingPosition?: ReadingPosition;\r\n  lastScrollPosition = 0;\r\n  suppressReaderScrollUntil = 0;\r\n  note = {\r\n    title: '',\r\n    content: '',\r\n    visible: false\r\n  };\r\n  contextMenu = {\r\n    top: 0,\r\n    left: 0,\r\n    link: ''\r\n  };\r\n  getTranslation = getTranslation;\r\n\r\n  formatBookTitle(title: string) {\r\n    return title.replace(/\\.\\s+/g, '.\\n');\r\n  }\r\n\r\n  @Ref('scroll')\r\n  refScroll!: HTMLDivElement;\r\n\r\n  @State('scale', { namespace: 'reader' })\r\n  scale!: number;\r\n\r\n  @State('presentationMode', { namespace: 'reader' })\r\n  presentationMode!: boolean;\r\n\r\n  @State('presentationScale', { namespace: 'reader' })\r\n  presentationScale!: number;\r\n\r\n  @State('presentationAutoFit', { namespace: 'reader' })\r\n  presentationAutoFit!: boolean;\r\n\r\n  @State('presentationHideTextTypes', { namespace: 'reader' })\r\n  presentationHideTextTypes!: Array<string>;\r\n\r\n  @State('inBookSearch', { namespace: 'search' })\r\n  inBookSearch!: boolean;\r\n\r\n  @State('error', { namespace: 'navigation' })\r\n  navigationError!: boolean | Error;\r\n\r\n  @Getter('currentBookSection', { namespace: 'navigation' })\r\n  currentBookSection?: BookSection;\r\n\r\n  @Getter('currentBookSections', { namespace: 'navigation' })\r\n  currentBookSections?: Array<BookSection>;\r\n\r\n  @Getter('pagination', { namespace: 'navigation' })\r\n  pagination?: Pagination;\r\n\r\n  async mounted() {\r\n    this.refScroll.addEventListener('scroll', this.onScroll);\r\n    window.addEventListener('resize', this.onViewportResize);\r\n    window.addEventListener('pagehide', this.flushCurrentReadingPosition);\r\n  }\r\n\r\n  beforeDestroy() {\r\n    this.refScroll.removeEventListener('scroll', this.onScroll);\r\n    window.removeEventListener('resize', this.onViewportResize);\r\n    window.removeEventListener('pagehide', this.flushCurrentReadingPosition);\r\n    if (this.onScrollTimeout) {\r\n      clearTimeout(this.onScrollTimeout);\r\n    }\r\n    if (this.readingPositionTimeout) {\r\n      clearTimeout(this.readingPositionTimeout);\r\n    }\r\n    if (this.viewportResizeTimeout) {\r\n      clearTimeout(this.viewportResizeTimeout);\r\n    }\r\n    if (this.presentationFitFrame !== undefined) {\r\n      window.cancelAnimationFrame(this.presentationFitFrame);\r\n    }\r\n    if (this.pendingReadingPosition) {\r\n      this.saveReadingPosition(this.pendingReadingPosition);\r\n    }\r\n  }\r\n\r\n  deactivated() {\r\n    if (this.pendingReadingPosition) {\r\n      this.saveReadingPosition(this.pendingReadingPosition);\r\n    }\r\n  }\r\n\r\n  updated() {\r\n    this.bindLinksEvent();\r\n    this.schedulePresentationFit();\r\n  }\r\n\r\n  @Watch('presentationMode')\r\n  @Watch('presentationScale')\r\n  @Watch('presentationAutoFit')\r\n  @Watch('presentationHideTextTypes', { deep: true })\r\n  onPresentationLayoutChange() {\r\n    this.schedulePresentationFit();\r\n  }\r\n\r\n  @Watch('$route')\r\n  async onRouteChange(to: Route, from?: Route) {\r\n    if (!['book-section', 'category-book-section', 'author-book-section'].includes(to.name || '')) {\r\n      return;\r\n    }\r\n    const changedBook = Boolean(\r\n      from && (to.params.language !== from.params.language || to.params.book !== from.params.book)\r\n    );\r\n    const changedSectionRoute = Boolean(from && to.path !== from.path);\r\n    if (changedSectionRoute && this.onScrollTimeout) {\r\n      clearTimeout(this.onScrollTimeout);\r\n      this.onScrollTimeout = undefined;\r\n    }\r\n    const routeLoadKey = this.getRouteLoadKey(to);\r\n    this.contentError = false;\r\n    this.$store.commit('navigation/setError', false);\r\n    if (this.isCurrentBookSectionRoute() && this.currentBookSectionWithContent) {\r\n      this.loading = false;\r\n      this.loadingMore = false;\r\n      if (\r\n        changedBook ||\r\n        to.query.bookmark === '1' ||\r\n        to.query.resume === '1' ||\r\n        to.query.toc === '1' ||\r\n        typeof to.query.position === 'string' ||\r\n        typeof to.query.anchor === 'string'\r\n      ) {\r\n        await this.$nextTick();\r\n        await this.waitForReadingFonts();\r\n        this.scrollToCurrentPage();\r\n      }\r\n      this.updateTabName();\r\n      this.ensureContinuousContentAhead();\r\n      return;\r\n    }\r\n    if (Object.keys(to.query).find(key => key === 'reading')) {\r\n      this.loadingMore = true;\r\n      try {\r\n        if (await this.fetchContent()) {\r\n          if (changedBook) {\r\n            await this.$nextTick();\r\n            await this.waitForReadingFonts();\r\n            this.scrollToCurrentPage();\r\n          }\r\n          this.updateTabName();\r\n          this.ensureContinuousContentAhead();\r\n        }\r\n      } catch (e) {\r\n        this.setContentError(e, routeLoadKey);\r\n      } finally {\r\n        if (this.getRouteLoadKey() === routeLoadKey) {\r\n          this.loadingMore = false;\r\n        }\r\n      }\r\n      return;\r\n    }\r\n    this.loading = true;\r\n    try {\r\n      if (await this.fetchContent()) {\r\n        await this.$nextTick();\r\n        await this.waitForReadingFonts();\r\n        this.scrollToCurrentPage();\r\n        this.updateTabName();\r\n        this.ensureContinuousContentAhead();\r\n      }\r\n    } catch (e) {\r\n      this.setContentError(e, routeLoadKey);\r\n    } finally {\r\n      if (this.getRouteLoadKey() === routeLoadKey) {\r\n        this.loading = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  @Watch('currentBookSection', { immediate: true })\r\n  async onCurrentBookSectionChange(to: BookSection) {\r\n    if (!to) {\r\n      this.loading = true;\r\n      return;\r\n    }\r\n\r\n    // Catalog branch commits can briefly clear and restore the selected\r\n    // section. Do not let that transient state re-enable the full-page loader\r\n    // after this section's content has already arrived.\r\n    if (this.currentBookSectionWithContent) {\r\n      this.loading = false;\r\n      this.contentError = false;\r\n      return;\r\n    }\r\n\r\n    const sectionKey = `${to.book.id}:${to.id}`;\r\n    if (this.loadingSectionKey !== sectionKey) {\r\n      this.loadingSectionKey = sectionKey;\r\n      try {\r\n        await this.initialLoadContent();\r\n      } finally {\r\n        if (this.loadingSectionKey === sectionKey) {\r\n          this.loadingSectionKey = null;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  isCurrentBookSectionRoute() {\r\n    const currentBookSection = this.currentBookSection;\r\n    if (!currentBookSection) {\r\n      return false;\r\n    }\r\n    return (\r\n      currentBookSection.book.language === this.$route.params.language &&\r\n      currentBookSection.book.slug === this.$route.params.book &&\r\n      currentBookSection.slug === this.$route.params.bookSection\r\n    );\r\n  }\r\n\r\n  get currentBookSectionIndex() {\r\n    const currentBookSection = this.currentBookSection;\r\n    const currentBookSections = this.currentBookSections;\r\n    if (!(currentBookSections && currentBookSection)) {\r\n      return null;\r\n    }\r\n    return currentBookSections.findIndex(bookSection => bookSection.id === currentBookSection.id);\r\n  }\r\n\r\n  /**\r\n   * Get all sections with content of current book\r\n   */\r\n  get currentBookSectionsWithContent() {\r\n    const currentBookSection = this.currentBookSection;\r\n    if (!currentBookSection) {\r\n      return [];\r\n    }\r\n    const currentBookId = currentBookSection.book.id;\r\n    return this.bookSectionsWithContent[currentBookId] || [];\r\n  }\r\n\r\n  /**\r\n   * Get current section with content of current book\r\n   */\r\n  get currentBookSectionWithContent() {\r\n    const currentBookSection = this.currentBookSection;\r\n    if (!currentBookSection) {\r\n      return null;\r\n    }\r\n    return this.currentBookSectionsWithContent\r\n      .filter(one => one)\r\n      .find(bookSection => bookSection.id === currentBookSection.id);\r\n  }\r\n\r\n  get blockingError() {\r\n    return !!(\r\n      this.contentError ||\r\n      (this.navigationError && !this.currentBookSection && !this.currentBookSectionWithContent)\r\n    );\r\n  }\r\n\r\n  get tabName() {\r\n    let tabName = '...';\r\n    if (!this.currentBookSectionWithContent) {\r\n      return '';\r\n    }\r\n    if (this.currentBookSectionWithContent.content.is_article) {\r\n      tabName = this.currentBookSectionWithContent.content.book_title;\r\n    } else if (this.currentBookSection) {\r\n      tabName = `${this.currentBookSection.book.name} — ${this.currentBookSection.name}`;\r\n    }\r\n    return tabName;\r\n  }\r\n\r\n  get mobilePaginationType() {\r\n    if (!this.pagination) {\r\n      return '';\r\n    }\r\n    if (this.pagination.poem && this.pagination.poems.length > 1) {\r\n      return 'poem';\r\n    }\r\n    if (this.pagination.section && this.pagination.sections.length > 1) {\r\n      return 'section';\r\n    }\r\n    if (this.pagination.chapter && this.pagination.chapters.length > 1) {\r\n      return 'chapter';\r\n    }\r\n    return '';\r\n  }\r\n\r\n  get textTypeVisibilityClasses() {\r\n    if (!this.$store.state.reader.readMode) {\r\n      return '';\r\n    }\r\n    const hiddenTypes = this.presentationMode\r\n      ? this.presentationHideTextTypes\r\n      : this.$store.state.reader.hideTextTypes;\r\n    return Array.isArray(hiddenTypes) ? hiddenTypes.map(one => `hide-${one}`).join(' ') : '';\r\n  }\r\n\r\n  isPresentationCurrentSection(bookSection: BookSectionWithContent) {\r\n    return !!(\r\n      this.presentationMode &&\r\n      this.currentBookSection &&\r\n      bookSection.id === this.currentBookSection.id\r\n    );\r\n  }\r\n\r\n  getPageStyle(bookSection: BookSectionWithContent) {\r\n    if (this.isPresentationCurrentSection(bookSection)) {\r\n      return { fontSize: `${this.presentationFontSize}px` };\r\n    }\r\n    return { fontSize: `${10 * this.scale}px` };\r\n  }\r\n\r\n  schedulePresentationFit() {\r\n    if (!this.presentationMode || this.presentationFitFrame !== undefined) {\r\n      return;\r\n    }\r\n    this.presentationFitFrame = window.requestAnimationFrame(() => {\r\n      this.presentationFitFrame = undefined;\r\n      this.fitPresentationContent();\r\n    });\r\n  }\r\n\r\n  fitPresentationContent() {\r\n    if (!(this.presentationMode && this.refScroll)) {\r\n      return;\r\n    }\r\n    const page = this.refScroll.querySelector('.page.presentation-current') as HTMLElement | null;\r\n    if (!page) {\r\n      return;\r\n    }\r\n    this.refScroll.scrollTop = 0;\r\n    if (!this.presentationAutoFit) {\r\n      const baseSize = Math.max(18, Math.min(42, window.innerWidth * 0.018));\r\n      const manualSize = Math.round(baseSize * this.presentationScale * 2) / 2;\r\n      if (Math.abs(this.presentationFontSize - manualSize) > 0.1) {\r\n        this.presentationFontSize = manualSize;\r\n      }\r\n      return;\r\n    }\r\n\r\n    const availableHeight = this.refScroll.clientHeight;\r\n    const availableWidth = this.refScroll.clientWidth;\r\n    let lower = 10;\r\n    let upper = Math.max(32, Math.min(52, window.innerWidth * 0.028));\r\n    for (let iteration = 0; iteration < 9; iteration += 1) {\r\n      const candidate = (lower + upper) / 2;\r\n      page.style.fontSize = `${candidate}px`;\r\n      const fits = page.scrollHeight <= availableHeight + 1 && page.scrollWidth <= availableWidth + 1;\r\n      if (fits) {\r\n        lower = candidate;\r\n      } else {\r\n        upper = candidate;\r\n      }\r\n    }\r\n    const fittedSize = Math.floor(lower * 2) / 2;\r\n    page.style.fontSize = `${fittedSize}px`;\r\n    if (Math.abs(this.presentationFontSize - fittedSize) > 0.1) {\r\n      this.presentationFontSize = fittedSize;\r\n    }\r\n  }\r\n\r\n  get highlight() {\r\n    if (typeof this.$route.query.highlight !== 'string') {\r\n      return '';\r\n    }\r\n    return this.$route.query.highlight.split(',').filter(word => word);\r\n  }\r\n\r\n  async initialLoadContent() {\r\n    const routeLoadKey = this.getRouteLoadKey();\r\n    this.loading = true;\r\n    this.contentError = false;\r\n    try {\r\n      if (!(await this.fetchContent())) {\r\n        return;\r\n      }\r\n      // Keep the content concealed by the loader until its saved scroll\r\n      // position has been applied to the fully rendered section.\r\n      await this.$nextTick();\r\n      await this.waitForReadingFonts();\r\n      this.scrollToCurrentPage();\r\n      this.updateTabName();\r\n      this.ensureContinuousContentAhead();\r\n    } catch (e) {\r\n      this.setContentError(e, routeLoadKey);\r\n    } finally {\r\n      if (this.getRouteLoadKey() === routeLoadKey) {\r\n        this.loading = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  getRouteLoadKey(route: Route = this.$route) {\r\n    return [route.params.language || '', route.params.book || '', route.params.bookSection || ''].join(':');\r\n  }\r\n\r\n  setContentError(error: Error, routeLoadKey: string = this.getRouteLoadKey()) {\r\n    if (routeLoadKey !== this.getRouteLoadKey()) {\r\n      return;\r\n    }\r\n    this.contentError = true;\r\n    console.error(error); // eslint-disable-line no-console\r\n  }\r\n\r\n  updateTabName() {\r\n    this.$store.commit('tabs/updateActiveTabDetails', {\r\n      name: this.tabName,\r\n      bookName: this.currentBookSection ? this.currentBookSection.book.name : '',\r\n      location: this.currentBookSection ? this.currentBookSection.name : ''\r\n    });\r\n  }\r\n\r\n  async fetchContent() {\r\n    if (!this.isCurrentBookSectionRoute()) {\r\n      return false;\r\n    }\r\n    if (!this.currentBookSection) {\r\n      return false;\r\n    }\r\n    const currentBookSection = this.currentBookSection;\r\n    const bookId = currentBookSection.book.id;\r\n    const routeLoadKey = this.getRouteLoadKey();\r\n    const bookSectionsWithContent = this.currentBookSectionsWithContent.slice(0);\r\n\r\n    this.$store.commit('navigation/updatePreloadFlag');\r\n    bookSectionsWithContent[currentBookSection.number] = await this.fetchBookSectionContent(\r\n      currentBookSection\r\n    );\r\n\r\n    // To modify keys of object we should use Vue.set in order to support reactivity\r\n    // @see https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats\r\n    Vue.set(this.bookSectionsWithContent, bookId, bookSectionsWithContent);\r\n\r\n    if (routeLoadKey !== this.getRouteLoadKey()) {\r\n      return false;\r\n    }\r\n\r\n    // Adjacent sections improve continuous scrolling, but a slow neighbour\r\n    // must never delay the section explicitly requested by the user.\r\n    const adjacentContent = this.preloadAdjacentContent(bookId, currentBookSection.id);\r\n    if (\r\n      this.$route.query.bookmark === '1' ||\r\n      this.$route.query.resume === '1' ||\r\n      this.$route.query.toc === '1' ||\r\n      typeof this.$route.query.position === 'string' ||\r\n      (this.loading && this.getSavedReadingPosition(this.$route.path) > 0)\r\n    ) {\r\n      await adjacentContent;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  async preloadAdjacentContent(bookId: number, sectionId: string) {\r\n    const sectionKey = `${bookId}:${sectionId}`;\r\n    if (this.preloadingSectionKeys.includes(sectionKey)) {\r\n      return;\r\n    }\r\n    this.preloadingSectionKeys.push(sectionKey);\r\n\r\n    try {\r\n      const [bookSectionsBefore, bookSectionsAfter] = await Promise.all([\r\n        this.fetchContentBeforeCurrent(),\r\n        this.fetchContentAfterCurrent()\r\n      ]);\r\n      const bookSectionsWithContent = (this.bookSectionsWithContent[bookId] || []).slice(0);\r\n      let needFixScroll = false;\r\n\r\n      if (bookSectionsBefore) {\r\n        bookSectionsBefore.forEach(bookSection => {\r\n          needFixScroll = needFixScroll || !this.wasBookSectionPreviouslyLoaded(bookSection);\r\n          bookSectionsWithContent[bookSection.number] = bookSection;\r\n        });\r\n      }\r\n      if (bookSectionsAfter) {\r\n        bookSectionsAfter.forEach(bookSection => {\r\n          bookSectionsWithContent[bookSection.number] = bookSection;\r\n        });\r\n      }\r\n      Vue.set(this.bookSectionsWithContent, bookId, bookSectionsWithContent);\r\n      if (needFixScroll) {\r\n        await this.fixScrollPosition();\r\n      }\r\n      this.ensureContinuousContentAhead();\r\n    } catch (e) {\r\n      console.error(e); // eslint-disable-line no-console\r\n    } finally {\r\n      this.preloadingSectionKeys = this.preloadingSectionKeys.filter(key => key !== sectionKey);\r\n    }\r\n  }\r\n\r\n  async fetchBookSectionContent(bookSection: BookSection) {\r\n    const requestKey = `${bookSection.book.id}:${bookSection.id}`;\r\n    if (!this.sectionContentRequests[requestKey]) {\r\n      this.sectionContentRequests[requestKey] = BooksService.getBookSectionContent(\r\n        bookSection.book.language,\r\n        bookSection.book.slug,\r\n        bookSection.slug\r\n      )\r\n        .then(content => ({ ...bookSection, content } as BookSectionWithContent))\r\n        .finally(() => {\r\n          delete this.sectionContentRequests[requestKey];\r\n        });\r\n    }\r\n    return this.sectionContentRequests[requestKey];\r\n  }\r\n\r\n  async doFetchContent(bookSections: Array<BookSection>, bestEffort: boolean = false) {\r\n    const results = await Promise.all(\r\n      bookSections.map(bookSection =>\r\n        this.fetchBookSectionContent(bookSection).catch(error => {\r\n          if (!bestEffort) {\r\n            throw error;\r\n          }\r\n          console.error(error); // eslint-disable-line no-console\r\n          return null;\r\n        })\r\n      )\r\n    );\r\n    return results.filter(section => !!section) as Array<BookSectionWithContent>;\r\n  }\r\n\r\n  getParagraphAnchor(bookSection: BookSection, index: number) {\r\n    const section = String(bookSection.slug || bookSection.id || 'section')\r\n      .toLowerCase()\r\n      .replace(/[^a-z0-9]+/g, '-')\r\n      .replace(/^-|-$/g, '');\r\n    return `paragraph-${section || 'section'}-${index}`;\r\n  }\r\n\r\n  async loadNextContinuousSection() {\r\n    if (\r\n      this.loadingContinuousSection ||\r\n      !this.currentBookSection ||\r\n      !this.currentBookSections ||\r\n      !this.currentBookSections.length\r\n    ) {\r\n      return false;\r\n    }\r\n    const bookId = this.currentBookSection.book.id;\r\n    const loaded = this.bookSectionsWithContent[bookId] || [];\r\n    const loadedIds = new Set(loaded.filter(Boolean).map(section => section.id));\r\n    const firstMissingIndex = this.currentBookSections.findIndex(section => !loadedIds.has(section.id));\r\n    const currentIndex =\r\n      typeof this.currentBookSectionIndex === 'number' ? this.currentBookSectionIndex : firstMissingIndex - 1;\r\n    const nextSection = this.currentBookSections\r\n      .slice(Math.max(0, currentIndex + 1))\r\n      .find(section => !loadedIds.has(section.id));\r\n    if (!nextSection) {\r\n      return false;\r\n    }\r\n    this.loadingContinuousSection = true;\r\n    try {\r\n      const [content] = await this.doFetchContent([nextSection]);\r\n      if (!content) {\r\n        return false;\r\n      }\r\n      const latest = (this.bookSectionsWithContent[bookId] || []).slice(0);\r\n      latest[nextSection.number] = content;\r\n      Vue.set(this.bookSectionsWithContent, bookId, latest);\r\n      return true;\r\n    } catch (e) {\r\n      console.error(e); // eslint-disable-line no-console\r\n      return false;\r\n    } finally {\r\n      this.loadingContinuousSection = false;\r\n    }\r\n  }\r\n\r\n  ensureContinuousContentAhead() {\r\n    if (this.presentationMode || !this.refScroll) {\r\n      return Promise.resolve();\r\n    }\r\n    if (this.continuousFillPromise) {\r\n      return this.continuousFillPromise;\r\n    }\r\n    const fillPromise = (async () => {\r\n      for (let attempt = 0; attempt < 8; attempt += 1) {\r\n        await this.$nextTick();\r\n        const remaining =\r\n          this.refScroll.scrollHeight - this.refScroll.clientHeight - this.refScroll.scrollTop;\r\n        if (remaining > this.refScroll.clientHeight * 1.5) {\r\n          break;\r\n        }\r\n        if (!(await this.loadNextContinuousSection())) {\r\n          break;\r\n        }\r\n      }\r\n    })();\r\n    this.continuousFillPromise = fillPromise;\r\n    return fillPromise.finally(() => {\r\n      if (this.continuousFillPromise === fillPromise) {\r\n        this.continuousFillPromise = undefined;\r\n      }\r\n    });\r\n  }\r\n\r\n  async fetchContentBeforeCurrent() {\r\n    if (!this.currentBookSections) {\r\n      return;\r\n    }\r\n    const bookSectionsBefore = [];\r\n    const index = this.currentBookSectionIndex;\r\n    if (index !== null) {\r\n      for (let i = index; i >= 0; i--) {\r\n        const bookSection = this.currentBookSections[i];\r\n        if (i === index) {\r\n          continue;\r\n        }\r\n        if (bookSection.preload) {\r\n          bookSectionsBefore.push(bookSection);\r\n        } else {\r\n          break;\r\n        }\r\n      }\r\n      return this.doFetchContent(bookSectionsBefore.reverse(), true);\r\n    }\r\n  }\r\n\r\n  async fetchContentAfterCurrent() {\r\n    if (!this.currentBookSections) {\r\n      return;\r\n    }\r\n    const bookSectionsAfter = [];\r\n    const index = this.currentBookSectionIndex;\r\n    if (index !== null) {\r\n      for (let i = index; i < this.currentBookSections.length; i++) {\r\n        const bookSection = this.currentBookSections[i];\r\n        if (i === index) {\r\n          continue;\r\n        }\r\n        if (bookSection.preload) {\r\n          bookSectionsAfter.push(bookSection);\r\n        } else {\r\n          break;\r\n        }\r\n      }\r\n      return this.doFetchContent(bookSectionsAfter, true);\r\n    }\r\n  }\r\n\r\n  async fixScrollPosition() {\r\n    if (!this.currentBookSection) {\r\n      return;\r\n    }\r\n    await this.$nextTick();\r\n    if (!this.currentBookSection) {\r\n      return;\r\n    }\r\n    const bookSectionLink = this.getBookSectionUrl(this.currentBookSection);\r\n    const currentBookSectionElement = this.findPageElement(bookSectionLink);\r\n    if (currentBookSectionElement) {\r\n      this.scrollToPage(\r\n        currentBookSectionElement,\r\n        this.getSavedReadingPosition(currentBookSectionElement.dataset.page || '')\r\n      );\r\n    }\r\n  }\r\n\r\n  onScroll() {\r\n    const currentScrollPosition = this.refScroll.scrollTop;\r\n    const remaining = this.refScroll.scrollHeight - this.refScroll.clientHeight - currentScrollPosition;\r\n    if (\r\n      remaining <= this.refScroll.clientHeight * 1.5 &&\r\n      typeof this.ensureContinuousContentAhead === 'function'\r\n    ) {\r\n      this.ensureContinuousContentAhead();\r\n    }\r\n    const delta = currentScrollPosition - this.lastScrollPosition;\r\n    if (Math.abs(delta) > 12 && Date.now() >= this.suppressReaderScrollUntil) {\r\n      const event = {\r\n        direction: delta > 0 ? 'down' : 'up',\r\n        delta: Math.abs(delta),\r\n        top: currentScrollPosition,\r\n        max: Math.max(0, this.refScroll.scrollHeight - this.refScroll.clientHeight)\r\n      };\r\n      this.$emit('reader-scroll', event);\r\n      this.$root.$emit('reader-scroll', event);\r\n      this.lastScrollPosition = currentScrollPosition;\r\n    } else if (Math.abs(delta) > 0) {\r\n      this.lastScrollPosition = currentScrollPosition;\r\n    }\r\n    if (this.onScrollTimeout) {\r\n      clearTimeout(this.onScrollTimeout);\r\n    }\r\n    this.onScrollTimeout = setTimeout(() => {\r\n      const scrollPosition = this.refScroll.scrollTop;\r\n      const pages: Array<HTMLElement> = Array.from(this.refScroll.querySelectorAll('[data-page]'));\r\n      const newPage = pages.find(el => el.offsetTop + el.offsetHeight - 20 > scrollPosition);\r\n      const readingPosition = this.getReadingPosition(newPage);\r\n\r\n      if (readingPosition) {\r\n        this.updateReadingPositionLocally(readingPosition);\r\n        this.scheduleReadingPositionSave(readingPosition);\r\n      }\r\n\r\n      // todo maybe bad solution: once content is loaded is should be put before scroll\r\n      if (\r\n        newPage &&\r\n        newPage.dataset.page &&\r\n        Date.now() >= this.suppressReaderScrollUntil &&\r\n        (!newPage.dataset.isParent || scrollPosition === 0) &&\r\n        (router.currentRoute.path !== newPage.dataset.page || !router.currentRoute.query.reading)\r\n      ) {\r\n        router.replace({ path: newPage.dataset.page, query: { ...router.currentRoute.query, reading: '1' } });\r\n      }\r\n    }, 50);\r\n  }\r\n\r\n  onClickOnNote(e: Event) {\r\n    const target = e.target as HTMLDivElement;\r\n    const element = target && (target.classList.contains('footnote') ? target : target.closest('.footnote'));\r\n    if (element) {\r\n      const note = element.getAttribute('data-footnote-content');\r\n      const number = element.getAttribute('data-footnote-number');\r\n      this.note.title = number ? `${getTranslation('note')} №${number}` : '';\r\n      this.note.content = note || '';\r\n      this.note.visible = true;\r\n    }\r\n  }\r\n\r\n  resetNote() {\r\n    this.note.title = '';\r\n    this.note.content = '';\r\n    this.note.visible = false;\r\n  }\r\n\r\n  scrollToCurrentPage() {\r\n    const pageElement = this.findPageElement(this.$route.path);\r\n    if (pageElement) {\r\n      const queryPosition =\r\n        typeof this.$route.query.position === 'string' ? Number(this.$route.query.position) : NaN;\r\n      if (this.$route.query.toc === '1') {\r\n        this.scrollToSectionHeading(pageElement);\r\n      } else if (Number.isFinite(queryPosition)) {\r\n        this.scrollToPage(pageElement, queryPosition);\r\n      } else {\r\n        const queryAnchor = typeof this.$route.query.anchor === 'string' ? this.$route.query.anchor : '';\r\n        const savedAnchor = this.getSavedParagraphAnchor(this.$route.path);\r\n        const anchor = queryAnchor || savedAnchor;\r\n        if (anchor && this.scrollToParagraph(anchor)) {\r\n          const readingPosition = this.getReadingPosition(pageElement);\r\n          if (readingPosition) {\r\n            this.updateReadingPositionLocally(readingPosition);\r\n            this.scheduleReadingPositionSave(readingPosition);\r\n          }\r\n        } else {\r\n          this.scrollToPage(pageElement, this.getSavedReadingPosition(this.$route.path));\r\n        }\r\n      }\r\n      this.clearBookmarkOpeningFlag();\r\n    }\r\n  }\r\n\r\n  clearBookmarkOpeningFlag() {\r\n    if (\r\n      this.$route.query.bookmark !== '1' &&\r\n      this.$route.query.resume !== '1' &&\r\n      this.$route.query.toc !== '1' &&\r\n      !this.$route.query.position &&\r\n      !this.$route.query.anchor\r\n    ) {\r\n      return;\r\n    }\r\n    const query = { ...this.$route.query };\r\n    delete query.bookmark;\r\n    delete query.resume;\r\n    delete query.toc;\r\n    delete query.position;\r\n    delete query.anchor;\r\n    router.replace({ path: this.$route.path, query }).catch(() => {});\r\n  }\r\n\r\n  async waitForReadingFonts() {\r\n    const fonts = (document as any).fonts;\r\n    if (fonts && fonts.ready) {\r\n      try {\r\n        await fonts.ready;\r\n      } catch (e) {\r\n        // A failed optional webfont must not prevent the book from opening.\r\n      }\r\n    }\r\n    await this.$nextTick();\r\n  }\r\n\r\n  scrollToPage(el: HTMLElement, position: number = 0) {\r\n    this.suppressReaderScrollUntil = Date.now() + 150;\r\n    this.refScroll.scrollTop = el.offsetTop + el.offsetHeight * Math.max(0, Math.min(1, position));\r\n    this.lastScrollPosition = this.refScroll.scrollTop;\r\n    const readingPosition = this.getReadingPosition(el);\r\n    if (readingPosition) {\r\n      this.updateReadingPositionLocally(readingPosition);\r\n      this.scheduleReadingPositionSave(readingPosition);\r\n    }\r\n  }\r\n\r\n  scrollToSectionHeading(page: HTMLElement) {\r\n    const heading = page.querySelector('.title') as HTMLElement | null;\r\n    if (!heading) {\r\n      this.scrollToPage(page, 0);\r\n      return;\r\n    }\r\n    const scrollRect = this.refScroll.getBoundingClientRect();\r\n    const headingRect = heading.getBoundingClientRect();\r\n    this.suppressReaderScrollUntil = Date.now() + 150;\r\n    this.refScroll.scrollTop += headingRect.top - scrollRect.top - 16;\r\n    this.lastScrollPosition = this.refScroll.scrollTop;\r\n    const readingPosition = this.getReadingPosition(page);\r\n    if (readingPosition) {\r\n      this.updateReadingPositionLocally(readingPosition);\r\n      this.scheduleReadingPositionSave(readingPosition);\r\n    }\r\n  }\r\n\r\n  getSavedReadingPosition(link: string) {\r\n    const activeTab = this.$store.state.tabs.list.find((tab: { active: boolean }) => tab.active);\r\n    if (!(activeTab && activeTab.link && activeTab.link.split('?')[0] === link)) {\r\n      return 0;\r\n    }\r\n    return typeof activeTab.position === 'number' ? activeTab.position : 0;\r\n  }\r\n\r\n  getSavedParagraphAnchor(link: string) {\r\n    const activeTab = this.$store.state.tabs.list.find((tab: { active: boolean }) => tab.active);\r\n    if (!(activeTab && activeTab.link && activeTab.link.split('?')[0] === link)) {\r\n      return '';\r\n    }\r\n    return activeTab.paragraphAnchor || '';\r\n  }\r\n\r\n  scrollToParagraph(anchor: string) {\r\n    const paragraph = Array.from(this.refScroll.querySelectorAll('[data-paragraph-anchor]')).find(\r\n      element => (element as HTMLElement).dataset.paragraphAnchor === anchor\r\n    ) as HTMLElement | undefined;\r\n    if (!paragraph) {\r\n      return false;\r\n    }\r\n    const scrollRect = this.refScroll.getBoundingClientRect();\r\n    const paragraphRect = paragraph.getBoundingClientRect();\r\n    this.suppressReaderScrollUntil = Date.now() + 150;\r\n    this.refScroll.scrollTop += paragraphRect.top - scrollRect.top - 16;\r\n    this.lastScrollPosition = this.refScroll.scrollTop;\r\n    return true;\r\n  }\r\n\r\n  getReadingPosition(page?: HTMLElement) {\r\n    if (!(page && page.dataset.page)) {\r\n      return null;\r\n    }\r\n    const section = this.currentBookSectionsWithContent\r\n      .filter(one => one)\r\n      .find(bookSection => this.getBookSectionUrl(bookSection) === page.dataset.page);\r\n    if (!section) {\r\n      return null;\r\n    }\r\n    const relativeTop = Math.max(0, this.refScroll.scrollTop - page.offsetTop);\r\n    const position = page.offsetHeight ? Math.min(1, relativeTop / page.offsetHeight) : 0;\r\n    const canMeasureParagraphs =\r\n      typeof this.refScroll.getBoundingClientRect === 'function' &&\r\n      typeof page.querySelectorAll === 'function';\r\n    const scrollRect = canMeasureParagraphs ? this.refScroll.getBoundingClientRect() : null;\r\n    const paragraphs: Array<HTMLElement> = canMeasureParagraphs\r\n      ? Array.from(page.querySelectorAll('[data-paragraph-anchor]'))\r\n      : [];\r\n    const paragraph =\r\n      paragraphs\r\n        .filter(\r\n          element =>\r\n            !!scrollRect &&\r\n            typeof element.getBoundingClientRect === 'function' &&\r\n            element.getBoundingClientRect().top <= scrollRect.top + 32\r\n        )\r\n        .pop() || paragraphs[0];\r\n    return {\r\n      bookKey: `${section.book.language}:${section.book.slug}`,\r\n      language: section.book.language,\r\n      book: section.book.slug,\r\n      section: section.slug,\r\n      location: section.name,\r\n      link: page.dataset.page,\r\n      position,\r\n      paragraphAnchor: paragraph ? paragraph.dataset.paragraphAnchor || '' : ''\r\n    } as ReadingPosition;\r\n  }\r\n\r\n  updateReadingPositionLocally(position: ReadingPosition) {\r\n    this.lastReadingPosition = position;\r\n    const updatedAt = new Date().toISOString();\r\n    this.$store.commit('tabs/updateBookTabDetails', {\r\n      bookKey: position.bookKey,\r\n      details: {\r\n        link: position.link,\r\n        location: position.location,\r\n        position: position.position,\r\n        paragraphAnchor: position.paragraphAnchor,\r\n        updatedAt\r\n      }\r\n    });\r\n    this.$store.commit('tabs/updateCurrentReading', {\r\n      name: this.tabName,\r\n      bookName: this.currentBookSection ? this.currentBookSection.book.name : this.tabName,\r\n      bookKey: position.bookKey,\r\n      link: position.link,\r\n      active: false,\r\n      location: position.location,\r\n      position: position.position,\r\n      paragraphAnchor: position.paragraphAnchor,\r\n      updatedAt,\r\n      sectionPositions: this.getSavedSectionPositions(position.bookKey)\r\n    });\r\n  }\r\n\r\n  scheduleReadingPositionSave(position: ReadingPosition) {\r\n    this.pendingReadingPosition = position;\r\n    if (this.readingPositionTimeout) {\r\n      clearTimeout(this.readingPositionTimeout);\r\n    }\r\n    this.readingPositionTimeout = setTimeout(() => {\r\n      this.readingPositionTimeout = undefined;\r\n      if (this.pendingReadingPosition) {\r\n        this.saveReadingPosition(this.pendingReadingPosition);\r\n      }\r\n    }, 700);\r\n  }\r\n\r\n  flushCurrentReadingPosition() {\r\n    if (this.onScrollTimeout) {\r\n      clearTimeout(this.onScrollTimeout);\r\n      this.onScrollTimeout = undefined;\r\n    }\r\n    const pages: Array<HTMLElement> = Array.from(this.refScroll.querySelectorAll('[data-page]'));\r\n    const page = pages.find(item => item.offsetTop + item.offsetHeight - 20 > this.refScroll.scrollTop);\r\n    // During pagehide the browser may already be reflowing an orientation\r\n    // change. Prefer the last position measured while layout was stable.\r\n    const position = this.pendingReadingPosition || this.lastReadingPosition || this.getReadingPosition(page);\r\n    if (!position) {\r\n      return;\r\n    }\r\n    this.updateReadingPositionLocally(position);\r\n    this.pendingReadingPosition = undefined;\r\n    UserService.saveReadingPositionOnPageHide({\r\n      language: position.language,\r\n      book: position.book,\r\n      section: position.section,\r\n      position: position.position,\r\n      section_positions: this.getSavedSectionPositions(position.bookKey)\r\n    });\r\n  }\r\n\r\n  onViewportResize() {\r\n    if (typeof this.schedulePresentationFit === 'function') {\r\n      this.schedulePresentationFit();\r\n    }\r\n    const position = this.lastReadingPosition;\r\n    if (!position) {\r\n      return;\r\n    }\r\n    if (this.viewportResizeTimeout) {\r\n      clearTimeout(this.viewportResizeTimeout);\r\n    }\r\n    this.viewportResizeTimeout = setTimeout(() => {\r\n      this.viewportResizeTimeout = undefined;\r\n      const page = this.findPageElement(position.link);\r\n      if (page) {\r\n        this.scrollToPage(page, position.position);\r\n      }\r\n    }, 120);\r\n  }\r\n\r\n  async saveReadingPosition(position: ReadingPosition) {\r\n    this.pendingReadingPosition = undefined;\r\n    try {\r\n      const saved = await UserService.saveReadingPosition({\r\n        language: position.language,\r\n        book: position.book,\r\n        section: position.section,\r\n        position: position.position,\r\n        section_positions: this.getSavedSectionPositions(position.bookKey)\r\n      });\r\n      this.$store.commit('tabs/updateBookTabDetails', {\r\n        bookKey: position.bookKey,\r\n        details: {\r\n          updatedAt: saved.updated_at || new Date().toISOString()\r\n        }\r\n      });\r\n    } catch (e) {\r\n      // The local reading position remains available if synchronization is temporarily unavailable.\r\n    }\r\n  }\r\n\r\n  getSavedSectionPositions(bookKey: string) {\r\n    const tab = this.$store.state.tabs.list.find((item: { bookKey?: string }) => item.bookKey === bookKey);\r\n    return tab && tab.sectionPositions ? { ...tab.sectionPositions } : {};\r\n  }\r\n\r\n  findPageElement(url: string) {\r\n    if (!(this.refScroll && typeof this.refScroll.querySelector === 'function')) {\r\n      return null;\r\n    }\r\n    return this.refScroll.querySelector(`[data-page=\"${url}\"]`) as HTMLElement | null;\r\n  }\r\n\r\n  wasBookSectionPreviouslyLoaded(bookSection: BookSectionWithContent) {\r\n    const currentBookSection = this.currentBookSection;\r\n    if (!currentBookSection) {\r\n      return false;\r\n    }\r\n    return !!this.currentBookSectionsWithContent\r\n      .filter(one => one)\r\n      .find(one => one.id === bookSection.id && one.book.id === bookSection.book.id);\r\n  }\r\n\r\n  getAuthorUrl(slug: string) {\r\n    return UrlBuilderService.getAuthorUrl({\r\n      language: this.$route.params.language,\r\n      authorSlug: slug\r\n    });\r\n  }\r\n\r\n  getBookSectionUrl(bookSection: BookSection | BookSectionWithContent) {\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: bookSection.book.language,\r\n      categorySlug: this.$route.params.category,\r\n      authorSlug: this.$route.params.author,\r\n      bookSlug: bookSection.book.slug,\r\n      bookSectionSlug: bookSection.slug\r\n    });\r\n  }\r\n\r\n  getContent(entity: { content: string; type?: string }) {\r\n    let content =\r\n      entity.type === 'word-by-word' ? this.decorateWordByWordTerms(entity.content) : entity.content;\r\n    if (this.highlight && this.highlight.length) {\r\n      for (const word of this.highlight) {\r\n        content = StringService.replaceAll(content, word, `<em class=\"highlight\">${word}</em>`);\r\n      }\r\n    }\r\n    return content;\r\n  }\r\n\r\n  decorateWordByWordTerms(content: string) {\r\n    const template = document.createElement('template');\r\n    template.innerHTML = content;\r\n    Array.from(template.content.querySelectorAll('em, i, strong, b, span')).forEach(element => {\r\n      const nextSibling = element.nextSibling;\r\n      const separator = nextSibling && nextSibling.textContent ? nextSibling.textContent : '';\r\n      if (\r\n        !element.classList.contains('word-by-word-term') &&\r\n        !element.closest('.word-by-word-term') &&\r\n        /^\\s*[—–-]\\s+/.test(separator)\r\n      ) {\r\n        element.classList.add('word-by-word-term');\r\n      }\r\n    });\r\n    const walker = document.createTreeWalker(template.content, NodeFilter.SHOW_TEXT);\r\n    const textNodes: Array<Text> = [];\r\n    let currentNode = walker.nextNode();\r\n    while (currentNode) {\r\n      textNodes.push(currentNode as Text);\r\n      currentNode = walker.nextNode();\r\n    }\r\n\r\n    textNodes.forEach(textNode => {\r\n      const parent = textNode.parentElement;\r\n      if (parent && parent.closest('em, i, .word-by-word-term')) {\r\n        return;\r\n      }\r\n      const text = textNode.textContent || '';\r\n      const termPattern = /(^|;\\s*)([^;—–]+?)(\\s+[—–]\\s+)/g;\r\n      const fragment = document.createDocumentFragment();\r\n      let lastIndex = 0;\r\n      let match = termPattern.exec(text);\r\n      if (!match) {\r\n        return;\r\n      }\r\n      do {\r\n        fragment.appendChild(document.createTextNode(text.slice(lastIndex, match.index) + match[1]));\r\n        const term = document.createElement('span');\r\n        term.className = 'word-by-word-term';\r\n        term.textContent = match[2];\r\n        fragment.appendChild(term);\r\n        fragment.appendChild(document.createTextNode(match[3]));\r\n        lastIndex = termPattern.lastIndex;\r\n        match = termPattern.exec(text);\r\n      } while (match);\r\n      fragment.appendChild(document.createTextNode(text.slice(lastIndex)));\r\n      textNode.replaceWith(fragment);\r\n    });\r\n\r\n    return template.innerHTML;\r\n  }\r\n\r\n  captureCurrentReadingPosition() {\r\n    if (this.onScrollTimeout) {\r\n      clearTimeout(this.onScrollTimeout);\r\n      this.onScrollTimeout = undefined;\r\n    }\r\n    const pages: Array<HTMLElement> = Array.from(this.refScroll.querySelectorAll('[data-page]'));\r\n    const page = pages.find(item => item.offsetTop + item.offsetHeight - 20 > this.refScroll.scrollTop);\r\n    const position = this.getReadingPosition(page);\r\n    if (position) {\r\n      this.updateReadingPositionLocally(position);\r\n      this.lastReadingPosition = position;\r\n    }\r\n    return position;\r\n  }\r\n\r\n  bindLinksEvent() {\r\n    const links = this.refScroll.querySelectorAll('a.link-to-poem:not([data-bound=\"1\"])') as NodeListOf<\r\n      HTMLAnchorElement\r\n    >;\r\n    if (!links.length) {\r\n      return;\r\n    }\r\n\r\n    const scrollOffsetTop = this.refScroll.getBoundingClientRect().top;\r\n\r\n    for (const link of links) {\r\n      link.addEventListener('click', e => {\r\n        e.preventDefault();\r\n        this.contextMenu.link = link.getAttribute('href') || '';\r\n        this.contextMenu.top = this.refScroll.scrollTop + e.pageY - scrollOffsetTop;\r\n        this.contextMenu.left = link.offsetLeft;\r\n      });\r\n      link.dataset.bound = '1';\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookContent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookContent.vue?vue&type=template&id=e116090e&scoped=true&\"\nimport script from \"./BookContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookContent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BookContent.vue?vue&type=style&index=0&id=e116090e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"e116090e\",\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('div',[_c('Loader',{attrs:{\"hidden\":!_vm.loading}}),(_vm.book)?_c('div',{staticClass:\"page book\",class:{ loading: _vm.loading }},[_c('div',{staticClass:\"book-top\"},[(_vm.book.cover_image)?_c('div',[_c('img',{staticClass:\"book-image\",attrs:{\"src\":_vm.book.cover_image,\"alt\":\"\"}}),(_vm.book.download_files && _vm.book.download_files.length)?_c('div',{staticClass:\"book-download\"},[_vm._v(\"\\n          \"+_vm._s(_vm.getTranslation('downloadFile'))+\"\\n          \"),_vm._l((_vm.book.download_files),function(file){return _c('div',{key:file.name},[_c('a',{staticClass:\"book-file\",attrs:{\"href\":file.url}},[_c('DownloadIcon'),_vm._v(\" \"+_vm._s(file.extension)+\" (\"+_vm._s(file.size)+\")\\n            \")],1)])})],2):_vm._e()]):_vm._e(),_c('div',[(_vm.book.name)?_c('h1',{staticClass:\"book-name\"},[_vm._v(_vm._s(_vm.book.name))]):_vm._e(),(_vm.book.original_name)?_c('div',{staticClass:\"book-original-name\"},[_vm._v(_vm._s(_vm.book.original_name))]):_vm._e(),(_vm.book.authors)?_c('div',{staticClass:\"book-author\"},[_vm._v(\"\\n          \"+_vm._s(_vm.authors)+\"\\n        \")]):_vm._e(),(_vm.book.description)?_c('div',{staticClass:\"book-description\"},[_vm._v(_vm._s(_vm.book.description))]):_vm._e(),_c('div',{staticClass:\"book-actions\"},[(_vm.continueReadingUrl)?_c('router-link',{staticClass:\"button book-read-link\",attrs:{\"to\":_vm.continueReadingUrl}},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('read'))+\"\\n          \")]):_vm._e(),_c('router-link',{staticClass:\"button secondary book-search-link\",attrs:{\"to\":_vm.bookSearchUrl}},[_c('SearchIcon'),_c('span',[_vm._v(_vm._s(_vm.getTranslation('searchInBook')))])],1)],1)])]),(_vm.book.related_books && _vm.book.related_books.length)?_c('div',{staticClass:\"book-section\"},[_c('h2',{staticClass:\"book-section-title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('linkedBooks'))+\"\\n        \"),_c('span',{staticClass:\"book-section-title-note\"},[_vm._v(\"(\"+_vm._s(_vm.book.related_books.length)+\")\")])]),_c('BooksWithTranslations',{attrs:{\"books\":_vm.book.related_books}})],1):_vm._e(),(_vm.book.other_publications && _vm.book.other_publications.length)?_c('div',{staticClass:\"book-section\"},[_c('h2',{staticClass:\"book-section-title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('otherPublishings'))+\"\\n        \"),_c('span',{staticClass:\"book-section-title-note\"},[_vm._v(\"(\"+_vm._s(_vm.book.other_publications.length)+\")\")])]),_vm._l((_vm.book.other_publications),function(publication){return _c('div',{key:publication.name,staticClass:\"flex\"},[_vm._v(\"\\n        \"+_vm._s(publication.name)+\" —\\n        \"),_vm._l((publication.translations),function(translation,index){return _c('div',{key:translation.lang},[(index > 0)?_c('span',[_vm._v(\" | \")]):_vm._e(),_c('router-link',{attrs:{\"to\":translation.url}},[_vm._v(_vm._s(translation.short_name))])],1)})],2)})],2):_vm._e(),_c('h2',{staticClass:\"book-section-title\"},[_vm._v(_vm._s(_vm.getTranslation('outputData')))]),_c('table',{staticClass:\"book-issue-data\"},[_c('tbody',[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('bookTitle'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.name))])]),(_vm.book.original_name)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('bookOriginalTitle'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.original_name))])]):_vm._e(),(_vm.book.authors && _vm.book.authors.length)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation(_vm.book.authors.length > 1 ? 'authors' : 'author'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.authors))])]):_vm._e(),(_vm.book.commentators && _vm.book.commentators.length)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation(_vm.book.commentators.length > 1 ? 'commentators' : 'commentator'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.commentators.join(', ')))])]):_vm._e(),(_vm.book.language)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('bookTranslation'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.language))])]):_vm._e(),(_vm.book.translator)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('translator'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.translator))])]):_vm._e(),(_vm.book.editor)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('editor'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.editor))])]):_vm._e(),(_vm.book.publisher)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('publisher'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.publisher))])]):_vm._e(),(_vm.book.publishing_year)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('publishingYear'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.publishing_year))])]):_vm._e(),(_vm.book.ISBN)?_c('tr',[_c('td',[_vm._v(\"ISBN:\")]),_c('td',[_vm._v(_vm._s(_vm.book.ISBN))])]):_vm._e(),(_vm.book.pages_count)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('pagesAmount'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.pages_count))])]):_vm._e(),(_vm.book.book_copies)?_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getTranslation('printRun'))+\":\")]),_c('td',[_vm._v(_vm._s(_vm.book.book_copies))])]):_vm._e()])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      export default {\n        functional: true,\n        render(_h, _vm) {\n          const { _c, _v, data, children = [] } = _vm;\n\n          const {\n            class: classNames,\n            staticClass,\n            style,\n            staticStyle,\n            attrs = {},\n            ...rest\n          } = data;\n\n          return _c(\n            'svg',\n            {\n              class: [classNames,staticClass],\n              style: [style,staticStyle],\n              attrs: Object.assign({\"width\":\"13\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n              ...rest,\n            },\n            children.concat([_c('path',{attrs:{\"d\":\"M8.842.124A.402.402 0 008.557 0h-6.4C.974 0 0 .947 0 2.099V13.9C0 15.053.975 16 2.156 16h8.688C12.025 16 13 15.053 13 13.901V4.53a.41.41 0 00-.115-.27L8.842.124zm.115 1.24l2.707 2.771h-1.76a.932.932 0 01-.947-.92v-1.85zm1.887 13.863H2.156c-.741 0-1.363-.599-1.363-1.326V2.1c0-.723.618-1.326 1.363-1.326h6.009v2.442c0 .94.777 1.693 1.74 1.693h2.302v8.993c0 .727-.618 1.326-1.363 1.326z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M9.762 12.56H3.238a.393.393 0 00-.396.387c0 .212.178.386.396.386h6.528a.393.393 0 00.396-.386.394.394 0 00-.4-.387zM6.211 11.173a.404.404 0 00.29.124.404.404 0 00.289-.124l2.322-2.43a.378.378 0 00-.02-.546.402.402 0 00-.558.02L6.897 9.927v-4.22a.393.393 0 00-.397-.386.393.393 0 00-.396.386v4.22L4.471 8.216a.402.402 0 00-.559-.019.379.379 0 00-.02.545l2.32 2.431z\",\"fill\":\"currentColor\"}})])\n          )\n        }\n      }\n    ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.collapseAfter)?[_c('BooksWithTranslationsList',{attrs:{\"books\":_vm.books.slice(0, _vm.collapseAfter)}}),_c('Collapsible',{attrs:{\"expand-text\":_vm.expandText,\"collapse-text\":_vm.collapseText}},[_c('BooksWithTranslationsList',{attrs:{\"books\":_vm.books.slice(_vm.collapseAfter)}})],1)]:[_c('BooksWithTranslationsList',{attrs:{\"books\":_vm.books}})]],2)}\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',[(!_vm.collapsed)?_vm._t(\"default\"):_vm._e(),_c('div',[_c('button',{staticClass:\"link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.collapsed = !_vm.collapsed}}},[_vm._v(\"\\n      \"+_vm._s(_vm.collapsed ? _vm.expandText : _vm.collapseText)+\"\\n    \")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Collapsible extends Vue {\r\n  @Prop({ required: true })\r\n  collapseText!: string;\r\n\r\n  @Prop({ required: true })\r\n  expandText!: string;\r\n\r\n  collapsed = true;\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Collapsible.vue?vue&type=template&id=e6bf446a&scoped=true&\"\nimport script from \"./Collapsible.vue?vue&type=script&lang=ts&\"\nexport * from \"./Collapsible.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Collapsible.vue?vue&type=style&index=0&id=e6bf446a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"e6bf446a\",\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('div',_vm._l((_vm.books),function(book){return _c('div',{key:book.name,staticClass:\"flex\"},[_vm._v(\"\\n    \"+_vm._s(book.name)+\" — \\n    \"),_vm._l((book.translations),function(translation,index){return _c('div',{key:translation.short_name},[(index > 0)?_c('span',[_vm._v(\" | \")]):_vm._e(),_c('router-link',{attrs:{\"to\":translation.url}},[_vm._v(_vm._s(translation.short_name))])],1)})],2)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\ninterface BookWithTranslations {\r\n  name: string;\r\n  translations: Array<{ url: string; short_name: string }>;\r\n}\r\n\r\n@Component\r\nexport default class BooksWithTranslationsList extends Vue {\r\n  @Prop({ required: true })\r\n  books!: Array<BookWithTranslations>;\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BooksWithTranslationsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BooksWithTranslationsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BooksWithTranslationsList.vue?vue&type=template&id=e38cac0c&\"\nimport script from \"./BooksWithTranslationsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./BooksWithTranslationsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport Collapsible from '@/components/ui/Collapsible.vue';\r\nimport BooksWithTranslationsList from '@/components/BooksWithTranslationsList.vue';\r\n\r\ninterface BookWithTranslations {\r\n  name: string;\r\n  translations: Array<{ url: string; short_name: string }>;\r\n}\r\n\r\n@Component({\r\n  components: { BooksWithTranslationsList, Collapsible }\r\n})\r\nexport default class BooksWithTranslations extends Vue {\r\n  @Prop({ required: true })\r\n  books!: Array<BookWithTranslations>;\r\n\r\n  @Prop()\r\n  collapseAfter!: number;\r\n\r\n  @Prop()\r\n  collapseText!: string;\r\n\r\n  @Prop()\r\n  expandText!: string;\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BooksWithTranslations.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BooksWithTranslations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BooksWithTranslations.vue?vue&type=template&id=2eedc946&\"\nimport script from \"./BooksWithTranslations.vue?vue&type=script&lang=ts&\"\nexport * from \"./BooksWithTranslations.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport BooksService from '@/services/Api/BooksService';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport * as Book from '@/services/Api/BooksService/Book.types';\r\nimport DownloadIcon from '@/assets/icons/download.svg';\r\nimport SearchIcon from '@/assets/icons/zoom.svg';\r\nimport { Getter } from 'vuex-class';\r\nimport { Book as NavigationBook } from '@/services/Navigation/types';\r\nimport BooksWithTranslations from '@/components/BooksWithTranslations.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { BooksWithTranslations, Loader, DownloadIcon, SearchIcon }\r\n})\r\nexport default class BookCover extends Vue {\r\n  book: null | Book.Content = null;\r\n\r\n  loading: boolean = false;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Getter('currentBook', { namespace: 'navigation' })\r\n  navigationBook?: NavigationBook;\r\n\r\n  get authors() {\r\n    return this.book ? this.book.authors.map(author => author.name).join(', ') : '';\r\n  }\r\n\r\n  get continueReadingUrl() {\r\n    if (!this.book) {\r\n      return '';\r\n    }\r\n    const validateSectionUrl = (url: string) => {\r\n      if (!(url && this.navigationBook && this.navigationBook.children.length)) {\r\n        return url;\r\n      }\r\n      const sectionSlug = url\r\n        .split('?')[0]\r\n        .split('/')\r\n        .filter(Boolean)\r\n        .pop();\r\n      if (this.navigationBook.children.some(section => section.slug === sectionSlug)) {\r\n        return url;\r\n      }\r\n      const firstValidSection =\r\n        this.navigationBook.children.find(section => !section.is_parent) || this.navigationBook.children[0];\r\n      return firstValidSection ? this.getFirstBookSectionLink(firstValidSection.slug) : '';\r\n    };\r\n    const bookKey = `${this.$route.params.language}:${this.$route.params.book}`;\r\n    const savedTab = this.$store.state.tabs.list.find(\r\n      (tab: { bookKey?: string; link?: string }) => tab.bookKey === bookKey && tab.link\r\n    );\r\n    if (savedTab && savedTab.link && savedTab.link.split('?')[0] !== this.$route.path) {\r\n      return validateSectionUrl(savedTab.link);\r\n    }\r\n    return validateSectionUrl(this.book.firstSectionUrl || '');\r\n  }\r\n\r\n  get bookSearchUrl() {\r\n    const query = new URLSearchParams({\r\n      slug: this.$route.params.book,\r\n      inBookOnly: '1',\r\n      bookSearch: '1',\r\n      returnTo: this.$route.fullPath\r\n    });\r\n    if (this.navigationBook && this.navigationBook.id) {\r\n      query.set('bookId', this.navigationBook.id.toString());\r\n    }\r\n    return `/${this.$route.params.language}/search?${query.toString()}`;\r\n  }\r\n\r\n  async mounted() {\r\n    await this.fetchBook();\r\n    this.updateTabName();\r\n  }\r\n\r\n  @Watch('$route')\r\n  async onRouteChange() {\r\n    await this.fetchBook();\r\n    this.updateTabName();\r\n  }\r\n\r\n  updateTabName() {\r\n    const bookName = this.navigationBook\r\n      ? this.navigationBook.name\r\n      : this.book\r\n      ? this.book.name\r\n      : getTranslation('book');\r\n    this.$store.commit('tabs/updateActiveTabDetails', {\r\n      name: bookName,\r\n      bookName\r\n    });\r\n  }\r\n\r\n  async fetchBook() {\r\n    if (this.$route.params.book) {\r\n      this.loading = true;\r\n      this.book = await BooksService.getBookCover(this.$route.params.language, this.$route.params.book);\r\n      if (this.book) {\r\n        if (this.book.other_publications) {\r\n          this.book.other_publications = this.prepareTranslations(this.book.other_publications);\r\n        }\r\n        if (this.book.related_books) {\r\n          this.book.related_books = this.prepareTranslations(this.book.related_books);\r\n        }\r\n        if (this.book.first_section_slug) {\r\n          this.book.firstSectionUrl = this.getFirstBookSectionLink(this.book.first_section_slug);\r\n        }\r\n      }\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  getFirstBookSectionLink(slug: string) {\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: this.$route.params.language,\r\n      categorySlug: this.$route.params.category,\r\n      authorSlug: this.$route.params.author,\r\n      bookSlug: this.$route.params.book,\r\n      bookSectionSlug: slug\r\n    });\r\n  }\r\n\r\n  prepareTranslations(books: Array<any>) {\r\n    return books.map(publication => ({\r\n      ...publication,\r\n      translations: publication.translations.map((translation: Book.Translation) => ({\r\n        ...translation,\r\n        url: UrlBuilderService.getBookUrl({\r\n          language: translation.lang,\r\n          categorySlug: this.$route.params.category,\r\n          bookSlug: publication.slug\r\n        })\r\n      }))\r\n    }));\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookCover.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BookCover.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookCover.vue?vue&type=template&id=0f82cd7b&scoped=true&\"\nimport script from \"./BookCover.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookCover.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BookCover.vue?vue&type=style&index=0&id=0f82cd7b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0f82cd7b\",\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('div',[_c('Loader',{attrs:{\"hidden\":!_vm.loading}}),(_vm.author)?_c('div',{staticClass:\"page author\",class:{ loading: _vm.loading }},[_c('div',{staticClass:\"author-top\"},[(_vm.author.cover_image)?_c('div',[_c('img',{staticClass:\"author-image\",attrs:{\"src\":_vm.author.cover_image,\"alt\":\"\"}})]):_vm._e(),_c('div',[_c('h1',{staticClass:\"author-name\"},[_vm._v(_vm._s(_vm.author.name))]),_c('div',{staticClass:\"author-statistics\"},[_c('div',{staticClass:\"author-statistics-one\"},[_vm._v(\"\\n            \"+_vm._s(_vm.getTranslation('books'))+\": \"),_c('b',[_vm._v(_vm._s(_vm.author.statistics.all))])]),_vm._l((_vm.authorBooksStat),function(books){return _c('div',{key:books.lang,staticClass:\"author-statistics-one\"},[_vm._v(\"\\n            \"+_vm._s(books.onLanguage)+\": \"),_c('b',[_vm._v(_vm._s(books.count))])])})],2),_c('div',{staticClass:\"author-description\"},[_vm._v(_vm._s(_vm.author.description))])])]),(_vm.author.books && _vm.author.books.length)?_c('div',{staticClass:\"author-section\"},[_c('h2',{staticClass:\"author-section-title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.getTranslation('books'))+\"\\n        \"),_c('span',{staticClass:\"author-section-title-note\"},[_vm._v(\"(\"+_vm._s(_vm.author.books.length)+\")\")])]),_c('BooksWithTranslations',{attrs:{\"books\":_vm.author.books}})],1):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { store } from '@/store';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { Author } from '@/services/Api/AuthorsService/Author.types';\r\n\r\nexport default class AuthorsService {\r\n  private static instance: AuthorsService;\r\n\r\n  apiService: ApiService = new ApiService();\r\n\r\n  private static getInstance() {\r\n    if (!AuthorsService.instance) {\r\n      AuthorsService.instance = new AuthorsService();\r\n    }\r\n    return AuthorsService.instance;\r\n  }\r\n\r\n  static async getAuthor(lang: string, slug: string): Promise<Author> {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.author.replace(':lang', lang).replace(':slug', slug))\r\n      .setToken(store.state.auth.token)\r\n      .cache()\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport StringService from '@/services/StringService';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport AuthorsService from '@/services/Api/AuthorsService';\r\nimport { Author } from '@/services/Api/AuthorsService/Author.types';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport BooksWithTranslations from '@/components/BooksWithTranslations.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { TranslationStrings } from '@/translations/types';\r\n\r\n@Component({\r\n  components: { BooksWithTranslations, Loader }\r\n})\r\nexport default class AuthorBio extends Vue {\r\n  loading: boolean = false;\r\n\r\n  author: Author | null = null;\r\n  getTranslation = getTranslation;\r\n\r\n  get authorBooksStat() {\r\n    return (\r\n      this.author &&\r\n      this.author.statistics.languages.map(books => ({\r\n        count: books.count,\r\n        onLanguage: getTranslation(`onLanguage${StringService.capitalize(\r\n          books.lang\r\n        )}` as keyof TranslationStrings)\r\n      }))\r\n    );\r\n  }\r\n\r\n  async mounted() {\r\n    await this.fetchAuthor();\r\n    this.updateTabName();\r\n  }\r\n\r\n  @Watch('$route')\r\n  async onRouteChange() {\r\n    await this.fetchAuthor();\r\n    this.updateTabName();\r\n  }\r\n\r\n  async fetchAuthor() {\r\n    if (this.$route.params.author) {\r\n      this.loading = true;\r\n      this.author = await AuthorsService.getAuthor(this.$route.params.language, this.$route.params.author);\r\n      this.author.books = Object.values(this.author.books).map(book => ({\r\n        ...book,\r\n        translations: book.translations.map(translation => ({\r\n          ...translation,\r\n          url: UrlBuilderService.getBookUrl({ language: translation.lang, bookSlug: book.slug })\r\n        }))\r\n      }));\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  updateTabName() {\r\n    this.$store.commit('tabs/updateActiveTabName', this.author ? this.author.name : getTranslation('author'));\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorBio.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorBio.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AuthorBio.vue?vue&type=template&id=363439e7&scoped=true&\"\nimport script from \"./AuthorBio.vue?vue&type=script&lang=ts&\"\nexport * from \"./AuthorBio.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AuthorBio.vue?vue&type=style&index=0&id=363439e7&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"363439e7\",\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('div',{ref:\"scroll\",staticClass:\"scroll\",style:({ fontSize: ((10 * _vm.scale) + \"px\") })},[(_vm.searchLoading && _vm.hasQuery)?_c('Loader'):(_vm.searchError)?_c('div',{staticClass:\"search-empty red-color\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('errorOccurred'))),_c('br'),_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('tryToRefreshPage'))+\"\\n  \")]):(!_vm.hasQuery)?_c('div',{staticClass:\"search-empty\"},[_vm._v(\"\\n    \"+_vm._s(_vm.getTranslation('enterSearchQuery'))+\"\\n  \")]):[(_vm.searchPriorityResults)?[_vm._l((_vm.priorityBooks),function(book){return _c('SearchPriorityBook',{key:book.slug,staticClass:\"priority-results\",attrs:{\"book\":book}})}),(_vm.searchPriorityResults.person)?_c('SearchPriorityAuthor',{staticClass:\"priority-results\",attrs:{\"author\":_vm.searchPriorityResults.person}}):_vm._e(),(_vm.searchPriorityResults.poem)?_c('SearchPriorityBookSection',{staticClass:\"priority-results\",attrs:{\"book-section\":_vm.searchPriorityResults.poem}}):_vm._e()]:_vm._e(),(_vm.searchResults && _vm.searchResults.length > 0)?_c('div',{ref:\"searchResults\"},[_vm._l((_vm.searchResults),function(item,index){return _c('div',{key:item.book_slug + item.section_slug + index},[_c('h2',{staticClass:\"search-item-title\"},[_c('router-link',{attrs:{\"to\":_vm.getSearchItemUrl(item, index)}},[_vm._v(_vm._s(item.title))])],1),(item.paths && item.paths[0])?_c('div',{staticClass:\"search-item-path\"},[_vm._v(\"\\n          \"+_vm._s(item.paths[0].map(function (path) { return path.title; }).join(' • '))+\"\\n        \")]):_vm._e(),_c('div',{staticClass:\"search-item-body\",domProps:{\"innerHTML\":_vm._s(item.body)}})])}),(_vm.loadingMore)?_c('div',{staticClass:\"mini-loader-holder\"},[_c('Loader',{staticClass:\"mini-loader\",attrs:{\"active\":true}})],1):_vm._e()],2):_vm._e(),(!((_vm.searchResults && _vm.searchResults.length > 0) || _vm.searchPriorityResults))?_c('div',[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('noSearchResults'))),_c('br'),_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('changeQuery'))+\"\\n    \")]):_vm._e()]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default class ArrayService {\r\n  /**\r\n   * Get intersections between two arrays\r\n   * e.g.:\r\n   * array1 = [1, 2, 3]\r\n   * array2 = [2, 3, 4]\r\n   * should return [2, 3]\r\n   */\r\n  public static getIntersections(array1: Array<string | number>, array2: Array<string | number>) {\r\n    return array1.filter(one => array2.includes(one));\r\n  }\r\n\r\n  /**\r\n   * Same as ArrayService.getIntersections, except it returns boolean\r\n   */\r\n  public static hasIntersections(array1: Array<string | number>, array2: Array<string | number>) {\r\n    return ArrayService.getIntersections(array1, array2).length > 0;\r\n  }\r\n\r\n  /**\r\n   * Extract IDs, e.g.\r\n   * Array[{ id: 1, a: 2, b: 3 }, { id: 2, a: 7, b: 8 }]\r\n   * will be converted to\r\n   * Array[1, 2]\r\n   */\r\n  public static extractIds(array: Array<{ [key: string]: any; id: number | string }>) {\r\n    return array.map(one => one.id);\r\n  }\r\n\r\n  /**\r\n   * Creates hash from IDs of array elements, e.g.\r\n   * Array[{ id: 1, a: 2, b: 3 }, { id: 2, a: 7, b: 8 }]\r\n   * will be converted to\r\n   * 12\r\n   */\r\n  public static makeHashFromIds(array: Array<{ [key: string]: any; id: number | string }>) {\r\n    return JSON.stringify(ArrayService.extractIds(array));\r\n  }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title\"},[_c('router-link',{attrs:{\"to\":_vm.bookUrl}},[_vm._v(_vm._s(_vm.book.name))])],1),_c('div',{staticClass:\"author\"},[_vm._v(_vm._s(_vm.bookAuthors))]),(_vm.bookByLanguage.length || _vm.book.relation_books_quantity)?_c('div',{staticClass:\"book-info\"},[(_vm.bookByLanguage.length)?_c('div',{staticClass:\"book-info-item\"},[_c('IconGlobe',{staticClass:\"book-info-icon\"}),_vm._l((_vm.bookByLanguage),function(book){return _c('router-link',{key:book.onLanguage,staticClass:\"book-info-link\",attrs:{\"to\":book.url}},[_vm._v(_vm._s(book.onLanguage))])})],2):_vm._e(),(_vm.book.relation_books_quantity)?_c('div',{staticClass:\"book-info-item\"},[_c('IconBookCover',{staticClass:\"book-info-icon\"}),_vm._v(\" Связи: \"),_c('b',[_vm._v(_vm._s(_vm.book.relation_books_quantity))])],1):_vm._e()]):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport router from '@/router';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport StringService from '@/services/StringService';\r\nimport IconBookCover from '@/assets/icons/book-cover.svg';\r\nimport IconGlobe from '@/assets/icons/globe.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { TranslationStrings } from '@/translations/types';\r\n\r\ninterface Book {\r\n  language?: string;\r\n  name: string;\r\n  authors: Array<{ name: string }>;\r\n  slug: string;\r\n  languages: Array<string>;\r\n  relation_books_quantity: number;\r\n}\r\n\r\n@Component({\r\n  components: { IconBookCover, IconGlobe }\r\n})\r\nexport default class SearchPriorityBook extends Vue {\r\n  @Prop({ required: true })\r\n  book!: Book;\r\n\r\n  get bookAuthors() {\r\n    return this.book.authors.map(author => author.name).join(', ');\r\n  }\r\n\r\n  get bookUrl() {\r\n    return UrlBuilderService.getBookUrl({\r\n      language: this.book.language || router.currentRoute.params.language,\r\n      bookSlug: this.book.slug\r\n    });\r\n  }\r\n\r\n  get bookByLanguage() {\r\n    const currentLanguage = this.book.language || router.currentRoute.params.language;\r\n    const languages = [currentLanguage, ...(this.book.languages || [])].filter(Boolean);\r\n\r\n    return Array.from(new Set(languages)).map(language => {\r\n      return {\r\n        onLanguage: StringService.capitalize(\r\n          getTranslation(`onLanguage${StringService.capitalize(language)}` as keyof TranslationStrings)\r\n        ),\r\n        url: UrlBuilderService.getBookUrl({\r\n          language,\r\n          bookSlug: this.book.slug\r\n        })\r\n      };\r\n    });\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBook.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBook.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchPriorityBook.vue?vue&type=template&id=6a5d3849&scoped=true&\"\nimport script from \"./SearchPriorityBook.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchPriorityBook.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchPriorityBook.vue?vue&type=style&index=0&id=6a5d3849&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6a5d3849\",\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('div',{staticClass:\"priority-author\"},[_c('div',{staticClass:\"title\"},[_c('router-link',{attrs:{\"to\":_vm.authorUrl}},[_vm._v(_vm._s(_vm.author.name))])],1),_c('div',{staticClass:\"author-stats\"},[_c('div',{staticClass:\"author-stat\"},[_vm._v(\"\\n      \"+_vm._s(_vm.getTranslation('books'))+\": \"),_c('b',[_vm._v(_vm._s(_vm.author.statistics.all))])]),_vm._l((_vm.booksByLanguage),function(books){return _c('div',{key:books.lang,staticClass:\"author-stat\"},[_vm._v(\"\\n      \"+_vm._s(books.onLanguage)+\": \"),_c('b',[_vm._v(_vm._s(books.count))])])})],2),_c('div',{staticClass:\"author-books\"},[_c('BooksWithTranslations',{attrs:{\"books\":_vm.authorBooks,\"collapse-after\":3,\"expand-text\":_vm.getTranslation('showAllList'),\"collapse-text\":_vm.getTranslation('collapse')}})],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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport router from '@/router';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport StringService from '@/services/StringService';\r\nimport Collapsible from '@/components/ui/Collapsible.vue';\r\nimport BooksWithTranslations from '@/components/BooksWithTranslations.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\nimport { TranslationStrings } from '@/translations/types';\r\n\r\ninterface Author {\r\n  name: string;\r\n  slug: string;\r\n  statistics: {\r\n    all: number;\r\n    languages: Array<{ lang: string; count: number }>;\r\n    books: Array<{ name: string; slug: string; translations: Array<{ lang: string; short_name: string }> }>;\r\n  };\r\n}\r\n\r\n@Component({\r\n  components: { BooksWithTranslations, Collapsible }\r\n})\r\nexport default class SearchPriorityAuthor extends Vue {\r\n  @Prop({ required: true })\r\n  author!: Author;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  get authorUrl() {\r\n    return UrlBuilderService.getAuthorUrl({\r\n      language: router.currentRoute.params.language,\r\n      authorSlug: this.author.slug\r\n    });\r\n  }\r\n\r\n  get authorBooks() {\r\n    return Object.values(this.author.statistics.books).map(book => ({\r\n      name: book.name,\r\n      translations: book.translations.map(translation => ({\r\n        ...translation,\r\n        url: UrlBuilderService.getBookUrl({\r\n          language: translation.lang,\r\n          bookSlug: book.slug\r\n        })\r\n      }))\r\n    }));\r\n  }\r\n\r\n  get booksByLanguage() {\r\n    return this.author.statistics.languages.map(language => ({\r\n      ...language,\r\n      onLanguage: StringService.capitalize(\r\n        getTranslation(`onLanguage${StringService.capitalize(language.lang)}` as keyof TranslationStrings)\r\n      )\r\n    }));\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityAuthor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityAuthor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchPriorityAuthor.vue?vue&type=template&id=6f71d3ea&scoped=true&\"\nimport script from \"./SearchPriorityAuthor.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchPriorityAuthor.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchPriorityAuthor.vue?vue&type=style&index=0&id=6f71d3ea&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6f71d3ea\",\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('div',{staticClass:\"search-priority-book-section\"},[_c('div',{staticClass:\"title\"},[_c('router-link',{attrs:{\"to\":_vm.bookSectionUrl}},[_vm._v(_vm._s(_vm.bookSectionTitle))])],1),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"content-inner\"},[_c('div',{staticClass:\"content-left\",domProps:{\"innerHTML\":_vm._s(_vm.contentOfSelectedLanguage.poem)}}),_c('div',{staticClass:\"content-right\",domProps:{\"innerHTML\":_vm._s(_vm.contentOfSelectedLanguage.translate)}})]),_c('button',{staticClass:\"link dashed switch-content-language-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.switchContentLanguage}},[_vm._v(\"\\n      \"+_vm._s(_vm.contentLanguageButtonText[_vm.contentLanguage])+\"\\n    \")])]),(_vm.bookTranslations.length)?_c('div',{staticClass:\"book-translations\"},[_c('div',{staticClass:\"book-translations-title\"},[_c('b',[_vm._v(_vm._s(_vm.getTranslation('booksInWhichPoemWasMentioned')))]),_vm._v(\" \\n      \"),_c('span',{staticClass:\"gray-text-color\"},[_vm._v(\"(\"+_vm._s(_vm.bookTranslations.length)+\")\")])]),_c('BooksWithTranslations',{attrs:{\"books\":_vm.bookTranslations}})],1):_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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport router from '@/router';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { LANGUAGE_CODE_ENGLISH, LANGUAGE_CODE_RUSSIAN } from '@/constants';\r\nimport BooksWithTranslations from '@/components/BooksWithTranslations.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\ninterface BookSection {\r\n  book_slug: string;\r\n  slug: string;\r\n  books: Array<{ name: string; slug: string; translations: Array<{ short_name: string; code: string }> }>;\r\n  content: Array<any>;\r\n  patch: Array<{ title: string }>;\r\n}\r\n\r\n@Component({\r\n  components: { BooksWithTranslations }\r\n})\r\nexport default class SearchPriorityBookSection extends Vue {\r\n  contentLanguage = LANGUAGE_CODE_RUSSIAN;\r\n\r\n  contentLanguageButtonText = {\r\n    [LANGUAGE_CODE_RUSSIAN]: getTranslation('showOnEnglishLanguage'),\r\n    [LANGUAGE_CODE_ENGLISH]: getTranslation('showOnRussianLanguage')\r\n  };\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  @Prop({ required: true })\r\n  bookSection!: BookSection;\r\n\r\n  get bookSectionUrl() {\r\n    return UrlBuilderService.getBookSectionUrl({\r\n      language: router.currentRoute.params.language,\r\n      bookSlug: this.bookSection.book_slug,\r\n      bookSectionSlug: this.bookSection.slug\r\n    });\r\n  }\r\n\r\n  get bookSectionTitle() {\r\n    return this.bookSection.patch.map(({ title }) => title).join(' • ');\r\n  }\r\n\r\n  get bookTranslations() {\r\n    return this.bookSection.books.map(book => ({\r\n      ...book,\r\n      translations: book.translations.map(translation => ({\r\n        ...translation,\r\n        url: UrlBuilderService.getBookSectionUrl({\r\n          language: translation.code,\r\n          bookSlug: book.slug,\r\n          bookSectionSlug: this.bookSection.slug\r\n        })\r\n      }))\r\n    }));\r\n  }\r\n\r\n  get contentOfSelectedLanguage() {\r\n    return this.bookSection.content.find(one => one.language === this.contentLanguage);\r\n  }\r\n\r\n  @Watch('interfaceLanguage')\r\n  async onChangeInterfaceLang() {\r\n    this.contentLanguageButtonText = {\r\n      [LANGUAGE_CODE_RUSSIAN]: getTranslation('showOnRussianLanguage'),\r\n      [LANGUAGE_CODE_ENGLISH]: getTranslation('showOnEnglishLanguage')\r\n    };\r\n  }\r\n\r\n  switchContentLanguage() {\r\n    if (this.contentLanguage === LANGUAGE_CODE_RUSSIAN) {\r\n      this.contentLanguage = LANGUAGE_CODE_ENGLISH;\r\n    } else {\r\n      this.contentLanguage = LANGUAGE_CODE_RUSSIAN;\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBookSection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPriorityBookSection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchPriorityBookSection.vue?vue&type=template&id=137adf01&scoped=true&\"\nimport script from \"./SearchPriorityBookSection.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchPriorityBookSection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchPriorityBookSection.vue?vue&type=style&index=0&id=137adf01&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"137adf01\",\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\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Ref, Watch } from 'vue-property-decorator';\r\nimport UrlBuilderService from '@/services/UrlBuilderService';\r\nimport Loader from '@/components/ui/Loader.vue';\r\nimport { Action, Getter, Mutation, State } from 'vuex-class';\r\nimport { Book, BookSection, Category } from '@/services/Navigation/types';\r\nimport ArrayService from '@/services/ArrayService';\r\nimport { SearchItem } from '@/services/Api/SearchService';\r\nimport SearchPriorityBook from '@/components/SearchPriorityBook.vue';\r\nimport SearchPriorityAuthor from '@/components/SearchPriorityAuthor.vue';\r\nimport SearchPriorityBookSection from '@/components/SearchPriorityBookSection.vue';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\n@Component({\r\n  components: { SearchPriorityBookSection, SearchPriorityAuthor, SearchPriorityBook, Loader }\r\n})\r\nexport default class SearchResults extends Vue {\r\n  loadingMore = false;\r\n  perPage = 50;\r\n  page = 1;\r\n  getSearchItemUrl = UrlBuilderService.getSearchResultItemUrl;\r\n\r\n  getTranslation = getTranslation;\r\n\r\n  get hasQuery() {\r\n    return typeof this.$route.query.query === 'string' && !!this.$route.query.query.trim();\r\n  }\r\n\r\n  get priorityBooks() {\r\n    const book = this.searchPriorityResults && (this.searchPriorityResults as any).book;\r\n    if (!book) {\r\n      return [];\r\n    }\r\n    return Array.isArray(book) ? book : [book];\r\n  }\r\n\r\n  @Ref('scroll')\r\n  refScroll!: HTMLDivElement;\r\n\r\n  @Ref('searchResults')\r\n  refSearchResults?: HTMLDivElement;\r\n\r\n  @State('results', { namespace: 'search' })\r\n  searchResults!: Array<SearchItem>;\r\n\r\n  @State('resultsCount', { namespace: 'search' })\r\n  searchResultsCount!: number;\r\n\r\n  @State('priorityResults', { namespace: 'search' })\r\n  searchPriorityResults!: {};\r\n\r\n  @State('needUpdate', { namespace: 'search' })\r\n  searchNeedUpdate?: Array<SearchItem>;\r\n\r\n  @State('loading', { namespace: 'search' })\r\n  searchLoading?: boolean;\r\n\r\n  @State('error', { namespace: 'search' })\r\n  searchError?: boolean;\r\n\r\n  @State('loading', { namespace: 'navigation' })\r\n  navLoading?: boolean;\r\n\r\n  @State('scale', { namespace: 'reader' })\r\n  scale!: number;\r\n\r\n  @Getter('showSearchResults', { namespace: 'navigation' })\r\n  navShowSearchResults?: boolean;\r\n\r\n  @Getter('checkedCategories', { namespace: 'navigation' })\r\n  checkedCategories!: Array<Category>;\r\n\r\n  @Getter('checkedBooks', { namespace: 'navigation' })\r\n  checkedBooks!: Array<Book>;\r\n\r\n  @Getter('checkedBookSections', { namespace: 'navigation' })\r\n  checkedBookSections!: Array<BookSection>;\r\n\r\n  @Getter('checkedFoundBooks', { namespace: 'navigation' })\r\n  checkedFoundBooks!: Array<Book>;\r\n\r\n  @Getter('checkedFoundBookSections', { namespace: 'navigation' })\r\n  checkedFoundBookSections!: Array<BookSection>;\r\n\r\n  @Action('fetchResults', { namespace: 'search' })\r\n  doFetchResults!: Function;\r\n\r\n  @Mutation('updateActiveTabName', { namespace: 'tabs' })\r\n  updateActiveTabName!: Function;\r\n\r\n  @Mutation('setShowSearchResultsFlag', { namespace: 'navigation' })\r\n  setShowSearchResultsFlag!: Function;\r\n\r\n  async mounted() {\r\n    this.refScroll.addEventListener('scroll', this.onScroll);\r\n  }\r\n\r\n  @Watch('searchNeedUpdate')\r\n  async onSearchNeedUpdate(to: boolean, from: boolean) {\r\n    if (to !== from && to) {\r\n      this.updateTabName();\r\n      await this.fetchResults();\r\n    }\r\n  }\r\n\r\n  @Watch('checkedFoundBooks')\r\n  @Watch('checkedFoundBookSections')\r\n  async onCheckedChange(to: Array<any>, from: Array<any>) {\r\n    if (\r\n      ArrayService.makeHashFromIds(to) !== ArrayService.makeHashFromIds(from) &&\r\n      this.navShowSearchResults\r\n    ) {\r\n      await this.fetchResults();\r\n    }\r\n  }\r\n\r\n  async fetchResults() {\r\n    this.setShowSearchResultsFlag(true);\r\n    await this.doFetchResults({ offset: 0, perPage: this.perPage });\r\n  }\r\n\r\n  async fetchMore() {\r\n    this.loadingMore = true;\r\n    this.page += 1;\r\n    await this.doFetchResults({ offset: this.perPage * (this.page - 1), perPage: this.perPage });\r\n    this.loadingMore = false;\r\n  }\r\n\r\n  updateTabName() {\r\n    this.updateActiveTabName(this.$route.query.query);\r\n  }\r\n\r\n  async onScroll() {\r\n    if (!this.refSearchResults) {\r\n      return;\r\n    }\r\n    const isScrolledToBottom =\r\n      this.refScroll.offsetHeight + this.refScroll.scrollTop >= this.refSearchResults.offsetHeight;\r\n    if (!isScrolledToBottom || this.searchLoading || this.loadingMore) {\r\n      return;\r\n    }\r\n    const hasMorePages = this.searchResultsCount > 0 && this.searchResults.length < this.searchResultsCount;\r\n    if (hasMorePages) {\r\n      await this.fetchMore();\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResults.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResults.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchResults.vue?vue&type=template&id=0846f83c&scoped=true&\"\nimport script from \"./SearchResults.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchResults.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchResults.vue?vue&type=style&index=0&id=0846f83c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0846f83c\",\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport Router, { Route } from 'vue-router';\r\nimport { store } from './store';\r\nimport Home from './views/content/Home.vue';\r\nimport Login from './views/Login.vue';\r\nimport ForgotPassword from './views/ForgotPassword.vue';\r\nimport ResetPassword from './views/ResetPassword.vue';\r\nimport Registration from './views/Registration.vue';\r\nimport VerifyEmail from '@/views/VerifyEmail.vue';\r\nimport Help from '@/views/content/Help.vue';\r\nimport Reader from '@/views/Reader.vue';\r\nimport BookContent from '@/views/content/BookContent.vue';\r\nimport BookCover from '@/views/content/BookCover.vue';\r\nimport UserService from '@/services/Api/UserService';\r\nimport AuthorBio from '@/views/content/AuthorBio.vue';\r\nimport SearchResults from '@/views/content/SearchResults.vue';\r\n\r\nVue.use(Router);\r\n\r\nlet entryUrl: string | null = null;\r\n\r\nconst guard = async (to: Route, from: Route, next: Function) => {\r\n  let needEmailVerification = false;\r\n\r\n  store.commit('startLoading');\r\n  const user = await UserService.getUser().catch(async e => {\r\n    if (!e.response) {\r\n      return null;\r\n    }\r\n    if (e.response.status === 401) {\r\n      await store.dispatch('auth/logout');\r\n    }\r\n    if (e.response.status === 403) {\r\n      needEmailVerification = true;\r\n    }\r\n    return null;\r\n  });\r\n  store.commit('stopLoading');\r\n\r\n  if (needEmailVerification) {\r\n    entryUrl = to.fullPath;\r\n    return next('/user/email/resend');\r\n  }\r\n\r\n  if (!user) {\r\n    entryUrl = to.fullPath;\r\n    return next('/login');\r\n  }\r\n\r\n  if (!store.state.auth.authorized) {\r\n    store.commit('auth/login', '');\r\n  }\r\n  store.commit('user/set', user);\r\n  store.commit('tabs/switchOwner', String(user.id || user.email));\r\n  store.commit('bookmarks/switchOwner', String(user.id || user.email));\r\n\r\n  if (entryUrl) {\r\n    const url = entryUrl;\r\n    entryUrl = null;\r\n    return next(url);\r\n  }\r\n  return next();\r\n};\r\n\r\nexport default new Router({\r\n  mode: 'history',\r\n  base: process.env.BASE_URL,\r\n  routes: [\r\n    {\r\n      path: '/login',\r\n      name: 'login',\r\n      component: Login\r\n    },\r\n    {\r\n      path: '/forgot-password',\r\n      name: 'forgot-password',\r\n      component: ForgotPassword\r\n    },\r\n    {\r\n      path: '/password/reset',\r\n      name: 'reset-password',\r\n      component: ResetPassword\r\n    },\r\n    {\r\n      path: '/password/reset/:token',\r\n      name: 'reset-password-token',\r\n      component: ResetPassword\r\n    },\r\n    {\r\n      path: '/registration',\r\n      name: 'registration',\r\n      component: Registration\r\n    },\r\n    {\r\n      path: '/user/email/verify/:userId/:hash',\r\n      name: 'verify-email',\r\n      component: VerifyEmail\r\n    },\r\n    {\r\n      path: '/user/email/resend',\r\n      name: 'verify-email-resend',\r\n      component: VerifyEmail\r\n    },\r\n    {\r\n      path: '/',\r\n      component: Reader,\r\n      children: [\r\n        {\r\n          path: '/',\r\n          component: Home\r\n        },\r\n        {\r\n          path: '/:language/library',\r\n          name: 'mobile-library',\r\n          component: Home\r\n        },\r\n        {\r\n          path: '/:language/tabs',\r\n          redirect: to => `/${to.params.language}/bookmarks`\r\n        },\r\n        {\r\n          path: '/:language/bookmarks',\r\n          name: 'mobile-bookmarks',\r\n          component: Home\r\n        },\r\n        {\r\n          path: '/:language/settings',\r\n          name: 'mobile-settings',\r\n          component: Home\r\n        },\r\n        {\r\n          path: '/help',\r\n          component: Help\r\n        },\r\n        {\r\n          path: '/:language/books/:book',\r\n          name: 'book',\r\n          component: BookCover\r\n        },\r\n        {\r\n          path: '/:language/books/:book/:bookSection',\r\n          name: 'book-section',\r\n          component: BookContent\r\n        },\r\n        {\r\n          path: '/:language/categories/:category/:book',\r\n          name: 'category-book',\r\n          component: BookCover\r\n        },\r\n        {\r\n          path: '/:language/categories/:category/:book/:bookSection',\r\n          name: 'category-book-section',\r\n          component: BookContent\r\n        },\r\n        {\r\n          path: '/:language/authors/:author',\r\n          name: 'author-bio',\r\n          component: AuthorBio\r\n        },\r\n        {\r\n          path: '/:language/authors/:author/:book',\r\n          name: 'author-book',\r\n          component: BookCover\r\n        },\r\n        {\r\n          path: '/:language/authors/:author/:book/:bookSection',\r\n          name: 'author-book-section',\r\n          component: BookContent\r\n        },\r\n        {\r\n          path: '/:language/search',\r\n          name: 'search-results',\r\n          component: SearchResults\r\n        }\r\n      ],\r\n      beforeEnter: guard\r\n    }\r\n  ]\r\n});\r\n","import router from '@/router';\r\nimport {\r\n  AnyNavEntity,\r\n  Author,\r\n  AuthorLetter,\r\n  Book,\r\n  BookLetter,\r\n  Books,\r\n  BookSection,\r\n  Category,\r\n  ListType,\r\n  NavigationData\r\n} from '@/services/Navigation/types';\r\nimport Helpers from '@/services/Navigation/Helpers';\r\n\r\nexport default class HighlightService extends Helpers {\r\n  public static actualizeHighlight(navigation: NavigationData, listType: ListType, filterQuery: string) {\r\n    // 1. reset all highlights\r\n    navigation = HighlightService.reset(navigation);\r\n\r\n    // 2. highlight category\r\n    navigation.categories = HighlightService.highlightCategory(navigation.categories);\r\n\r\n    // 3. highlight author\r\n    const { authors, authorIndex } = HighlightService.highlightAuthor(navigation.authors);\r\n    navigation.authors = authors;\r\n\r\n    if (authorIndex > -1) {\r\n      // 4. highlight author letter\r\n      navigation.authorsAlphabet = HighlightService.highlightAuthorLetter(\r\n        navigation.authorsAlphabet,\r\n        navigation.authors[authorIndex]\r\n      );\r\n    }\r\n\r\n    // 5. highlight book letter\r\n    navigation.booksAlphabet = HighlightService.highlightBookLetter(\r\n      navigation.booksAlphabet,\r\n      navigation.books\r\n    );\r\n\r\n    if (HighlightService.needBookHighlight(navigation, listType, filterQuery)) {\r\n      // 6. highlight book\r\n      navigation.books = HighlightService.highlightBook(navigation.books);\r\n\r\n      // 7. highlight book section\r\n      navigation.books = HighlightService.highlightBookSection(navigation.books);\r\n    }\r\n\r\n    return navigation;\r\n  }\r\n\r\n  public static reset(navigation: NavigationData) {\r\n    // reset navigation objects\r\n    navigation.categories = HighlightService.resetEntitiesArray(navigation.categories);\r\n    navigation.authors = HighlightService.resetEntitiesArray(navigation.authors);\r\n    navigation.authorsAlphabet = HighlightService.resetEntitiesArray(navigation.authorsAlphabet);\r\n    navigation.booksAlphabet = HighlightService.resetEntitiesArray(navigation.booksAlphabet);\r\n    navigation.books = HighlightService.resetBooks(navigation.books);\r\n    navigation.books = HighlightService.resetBookSections(navigation.books);\r\n    navigation.foundBooks = HighlightService.resetBooks(navigation.foundBooks);\r\n    navigation.foundBooks = HighlightService.resetBookSections(navigation.foundBooks);\r\n    return navigation;\r\n  }\r\n\r\n  public static resetEntitiesArray<T extends Exclude<AnyNavEntity, Book>>(entities: Array<T>): Array<T> {\r\n    (entities as Array<Exclude<AnyNavEntity, Book>>).forEach((one, index) => {\r\n      entities[index].highlight = false;\r\n    });\r\n    return entities;\r\n  }\r\n\r\n  public static resetBooks(books: Books) {\r\n    Object.values(books).forEach(book => {\r\n      // reset books\r\n      books[book.slug].highlight = false;\r\n    });\r\n    return books;\r\n  }\r\n\r\n  public static resetBookSections(books: Books) {\r\n    Object.values(books).forEach(book => {\r\n      book.children.forEach((bookSection, bookSectionIndex) => {\r\n        books[book.slug].children[bookSectionIndex].highlight = false;\r\n      });\r\n    });\r\n    return books;\r\n  }\r\n\r\n  /**\r\n   * Highlights category\r\n   */\r\n  public static highlightCategory(categories: Array<Category>) {\r\n    const routeCategory = router.currentRoute.params.category;\r\n    let highlightedCategory: Category | null = null;\r\n    // find index of category that should be highlighted\r\n    const index = categories.findIndex(category => routeCategory && routeCategory === category.slug);\r\n    if (index > -1) {\r\n      highlightedCategory = categories[index];\r\n      highlightedCategory.highlight = true;\r\n      highlightedCategory.expanded = true;\r\n      // highlight parent categories\r\n      categories = HighlightService.highlightParents(categories, index) as Array<Category>;\r\n    }\r\n    return categories;\r\n  }\r\n\r\n  /**\r\n   * Highlights author\r\n   */\r\n  public static highlightAuthor(authors: Array<Author>) {\r\n    const routeAuthor = router.currentRoute.params.author;\r\n    const index = authors.findIndex(author => author.slug === routeAuthor);\r\n    if (index > -1) {\r\n      authors[index].highlight = true;\r\n      authors[index].expanded = true;\r\n    }\r\n    return { authors, authorIndex: index };\r\n  }\r\n\r\n  /**\r\n   * Highlight author letter\r\n   */\r\n  public static highlightAuthorLetter(authorsAlphabet: Array<AuthorLetter>, author: Author) {\r\n    const authorId = author.id;\r\n    const index = authorsAlphabet.findIndex(letter => letter.authorIds.find(id => id === authorId));\r\n    if (index > -1) {\r\n      authorsAlphabet[index].highlight = true;\r\n      authorsAlphabet[index].expanded = true;\r\n    }\r\n    return authorsAlphabet;\r\n  }\r\n\r\n  /**\r\n   * Highlight book letter\r\n   */\r\n  public static highlightBookLetter(booksAlphabet: Array<BookLetter>, books: Books) {\r\n    const routeBook = router.currentRoute.params.book;\r\n    const book = books[routeBook];\r\n    if (!book) {\r\n      return booksAlphabet;\r\n    }\r\n    const index = booksAlphabet.findIndex(one => one.bookIds.find(id => id === book.id));\r\n    if (index > -1) {\r\n      booksAlphabet[index].highlight = true;\r\n      booksAlphabet[index].expanded = true;\r\n    }\r\n    return booksAlphabet;\r\n  }\r\n\r\n  /**\r\n   * Highlights book\r\n   */\r\n  public static highlightBook(origin: Books) {\r\n    const routeBook = router.currentRoute.params.book;\r\n    const books = HighlightService.resetBooks(origin);\r\n\r\n    if (books[routeBook]) {\r\n      books[routeBook].highlight = true;\r\n      books[routeBook].expanded = true;\r\n    }\r\n    return books;\r\n  }\r\n\r\n  /**\r\n   * Highlights book sections\r\n   */\r\n  public static highlightBookSection(origin: Books) {\r\n    const routeBook = router.currentRoute.params.book;\r\n    const routeBookSection = router.currentRoute.params.bookSection;\r\n    const books = HighlightService.resetBookSections(origin);\r\n    const book = books[routeBook];\r\n\r\n    if (!book) {\r\n      return books;\r\n    }\r\n\r\n    // find index of item that should be highlighted\r\n    const index: number = book.children.findIndex(\r\n      one => one.book.slug === routeBook && one.slug === routeBookSection\r\n    );\r\n\r\n    if (index > -1) {\r\n      // highlight & expand item\r\n      books[routeBook].children[index].highlight = true;\r\n      books[routeBook].children[index].expanded = true;\r\n      // highlight parent sections\r\n      books[routeBook].children = HighlightService.highlightParents(\r\n        books[routeBook].children,\r\n        index\r\n      ) as Array<BookSection>;\r\n    }\r\n    return books;\r\n  }\r\n\r\n  public static needBookHighlight(navigationData: NavigationData, listType: ListType, filterQuery: string) {\r\n    return (\r\n      (listType === 'categories' && navigationData.categories.find(one => one.highlight)) ||\r\n      (listType === 'authors' && navigationData.authors.find(one => one.highlight)) ||\r\n      (listType === 'books' && navigationData.booksAlphabet.find(one => one.highlight)) ||\r\n      filterQuery\r\n    );\r\n  }\r\n\r\n  public static needBookSectionHighlight(books: Books) {\r\n    return Object.values(books).find(book => book.highlight);\r\n  }\r\n\r\n  /**\r\n   * Highlights parents of categories or book sections\r\n   */\r\n  private static highlightParents(array: Array<BookSection | Category>, highlightedIndex: number) {\r\n    return HighlightService.updateParents(array, highlightedIndex, item => ({\r\n      ...item,\r\n      highlight: true,\r\n      expanded: true\r\n    }));\r\n  }\r\n}\r\n","import Vue from 'vue';\r\nimport router from '@/router';\r\nimport {\r\n  Author,\r\n  AuthorLetter,\r\n  Book,\r\n  BookLetter,\r\n  Books,\r\n  BookSection,\r\n  BookSectionEntries,\r\n  Category,\r\n  NavigationData,\r\n  NavigationDataRaw\r\n} from '@/services/Navigation/types';\r\nimport Helpers from '@/services/Navigation/Helpers';\r\n\r\nexport default class ProcessService {\r\n  public static processNavigation(navigation: NavigationDataRaw): Partial<NavigationData> {\r\n    const categories = ProcessService.processCategories(navigation.categories);\r\n    const authors = ProcessService.processAuthors(navigation.authors);\r\n    const authorsAlphabet = ProcessService.makeAuthorsAlphabet(authors);\r\n    const booksAlphabet = ProcessService.processBooksAlphabet(navigation.books_first_letter);\r\n    return {\r\n      booksAlphabet,\r\n      categories,\r\n      authors,\r\n      authorsAlphabet\r\n    };\r\n  }\r\n\r\n  public static collapseAll({\r\n    books,\r\n    booksAlphabet,\r\n    categories,\r\n    authors,\r\n    authorsAlphabet,\r\n    foundBooks\r\n  }: NavigationData) {\r\n    return {\r\n      books: Helpers.collapseBooks(books),\r\n      booksAlphabet: Helpers.collapseAll(booksAlphabet),\r\n      categories: Helpers.collapseAll(categories),\r\n      authors: Helpers.collapseAll(authors),\r\n      authorsAlphabet: Helpers.collapseAll(authorsAlphabet),\r\n      foundBooks: Helpers.collapseBooks(foundBooks)\r\n    };\r\n  }\r\n\r\n  public static updatePreloadFlag(books: Books) {\r\n    const routeBook = router.currentRoute.params.book;\r\n    const routeBookSection = router.currentRoute.params.bookSection;\r\n    const book = books[routeBook];\r\n    if (!book) {\r\n      return;\r\n    }\r\n    const bookSections = book.children;\r\n    const index = bookSections.findIndex(one => one.book.slug === routeBook && one.slug === routeBookSection);\r\n    const preloadBookSectionAmount = parseInt(process.env.VUE_APP_PRELOAD_BOOK_SECTIONS_AMOUNT, 10);\r\n    let loadBookSectionsBefore = 0;\r\n    // going up along the tree\r\n    for (let i = index; i >= 0; i--) {\r\n      const bookSection = bookSections[i];\r\n      if (i === index) {\r\n        continue;\r\n      }\r\n      if (bookSection.book.slug === routeBook) {\r\n        bookSection.preload = true;\r\n        if (!(bookSection.is_parent && bookSection.preload)) {\r\n          loadBookSectionsBefore++;\r\n        }\r\n      }\r\n      if (loadBookSectionsBefore === preloadBookSectionAmount) {\r\n        break;\r\n      }\r\n    }\r\n    let loadBookSectionsAfter = 0;\r\n    // going down along the tree\r\n    for (let i = index; i < bookSections.length; i++) {\r\n      const bookSection = bookSections[i];\r\n      if (i === index) {\r\n        continue;\r\n      }\r\n      if (bookSection.book.slug === routeBook) {\r\n        bookSection.preload = true;\r\n        if (!(bookSection.is_parent && bookSection.preload)) {\r\n          loadBookSectionsAfter++;\r\n        }\r\n      }\r\n      if (loadBookSectionsAfter === preloadBookSectionAmount) {\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  public static processBooks(books: Array<Book>, props = {}): Books {\r\n    const processedBooks: Books = {};\r\n    books.forEach(book => {\r\n      processedBooks[book.slug] = {\r\n        ...book,\r\n        highlight: false,\r\n        visible: true,\r\n        expanded: false,\r\n        checked: false,\r\n        partiallyChecked: false,\r\n        children: [],\r\n        is_show_edit_link: false,\r\n        edit_link: '',\r\n        ...props\r\n      };\r\n    });\r\n    return processedBooks;\r\n  }\r\n\r\n  public static processBookSections(\r\n    bookSections: Array<BookSection>,\r\n    book: Book,\r\n    props = {},\r\n    bookSectionEntries: Array<BookSectionEntries> = []\r\n  ) {\r\n    let prevBookId: null | number = null;\r\n    let number = 0;\r\n    const processedBookSections: Array<BookSection> = [];\r\n    bookSections.forEach(bookSection => {\r\n      prevBookId = bookSection.bookId;\r\n      number++;\r\n      const entries = bookSectionEntries.find(({ code }) => code === bookSection.code);\r\n      processedBookSections.push({\r\n        ...bookSection,\r\n        book,\r\n        id: bookSection.code,\r\n        parentId: bookSection.parent_code,\r\n        highlight: false,\r\n        visible: true,\r\n        expanded: false,\r\n        checked: book.checked,\r\n        partiallyChecked: false,\r\n        number: number - 1,\r\n        doc_count: entries ? entries.quantity : undefined,\r\n        ...props\r\n      });\r\n    });\r\n    return processedBookSections;\r\n  }\r\n\r\n  public static processCategories(categories: Array<Category>) {\r\n    return Object.values(categories).map(category => ({\r\n      ...category,\r\n      highlight: false,\r\n      visible: true,\r\n      expanded: false,\r\n      checked: false,\r\n      partiallyChecked: false,\r\n      bookIds: []\r\n    }));\r\n  }\r\n\r\n  public static processAuthors(authors: Array<Author>) {\r\n    return authors.map(author => ({\r\n      ...author,\r\n      highlight: false,\r\n      visible: true,\r\n      expanded: false,\r\n      checked: false,\r\n      partiallyChecked: false,\r\n      bookIds: []\r\n    }));\r\n  }\r\n\r\n  public static processBooksAlphabet(letters: Array<string>) {\r\n    return letters.map((letter, index) => ({\r\n      id: index,\r\n      name: letter,\r\n      highlight: false,\r\n      visible: true,\r\n      expanded: false,\r\n      bookIds: []\r\n    }));\r\n  }\r\n\r\n  public static concatBooks(currentBooks: Books, newBooks: Books) {\r\n    const books: Books = { ...currentBooks };\r\n    Object.values(newBooks).forEach(book => {\r\n      if (!books[book.slug]) {\r\n        Vue.set(books, book.slug, book);\r\n      }\r\n    });\r\n    return books;\r\n  }\r\n\r\n  public static mapBookIds<T extends Category | Author | BookLetter>(\r\n    entities: Array<T>,\r\n    entityId: number,\r\n    books: Books\r\n  ): Array<T> {\r\n    const index = entities.findIndex(one => one.id === entityId);\r\n    if (entities[index]) {\r\n      entities[index].bookIds = Object.values(books).map(book => book.id);\r\n    }\r\n    return entities;\r\n  }\r\n\r\n  public static makeAuthorsAlphabet(authors: Array<Author>) {\r\n    const mappedAuthors: { [key: string]: Array<any> } = {};\r\n    authors.forEach(author => {\r\n      const letter = author.name[0];\r\n      mappedAuthors[letter] = mappedAuthors[letter] || [];\r\n      mappedAuthors[letter].push(author);\r\n    });\r\n\r\n    const alphabet: Array<AuthorLetter> = [];\r\n    Object.keys(mappedAuthors)\r\n      .sort()\r\n      .forEach((letter, index) => {\r\n        alphabet.push({\r\n          id: index,\r\n          name: letter,\r\n          highlight: false,\r\n          visible: true,\r\n          expanded: false,\r\n          authorIds: mappedAuthors[letter].map(one => one.id)\r\n        });\r\n      });\r\n\r\n    return alphabet;\r\n  }\r\n}\r\n","import { BookSection, PagingItem } from '@/services/Navigation/types';\r\n\r\nexport default class PagingService {\r\n  private static instance: PagingService;\r\n\r\n  private static getInstance() {\r\n    if (!PagingService.instance) {\r\n      PagingService.instance = new PagingService();\r\n    }\r\n    return PagingService.instance;\r\n  }\r\n\r\n  public static getPaging(bookSections: Array<BookSection>, currentSection: BookSection | null) {\r\n    if (!currentSection) {\r\n      return null;\r\n    }\r\n    const instance = PagingService.getInstance();\r\n    return {\r\n      chapter: currentSection.number_code_chapter,\r\n      poem: currentSection.number_code_poem,\r\n      section: currentSection.number_code_section,\r\n      chapters: Object.values(instance.getChapters(bookSections)),\r\n      sections: Object.values(instance.getSections(bookSections, currentSection)),\r\n      poems: Object.values(instance.getPoems(bookSections, currentSection))\r\n    };\r\n  }\r\n\r\n  private getChapters(bookSections: Array<BookSection>) {\r\n    const chapters: { [key: number]: PagingItem } = {};\r\n    bookSections\r\n      .filter(({ number_code_chapter }) => number_code_chapter !== null)\r\n      .forEach(({ number_code_chapter: number, slug }) => {\r\n        if (!chapters[number as number]) {\r\n          chapters[number as number] = { number, bookSectionSlug: slug };\r\n        }\r\n      });\r\n    return chapters;\r\n  }\r\n\r\n  private getSections(bookSections: Array<BookSection>, currentSection: BookSection) {\r\n    const sections: { [key: number]: PagingItem } = {};\r\n    bookSections\r\n      .filter(\r\n        bookSection =>\r\n          !!bookSection.number_code_section &&\r\n          (!currentSection.number_code_chapter ||\r\n            currentSection.number_code_chapter === bookSection.number_code_chapter)\r\n      )\r\n      .forEach(({ number_code_section: number, slug }) => {\r\n        if (!sections[number as number]) {\r\n          sections[number as number] = { number, bookSectionSlug: slug };\r\n        }\r\n      });\r\n    return sections;\r\n  }\r\n\r\n  private getPoems(bookSections: Array<BookSection>, currentSection: BookSection) {\r\n    const poems: { [key: number]: PagingItem } = {};\r\n    bookSections\r\n      .filter(\r\n        bookSection =>\r\n          !!bookSection.number_code_poem &&\r\n          (!currentSection.number_code_chapter ||\r\n            currentSection.number_code_chapter === bookSection.number_code_chapter) &&\r\n          (!currentSection.number_code_section ||\r\n            currentSection.number_code_section === bookSection.number_code_section)\r\n      )\r\n      .forEach(({ number_code_poem: number, slug }) => {\r\n        poems[number as number] = { number, bookSectionSlug: slug };\r\n      });\r\n    return poems;\r\n  }\r\n}\r\n","import { store } from '@/store';\r\nimport { ApiService } from '@/services/Api/ApiService';\r\nimport { endpoints } from '@/api-endpoints.json';\r\nimport { NavigationDataRaw } from '../../Navigation/types';\r\nimport { SearchBaseOptions } from '@/services/Api/SearchService';\r\n\r\nexport default class NavigationService {\r\n  private static instance: NavigationService;\r\n\r\n  private apiService: ApiService = new ApiService();\r\n\r\n  private static getInstance() {\r\n    if (!NavigationService.instance) {\r\n      NavigationService.instance = new NavigationService();\r\n    }\r\n    return NavigationService.instance;\r\n  }\r\n\r\n  static get callsCount() {\r\n    return this.getInstance().apiService.callsCount;\r\n  }\r\n\r\n  static async getNavigation(lang: string): Promise<NavigationDataRaw> {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.catalog.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getCategoryBooks(lang: string, categoryId: number) {\r\n    const instance = this.getInstance();\r\n    const endpoint = endpoints.navigation.categoryBooks\r\n      .replace(':lang', lang)\r\n      .replace(':id', categoryId.toString());\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getCategoriesBooks(lang: string, categoryIds: Array<number>) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.booksByCategories.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({ categories: categoryIds })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getAuthorBooks(lang: string, authorId: number) {\r\n    const instance = this.getInstance();\r\n    const endpoint = endpoints.navigation.authorBooks\r\n      .replace(':lang', lang)\r\n      .replace(':id', authorId.toString());\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getLetterBooks(lang: string, letter: string) {\r\n    const instance = this.getInstance();\r\n    const endpoint = endpoints.navigation.letterBooks.replace(':lang', lang).replace(':letter', letter);\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getBookSections(lang: string, bookId: string) {\r\n    const instance = this.getInstance();\r\n    const endpoint = endpoints.navigation.bookSections.replace(':lang', lang).replace(':id', bookId);\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async getBookParams(lang: string, bookSlug: string) {\r\n    const instance = this.getInstance();\r\n    const endpoint = endpoints.navigation.bookParams.replace(':lang', lang).replace(':book', bookSlug);\r\n    return instance.apiService\r\n      .setEndpoint(endpoint)\r\n      .setToken(store.state.auth.token)\r\n      .get()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async filterCategories(lang: string, query: string) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.filterCategories.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({ language: lang, query })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async filterAuthors(lang: string, query: string) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.filterAuthors.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({ language: lang, query })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async filterLetters(lang: string, query: string) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.filterLetters.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({ language: lang, query })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async searchBooks(lang: string, query: string, options: Partial<SearchBaseOptions> = {}) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.searchBooks.replace(':lang', lang))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        language: lang,\r\n        query,\r\n        ...options\r\n      })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async searchBookSections(\r\n    lang: string,\r\n    query: string,\r\n    bookSlug: string,\r\n    options: Partial<SearchBaseOptions> = {}\r\n  ) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(endpoints.navigation.searchBookSections.replace(':lang', lang).replace(':book', bookSlug))\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        language: lang,\r\n        query,\r\n        ...options\r\n      })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n\r\n  static async searchBookSectionEntries(\r\n    lang: string,\r\n    query: string,\r\n    bookSlug: string,\r\n    options: Partial<SearchBaseOptions> = {}\r\n  ) {\r\n    const instance = this.getInstance();\r\n    return instance.apiService\r\n      .setEndpoint(\r\n        endpoints.navigation.searchBookSectionEntries.replace(':lang', lang).replace(':book', bookSlug)\r\n      )\r\n      .setToken(store.state.auth.token)\r\n      .setBody({\r\n        language: lang,\r\n        query,\r\n        ...options\r\n      })\r\n      .post()\r\n      .then(response => response.data.data);\r\n  }\r\n}\r\n","import { Author, Book, BookSection, Category, NavigationData } from '@/services/Navigation/types';\r\nimport Helpers from '@/services/Navigation/Helpers';\r\nimport SearchScopeService from '@/services/SearchScopeService';\r\n\r\ntype CheckableNavEntity = Book | BookSection | Category | Author;\r\n\r\nexport default class CheckService {\r\n  public static checkAll({ books, categories, authors, foundBooks, ...rest }: NavigationData) {\r\n    let checkedBooks = Helpers.checkBooks(books);\r\n    checkedBooks = Helpers.checkBookSections(checkedBooks);\r\n    let checkedFoundBooks = Helpers.checkBooks(foundBooks);\r\n    checkedFoundBooks = Helpers.checkBookSections(checkedFoundBooks);\r\n    return {\r\n      ...rest,\r\n      books: checkedBooks,\r\n      foundBooks: checkedFoundBooks,\r\n      categories: Helpers.checkAll(categories),\r\n      authors: Helpers.checkAll(authors)\r\n    };\r\n  }\r\n\r\n  public static uncheckAll({ books, categories, authors, foundBooks, ...rest }: NavigationData) {\r\n    let uncheckedBooks = Helpers.uncheckBooks(books);\r\n    uncheckedBooks = Helpers.uncheckBookSections(uncheckedBooks);\r\n    let uncheckedFoundBooks = Helpers.uncheckBooks(foundBooks);\r\n    uncheckedFoundBooks = Helpers.uncheckBookSections(uncheckedFoundBooks);\r\n    return {\r\n      ...rest,\r\n      books: uncheckedBooks,\r\n      foundBooks: uncheckedFoundBooks,\r\n      categories: Helpers.uncheckAll(categories),\r\n      authors: Helpers.uncheckAll(authors)\r\n    };\r\n  }\r\n\r\n  public static toggleCategoryCheck(navigation: NavigationData, categoryId: number) {\r\n    const categoryIndex = navigation.categories.findIndex(category => category.id === categoryId);\r\n    const category = navigation.categories[categoryIndex];\r\n    const checked = !category.checked;\r\n    const branchCategoryIds = SearchScopeService.getBranchCategoryIds(navigation.categories, categoryId);\r\n    const branchBookIds = new Set<number>();\r\n\r\n    navigation.categories.forEach(branchCategory => {\r\n      if (!branchCategoryIds.has(Number(branchCategory.id))) {\r\n        return;\r\n      }\r\n      branchCategory.checked = checked;\r\n      branchCategory.partiallyChecked = false;\r\n      branchCategory.bookIds.forEach(bookId => branchBookIds.add(Number(bookId)));\r\n    });\r\n\r\n    Object.values(navigation.books).forEach(book => {\r\n      if (!branchBookIds.has(Number(book.id))) {\r\n        return;\r\n      }\r\n      book.checked = checked;\r\n      book.partiallyChecked = false;\r\n      book.children = book.children.map(bookSection => ({\r\n        ...bookSection,\r\n        checked,\r\n        partiallyChecked: false\r\n      }));\r\n    });\r\n\r\n    CheckService.actualizeParentCategories(navigation, categoryIndex);\r\n  }\r\n\r\n  public static toggleBookCheck(navigation: NavigationData, bookSlug: string) {\r\n    const book = navigation.books[bookSlug];\r\n    const checked = !book.checked;\r\n\r\n    // 1. Toggle clicked book's flag\r\n    navigation.books[bookSlug].partiallyChecked = false;\r\n    navigation.books[bookSlug].checked = checked;\r\n\r\n    // 2. Iterate over all children BookSections and check them.\r\n    navigation.books[bookSlug].children = navigation.books[bookSlug].children.map(bookSection =>\r\n      !bookSection.parentId ? { ...bookSection, checked, partiallyChecked: false } : bookSection\r\n    );\r\n\r\n    // 3. Actualize Category's `checked` / `partiallyChecked` flags.\r\n    const categoryIndex = navigation.categories.findIndex(category => category.bookIds.includes(book.id));\r\n    CheckService.actualizeCategory(navigation, categoryIndex);\r\n\r\n    // 4.Iterate over all parent Categories and actualize `checked` / `partiallyChecked` flags.\r\n    CheckService.actualizeParentCategories(navigation, categoryIndex);\r\n  }\r\n\r\n  public static toggleFoundBookCheck(navigation: NavigationData, bookSlug: string) {\r\n    const book = navigation.foundBooks[bookSlug];\r\n    const checked = !book.checked;\r\n\r\n    // 1. Toggle clicked book's flag\r\n    navigation.foundBooks[bookSlug].partiallyChecked = false;\r\n    navigation.foundBooks[bookSlug].checked = checked;\r\n\r\n    // 2. Iterate over all children BookSections and check them.\r\n    navigation.foundBooks[bookSlug].children = navigation.foundBooks[bookSlug].children.map(bookSection => ({\r\n      ...bookSection,\r\n      checked,\r\n      partiallyChecked: false\r\n    }));\r\n  }\r\n\r\n  public static toggleBookSectionCheck(navigation: NavigationData, bookSectionId: string, bookSlug: string) {\r\n    const book = navigation.books[bookSlug];\r\n    const bookSectionIndex = book.children.findIndex(bookSection => bookSection.id === bookSectionId);\r\n    const bookSection = navigation.books[bookSlug].children[bookSectionIndex];\r\n    const checked = !bookSection.checked;\r\n\r\n    // 1. Toggle clicked bookSection's flag\r\n    navigation.books[bookSlug].children[bookSectionIndex].partiallyChecked = false;\r\n    navigation.books[bookSlug].children[bookSectionIndex].checked = checked;\r\n\r\n    // 2. Iterate over all children BookSections and check / uncheck them.\r\n    Helpers.updateChildren(navigation.books[bookSlug].children, bookSectionIndex, item => ({\r\n      ...item,\r\n      checked,\r\n      partiallyChecked: false\r\n    }));\r\n\r\n    // 3. Iterate over all parent BookSections and actualize `checked` / `partiallyChecked` flags.\r\n    Helpers.updateParents(navigation.books[bookSlug].children, bookSectionIndex, childBookSection => {\r\n      // find exact children of the bookSection (no sub-children)\r\n      const children = book.children.filter(child => child.parentId === childBookSection.id);\r\n      // find checked children amount and compare with amount of all children\r\n      return CheckService.actualizeEntryFlags(childBookSection as BookSection, children);\r\n    });\r\n\r\n    // 4.  Actualize Book's `checked` / `partiallyChecked` flags.\r\n    const bookSections = book.children.filter(\r\n      childBookSection => !childBookSection.parentId && childBookSection.is_parent\r\n    );\r\n    CheckService.actualizeEntryFlags(navigation.books[bookSlug], bookSections);\r\n\r\n    const categoryIndex = navigation.categories.findIndex(category => category.bookIds.includes(book.id));\r\n    if (categoryIndex >= 0) {\r\n      // 5. Actualize Category's `checked` / `partiallyChecked` flags.\r\n      this.actualizeCategory(navigation, categoryIndex);\r\n\r\n      // 6. Iterate over all parent Categories and actualize `checked` / `partiallyChecked` flags.\r\n      this.actualizeParentCategories(navigation, categoryIndex);\r\n    }\r\n  }\r\n\r\n  public static toggleFoundBookSectionCheck(\r\n    navigation: NavigationData,\r\n    bookSectionId: string,\r\n    bookSlug: string\r\n  ) {\r\n    const book = navigation.foundBooks[bookSlug];\r\n    const bookSectionIndex = book.children.findIndex(bookSection => bookSection.id === bookSectionId);\r\n    const bookSection = navigation.foundBooks[bookSlug].children[bookSectionIndex];\r\n    const checked = !bookSection.checked;\r\n\r\n    // 1. Toggle clicked bookSection's flag\r\n    navigation.foundBooks[bookSlug].children[bookSectionIndex].partiallyChecked = false;\r\n    navigation.foundBooks[bookSlug].children[bookSectionIndex].checked = checked;\r\n\r\n    // 2. Iterate over all children BookSections and check / uncheck them.\r\n    Helpers.updateChildren(navigation.foundBooks[bookSlug].children, bookSectionIndex, item => ({\r\n      ...item,\r\n      checked,\r\n      partiallyChecked: false\r\n    }));\r\n\r\n    // 3. Iterate over all parent BookSections and actualize `checked` / `partiallyChecked` flags.\r\n    Helpers.updateParents(navigation.foundBooks[bookSlug].children, bookSectionIndex, childBookSection => {\r\n      // find exact children of the bookSection (no sub-children)\r\n      const children = book.children.filter(child => child.parentId === childBookSection.id);\r\n      // find checked children amount and compare with amount of all children\r\n      return CheckService.actualizeEntryFlags(childBookSection as BookSection, children);\r\n    });\r\n\r\n    // 4.  Actualize Book's `checked` / `partiallyChecked` flags.\r\n    const bookSections = book.children.filter(\r\n      childBookSection => !childBookSection.parentId && childBookSection.is_parent\r\n    );\r\n    CheckService.actualizeEntryFlags(navigation.foundBooks[bookSlug], bookSections);\r\n  }\r\n\r\n  private static actualizeCategory(navigation: NavigationData, categoryIndex: number) {\r\n    if (categoryIndex < 0) {\r\n      return;\r\n    }\r\n    const categoryBookIds = navigation.categories[categoryIndex].bookIds;\r\n    const categoryBooks = Object.values(navigation.books).filter(book => categoryBookIds.includes(book.id));\r\n    const children = navigation.categories.filter(\r\n      childCategory => childCategory.parent_id === navigation.categories[categoryIndex].id\r\n    );\r\n    CheckService.actualizeEntryFlags(navigation.categories[categoryIndex], [...children, ...categoryBooks]);\r\n  }\r\n\r\n  private static actualizeParentCategories(navigation: NavigationData, categoryIndex: number) {\r\n    if (categoryIndex < 0) {\r\n      return;\r\n    }\r\n    Helpers.updateParents(navigation.categories, categoryIndex, category => {\r\n      // find exact children and books of the category (no sub-children)\r\n      const categoryBooks = Object.values(navigation.books).filter(book =>\r\n        category.bookIds.includes(book.id)\r\n      );\r\n      const children = navigation.categories.filter(childCategory => childCategory.parent_id === category.id);\r\n      return CheckService.actualizeEntryFlags(category as Category, [...children, ...categoryBooks]);\r\n    });\r\n  }\r\n\r\n  private static actualizeEntryFlags(entity: CheckableNavEntity, children: Array<CheckableNavEntity>) {\r\n    const checkedChildren = children.filter(child => child.checked);\r\n    const partiallyCheckedChildren = children.filter(child => child.partiallyChecked);\r\n    entity.checked = checkedChildren.length === children.length;\r\n    entity.partiallyChecked =\r\n      (checkedChildren.length > 0 && checkedChildren.length < children.length) ||\r\n      partiallyCheckedChildren.length > 0;\r\n    return entity;\r\n  }\r\n}\r\n","import { Author, AuthorLetter, BookLetter, Books, Category } from '@/services/Navigation/types';\r\n\r\nexport default class ExpandService {\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleCategoryExpand(categories: Array<Category>, categoryId: number) {\r\n    const index = categories.findIndex(category => categoryId === category.id);\r\n    if (index > -1) {\r\n      categories[index].expanded = !categories[index].expanded;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleAuthorExpand(authors: Array<Author>, authorId: number) {\r\n    const index = authors.findIndex(author => authorId === author.id);\r\n    if (index > -1) {\r\n      authors[index].expanded = !authors[index].expanded;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleLetterExpand(letters: Array<BookLetter | AuthorLetter>, letterId: number) {\r\n    const index = letters.findIndex(letter => letterId === letter.id);\r\n    if (index > -1) {\r\n      letters[index].expanded = !letters[index].expanded;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleBookExpand(books: Books, bookSlug: string) {\r\n    books[bookSlug].expanded = !books[bookSlug].expanded;\r\n  }\r\n\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleBookSectionExpand(books: Books, bookSectionId: string, bookSlug: string) {\r\n    const index = books[bookSlug].children.findIndex(bookSection => bookSectionId === bookSection.id);\r\n    if (index > -1) {\r\n      books[bookSlug].children[index].expanded = !books[bookSlug].children[index].expanded;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method will DO the mutation of data in order to not re-render every DOM node\r\n   */\r\n  public static toggleFoundBookSectionExpand(books: Books, bookSectionId: string, bookSlug: string) {\r\n    if (!books[bookSlug]) {\r\n      return;\r\n    }\r\n    const index = books[bookSlug].children.findIndex(bookSection => bookSectionId === bookSection.id);\r\n    if (index > -1) {\r\n      books[bookSlug].children[index].expanded = !books[bookSlug].children[index].expanded;\r\n    }\r\n  }\r\n}\r\n","import { ActionTree, GetterTree, Module, MutationTree } from 'vuex';\r\nimport axios from 'axios';\r\nimport { RootState } from '@/store';\r\nimport {\r\n  Author,\r\n  Book,\r\n  Books,\r\n  BookSection,\r\n  Category,\r\n  ListType,\r\n  NavigationData,\r\n  NavigationDataFilter,\r\n  NavigationDataRaw\r\n} from '@/services/Navigation/types';\r\nimport HighlightService from '@/services/Navigation/HighlightService';\r\nimport ProcessService from '@/services/Navigation/ProcessService';\r\nimport PagingService from '@/services/Navigation/PagingService';\r\nimport NavigationService from '@/services/Api/NavigationService';\r\nimport CheckService from '@/services/Navigation/CheckService';\r\nimport ExpandService from '@/services/Navigation/ExpandService';\r\nimport { LIST_TYPE_DEFAULT } from '@/constants';\r\nimport ArrayService from '@/services/ArrayService';\r\nimport SearchScopeService from '@/services/SearchScopeService';\r\n\r\nexport type NavigationState = {\r\n  language: string;\r\n  loading: boolean;\r\n  error: boolean;\r\n  data: { [language: string]: NavigationData };\r\n  showSearchResultsFlag: boolean;\r\n  listType: ListType;\r\n  filterQuery: string;\r\n};\r\n\r\nconst initialData: NavigationData = {\r\n  books: {}, // books must be an object with unique key to avoid duplicates\r\n  booksAlphabet: [],\r\n  categories: [],\r\n  authors: [],\r\n  authorsAlphabet: [],\r\n  foundBooks: {},\r\n  filter: {\r\n    // filter data from search input in left column\r\n    categoryIds: [],\r\n    authorIds: [],\r\n    bookSlugs: []\r\n  }\r\n};\r\n\r\nconst state: NavigationState = {\r\n  // language variable is for Catalog.vue and Search.vue only\r\n  // we can switch catalog navigation in Sidebar.vue to the other language without changing url (to avoid blank content-area when url will be \"/ru\" or \"/en\")\r\n  // we initialize and watch it in Reader.vue so it will be synced with url (plus decide should we show Catalog.vue or NewBooks.vue)\r\n  // we don't know the exact language while user is on the main page, so it's empty by default\r\n  language: '',\r\n  loading: false,\r\n  error: false,\r\n  data: {\r\n    ru: initialData,\r\n    en: initialData,\r\n    st: initialData\r\n  },\r\n  showSearchResultsFlag: false,\r\n  listType: LIST_TYPE_DEFAULT,\r\n  filterQuery: ''\r\n};\r\n\r\nconst actions: ActionTree<NavigationState, RootState> = {\r\n  async fetch({ commit, state }, language) {\r\n    // get navigation from backend\r\n\r\n    commit('setLoading', true);\r\n    commit('setError', false);\r\n    return NavigationService.getNavigation(language)\r\n      .then((navigationDataRaw: NavigationDataRaw) => {\r\n        // process navigation data\r\n        let navigationData = ProcessService.processNavigation(navigationDataRaw);\r\n        // highlight navigation items\r\n        navigationData = HighlightService.actualizeHighlight(\r\n          {\r\n            ...state.data[state.language],\r\n            ...navigationData\r\n          },\r\n          state.listType,\r\n          state.filterQuery\r\n        );\r\n        // store it in the state\r\n        commit('updateNavigationData', navigationData);\r\n      })\r\n      .catch(e => {\r\n        if (!axios.isCancel(e)) {\r\n          // if request was canceled - we should not consider this as error\r\n          console.error(e); // eslint-disable-line no-console\r\n          commit('setError', e);\r\n        }\r\n      })\r\n      .finally(() => {\r\n        if (NavigationService.callsCount === 0) {\r\n          commit('setLoading', false);\r\n        }\r\n      });\r\n  },\r\n\r\n  async fetchCategoryBooks({ commit, state }, { language, categoryId }) {\r\n    const { books: newBooks } = await NavigationService.getCategoryBooks(language, categoryId);\r\n    const processedBooks = ProcessService.processBooks(newBooks);\r\n    let navigationData = {\r\n      ...state.data[state.language],\r\n      books: ProcessService.concatBooks(state.data[state.language].books, processedBooks),\r\n      categories: ProcessService.mapBookIds(state.data[state.language].categories, categoryId, processedBooks)\r\n    };\r\n    if (HighlightService.needBookHighlight(navigationData, state.listType, state.filterQuery)) {\r\n      navigationData.books = HighlightService.highlightBook(navigationData.books);\r\n    }\r\n    commit('updateNavigationData', navigationData);\r\n  },\r\n\r\n  async fetchCategoriesBooks({ commit, state }, { language, categoryIds }) {\r\n    const { books: newBooks, categories: categoryBookIds } = await NavigationService.getCategoriesBooks(\r\n      language,\r\n      categoryIds\r\n    );\r\n    const processedBooks = ProcessService.processBooks(newBooks);\r\n    const categories = SearchScopeService.applyCategoryBookMappings(\r\n      state.data[state.language].categories,\r\n      categoryIds,\r\n      categoryBookIds\r\n    );\r\n    commit('updateNavigationData', {\r\n      ...state.data[state.language],\r\n      books: ProcessService.concatBooks(state.data[state.language].books, processedBooks),\r\n      categories\r\n    });\r\n  },\r\n\r\n  async toggleCategorySelection({ commit, dispatch, state }, categoryId: number) {\r\n    const data = state.data[state.language];\r\n    const category = data.categories.find(item => item.id === categoryId);\r\n    if (!category) {\r\n      return;\r\n    }\r\n    const shouldLoadBookIds = !category.checked;\r\n    commit('toggleCategoryCheck', categoryId);\r\n    if (shouldLoadBookIds) {\r\n      const unloadedCategoryIds = SearchScopeService.getUnloadedBookCategoryIds(data.categories, categoryId);\r\n      if (unloadedCategoryIds.length) {\r\n        await dispatch('fetchCategoriesBooks', {\r\n          language: state.language,\r\n          categoryIds: unloadedCategoryIds\r\n        }).catch(() => {\r\n          // Category selection remains usable if the optional count hydration fails.\r\n        });\r\n      }\r\n    }\r\n  },\r\n\r\n  async fetchAuthorBooks({ commit, state }, { language, authorId }) {\r\n    const { books: newBooks } = await NavigationService.getAuthorBooks(language, authorId);\r\n    const processedBooks = ProcessService.processBooks(newBooks);\r\n    let navigationData = {\r\n      ...state.data[state.language],\r\n      books: ProcessService.concatBooks(state.data[state.language].books, processedBooks),\r\n      authors: ProcessService.mapBookIds(state.data[state.language].authors, authorId, processedBooks)\r\n    };\r\n    if (HighlightService.needBookHighlight(navigationData, state.listType, state.filterQuery)) {\r\n      navigationData.books = HighlightService.highlightBook(navigationData.books);\r\n    }\r\n    commit('updateNavigationData', navigationData);\r\n  },\r\n\r\n  async fetchLetterBooks({ commit, state }, { language, letterName }) {\r\n    const { books: newBooks } = await NavigationService.getLetterBooks(language, letterName);\r\n    const processedBooks = ProcessService.processBooks(newBooks);\r\n    let navigationData = {\r\n      ...state.data[state.language],\r\n      books: ProcessService.concatBooks(state.data[state.language].books, processedBooks)\r\n    };\r\n    const letter = state.data[state.language].booksAlphabet.find(one => one.name === letterName);\r\n    if (letter) {\r\n      navigationData.booksAlphabet = ProcessService.mapBookIds(\r\n        state.data[state.language].booksAlphabet,\r\n        letter.id,\r\n        processedBooks\r\n      );\r\n    }\r\n    if (HighlightService.needBookHighlight(navigationData, state.listType, state.filterQuery)) {\r\n      navigationData.books = HighlightService.highlightBook(navigationData.books);\r\n    }\r\n    commit('updateNavigationData', navigationData);\r\n  },\r\n\r\n  async fetchBookSections({ commit, state }, { language, bookSlug }) {\r\n    const { is_show_edit_link, edit_link, bookSections } = await NavigationService.getBookSections(\r\n      language,\r\n      bookSlug\r\n    );\r\n    let navigationData = { ...state.data[state.language] };\r\n    navigationData.books[bookSlug].children = ProcessService.processBookSections(\r\n      bookSections,\r\n      navigationData.books[bookSlug]\r\n    );\r\n    navigationData.books[bookSlug].edit_link = edit_link;\r\n    navigationData.books[bookSlug].is_show_edit_link = is_show_edit_link;\r\n    if (HighlightService.needBookSectionHighlight(navigationData.books)) {\r\n      navigationData.books = HighlightService.highlightBookSection(navigationData.books);\r\n    }\r\n    commit('updateNavigationData', navigationData);\r\n  },\r\n\r\n  async highlightLetterByBookSlug({ commit, dispatch, state }, { language, bookSlug }) {\r\n    try {\r\n      const bookParams = await NavigationService.getBookParams(language, bookSlug);\r\n      if (state.error) {\r\n        return;\r\n      }\r\n      const navigationData = state.data[state.language];\r\n      const { booksAlphabet } = navigationData;\r\n      const letter = booksAlphabet.find(one => one.name === bookParams.letter);\r\n      if (!letter) {\r\n        throw new Error(`Book letter not found: ${bookParams.letter}`);\r\n      }\r\n\r\n      letter.expanded = true;\r\n      letter.highlight = true;\r\n      commit('updateNavigationData', { booksAlphabet });\r\n\r\n      // A direct URL is opened before NavLetter/NavBook components exist. Load\r\n      // the complete branch here instead of relying on component watchers.\r\n      if (!state.data[state.language].books[bookSlug]) {\r\n        await dispatch('fetchLetterBooks', { language, letterName: letter.name });\r\n      }\r\n      let book = state.data[state.language].books[bookSlug];\r\n      if (!book) {\r\n        const fallbackBranches = [\r\n          ...(bookParams.categories || []).map((categoryId: number) => ({\r\n            action: 'fetchCategoryBooks',\r\n            payload: { language, categoryId }\r\n          })),\r\n          ...(bookParams.authors || []).map((authorId: number) => ({\r\n            action: 'fetchAuthorBooks',\r\n            payload: { language, authorId }\r\n          }))\r\n        ];\r\n        for (const branch of fallbackBranches) {\r\n          await dispatch(branch.action, branch.payload);\r\n          book = state.data[state.language].books[bookSlug];\r\n          if (book) {\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      if (!book) {\r\n        const directBooks = ProcessService.processBooks([\r\n          {\r\n            id: bookParams.id,\r\n            name: bookParams.name || bookSlug,\r\n            slug: bookSlug,\r\n            categories: bookParams.categories || [],\r\n            authors: bookParams.authors || [],\r\n            language,\r\n            related_books_count: 0,\r\n            is_article: !!bookParams.is_article,\r\n            translations: [],\r\n            sectionsEntity: [],\r\n            status: 'published',\r\n            searchMatch: false,\r\n            highlight: false,\r\n            visible: true,\r\n            expanded: false,\r\n            children: [],\r\n            checked: false,\r\n            partiallyChecked: false,\r\n            is_show_edit_link: false,\r\n            edit_link: ''\r\n          }\r\n        ]);\r\n        const navigationData = {\r\n          ...state.data[state.language],\r\n          books: ProcessService.concatBooks(state.data[state.language].books, directBooks)\r\n        };\r\n        commit('updateNavigationData', navigationData);\r\n        book = navigationData.books[bookSlug];\r\n      }\r\n      if (!book) {\r\n        throw new Error(`Book not found in letter ${letter.name}: ${bookSlug}`);\r\n      }\r\n      book.expanded = true;\r\n      book.highlight = true;\r\n      commit('updateNavigationData', { books: state.data[state.language].books });\r\n\r\n      if (!book.children.length) {\r\n        await dispatch('fetchBookSections', { language, bookSlug });\r\n      }\r\n      commit('actualizeHighlight');\r\n    } catch (e) {\r\n      if (!axios.isCancel(e)) {\r\n        console.error(e); // eslint-disable-line no-console\r\n        commit('setError', e);\r\n      }\r\n    }\r\n  },\r\n\r\n  /**\r\n   * Filter categories\r\n   */\r\n  async filter({ commit, state }, { language, query }) {\r\n    let filterData: {\r\n      books?: Array<Book>;\r\n      categories?: Array<number>;\r\n      bookSections?: Array<string>;\r\n      authors?: Array<number>;\r\n      letters?: Array<string>;\r\n    } = {};\r\n    const stateData = state.data[state.language];\r\n    let filter: NavigationDataFilter = stateData.filter;\r\n    let stateBooks: Books = { ...stateData.books };\r\n    let filteredAuthors;\r\n    switch (state.listType) {\r\n      case 'categories':\r\n        filterData = await NavigationService.filterCategories(language, query);\r\n        break;\r\n      case 'authors':\r\n        filterData = await NavigationService.filterAuthors(language, query);\r\n        filteredAuthors = stateData.authors.filter(\r\n          author => filterData.authors && filterData.authors.includes(author.id)\r\n        );\r\n        break;\r\n      case 'books':\r\n        filterData = await NavigationService.filterLetters(language, query);\r\n        break;\r\n    }\r\n\r\n    filter.categoryIds = filterData.categories || [];\r\n    filter.authorIds = filterData.authors || [];\r\n    filter.bookSlugs = [];\r\n    if (filterData.books) {\r\n      filter.bookSlugs = filterData.books.map(book => book.slug);\r\n      stateBooks = { ...stateBooks, ...ProcessService.processBooks(filterData.books) };\r\n    }\r\n\r\n    commit('updateNavigationData', { filter, books: stateBooks });\r\n  },\r\n\r\n  /**\r\n   * Search books if there is a global search query\r\n   */\r\n  async searchBooks({ commit, getters, rootState }, { language, query, ...rest }) {\r\n    commit('setLoading', true);\r\n    commit('search/setError', false, { root: true });\r\n    if (rootState.search.advancedSearch && !getters.hasCheckedEntities) {\r\n      // if there is advanced search and there are no checked checkboxes - return empty list\r\n      commit('updateNavigationData', { foundBooks: [] });\r\n      commit('setLoading', false);\r\n    } else {\r\n      return NavigationService.searchBooks(language, query, rest)\r\n        .then(books => {\r\n          // store it in the state\r\n          commit('updateNavigationData', {\r\n            foundBooks: ProcessService.processBooks(books, { checked: true })\r\n          });\r\n        })\r\n        .catch(e => {\r\n          if (!axios.isCancel(e)) {\r\n            // A sidebar-search failure must not replace an already loaded catalog.\r\n            commit('search/setError', true, { root: true });\r\n          }\r\n        })\r\n        .finally(() => {\r\n          if (NavigationService.callsCount === 0) {\r\n            commit('setLoading', false);\r\n          }\r\n        });\r\n    }\r\n  },\r\n\r\n  /**\r\n   *  Search books sections if there is a global search query\r\n   */\r\n  async searchBookSections({ commit, state }, { language, query, bookSlug, ...rest }) {\r\n    const bookSections = await NavigationService.searchBookSections(language, query, bookSlug, rest);\r\n    const bookSectionEntries = await NavigationService.searchBookSectionEntries(\r\n      language,\r\n      query,\r\n      bookSlug,\r\n      rest\r\n    );\r\n    const book = state.data[state.language].foundBooks[bookSlug];\r\n    state.data[state.language].foundBooks[bookSlug].children = ProcessService.processBookSections(\r\n      bookSections,\r\n      book,\r\n      { checked: true },\r\n      bookSectionEntries\r\n    );\r\n    commit('updateNavigationData', state.data[state.language]);\r\n  }\r\n};\r\n\r\nconst mutations: MutationTree<NavigationState> = {\r\n  updateNavigationData(state: NavigationState, navigationData: NavigationData) {\r\n    state.data[state.language] = { ...state.data[state.language], ...navigationData };\r\n  },\r\n  setLanguage(state: NavigationState, language: string) {\r\n    state.language = language;\r\n  },\r\n  setLoading(state: NavigationState, loading: boolean) {\r\n    state.loading = loading;\r\n  },\r\n  setError(state: NavigationState, error: boolean) {\r\n    state.error = error;\r\n  },\r\n  actualizeHighlight(state: NavigationState) {\r\n    state.data[state.language] = HighlightService.actualizeHighlight(\r\n      state.data[state.language],\r\n      state.listType,\r\n      state.filterQuery\r\n    );\r\n  },\r\n  toggleCategoryExpand(state: NavigationState, categoryId: number) {\r\n    ExpandService.toggleCategoryExpand(state.data[state.language].categories, categoryId);\r\n  },\r\n  toggleAuthorExpand(state: NavigationState, authorId: number) {\r\n    ExpandService.toggleAuthorExpand(state.data[state.language].authors, authorId);\r\n  },\r\n  toggleBookExpand(state: NavigationState, bookSlug: string) {\r\n    ExpandService.toggleBookExpand(state.data[state.language].books, bookSlug);\r\n  },\r\n  toggleFoundBookExpand(state: NavigationState, bookSlug: string) {\r\n    ExpandService.toggleBookExpand(state.data[state.language].foundBooks, bookSlug);\r\n  },\r\n  toggleBookSectionExpand(\r\n    state: NavigationState,\r\n    {\r\n      bookSectionId,\r\n      bookSlug,\r\n      catalogTree\r\n    }: { bookSectionId: string; bookSlug: string; catalogTree?: boolean }\r\n  ) {\r\n    if (state.showSearchResultsFlag && !catalogTree) {\r\n      ExpandService.toggleFoundBookSectionExpand(\r\n        state.data[state.language].foundBooks,\r\n        bookSectionId,\r\n        bookSlug\r\n      );\r\n    } else {\r\n      ExpandService.toggleBookSectionExpand(state.data[state.language].books, bookSectionId, bookSlug);\r\n    }\r\n  },\r\n  toggleBookLetterExpand(state: NavigationState, letterId: number) {\r\n    ExpandService.toggleLetterExpand(state.data[state.language].booksAlphabet, letterId);\r\n  },\r\n  toggleAuthorLetterExpand(state: NavigationState, letterId: number) {\r\n    ExpandService.toggleLetterExpand(state.data[state.language].authorsAlphabet, letterId);\r\n  },\r\n  collapseAll(state: NavigationState) {\r\n    state.data[state.language] = {\r\n      ...state.data[state.language],\r\n      ...ProcessService.collapseAll(state.data[state.language])\r\n    };\r\n  },\r\n  collapseBookTree(state: NavigationState, bookSlug: string) {\r\n    const collapseSections = (sections: Array<BookSection>) => {\r\n      sections.forEach(section => {\r\n        section.expanded = false;\r\n        collapseSections(section.children || []);\r\n      });\r\n    };\r\n    const collapseBook = (books: Books) => {\r\n      const book = books[bookSlug];\r\n      if (!book) {\r\n        return;\r\n      }\r\n      book.expanded = false;\r\n      collapseSections(book.children || []);\r\n    };\r\n    collapseBook(state.data[state.language].books);\r\n    collapseBook(state.data[state.language].foundBooks);\r\n  },\r\n  restoreExpansionState(state: NavigationState, snapshot) {\r\n    const data = state.data[state.language];\r\n    const categoryIds = new Set(snapshot.categories || []);\r\n    const authorIds = new Set(snapshot.authors || []);\r\n    const bookLetterIds = new Set(snapshot.bookLetters || []);\r\n    const authorLetterIds = new Set(snapshot.authorLetters || []);\r\n    const bookSlugs = new Set(snapshot.books || []);\r\n    const foundBookSlugs = new Set(snapshot.foundBooks || []);\r\n    const sectionKeys = new Set(snapshot.sections || []);\r\n    const applySections = (sections: Array<BookSection>, bookSlug: string) => {\r\n      sections.forEach(section => {\r\n        section.expanded = sectionKeys.has(`${bookSlug}:${section.id}`);\r\n        applySections(section.children || [], bookSlug);\r\n      });\r\n    };\r\n    data.categories.forEach(category => {\r\n      category.expanded = categoryIds.has(category.id);\r\n    });\r\n    data.authors.forEach(author => {\r\n      author.expanded = authorIds.has(author.id);\r\n    });\r\n    data.booksAlphabet.forEach(letter => {\r\n      letter.expanded = bookLetterIds.has(letter.id);\r\n    });\r\n    data.authorsAlphabet.forEach(letter => {\r\n      letter.expanded = authorLetterIds.has(letter.id);\r\n    });\r\n    Object.values(data.books).forEach(book => {\r\n      book.expanded = bookSlugs.has(book.slug);\r\n      applySections(book.children || [], book.slug);\r\n    });\r\n    Object.values(data.foundBooks).forEach(book => {\r\n      book.expanded = foundBookSlugs.has(book.slug);\r\n      applySections(book.children || [], book.slug);\r\n    });\r\n  },\r\n  toggleCategoryCheck(state: NavigationState, categoryId: number) {\r\n    CheckService.toggleCategoryCheck(state.data[state.language], categoryId);\r\n  },\r\n  toggleBookCheck(state: NavigationState, bookSlug: string) {\r\n    CheckService.toggleBookCheck(state.data[state.language], bookSlug);\r\n  },\r\n  toggleFoundBookCheck(state: NavigationState, bookSlug: string) {\r\n    CheckService.toggleFoundBookCheck(state.data[state.language], bookSlug);\r\n  },\r\n  toggleBookSectionCheck(state: NavigationState, { bookSectionId, bookSlug }) {\r\n    CheckService.toggleBookSectionCheck(state.data[state.language], bookSectionId, bookSlug);\r\n  },\r\n  toggleFoundBookSectionCheck(state: NavigationState, { bookSectionId, bookSlug }) {\r\n    CheckService.toggleFoundBookSectionCheck(state.data[state.language], bookSectionId, bookSlug);\r\n  },\r\n  checkAll(state: NavigationState) {\r\n    state.data[state.language] = CheckService.checkAll(state.data[state.language]);\r\n  },\r\n  uncheckAll(state: NavigationState) {\r\n    state.data[state.language] = CheckService.uncheckAll(state.data[state.language]);\r\n  },\r\n  updatePreloadFlag(state: NavigationState) {\r\n    // this method will DO the mutation of data\r\n    ProcessService.updatePreloadFlag(state.data[state.language].books);\r\n  },\r\n  setShowSearchResultsFlag(state: NavigationState, showSearchResultsFlag) {\r\n    state.showSearchResultsFlag = showSearchResultsFlag;\r\n    if (!showSearchResultsFlag && state.language) {\r\n      // clear found books if we switch back to catalog\r\n      state.data[state.language].foundBooks = {};\r\n    }\r\n  },\r\n  setListType(state: NavigationState, listType: ListType) {\r\n    state.listType = listType;\r\n  },\r\n  clearFoundBooks(state) {\r\n    state.data[state.language].foundBooks = {};\r\n  },\r\n  resetFilter(state) {\r\n    state.data[state.language].filter = { ...initialData.filter };\r\n  },\r\n  updateFilterQuery(state, filterQuery) {\r\n    state.filterQuery = filterQuery;\r\n  }\r\n};\r\n\r\nconst getters: GetterTree<NavigationState, RootState> = {\r\n  dataFromStateLanguage: (state: NavigationState) => {\r\n    // this getters is used when user clicks on different languages in the left sidebar and the url is not changing (just to show the catalog tree for selected language)\r\n    return !!state.language && state.data[state.language];\r\n  },\r\n  dataFromRouteLanguage: (state: NavigationState, getters, rootState) => {\r\n    // this getter is used to get current book / bookSection / category from slugs in url\r\n    const routeLanguage = rootState.route.params.language;\r\n    return !!routeLanguage && state.data[routeLanguage];\r\n  },\r\n  currentBook: (state: NavigationState, getters, rootState) => {\r\n    const routeLanguage = rootState.route.params.language;\r\n    const routeBook = rootState.route.params.book;\r\n    if (!(routeLanguage && routeBook)) {\r\n      return undefined;\r\n    }\r\n    const data = getters.dataFromRouteLanguage;\r\n    const books: Array<Book> = data ? Object.values(data.books) : [];\r\n    return books.find(book => book.language === routeLanguage && book.slug === routeBook);\r\n  },\r\n  currentBookSections: (state: NavigationState, getters) => {\r\n    const book = getters.currentBook;\r\n    if (!book) {\r\n      return undefined;\r\n    }\r\n    return book.children;\r\n  },\r\n  currentBookSection: (state: NavigationState, getters, rootState) => {\r\n    const routeLanguage = rootState.route.params.language;\r\n    const routeBook = rootState.route.params.book;\r\n    const routeBookSection = rootState.route.params.bookSection;\r\n    const book = getters.currentBook;\r\n    if (!book) {\r\n      return undefined;\r\n    }\r\n    const bookSections: Array<BookSection> = book.children;\r\n\r\n    if (book && book.is_article) {\r\n      // when book has only one article - there is no info in the left col, so we fake the object\r\n      return {\r\n        id: routeBookSection,\r\n        code: routeBookSection,\r\n        slug: routeBookSection,\r\n        bookId: book.id,\r\n        book: book,\r\n        number_code_chapter: null,\r\n        number_code_section: null,\r\n        number_code_poem: null,\r\n        is_parent: false,\r\n        depth: 1,\r\n        preload: false,\r\n        number: 0, // number in the book\r\n        index: 0\r\n      } as BookSection;\r\n    }\r\n\r\n    return bookSections.find(\r\n      one =>\r\n        one.book.language === routeLanguage && one.book.slug === routeBook && one.slug === routeBookSection\r\n    );\r\n  },\r\n  pagination: (state: NavigationState, getters) => {\r\n    return PagingService.getPaging(getters.currentBookSections, getters.currentBookSection);\r\n  },\r\n  checkedCategories: (state: NavigationState, getters) => {\r\n    const data = getters.dataFromRouteLanguage;\r\n    const categories: Array<Category> = data ? data.categories : [];\r\n    return categories.filter(category => category.checked && !category.partiallyChecked);\r\n  },\r\n  checkedBooks: (state: NavigationState, getters) => {\r\n    const data = getters.dataFromRouteLanguage as NavigationData;\r\n    if (!data) {\r\n      return [];\r\n    }\r\n    const checkedCategoriesIds = getters.checkedCategories.map((category: Category) => category.id);\r\n    return Object.values(data.books).filter(\r\n      book =>\r\n        book.checked &&\r\n        !book.partiallyChecked &&\r\n        !(book.categories && ArrayService.hasIntersections(book.categories, checkedCategoriesIds)) // ... and if book's category IDs are not in checked categories IDs\r\n    );\r\n  },\r\n  selectedBooksCount: (state: NavigationState, getters) => {\r\n    return SearchScopeService.getSelectedBookIds(\r\n      getters.checkedBooks as Array<Book>,\r\n      getters.checkedCategories as Array<Category>\r\n    ).size;\r\n  },\r\n  checkedBookSections: (state: NavigationState, getters) => {\r\n    const data = getters.dataFromRouteLanguage as NavigationData;\r\n    if (!data) {\r\n      return [];\r\n    }\r\n    let checkedBookIds = getters.checkedBooks.map((book: Book) => book.id);\r\n    getters.checkedCategories.forEach((category: Category) => {\r\n      checkedBookIds = checkedBookIds.concat(category.bookIds);\r\n    });\r\n    const checkedBookSections: Array<BookSection> = [];\r\n    for (let slug in data.books) {\r\n      if (!data.books.hasOwnProperty(slug)) {\r\n        continue;\r\n      }\r\n      data.books[slug].children.forEach(bookSection => {\r\n        if (\r\n          bookSection.checked &&\r\n          !bookSection.partiallyChecked &&\r\n          !checkedBookIds.includes(bookSection.book.id)\r\n        ) {\r\n          checkedBookSections.push(bookSection);\r\n        }\r\n      });\r\n    }\r\n    return checkedBookSections;\r\n  },\r\n  checkedFoundBooks: (state: NavigationState, getters) => {\r\n    const data = getters.dataFromRouteLanguage as NavigationData;\r\n    if (!(data && data.foundBooks)) {\r\n      return [];\r\n    }\r\n    return Object.values(data.foundBooks).filter(book => book.checked && !book.partiallyChecked);\r\n  },\r\n  checkedFoundBookSections: (state: NavigationState, getters) => {\r\n    const data = getters.dataFromRouteLanguage as NavigationData;\r\n    if (!(data && data.foundBooks)) {\r\n      return [];\r\n    }\r\n    let bookSections: Array<BookSection> = [];\r\n    Object.values(data.foundBooks)\r\n      .filter(book => !book.checked)\r\n      .forEach(book => {\r\n        bookSections = bookSections.concat(book.children.filter(bookSection => bookSection.checked));\r\n      });\r\n    return bookSections;\r\n  },\r\n  hasCheckedEntities(state: NavigationState, getters) {\r\n    const books = getters.checkedBooks as Array<Book>;\r\n    const categories = getters.checkedCategories as Array<Category>;\r\n    const bookSections = getters.checkedBookSections as Array<BookSection>;\r\n    const foundBooks = getters.checkedFoundBooks as Array<Book>;\r\n    const foundBookSections = getters.checkedFoundBookSections as Array<BookSection>;\r\n\r\n    return (\r\n      !!books.length ||\r\n      !!bookSections.length ||\r\n      !!categories.length ||\r\n      !!foundBooks.length ||\r\n      !!foundBookSections.length\r\n    );\r\n  },\r\n\r\n  showSearchResults: (state: NavigationState, getters, rootState) => {\r\n    return state.showSearchResultsFlag && rootState.route.name === 'search-results';\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  actions,\r\n  mutations,\r\n  getters\r\n} as Module<NavigationState, RootState>;\r\n","import { Module, MutationTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\n\r\nexport interface User {\r\n  id?: number;\r\n  name: string;\r\n  email: string;\r\n  last_name: string;\r\n  spiritual_name: string;\r\n  subscribe_level: string;\r\n}\r\n\r\nexport interface UserState {\r\n  data: object | User;\r\n}\r\n\r\nconst state: UserState = {\r\n  data: {}\r\n};\r\n\r\nconst mutations: MutationTree<UserState> = {\r\n  set(state, user) {\r\n    state.data = user;\r\n  },\r\n  unset(state) {\r\n    state.data = {};\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  mutations\r\n} as Module<UserState, RootState>;\r\n","import { Module, MutationTree } from 'vuex';\r\nimport Vue from 'vue';\r\nimport { RootState } from '@/store';\r\nimport StorageService from '@/services/StorageService';\r\nimport { LANGUAGE_CODE_DEFAULT, LIST_SCALE_DEFAULT } from '@/constants';\r\n\r\nexport interface ReaderState {\r\n  scale: number;\r\n  readMode: boolean;\r\n  presentationMode: boolean;\r\n  presentationScale: number;\r\n  presentationAutoFit: boolean;\r\n  presentationHideTextTypes: Array<string>;\r\n  colorMode: 'light' | 'dark' | 'mixed';\r\n  isTextTypesFiltersVisible: boolean;\r\n  hideTextTypes: Array<string>;\r\n  interfaceLanguage: string;\r\n  catalogListScale: string;\r\n}\r\n\r\nconst defaultState: ReaderState = {\r\n  scale: 1,\r\n  readMode: false,\r\n  presentationMode: false,\r\n  presentationScale: 1,\r\n  presentationAutoFit: true,\r\n  presentationHideTextTypes: ['word-by-word', 'comment'],\r\n  isTextTypesFiltersVisible: false,\r\n  hideTextTypes: [],\r\n  colorMode: 'light',\r\n  interfaceLanguage: LANGUAGE_CODE_DEFAULT,\r\n  catalogListScale: LIST_SCALE_DEFAULT\r\n};\r\n\r\nexport const normalizeReaderState = (storedState?: Partial<ReaderState>): ReaderState => ({\r\n  ...defaultState,\r\n  ...(storedState || {}),\r\n  hideTextTypes:\r\n    storedState && Array.isArray(storedState.hideTextTypes)\r\n      ? [...storedState.hideTextTypes]\r\n      : [...defaultState.hideTextTypes],\r\n  presentationMode: false,\r\n  presentationScale:\r\n    storedState && typeof storedState.presentationScale === 'number'\r\n      ? Math.max(0.7, Math.min(1.8, storedState.presentationScale))\r\n      : defaultState.presentationScale,\r\n  presentationAutoFit:\r\n    storedState && typeof storedState.presentationAutoFit === 'boolean'\r\n      ? storedState.presentationAutoFit\r\n      : defaultState.presentationAutoFit,\r\n  presentationHideTextTypes:\r\n    storedState && Array.isArray(storedState.presentationHideTextTypes)\r\n      ? [...storedState.presentationHideTextTypes]\r\n      : [...defaultState.presentationHideTextTypes]\r\n});\r\n\r\nconst state: ReaderState = normalizeReaderState(StorageService.get('reader'));\r\n\r\nconst saveState = (state: ReaderState) => {\r\n  StorageService.save('reader', { ...state, readMode: false, presentationMode: false });\r\n};\r\n\r\nconst mutations: MutationTree<ReaderState> = {\r\n  setScale(state, scale) {\r\n    state.scale = scale;\r\n    saveState(state);\r\n  },\r\n\r\n  setReadMode(state, readMode) {\r\n    state.readMode = readMode;\r\n    saveState(state);\r\n  },\r\n\r\n  setPresentationMode(state, presentationMode) {\r\n    state.presentationMode = presentationMode;\r\n    saveState(state);\r\n  },\r\n\r\n  setPresentationScale(state, scale) {\r\n    state.presentationScale = Math.max(0.7, Math.min(1.8, Number(scale) || 1));\r\n    saveState(state);\r\n  },\r\n\r\n  setPresentationAutoFit(state, autoFit) {\r\n    state.presentationAutoFit = !!autoFit;\r\n    saveState(state);\r\n  },\r\n\r\n  switchPresentationTextTypeFilter(state, filter) {\r\n    state.presentationHideTextTypes = state.presentationHideTextTypes || [];\r\n    const index = state.presentationHideTextTypes.indexOf(filter);\r\n    if (index > -1) {\r\n      state.presentationHideTextTypes.splice(index, 1);\r\n    } else {\r\n      state.presentationHideTextTypes.push(filter);\r\n    }\r\n    saveState(state);\r\n  },\r\n\r\n  setColorMode(state, colorMode) {\r\n    state.colorMode = colorMode;\r\n    saveState(state);\r\n  },\r\n\r\n  setInterfaceLanguage(state, interfaceLanguage) {\r\n    state.interfaceLanguage = interfaceLanguage;\r\n    saveState(state);\r\n  },\r\n\r\n  setCatalogListScale(state, catalogListScale) {\r\n    Vue.set(state, 'catalogListScale', catalogListScale);\r\n    saveState(state);\r\n  },\r\n\r\n  toggleTextTypesFilter(state) {\r\n    Vue.set(state, 'isTextTypesFiltersVisible', !state.isTextTypesFiltersVisible);\r\n    saveState(state);\r\n  },\r\n\r\n  setTextTypesFilterVisible(state, visible) {\r\n    Vue.set(state, 'isTextTypesFiltersVisible', visible);\r\n    saveState(state);\r\n  },\r\n\r\n  switchTextTypeFilter(state, filter) {\r\n    state.hideTextTypes = state.hideTextTypes || [];\r\n    const index = state.hideTextTypes.indexOf(filter);\r\n    if (index > -1) {\r\n      state.hideTextTypes.splice(index, 1);\r\n    } else {\r\n      state.hideTextTypes.push(filter);\r\n    }\r\n    saveState(state);\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  mutations\r\n} as Module<ReaderState, RootState>;\r\n","import { ActionTree, GetterTree, Module, MutationTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\nimport SearchService, { SearchItem } from '@/services/Api/SearchService';\r\nimport router from '@/router';\r\nimport { Book, BookSection, Category } from '@/services/Navigation/types';\r\nimport ArrayService from '@/services/ArrayService';\r\nimport SearchScopeService from '@/services/SearchScopeService';\r\n\r\nexport interface SearchState {\r\n  advancedSearch: boolean;\r\n  inBookSearch: boolean;\r\n  results: Array<SearchItem>;\r\n  resultsCount: number;\r\n  priorityResults: null | object;\r\n  needUpdate: boolean;\r\n  loading: boolean;\r\n  error: boolean;\r\n}\r\n\r\nlet latestSearchRequestId = 0;\r\n\r\nconst actions: ActionTree<SearchState, RootState> = {\r\n  async fetchResults({ commit, getters, state }, { offset, perPage }) {\r\n    const requestId = ++latestSearchRequestId;\r\n    const { language } = router.currentRoute.params;\r\n    const { query } = router.currentRoute.query;\r\n    const searchOptions = getters.searchOptions;\r\n    commit('setError', false);\r\n    if (typeof query === 'string' && query) {\r\n      commit('setLoading', true);\r\n      try {\r\n        const hasSelectedScope = SearchScopeService.hasActiveScope(searchOptions);\r\n        const [searchResults, searchPriorityResults] = await Promise.all([\r\n          SearchService.search(language, query, {\r\n            size: perPage,\r\n            from: offset,\r\n            ...searchOptions\r\n          }),\r\n          hasSelectedScope ? Promise.resolve(null) : SearchService.getPriorityResults(language, query)\r\n        ]);\r\n        if (requestId !== latestSearchRequestId) {\r\n          return;\r\n        }\r\n        let { results } = searchResults.data;\r\n        const { total_results } = searchResults.data;\r\n        if (offset > 0) {\r\n          results = state.results.concat(results);\r\n        }\r\n        commit('setResults', results);\r\n        commit('setResultsCount', total_results);\r\n        commit('setPriorityResults', searchPriorityResults);\r\n      } catch (e) {\r\n        if (requestId === latestSearchRequestId) {\r\n          commit('setResults', []);\r\n          commit('setResultsCount', 0);\r\n          commit('setPriorityResults', null);\r\n          commit('setError', true);\r\n        }\r\n      } finally {\r\n        if (requestId === latestSearchRequestId) {\r\n          commit('setLoading', false);\r\n          commit('setNeedUpdate', false);\r\n        }\r\n      }\r\n    } else {\r\n      commit('setResults', []);\r\n      commit('setResultsCount', 0);\r\n      commit('setPriorityResults', null);\r\n      commit('setNeedUpdate', false);\r\n    }\r\n  }\r\n};\r\n\r\nconst state: SearchState = {\r\n  advancedSearch: false,\r\n  inBookSearch: false,\r\n  results: [],\r\n  resultsCount: 0,\r\n  priorityResults: null,\r\n  needUpdate: false,\r\n  loading: false,\r\n  error: false\r\n};\r\n\r\nconst mutations: MutationTree<SearchState> = {\r\n  setResults(state, items) {\r\n    state.results = items;\r\n  },\r\n  setResultsCount(state, resultsCount) {\r\n    state.resultsCount = resultsCount;\r\n  },\r\n  setPriorityResults(state, priorityResults) {\r\n    state.priorityResults = priorityResults;\r\n  },\r\n  setAdvancedSearch(state, advancedSearch) {\r\n    state.advancedSearch = advancedSearch;\r\n  },\r\n  setInBookSearch(state, inBookSearch) {\r\n    state.inBookSearch = inBookSearch;\r\n  },\r\n  setNeedUpdate(state, needUpdated) {\r\n    state.needUpdate = needUpdated;\r\n  },\r\n  setLoading(state, loading) {\r\n    state.loading = loading;\r\n  },\r\n  setError(state, error) {\r\n    state.error = error;\r\n  }\r\n};\r\n\r\nconst getters: GetterTree<SearchState, RootState> = {\r\n  searchOptions(state: SearchState, getters, rootState, rootGetters) {\r\n    const {\r\n      searchInPoem,\r\n      exact,\r\n      considerDiacritics,\r\n      equalizeWriting,\r\n      slug,\r\n      bookId,\r\n      inBookOnly,\r\n      bookSearch\r\n    } = router.currentRoute.query;\r\n    const { showSearchResultsFlag } = rootState.navigation;\r\n    const checkedBooks = rootGetters['navigation/checkedBooks'] as Array<Book>;\r\n    const checkedCategories = rootGetters['navigation/checkedCategories'] as Array<Category>;\r\n    const checkedBookSections = rootGetters['navigation/checkedBookSections'] as Array<BookSection>;\r\n    const navigationData = rootGetters['navigation/dataFromStateLanguage'] || {};\r\n    const navigationBooks = Object.values(navigationData.books || {}) as Array<Book>;\r\n    const foundBooks = Object.values(navigationData.foundBooks || {}) as Array<Book>;\r\n    const checkedFoundBooks = rootGetters['navigation/checkedFoundBooks'] as Array<Book>;\r\n    const checkedFoundBookSections = rootGetters['navigation/checkedFoundBookSections'] as Array<BookSection>;\r\n    const hasBookSlug = typeof slug === 'string' && !!slug;\r\n    const routeRequestsBookSearch = inBookOnly === '1' || bookSearch === '1';\r\n    const useBookScope = hasBookSlug && (state.inBookSearch || routeRequestsBookSearch);\r\n    const useSelectedScope = state.advancedSearch && !useBookScope;\r\n    const routeBookId = typeof bookId === 'string' ? parseInt(bookId, 10) : NaN;\r\n    const scopedBook = [...navigationBooks, ...foundBooks].find(book => book.slug === slug);\r\n    const scopedBookId = routeBookId > 0 ? routeBookId : scopedBook && scopedBook.id;\r\n\r\n    let booksIds: Array<number> = [];\r\n    if (useBookScope && scopedBookId) {\r\n      booksIds = [scopedBookId];\r\n    } else if (useSelectedScope) {\r\n      if (\r\n        showSearchResultsFlag &&\r\n        checkedFoundBooks.length &&\r\n        checkedFoundBooks.length !== foundBooks.length\r\n      ) {\r\n        booksIds = ArrayService.extractIds([...checkedBooks, ...checkedFoundBooks]) as Array<number>;\r\n      } else if (checkedBooks.length) {\r\n        booksIds = ArrayService.extractIds(checkedBooks) as Array<number>;\r\n      }\r\n    }\r\n\r\n    return {\r\n      book_slug: useBookScope && typeof slug === 'string' ? slug : '',\r\n      search_in_poem: !!searchInPoem,\r\n      exact: !!exact,\r\n      consider_diacritics: !!considerDiacritics,\r\n      equalize_writing: !!equalizeWriting,\r\n      books: booksIds,\r\n      categories: useSelectedScope ? ArrayService.extractIds(checkedCategories) : [],\r\n      book_sections: useSelectedScope\r\n        ? ArrayService.extractIds(\r\n            checkedFoundBookSections.length ? checkedFoundBookSections : checkedBookSections\r\n          )\r\n        : []\r\n    };\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  actions,\r\n  mutations,\r\n  getters\r\n} as Module<SearchState, RootState>;\r\n","import { Module, MutationTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\n\r\nexport interface SettingsState {\r\n  visible: boolean;\r\n}\r\n\r\nconst state: SettingsState = {\r\n  visible: false\r\n};\r\n\r\nconst mutations: MutationTree<SettingsState> = {\r\n  toggle(state: SettingsState) {\r\n    state.visible = !state.visible;\r\n  },\r\n  show(state: SettingsState) {\r\n    state.visible = true;\r\n  },\r\n  hide(state: SettingsState) {\r\n    state.visible = false;\r\n  }\r\n};\r\n\r\nexport const module = {\r\n  namespaced: true,\r\n  state,\r\n  mutations\r\n} as Module<SettingsState, RootState>;\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { module as auth, AuthState } from './modules/auth';\r\nimport { module as navigation, NavigationState } from './modules/navigation';\r\nimport { module as tabs, TabsState } from './modules/tabs';\r\nimport { module as user, UserState } from './modules/user';\r\nimport { module as reader, ReaderState } from './modules/reader';\r\nimport { module as search, SearchState } from '@/store/modules/search';\r\nimport { module as settings, SettingsState } from '@/store/modules/settings';\r\nimport { module as bookmarks, BookmarksState } from '@/store/modules/bookmarks';\r\n\r\nexport interface RootState {\r\n  loading: boolean;\r\n  auth: AuthState;\r\n  navigation: NavigationState;\r\n  tabs: TabsState;\r\n  user: UserState;\r\n  reader: ReaderState;\r\n  search: SearchState;\r\n  settings: SettingsState;\r\n  bookmarks: BookmarksState;\r\n  route: any;\r\n}\r\n\r\nVue.use(Vuex);\r\n\r\nexport const store = new Vuex.Store({\r\n  state: <RootState>{\r\n    loading: false\r\n  },\r\n  mutations: {\r\n    startLoading(state) {\r\n      state.loading = true;\r\n    },\r\n    stopLoading(state) {\r\n      state.loading = false;\r\n    }\r\n  },\r\n  modules: {\r\n    auth,\r\n    navigation,\r\n    tabs,\r\n    user,\r\n    reader,\r\n    search,\r\n    settings,\r\n    bookmarks\r\n  }\r\n});\r\n","import { TranslationStrings } from '@/translations/types';\r\n\r\nconst ru: TranslationStrings = {\r\n  defaultErrorMessage: 'Ошибка соединения. Проверьте сетевое подключение и попробуйте снова.',\r\n  onLanguageRu: 'на русском',\r\n  onLanguageEn: 'на английском',\r\n  onLanguageSt: 'на санскрите',\r\n  onLanguageCatalogRu: 'на русском',\r\n  onLanguageCatalogEn: 'на английском',\r\n  onLanguageCatalogSt: 'на санскрите',\r\n  russian: 'Русский',\r\n  english: 'Английский',\r\n  submit: 'Отправить',\r\n  save: 'Сохранить',\r\n  cancel: 'Отменить',\r\n  all: 'Все',\r\n  change: 'Изменить',\r\n  logout: 'Выйти',\r\n  profile: 'Профиль',\r\n  close: 'Закрыть',\r\n  open: 'Открыть',\r\n  edit: 'Правка',\r\n  show: 'Показывать',\r\n  help: 'Помощь',\r\n  refresh: 'Обновить',\r\n  navigation: 'Навигация',\r\n  library: 'Библиотека',\r\n  search: 'Поиск',\r\n  continueReading: 'Продолжить',\r\n  reading: 'Чтение',\r\n  bookmarks: 'Закладки',\r\n  bookmark: 'Закладка',\r\n  addBookmarkHere: 'Положить закладку',\r\n  moveBookmarkHere: 'Переместить сюда',\r\n  deleteBookmark: 'Удалить закладку',\r\n  bookmarkNotePlaceholder: 'Пометка к закладке (необязательно)',\r\n  moreActions: 'Другие действия',\r\n  noBookmarks: 'Здесь появятся сохранённые места чтения.',\r\n  tableOfContents: 'Оглавление',\r\n  searchInBook: 'Поиск по книге',\r\n  backToBook: 'Вернуться к книге',\r\n  backToPreviousText: 'Вернуться к предыдущему тексту',\r\n  backToReading: 'Вернуться к чтению',\r\n  connectionLost: 'Интернет-соединение потеряно',\r\n  connectionLostDescription: 'Некоторые данные могут не загрузиться. Проверьте подключение к сети.',\r\n  connectionRestored: 'Соединение восстановлено',\r\n\r\n  // login\r\n  loginCaption: 'Вход в систему',\r\n  yourEmail: 'Е-mail адрес',\r\n  enterYourEmail: 'Введите e-mail адрес',\r\n  password: 'Пароль',\r\n  forgotPassword: 'Забыли пароль?',\r\n  repeatPassword: 'Пароль еще раз',\r\n  rememberMe: 'Запомнить меня',\r\n  signIn: 'Войти',\r\n  registration: 'Регистрация',\r\n  registrationVerifyEmail: 'На ваш email отправлена ссылка для подтверждения email.',\r\n  authorization: 'Авторизация',\r\n  verifyEmail: 'Подтверждение email',\r\n  verifyEmailIsNotVerified:\r\n    'Ваш email не подтвержден. Вы можете повторно отправить ссылку подтверждения на email, указанный при регистрации.',\r\n  verifyEmailFail: 'Не удалось подтвердить email по запрошенному коду',\r\n  name: 'Имя',\r\n  lastName: 'Фамилия',\r\n  spiritualName: 'Духовное имя',\r\n  fillIfExists: '(укажите если есть)',\r\n  accessCode: 'Код доступа',\r\n  resetPassword: 'Сбросить пароль',\r\n  token: 'Токен',\r\n  tooManyRequests: 'Слишком много запросов. Попробуйте обновить страницу чуть позднее.',\r\n\r\n  // settings\r\n  settings: 'Настройки',\r\n\r\n  // catalogs\r\n  catalogsUpdate: 'Обновление каталогов',\r\n  book: 'Книга',\r\n  bookInCategories: 'Книга в категориях',\r\n  books: 'Книги',\r\n  errorOccurred: 'Произошла ошибка.',\r\n  tryToRefreshPage: 'Попробуйте обновить страницу.',\r\n  selectSearchAreaInCatalog: 'Выбрать область поиска в каталоге',\r\n  showBooksCatalog: 'Показать каталог книг',\r\n  found: 'Найдено',\r\n  foundBooks: 'Книг',\r\n  selectAll: 'Выбрать все',\r\n  reset: 'Сбросить',\r\n  collapse: 'Свернуть',\r\n  collapseAllBranches: 'Свернуть все ветки',\r\n  catalogSearch: 'Поиск по каталогу',\r\n\r\n  filterCategories: 'Категории',\r\n  filterAuthors: 'Авторы',\r\n  filterBooks: 'Названия',\r\n\r\n  newTab: 'Новая вкладка',\r\n  useSearch: 'Воспользуйтесь поиском',\r\n  orOpenBookInCatalog: 'или откройте любую книгу из каталога',\r\n  above: 'сверху',\r\n  onLeft: 'слева',\r\n  noSearchResults: 'К сожалению по вашему запросу ничего не найдено.',\r\n  changeQuery: 'Попробуйте изменить запрос, или уточнить условия поиска.',\r\n  downloadFile: 'Скачать файл',\r\n  read: 'Читать',\r\n  linkedBooks: 'Связанные книги',\r\n  otherPublishings: 'Другие издания',\r\n  outputData: 'Выходные данные',\r\n  bookTitle: 'Название',\r\n  bookOriginalTitle: 'Оригинальное название',\r\n  bookTranslation: 'Язык перевода',\r\n  translator: 'Переводчик',\r\n  editor: 'Редактор',\r\n  publisher: 'Издательство',\r\n  publishingYear: 'Год издания',\r\n  pagesAmount: 'Количество страниц',\r\n  printRun: 'Тираж',\r\n  author: 'Автор',\r\n  authors: 'Авторы',\r\n  commentator: 'Комментатор',\r\n  commentators: 'Комментаторы',\r\n  translation: 'Перевод',\r\n  wordByWordTranslation: 'Пословный перевод',\r\n  comment: 'Комментарий',\r\n  sanskrit: 'Санскрит',\r\n  diacritic: 'Диакритика',\r\n  advancedSearch: 'Расширенный поиск',\r\n  history: 'История',\r\n  inBookOnly: 'Только по книге',\r\n  booksSelected: 'Выбрано книг',\r\n  searchScope: 'Область поиска',\r\n  searchEverywhere: 'Везде',\r\n  searchPoems: 'Стихи',\r\n  resetSettings: 'Сбросить настройки',\r\n  exactPhrase: 'Точная фраза',\r\n  considerDiacritics: 'Учитывать дикритику',\r\n  equalizeWriting: 'Уравнять написание',\r\n  searchOperatorsHelper: 'Справочник операторов поиска',\r\n  aboutBook: 'О книге',\r\n  bookSection: 'Раздел',\r\n  bookChapter: 'Глава',\r\n  bookPoem: 'Стих',\r\n  colorTheme: 'Цветовой режим',\r\n  colorThemeLight: 'Светлая',\r\n  colorThemeMixed: 'Мягкая',\r\n  colorThemeDark: 'Тёмная',\r\n  scale: 'Масштаб',\r\n  clearList: 'Очистить список',\r\n  enterNewAddress: 'Для изменения введите новый адрес в поле',\r\n  newPassword: 'Новый пароль',\r\n  repeatNewPassword: 'Новый пароль еще раз',\r\n  toChangePasswordEnterNewPassword: 'Для изменения пароля введите новый пароль в каждое поле',\r\n  enterPersonalData: 'Изменить личные данные',\r\n  changePassword: 'Изменить пароль',\r\n  note: 'Примечание',\r\n\r\n  exitReadingMode: 'Выйти из режима чтения',\r\n  presentationMode: 'Режим показа',\r\n  exitPresentationMode: 'Завершить показ',\r\n  presentationSettings: 'Настройки показа',\r\n  fitToScreen: 'Вместить на экран',\r\n  previousSection: 'Предыдущий текст',\r\n  nextSection: 'Следующий текст',\r\n  textSettings: 'Настройки текста',\r\n  logOutAreYouSure: 'Вы действительно хотите выйти из системы?',\r\n  news: 'Новости',\r\n  recentlyViewedBooks: 'Недавно просмотренные книги',\r\n  searchQueries: 'Поисковые запросы',\r\n\r\n  enterSearchQuery: 'Введите запрос',\r\n  inNewTab: 'В новой вкладке',\r\n  inCurrentTab: 'В текущей',\r\n  interfaceLanguage: 'Язык интерфейса',\r\n  structureScale: 'Плотность каталога',\r\n  textScale: 'Размер текста (масштаб)',\r\n  textExample: 'Пример текста',\r\n  tablet: 'Крупно',\r\n  pc: 'Компактно',\r\n  auto: 'Авто',\r\n  booksInWhichPoemWasMentioned: 'Книги, в которых упоминается стих',\r\n  searchHistory: 'История поиска',\r\n  searchHistoryEmpty: 'История поиска пока пуста',\r\n  allResults: 'Все результаты',\r\n  showAllList: 'Смотреть весь список',\r\n  showOnEnglishLanguage: 'Показать на английском языке',\r\n  showOnRussianLanguage: 'Показать на русском языке',\r\n  textInOtherBooks: 'Текст <b>%bookName% — %currentSectionSlug%</b> в других книгах',\r\n  textInOtherBooksAction: 'Этот стих в других книгах',\r\n  searchHelp: `<div class=\"help-col\">\r\n      <p>Логические операторы: AND — и, OR — или, NOT — не</p>\r\n      <div class=\"help-example\">Примеры:</div>\r\n      <p>\r\n        <b>А AND Б</b> — содержит А и Б<br />\r\n        <b>А OR Б</b> — содержит или А или Б<br />\r\n        <b>NOT А</b> — не содержит А\r\n      </p>\r\n      <br />\r\n      <p>Используйте ? для замены одного символа в слове</p>\r\n      <div class=\"help-example\">Примеры:</div>\r\n      <p><b>Ра?а</b> — Рага, Рама, Рака...</p>\r\n    </div>\r\n    <div class=\"help-col\">\r\n      <p>\r\n        В пределах N слов в строгом порядке: “А Б В”/N <br />\r\n        или не в строгом: “А Б В”@N\r\n      </p>\r\n      <div class=\"help-example\">Примеры:</div>\r\n      <p>\r\n        “А Б”/5 — А Б на расстоянии 5 слов<br />\r\n        “А Б”@5 — А Б или Б А на расстоянии 5 слов\r\n      </p>\r\n      <br />\r\n      <p>Используйте * для нескольких символов</p>\r\n      <div class=\"help-example\">Примеры:</div>\r\n      <p>Гаур* — Гаури, Гаура, Гауранга... *швара — Ишвара, Парамешвара</p>\r\n    </div>`\r\n};\r\n\r\nexport default ru;\r\n","import { TranslationStrings } from '@/translations/types';\r\n\r\nconst en: TranslationStrings = {\r\n  defaultErrorMessage: 'Ошибка соединения. Проверьте сетевое подключение и попробуйте снова.',\r\n  onLanguageRu: 'on Russian',\r\n  onLanguageEn: 'on English',\r\n  onLanguageSt: 'on Sanskrit',\r\n  onLanguageCatalogRu: 'Russian',\r\n  onLanguageCatalogEn: 'English',\r\n  onLanguageCatalogSt: 'Sanskrit',\r\n  russian: 'Russian',\r\n  english: 'English',\r\n  submit: 'Submit',\r\n  save: 'Save',\r\n  cancel: 'Cancel',\r\n  all: 'All',\r\n  change: 'Change',\r\n  logout: 'Log out',\r\n  profile: 'Profile',\r\n  close: 'Close',\r\n  open: 'Open',\r\n  edit: 'Edit',\r\n  show: 'Show',\r\n  refresh: 'Refresh',\r\n  navigation: 'Navigation',\r\n  library: 'Library',\r\n  search: 'Search',\r\n  continueReading: 'Continue',\r\n  reading: 'Reading',\r\n  bookmarks: 'Bookmarks',\r\n  bookmark: 'Bookmark',\r\n  addBookmarkHere: 'Bookmark this place',\r\n  moveBookmarkHere: 'Move here',\r\n  deleteBookmark: 'Delete bookmark',\r\n  bookmarkNotePlaceholder: 'Bookmark note (optional)',\r\n  moreActions: 'More actions',\r\n  noBookmarks: 'Your saved reading places will appear here.',\r\n  tableOfContents: 'Contents',\r\n  searchInBook: 'Search this book',\r\n  backToBook: 'Back to book',\r\n  backToPreviousText: 'Back to the previous text',\r\n  backToReading: 'Back to reading',\r\n  connectionLost: 'Internet connection lost',\r\n  connectionLostDescription: 'Some data may not load. Check your network connection.',\r\n  connectionRestored: 'Connection restored',\r\n\r\n  // login\r\n  loginCaption: 'Login',\r\n  yourEmail: 'Your e-mail',\r\n  enterYourEmail: 'Enter your e-mail',\r\n  password: 'Password',\r\n  forgotPassword: 'Forgot password?',\r\n  repeatPassword: 'Repeat password',\r\n  rememberMe: 'Remember me',\r\n  signIn: 'Sign in',\r\n  registration: 'Registration',\r\n  registrationVerifyEmail: 'Confirmation link has been sent to your email.',\r\n  authorization: 'Authorization',\r\n  verifyEmail: 'Verify email',\r\n  verifyEmailIsNotVerified:\r\n    'Your email is not verified. You can resend verification link to the email specified in registration.',\r\n  verifyEmailFail: 'Could not verify email by requested code',\r\n  name: 'Name',\r\n  lastName: 'Last Name',\r\n  spiritualName: 'Spiritual Name',\r\n  fillIfExists: '(if you have one)',\r\n  accessCode: 'Access code',\r\n  resetPassword: 'Reset password',\r\n  token: 'Token',\r\n  help: 'Help',\r\n  tooManyRequests: 'Too many requests. Please try to refresh the page a bit later.',\r\n\r\n  // settings\r\n  settings: 'Settings',\r\n\r\n  // catalogs\r\n  catalogsUpdate: 'Catalogs update',\r\n  book: 'Book',\r\n  bookInCategories: 'Book in categories',\r\n  books: 'Books',\r\n  errorOccurred: 'Error occurred.',\r\n  tryToRefreshPage: 'Please, try to refresh the page',\r\n  selectSearchAreaInCatalog: 'Select search area in the catalog',\r\n  showBooksCatalog: 'Show books catalog',\r\n  found: 'Found',\r\n  foundBooks: 'Books',\r\n  selectAll: 'Select all',\r\n  reset: 'Reset',\r\n  collapse: 'Collapse',\r\n  collapseAllBranches: 'Collapse all',\r\n  catalogSearch: 'Catalog search',\r\n\r\n  filterCategories: 'Categories',\r\n  filterAuthors: 'Authors',\r\n  filterBooks: 'Books',\r\n\r\n  newTab: 'New tab',\r\n  useSearch: 'Please try to use search',\r\n  orOpenBookInCatalog: 'or open a book in the catalog',\r\n  above: 'above',\r\n  onLeft: 'on the left side',\r\n  noSearchResults: 'Unfortunately your search returned no results.',\r\n  changeQuery: 'Please try to change search query or specify search conditions',\r\n  downloadFile: 'Download file',\r\n  read: 'Read',\r\n  linkedBooks: 'Linked books',\r\n  otherPublishings: 'Other publishings',\r\n  outputData: 'Output data',\r\n  bookTitle: 'Title',\r\n  bookOriginalTitle: 'Original title',\r\n  bookTranslation: 'Translation language',\r\n  translator: 'Translator',\r\n  editor: 'Editor',\r\n  publisher: 'Publisher',\r\n  publishingYear: 'Publishing year',\r\n  pagesAmount: 'Pages amount',\r\n  printRun: 'Print run',\r\n  author: 'Author',\r\n  authors: 'Authors',\r\n  commentator: 'Commentator',\r\n  commentators: 'Commentators',\r\n  translation: 'Translation',\r\n  wordByWordTranslation: 'Word by word translation',\r\n  comment: 'Comment',\r\n  sanskrit: 'Sanskrit',\r\n  diacritic: 'Diacritic',\r\n  advancedSearch: 'Advanced search',\r\n  history: 'History',\r\n  inBookOnly: 'Search in book',\r\n  booksSelected: 'Books selected',\r\n  searchScope: 'Search scope',\r\n  searchEverywhere: 'Everywhere',\r\n  searchPoems: 'Poems',\r\n  resetSettings: 'Reset settings',\r\n  exactPhrase: 'Exact phrase',\r\n  considerDiacritics: 'Consider diacritics',\r\n  equalizeWriting: 'Equalize writing',\r\n  searchOperatorsHelper: 'Search operators helper',\r\n  aboutBook: 'About book',\r\n  bookSection: 'Section',\r\n  bookChapter: 'Chapter',\r\n  bookPoem: 'Poem',\r\n  colorTheme: 'Color theme',\r\n  colorThemeLight: 'Light',\r\n  colorThemeMixed: 'Soft',\r\n  colorThemeDark: 'Dark',\r\n  scale: 'Scale',\r\n  clearList: 'Clear list',\r\n  enterNewAddress: 'Enter new address',\r\n  newPassword: 'New password',\r\n  repeatNewPassword: 'New password again',\r\n  toChangePasswordEnterNewPassword: 'Enter new password in each field',\r\n  enterPersonalData: 'Edit personal data',\r\n  changePassword: 'Change password',\r\n  note: 'Note',\r\n\r\n  exitReadingMode: 'Exit reading mode',\r\n  presentationMode: 'Presentation mode',\r\n  exitPresentationMode: 'End presentation',\r\n  presentationSettings: 'Presentation settings',\r\n  fitToScreen: 'Fit to screen',\r\n  previousSection: 'Previous text',\r\n  nextSection: 'Next text',\r\n  textSettings: 'Text settings',\r\n  logOutAreYouSure: 'Are you sure you want to log out?',\r\n  news: 'News',\r\n  recentlyViewedBooks: 'Recently viewed books',\r\n  searchQueries: 'Search queries',\r\n\r\n  enterSearchQuery: 'Enter search query',\r\n  inNewTab: 'In new tab',\r\n  inCurrentTab: 'In current',\r\n  interfaceLanguage: 'Interface language',\r\n  structureScale: 'Catalog density',\r\n  textScale: 'Text scale',\r\n  textExample: 'Text preview',\r\n  tablet: 'Comfortable',\r\n  pc: 'Compact',\r\n  auto: 'Auto',\r\n  booksInWhichPoemWasMentioned: 'Books, in which poem was mentioned',\r\n  searchHistory: 'Search history',\r\n  searchHistoryEmpty: 'Your search history is empty',\r\n  allResults: 'All results',\r\n  showAllList: 'Show all list',\r\n  showOnEnglishLanguage: 'Show on english language',\r\n  showOnRussianLanguage: 'Show on russian language',\r\n  textInOtherBooks: 'Text <b>%bookName% — %currentSectionSlug%</b> in other books',\r\n  textInOtherBooksAction: 'This verse in other books',\r\n  searchHelp: `<div class=\"help-col\">\r\n      <p>Logic operators: AND, OR, NOT</p>\r\n      <div class=\"help-example\">Examples:</div>\r\n      <p>\r\n        <b>A AND B</b> — includes A and B<br />\r\n        <b>A OR B</b> — includes either A or B<br />\r\n        <b>NOT A</b> — do not includes A\r\n      </p>\r\n      <br />\r\n      <p>Use ? to replace a letter in a word</p>\r\n      <div class=\"help-example\">Examples:</div>\r\n      <p><b>Ra?a</b> — Raga, Rama, Raka...</p>\r\n    </div>\r\n    <div class=\"help-col\">\r\n      <p>\r\n        In N words in strict order: “A B C”/N <br />\r\n        or not strict order “A B C”@N\r\n      </p>\r\n      <div class=\"help-example\">Examples:</div>\r\n      <p>\r\n        “A B”/5 — A B in 5 words distance<br />\r\n        “А B”@5 — A B or B A in 5 words distance\r\n      </p>\r\n      <br />\r\n      <p>Use * for several letters</p>\r\n      <div class=\"help-example\">Examples:</div>\r\n      <p>Gaur* — Gauri, Gaura, Gauranga... *shvara — Ishvara, Parameshvara</p>\r\n    </div>`\r\n};\r\n\r\nexport default en;\r\n","import { TranslationStrings } from '@/translations/types';\r\nimport ru from './ru';\r\nimport en from './en';\r\n\r\ninterface Translations {\r\n  [language: string]: TranslationStrings;\r\n}\r\n\r\nexport const translations: Translations = { ru, en };\r\n","import { store } from '@/store';\r\nimport { LANGUAGE_CODE_DEFAULT } from '@/constants';\r\nimport { translations } from '@/translations';\r\nimport { TranslationStrings } from '@/translations/types';\r\n\r\nexport const getTranslation = (key: keyof TranslationStrings) => {\r\n  const interfaceLanguage = store.state.reader.interfaceLanguage || LANGUAGE_CODE_DEFAULT;\r\n\r\n  return translations[interfaceLanguage][key] || '';\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport IconInfo from '@/assets/icons/info.svg';\r\nimport { getTranslation } from '@/services/Translation';\r\n\r\ntype ConnectionState = '' | 'offline' | 'restored';\r\n\r\n@Component({ components: { IconInfo } })\r\nexport default class ConnectionStatus extends Vue {\r\n  status: ConnectionState = '';\r\n  wasOffline = false;\r\n  restoreTimer?: number;\r\n  getTranslation = getTranslation;\r\n\r\n  mounted() {\r\n    window.addEventListener('offline', this.handleOffline);\r\n    window.addEventListener('online', this.handleOnline);\r\n    if (!window.navigator.onLine) {\r\n      this.handleOffline();\r\n    }\r\n  }\r\n\r\n  beforeDestroy() {\r\n    window.removeEventListener('offline', this.handleOffline);\r\n    window.removeEventListener('online', this.handleOnline);\r\n    this.clearRestoreTimer();\r\n  }\r\n\r\n  get title() {\r\n    this.$store.state.reader.interfaceLanguage;\r\n    return getTranslation(this.status === 'restored' ? 'connectionRestored' : 'connectionLost');\r\n  }\r\n\r\n  handleOffline() {\r\n    this.clearRestoreTimer();\r\n    this.wasOffline = true;\r\n    this.status = 'offline';\r\n  }\r\n\r\n  handleOnline() {\r\n    if (!this.wasOffline) {\r\n      return;\r\n    }\r\n    this.wasOffline = false;\r\n    this.status = 'restored';\r\n    this.clearRestoreTimer();\r\n    this.restoreTimer = window.setTimeout(() => {\r\n      this.status = '';\r\n      this.restoreTimer = undefined;\r\n    }, 3200);\r\n  }\r\n\r\n  clearRestoreTimer() {\r\n    if (this.restoreTimer !== undefined) {\r\n      window.clearTimeout(this.restoreTimer);\r\n      this.restoreTimer = undefined;\r\n    }\r\n  }\r\n}\r\n","import mod from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../../../frontend/node_modules/babel-loader/lib/index.js!../../../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConnectionStatus.vue?vue&type=template&id=2d0ef65f&scoped=true&\"\nimport script from \"./ConnectionStatus.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConnectionStatus.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ConnectionStatus.vue?vue&type=style&index=0&id=2d0ef65f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../frontend/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2d0ef65f\",\n  null\n  \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Loader from './components/ui/Loader.vue';\r\nimport ConnectionStatus from './components/ui/ConnectionStatus.vue';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component({\r\n  components: { ConnectionStatus, Loader }\r\n})\r\nexport default class App extends Vue {\r\n  loading: boolean;\r\n\r\n  constructor() {\r\n    super();\r\n    this.loading = this.$store.state.loading;\r\n  }\r\n\r\n  created() {\r\n    this.$store.subscribe((mutation, state) => {\r\n      if (['startLoading', 'stopLoading'].includes(mutation.type)) {\r\n        this.loading = state.loading;\r\n      }\r\n    });\r\n  }\r\n}\r\n","import mod from \"-!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../frontend/node_modules/babel-loader/lib/index.js!../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../frontend/node_modules/thread-loader/dist/cjs.js!../../../frontend/node_modules/babel-loader/lib/index.js!../../../frontend/node_modules/ts-loader/index.js??ref--14-3!../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../frontend/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=05ff94b3&\"\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 \"!../../../frontend/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';\r\nimport App from './App.vue';\r\nimport router from './router';\r\nimport { store } from './store';\r\nimport { sync } from 'vuex-router-sync';\r\n\r\nVue.config.productionTip = false;\r\n\r\nconst unsync = sync(store, router); // done. Returns an unsync callback fn\r\n\r\nnew Vue({\r\n  router,\r\n  store,\r\n  render: h => h(App)\r\n}).$mount('#app');\r\n\r\n// unsync();\r\n","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=b0147066&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=b0147066&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemIcon.vue?vue&type=style&index=0&id=14d0350d&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./NavItemIcon.vue?vue&type=style&index=0&id=14d0350d&scoped=true&lang=scss&\"","import mod from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=0ddde9cb&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=0ddde9cb&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=51e6b620&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=51e6b620&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarRelated.vue?vue&type=style&index=0&id=25b64716&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBarRelated.vue?vue&type=style&index=0&id=25b64716&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBar.vue?vue&type=style&index=0&id=36395ba8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./BottomBar.vue?vue&type=style&index=0&id=36395ba8&scoped=true&lang=scss&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=edc7952c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=edc7952c&lang=scss&scoped=true&\"","import mod from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=style&index=0&id=497a030c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../frontend/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../frontend/node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../frontend/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../frontend/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../frontend/node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../frontend/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../frontend/node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=style&index=0&id=497a030c&scoped=true&lang=scss&\""],"sourceRoot":""}