1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="b5644c40-3b8e-a319-3704-0f9303f2b6d1")}catch(e){}}(); 2(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,831478,e=>{e.v({buttons:"ConfirmModal-module__Q1mu6W__buttons",cancelButton:"ConfirmModal-module__Q1mu6W__cancelButton",confirmButton:"ConfirmModal-module__Q1mu6W__confirmButton",danger:"ConfirmModal-module__Q1mu6W__danger",loading:"ConfirmModal-module__Q1mu6W__loading",message:"ConfirmModal-module__Q1mu6W__message",spin:"ConfirmModal-module__Q1mu6W__spin",spinner:"ConfirmModal-module__Q1mu6W__spinner"})},460159,326823,e=>{"use strict";var t=e.i(848277),r=e.i(903070),o=e.i(831478);let s=()=>{};function n({isOpen:e,onClose:n,onConfirm:i,title:a,message:l,confirmText:u="ÐодÑвеÑдиÑÑ",cancelText:d="ÐÑмена",confirmButtonStyle:c="primary",isLoading:m=!1,loadingText:f="ÐагÑÑзка..."}){let h=(0,t.jsxs)("div",{className:o.default.buttons,children:[d?(0,t.jsx)("button",{className:o.default.cancelButton,onClick:n,disabled:m,children:d}):null,(0,t.jsx)("button",{className:`${o.default.confirmButton} ${"danger"===c?o.default.danger:""} ${m?o.default.loading:""}`,onClick:i,disabled:m,children:m?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:o.default.spinner}),f]}):u})]});return(0,t.jsx)(r.default,{isOpen:e,onClose:m?s:n,title:a,hideClose:!0,footer:h,zIndex:1e4,children:(0,t.jsx)("pre",{className:o.default.message,children:l})})}e.s(["default",()=>n],326823),e.s([],460159)},535111,e=>{"use strict";e.s(["logger",0,{log:(...e)=>{},error:(...e)=>{},warn:(...e)=>{}}])},915995,e=>{e.v({closeButton:"Modal-module__WM7rSG__closeButton",content:"Modal-module__WM7rSG__content",footer:"Modal-module__WM7rSG__footer",header:"Modal-module__WM7rSG__header",modal:"Modal-module__WM7rSG__modal",modalAppear:"Modal-module__WM7rSG__modalAppear",modalLg:"Modal-module__WM7rSG__modalLg",modalSm:"Modal-module__WM7rSG__modalSm",overlay:"Modal-module__WM7rSG__overlay",overlayFade:"Modal-module__WM7rSG__overlayFade",title:"Modal-module__WM7rSG__title"})},903070,e=>{"use strict";var t=e.i(848277),r=e.i(330668),o=e.i(915995);function s({isOpen:e,onClose:s,title:n,children:i,footer:a,size:l="md",hideClose:u=!1,zIndex:d=1e3}){let c=(0,r.useId)();if((0,r.useEffect)(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="unset",()=>{document.body.style.overflow="unset"}),[e]),(0,r.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&s()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,s]),!e)return null;let m="sm"===l?o.default.modalSm:"lg"===l?o.default.modalLg:"";return(0,t.jsx)("div",{className:o.default.overlay,onClick:s,style:1e3!==d?{zIndex:d}:void 0,children:(0,t.jsxs)("div",{className:`${o.default.modal} ${m}`,onClick:e=>e.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":c,children:[(0,t.jsxs)("div",{className:o.default.header,children:[(0,t.jsx)("h2",{className:o.default.title,id:c,children:n}),!u&&(0,t.jsx)("button",{className:o.default.closeButton,onClick:s,"aria-label":"ÐакÑÑÑÑ",children:(0,t.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,t.jsx)("path",{d:"M5 5L15 15M5 15L15 5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),(0,t.jsx)("div",{className:o.default.content,children:i}),a?(0,t.jsx)("div",{className:o.default.footer,children:a}):null]})})}e.s(["default",()=>s])},768776,e=>{"use strict";var t=e.i(535111);let r=!1,o=null,s=null,n=null;function i(){return r}function a(){r=!1}function l(){r=!0}function u(){localStorage.removeItem("rememberMe"),localStorage.removeItem("user"),sessionStorage.removeItem("auth_user"),sessionStorage.removeItem("viewToken"),localStorage.setItem("auth_logout_event",Date.now().toString()),localStorage.removeItem("auth_logout_event"),o&&(clearTimeout(o),o=null),s&&(clearTimeout(s),s=null),n&&(clearTimeout(n),n=null)}function d(){{let e=new URLSearchParams(window.location.search).get("viewToken");if(e)return sessionStorage.setItem("viewToken",e),e;let t=sessionStorage.getItem("viewToken");if(t&&"null"!==t&&"[object Object]"!==t)return t}return"cookie"}function c(){if("u"<typeof document)return()=>{};let e=()=>{o&&clearTimeout(o),o=setTimeout(()=>{u(),window.location.href="/login?session=expired"},36e5)},t=()=>{n&&clearTimeout(n),n=setTimeout(e,1e3)};e();let r=["mousedown","keydown","scroll","touchstart"];
2return r.forEach(e=>{document.addEventListener(e,t,!0)}),()=>{r.forEach(e=>{document.removeEventListener(e,t,!0)}),o&&(clearTimeout(o),o=null)}}function m(e){s&&clearTimeout(s),s=setTimeout(()=>void(async()=>{try{await e()}catch(e){t.logger.error("Token refresh failed:",e)}})(),78e4)}e.s(["clearAuthToken",()=>u,"getAuthToken",()=>d,"isAuthSessionExpired",()=>i,"resetSessionExpired",()=>a,"scheduleTokenRefresh",()=>m,"setSessionExpired",()=>l,"startActivityMonitor",()=>c])},399299,e=>{"use strict";let t=!1,r=[];function o(){return t}function s(e){t=e}function n(){return new Promise(e=>{r.push(e)})}function i(e){r.splice(0).forEach(t=>t(e))}e.s(["getIsRefreshing",()=>o,"notifyRefreshSubscribers",()=>i,"setIsRefreshing",()=>s,"subscribeToRefresh",()=>n])},861764,511025,828902,851451,e=>{"use strict";e.i(639057);var t=e.i(535111),r=e.i(768776);async function o(){if((0,r.isAuthSessionExpired)())return"";try{let e=await fetch("/api/csrf-token",{credentials:"include"});if(e.ok){let t=await e.json();if(t.csrfToken)return t.csrfToken}}catch(e){}return""}async function s(){return await o()}e.s(["fetchCsrfToken",()=>o,"getCsrfToken",()=>s],511025);var n=e.i(399299);function i(e,t,r){let o=Error(e);return o.response={status:t,data:r},o}async function a(e,t,o){if(e.includes("/auth/refresh-token"))return null;if((0,n.getIsRefreshing)())return await (0,n.subscribeToRefresh)()?await fetch(e,{...t,headers:o,credentials:"include"}):null;(0,n.setIsRefreshing)(!0);try{if((await fetch("/api/auth/refresh-token",{method:"POST",credentials:"include"})).ok)return(0,n.notifyRefreshSubscribers)(!0),await fetch(e,{...t,headers:o,credentials:"include"});(0,r.setSessionExpired)(),(0,r.clearAuthToken)(),(0,n.notifyRefreshSubscribers)(!1),"/login"!==window.location.pathname&&(window.location.href="/login?session=expired")}catch(e){(0,r.setSessionExpired)(),(0,r.clearAuthToken)(),(0,n.notifyRefreshSubscribers)(!1)}finally{(0,n.setIsRefreshing)(!1)}return null}async function l(s,n={}){if((0,r.isAuthSessionExpired)())throw Error("Session expired");let u=(0,r.getAuthToken)(),d={...n.headers};u&&"cookie"!==u&&(d.Authorization=`Bearer ${u}`);let c=n.method?.toUpperCase()??"GET";if(["POST","PUT","DELETE","PATCH"].includes(c)){let e=await o();if(e)d["X-CSRF-Token"]=e;else{t.logger.error("[fetchWithAuth] No CSRF token for",c,s);let e=await o();e&&(d["X-CSRF-Token"]=e)}}try{let o=await fetch(s,{...n,headers:d,credentials:"include"}).catch(r=>{if("Failed to fetch"===r.message)throw e.A(57691).then(({showServerUnavailable:e})=>e()).catch(()=>t.logger.error("[Auth] Server unavailable")),Error("SERVER_UNAVAILABLE");throw r});if(401===o.status){let e=await a(s,n,d);if(e)return e;let t=await o.json().catch(()=>({}));throw!function(e,t){if(!("/login"===window.location.pathname||(0,r.isAuthSessionExpired)())){if(new URLSearchParams(window.location.search).has("viewToken"))return window.close();e.includes("/2fa/")||((0,r.clearAuthToken)(),(0,r.setSessionExpired)(),t.sessionTerminated?(sessionStorage.setItem("authError","session_terminated"),window.location.href="/login?session=terminated"):t.require2FA?(sessionStorage.setItem("authError","require_2fa"),window.location.href="/login?session=2fa"):(sessionStorage.setItem("authError","session_expired"),window.location.href="/login?session=expired"))}}(s,t),Error("Unauthorized")}if(403===o.status){var m;let e=await o.json().catch(()=>({}));if(!1===e.emailVerified||"EMAIL_NOT_VERIFIED"===e.message)return o;if(e.temporaryBlock)throw window.dispatchEvent(new CustomEvent("temporaryBlock",{detail:{message:e.message??"ÐÐ°Ñ Ð°ÐºÐºÐ°ÑÐ½Ñ Ð²Ñеменно заблокиÑован"}})),i(e.message??"ÐккаÑÐ½Ñ Ð²Ñеменно заблокиÑован",403,e);if(e.trialExpired)throw window.dispatchEvent(new CustomEvent("trialExpired")),i("TRIAL_EXPIRED",403,e);if("Token IP mismatch"===e.error||e.ipMismatch)throw(0,r.clearAuthToken)(),sessionStorage.removeItem("authError"),sessionStorage.setItem("ipMismatchDetected","true"),sessionStorage.setItem("ipMismatchMessage",e.message??"ÐодозÑиÑелÑÐ½Ð°Ñ Ð°ÐºÑивноÑÑÑ"),window.location.href="/login?session=ip_mismatch",Error("IP mismatch");if("Invalid or expired token"===e.error)throw(0,r.clearAuthToken)(),sessionStorage.getItem("ipMismatchDetected")||sessionStorage.setItem("authError","session_expired"),window.location.href="/login?session=expired",Error("Session expired");if(e.require2FA)throw i(e.message??"ТÑебÑеÑÑÑ 2FA",403,e);if(e.phoneVerificationRequired)throw i(e.message??"ТÑебÑеÑÑÑ Ð¿Ð¾Ð´ÑвеÑждение ÑелеÑона",403,e);if(e.viewMode)throw i(e.message??"ÐейÑÑвие недоÑÑÑпно в Ñежиме пÑоÑмоÑÑа",403,e);if("ACCOUNT_BLOCKED"===e.message)throw(0,r.clearAuthToken)(),window.location.href="/login?blocked=true",Error("ACCOUNT_BLOCKED");let t=e.message;if(t?.includes("огÑаниÑен админиÑÑÑаÑоÑом")||t?.includes("админиÑÑÑаÑоÑом"))throw i(t,403,e);throw i(t??"ÐоÑÑÑп запÑеÑен",403,e)}if(429===o.status)return m=await o.json().catch(()=>({})),window.dispatchEvent(new CustomEvent("rateLimitExceeded",{detail:{message:m.error??"ÐÑевÑÑен Ð»Ð¸Ð¼Ð¸Ñ Ð·Ð°Ð¿ÑоÑов",retryAfter:m.retryAfter}})),new Response(JSON.stringify({success:!1,rateLimitExceeded:!0,error:m.error??"ÐÑевÑÑен Ð»Ð¸Ð¼Ð¸Ñ Ñоединений"}),{status:429,headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.json().catch(()=>({}));throw i(e.message||`HTTP ${o.status}`,o.status,e)}return o}catch(e){if(e instanceof Error){if("SERVER_UNAVAILABLE"===e.message)return new Response(null,{status:503});["Unauthorized","ACCOUNT_BLOCKED","Forbidden"].includes(e.message)}throw e}}async function u(e){(0,r.resetSessionExpired)(),e?localStorage.setItem("rememberMe","true"):(localStorage.removeItem("rememberMe"),(0,r.startActivityMonitor)()),(0,r.sc
2heduleTokenRefresh)(d),await o()}async function d(){if(!(0,n.getIsRefreshing)()){(0,n.setIsRefreshing)(!0);try{(await fetch("/api/auth/refresh-token",{method:"POST",credentials:"include"})).ok?((0,n.notifyRefreshSubscribers)(!0),(0,r.scheduleTokenRefresh)(d)):((0,r.setSessionExpired)(),(0,r.clearAuthToken)(),(0,n.notifyRefreshSubscribers)(!1),"/login"!==window.location.pathname&&(window.location.href="/login?session=expired"))}catch(e){(0,n.notifyRefreshSubscribers)(!1),t.logger.error("Token refresh error:",e)}finally{(0,n.setIsRefreshing)(!1)}}}e.s(["createErrorWithResponse",()=>i],828902),e.s(["fetchWithAuth",()=>l],851451),e.s(["saveAuthToken",()=>u],861764)},831687,e=>{"use strict";var t=e.i(848277),r=e.i(330668);let o=(0,r.createContext)(null),s="deepscan:public-lang";function n({children:e}){let[n,i]=(0,r.useState)("ru");(0,r.useEffect)(()=>{let e=function(){try{let e=window.localStorage.getItem(s);if("ru"===e||"en"===e)return e}catch{}return"ru"}();"ru"!==e&&i(e)},[]),(0,r.useEffect)(()=>{"u">typeof document&&document.documentElement.setAttribute("lang",n)},[n]);let a=(0,r.useCallback)(e=>{i(e);try{window.localStorage.setItem(s,e)}catch{}},[]),l=(0,r.useCallback)(()=>{a("ru"===n?"en":"ru")},[n,a]),u=(0,r.useMemo)(()=>({lang:n,setLang:a,toggleLang:l}),[n,a,l]);return(0,t.jsx)(o.Provider,{value:u,children:e})}function i(){let e=(0,r.useContext)(o);return e||{lang:"ru",setLang:()=>void 0,toggleLang:()=>void 0}}function a(){let{lang:e}=i();return(0,r.useCallback)(function(t,r){return"en"===e?r:t},[e])}e.s(["LanguageProvider",()=>n,"useLang",()=>i,"useTr",()=>a])},616535,e=>{"use strict";var t=e.i(848277),r=e.i(330668),o=e.i(535111);let s=(0,r.createContext)(void 0);function n({children:e}){let[o,n]=(0,r.useState)([]),i=(0,r.useRef)(0),a=(0,r.useCallback)((e,t="info",r,o)=>{let s=`toast-${Date.now()}-${i.current++}`;return n(n=>{let i=[...n,{id:s,type:t,title:r,message:e,duration:o}];return i.length>5?i.slice(-5):i}),s},[]),l=(0,r.useCallback)((e,t)=>a(e,"success",t),[a]),u=(0,r.useCallback)((e,t)=>a(e,"error",t),[a]),d=(0,r.useCallback)((e,t)=>a(e,"warning",t),[a]),c=(0,r.useCallback)((e,t)=>a(e,"info",t),[a]),m=(0,r.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]),f=(0,r.useCallback)(()=>{n([])},[]),h=r.default.useMemo(()=>({toasts:o,show:a,success:l,error:u,warning:d,info:c,dismiss:m,dismissAll:f}),[o,a,l,u,d,c,m,f]);return(0,t.jsx)(s.Provider,{value:h,children:e})}function i(){let e=(0,r.useContext)(s);if(void 0===e)throw Error("useToast must be used within a ToastProvider");return e}let a=null;function l(e){a=e}let u={show:(e,t="info",r,s)=>a?a.show(e,t,r,s):(o.logger.warn("[Toast] ToastProvider not initialized"),""),success:(e,t)=>u.show(e,"success",t),error:(e,t)=>u.show(e,"error",t),warning:(e,t)=>u.show(e,"warning",t),info:(e,t)=>u.show(e,"info",t),dismiss:e=>{a&&a.dismiss(e)},dismissAll:()=>{a&&a.dismissAll()}};function d(){let e=i();(0,r.useEffect)(()=>(a=e,()=>{a=null}),[e])}e.s(["ToastProvider",()=>n,"setGlobalToastInstance",()=>l,"toast",0,u,"useInitGlobalToast",()=>d,"useToast",()=>i])},145845,e=>{e.v({closeBtn:"Toast-module__EyfNpa__closeBtn",container:"Toast-module__EyfNpa__container",content:"Toast-module__EyfNpa__content",error:"Toast-module__EyfNpa__error",exit:"Toast-module__EyfNpa__exit",icon:"Toast-module__EyfNpa__icon",info:"Toast-module__EyfNpa__info",message:"Toast-module__EyfNpa__message",slideIn:"Toast-module__EyfNpa__slideIn",slideOut:"Toast-module__EyfNpa__slideOut",success:"Toast-module__EyfNpa__success",title:"Toast-module__EyfNpa__title",toast:"Toast-module__EyfNpa__toast",warning:"Toast-module__EyfNpa__warning"})},5674,e=>{"use strict";var t=e.i(848277),r=e.i(330668),o=e.i(145845),s=e.i(616535);function n({toast:e,onClose:s}){let[n,i]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=setTimeout(()=>{i(!0),setTimeout(()=>s(e.id),300)},e.duration??4e3);return()=>clearTimeout(t)},[e.id,e.duration,s]),(0,t.jsxs)("div",{className:`${o.default.toast} ${o.default[e.type]} ${n?o.default.exit:""}`,role:"alert",children:[(0,t.jsx)("div",{className:o.default.icon,children:{success:"â",error:"â",warning:"â ",info:"â¹"}[e.type]}),(0,t.jsxs)("div",{className:o.default.content,children:[e.title?(0,t.jsx)("div",{className:o.default.title,children:e.title}):null,(0,t.jsx)("div",{className:o.default.message,children:e.message})]}),(0,t.jsx)("button",{className:o.default.closeBtn,onClick:()=>{i(!0),setTimeout(()=>s(e.id),300)},"aria-label":"ÐакÑÑÑÑ",children:"Ã"})]})}function i(){(0,s.useInitGlobalToast)();let{toasts:e,dismiss:i}=(0,s.useToast)(),a=(0,r.useCallback)(e=>{i(e)},[i]);return 0===e.length?null:(0,t.jsx)("div",{className:o.default.container,"aria-live":"polite",children:e.map(e=>(0,t.jsx)(n,{toast:e,onClose:a},e.id))})}e.s(["ToastContainer",()=>i,"default",0,i])},554654,e=>{"use strict";var t=e.i(535111);let r=null;function o(e){r=e}let s={SERVICE_UNAVAILABLE:{message:"СеÑÐ²ÐµÑ Ð²Ñеменно пеÑегÑÑжен. ÐопÑобÑйÑе ÑеÑез неÑколÑко ÑекÑнд.",title:"СеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен"},SERVICE_RESTARTING:{message:"СеÑÐ²ÐµÑ Ð¿ÐµÑезапÑÑкаеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии. ÐопÑобÑйÑе ÑеÑез 30 ÑекÑнд.",title:"ÐеÑезапÑÑк ÑеÑвеÑа"},RATE_LIMIT_EXCEEDED:{message:"ÐбнаÑÑжена подозÑиÑелÑÐ½Ð°Ñ Ð°ÐºÑивноÑÑÑ. ÐопÑобÑйÑе позже.",title:"ÐгÑаниÑение доÑÑÑпа"},GLOBAL_RATE_LIMIT_EXCEEDED:{message:"ÐÑевÑÑен глобаÐ
2»ÑнÑй Ð»Ð¸Ð¼Ð¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐопÑобÑйÑе позже.",title:"ÐгÑаниÑение доÑÑÑпа"},UNAUTHORIZED:{message:"СеÑÑÐ¸Ñ Ð¸ÑÑекла. ÐожалÑйÑÑа, войдиÑе Ñнова.",title:"ТÑебÑеÑÑÑ Ð°Ð²ÑоÑизаÑиÑ"},FORBIDDEN:{message:"У Ð²Ð°Ñ Ð½ÐµÑ Ð´Ð¾ÑÑÑпа к ÑÑÐ¾Ð¼Ñ ÑеÑÑÑÑÑ.",title:"ÐоÑÑÑп запÑеÑÑн"},NOT_FOUND:{message:"ÐапÑаÑиваемÑй ÑеÑÑÑÑ Ð½Ðµ найден.",title:"Ðе найдено"},INTERNAL_ERROR:{message:"ÐнÑÑÑеннÑÑ Ð¾Ñибка ÑеÑвеÑа. ÐопÑобÑйÑе позже.",title:"ÐÑибка ÑеÑвеÑа"}};function n(e,o){if(t.logger.error("[Error Handler]",e),e instanceof Error){let t=s[e.message];if(t)return void r?.(t.message,t.title);if("Unauthorized"===e.message)return;if("RATE_LIMIT_EXCEEDED"===e.message)return void r?.("ÐбнаÑÑжена подозÑиÑелÑÐ½Ð°Ñ Ð°ÐºÑивноÑÑÑ. ÐопÑобÑйÑе позже.","ÐгÑаниÑение доÑÑÑпа");if("GLOBAL_RATE_LIMIT_EXCEEDED"===e.message)return void r?.("ÐÑевÑÑен глобалÑнÑй Ð»Ð¸Ð¼Ð¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐопÑобÑйÑе позже.","ÐгÑаниÑение доÑÑÑпа");if(e.message.includes("Failed to fetch")||e.message.includes("NetworkError"))return void r?.("ÐÑибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом. ÐÑовеÑÑÑе подклÑÑение к инÑеÑнеÑÑ.","ÐÑибка ÑеÑи");if(e.response?.data?.message){let t=s[e.response.data.message];return t?void r?.(t.message,t.title):void r?.(e.response.data.message)}if(e.message&&"HTTP 400"!==e.message&&"HTTP 500"!==e.message){let t=e.message;e.message.includes("is not a function")?t="ÐнÑÑÑеннÑÑ Ð¾Ñибка пÑиложениÑ. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.":e.message.includes("is not defined")?t="ÐÑибка загÑÑзки компоненÑа. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.":e.message.includes("Cannot read properties of")?t="ÐÑибка обÑабоÑки даннÑÑ
. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.":e.message.includes("Unexpected end of input")?t="СеÑÐ²ÐµÑ Ð²ÐµÑнÑл неполнÑй оÑвеÑ. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.":e.message.includes("Unexpected token")?t="ÐÑибка обÑабоÑки оÑвеÑа ÑеÑвеÑа. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.":e.message.includes("undefined")&&(t="ÐÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð¾Ñибка. ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ."),r?.(t,"ÐÑибка");return}}o&&r&&r(o)}let i=!1;function a(e){return e instanceof Error&&(e.message.includes("Failed to fetch")||e.message.includes("NetworkError")||e.message.includes("Load failed"))}function l(){i||(i=!0,window.addEventListener("error",e=>{a(e.error)?t.logger.warn("[Error Handler] Background network error (suppressed)"):n(e.error)}),window.addEventListener("unhandledrejection",e=>{a(e.reason)?t.logger.warn("[Error Handler] Background network error (suppressed)"):n(e.reason)}))}l(),e.s(["handleError",()=>n,"initErrorListeners",()=>l,"setGlobalErrorHandler",()=>o])},240206,e=>{"use strict";var t=e.i(848277),r=e.i(330668),o=e.i(535111);let s=(0,r.createContext)(void 0),n="auth_user";function i(){try{let e=sessionStorage.getItem(n);if(!e)return null;let t=JSON.parse(e);if(t?.id&&t.role)return{id:t.id,name:t.name??"",role:t.role};return null}catch(e){return o.logger.error("ÐÑибка пÑи ÑазбоÑе даннÑÑ
полÑзоваÑелÑ:",e instanceof SyntaxError?"ÐевеÑнÑй ÑоÑÐ¼Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ
":e),sessionStorage.removeItem(n),null}}function a(e){if(e){let t={id:e.id,name:e.name,role:e.role};sessionStorage.setItem(n,JSON.stringify(t))}else sessionStorage.removeItem(n)}function l({children:e}){let[o,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=i();e&&l(e),d(!0)},[]),(0,r.useEffect)(()=>{let e=e=>{"auth_logout_event"===e.key&&(l(null),sessionStorage.removeItem(n),window.location.href="/login?session=logout")};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}},[]);let c=(0,r.useCallback)(e=>{if(e){let t={id:e.id,name:e.name,role:e.role};l(t),a(t)}else l(null),a(null)},[]),m=(0,r.useCallback)(()=>{l(null),a(null),localStorage.removeItem("user"),localStorage.setItem("auth_logout_event",Date.now().toString()),localStorage.removeItem("auth_logout_event")},[]),f=(0,r.useCallback)(()=>o?.id??null,[o]),h=r.default.useMemo(()=>({user:o,setUser:c,clearUser:m,isAuthenticated:!!o,isAdmin:o?.role==="ÐдминиÑÑÑаÑоÑ",isLoading:!u,authReady:u,getUserId:f}),[o,c,m,u,f]);return(0,t.jsx)(s.Provider,{value:h,children:e})}function u(){let e=(0,r.useContext)(s);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}function d(){try{let e=localStorage.getItem("user");if(e){let t=JSON.parse(e);return localStorage.removeItem("user"),t}}catch(e){o.logger.error("ÐÑибка пÑи ÑазбоÑе даннÑÑ
полÑзоваÑелÑ:",e instanceof SyntaxError?"ÐевеÑнÑй ÑоÑÐ¼Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ
":e),localStorage.removeItem("user")}return null}function c(){let e=i();return e?.id??null}function m(){let e=i();return e?.role??null}e.s(["AuthProvider",()=>l,"getStoredUserId",()=>c,"getStoredUserRole",()=>m,"migrateFromLocalStorage",()=>d,"useAuth",()=>u])},110268,e=>{"use strict";var t=e.i(848277),r=e.i(330668);e.i(460159);var o=e.i(326823);let s=(0,r.createContext)(void 0);function n({children:e}){let[n,i]=(0,r.useState)(null),a=(0,r.useCallback)((e,t="ÐÑибка")=>{i({title:t,message:e})},[]),l=(0,r.useCallback)(()=>{i(null)},[]),u=r.default.useMemo(()=>({showError:a}),[a]);return(0,t.jsxs)(s.Provider,{value:u,children:[e,(0,t.jsx)(o.default,{isOpen:!!n,onClose:l,onConfirm:l,title:n?.title??"ÐÑибка",message:n?.message??"",confirmText:"ÐонÑÑно",cancelText:"",confirmButtonStyle:"primary"})]})}function i(){let e=(0,r.useContext)(s);if(!e)throw Error("useError must be used within ErrorProvider");return e}e.s(["ErrorProvider",()=>n,"useError",()=>i])},566376,e=>{"use strict";var t=e.i(330668),r=e.i(110268),o=e.i(554654);function s(){let{showError:e}=(0,r.useError)();return(0,t.useEffect)(()=>{(0,o.setGlobalErrorHandler)(e)},[e]),null}e.s(["ErrorInitializer",()=>s])},546125,e=>{"use strict";var t=e.i(330668);e.i(861764);var r=e.i(768776),o=e.i(535111);function s(){return(0,t.useEffect)(()=>{{sessionStorage.removeItem("ipMismatchDetected");let e=localStorage.getItem("authToken")??sessionStorage.getItem("authToken"),t=sessionStorage.getItem("viewToken");for(let s of(("null"===e||"undefined"===e||"null"===t||"undefined"===t)&&(o.logger.log("[AuthInitializer] Found invalid tokens, clearing..."),(0,r.clearAuthToken)()),document.cookie.split(";"))){let[e,t]=s.trim().split("=");if("authToken"===e&&("null"===t||"undefined"===t)){o.logger.log("[AuthInitializer] Found invalid cookie token, clearing..."),(0,r.clearAuthToken)();break}}}},[]),null}e.s(["default",()=>s])},466500,e=>{"use strict";var t=e.i(5674),r=e.i(616535);e.s(["ToastContainer",()=>t.ToastContainer,"default",()=>t.default,"toast",()=>r.toast])},387078,e=>{e.v({active:"MouseSpotlight-module__B0aoDa__active",spotlight:"MouseSpotlight-module__B0aoDa__spotlight"})},61578,e=>{"use strict";var t=e.i(848277),r=e.i(330668),o=e.i(387078);function s(){let e=(0,r.useRef)(null),[s,n]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let e=window.matchMedia("(hover: hover) and (pointer: fine)"),t=window.matchMedia("(prefers-reduced-motion: reduce)");e.matches&&!t.matches&&n(!0)},[]),(0,r.useEffect)(()=>
2{if(!s)return;let t=e.current;if(!t)return;let r=o.default.active??"active",n=0,i=e=>{n||(n=window.requestAnimationFrame(()=>{n=0,t.style.setProperty("--mx",`${e.clientX}px`),t.style.setProperty("--my",`${e.clientY}px`),t.classList.contains(r)||t.classList.add(r)}))},a=()=>t.classList.remove(r);return window.addEventListener("pointermove",i,{passive:!0}),window.addEventListener("pointerleave",a),()=>{n&&window.cancelAnimationFrame(n),window.removeEventListener("pointermove",i),window.removeEventListener("pointerleave",a)}},[s]),s)?(0,t.jsx)("div",{ref:e,className:o.default.spotlight,"aria-hidden":"true"}):null}e.s(["default",()=>s])},57691,e=>{e.v(t=>Promise.all(["static/chunks/d72b646cdb8ed1ce.js"].map(t=>e.l(t))).then(()=>t(48545)))}]); 3 4//# debugId=b5644c40-3b8e-a319-3704-0f9303f2b6d1
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.