1import{r as m}from"./kvSY3Rp9.js";const T="accessToken",f="refreshToken",y="deviceID",l="https://fb3.funbridge.net/funbridge-server-ws/rest",E=`${l}/player/getPlayerInfo`,g=`${l}/presence/loginRefresh`,_=`${l}/presence/getValidationToken`,p=2500,k=4e3,h="funbridge.com",I=3600,O=336*60*60,i=e=>{const t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`,"u"))?.[1];if(t===void 0)return null;try{return decodeURIComponent(t)}catch{return t}},A=()=>i(T),d=(e,t,n)=>{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; domain=${h}; path=/; secure; samesite=lax`},u=async(e,t,n,s)=>{const r=new AbortController,a=setTimeout(()=>r.abort(),s);try{const o=await fetch(e,{method:"POST",mode:"cors",credentials:"omit",signal:r.signal,headers:{Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(n)});return o.ok?await o.json():null}catch{return null}finally{clearTimeout(a)}},w=async(e,t=p)=>{const n=await u(E,e,{},t);if(!n)return{status:"error"};if(n.exception)return n.exception.type==="INVALID_ACCESS_TOKEN"?{status:"invalid"}:{status:"error"};const s=n.data?.playerInfo;return s?s.anonymous===!0?{status:"anonymous"}:{status:"ok"}:{status:"error"}},R=async({displayLang:e}={},t=k)=>{const n=i(f),s=i(y);if(!n||!s)return null;const r=navigator.language||"en",a=await u(g,n,{clientVersion:"website",deviceID:s,deviceInfo:navigator.userAgent.
1slice(0,100),deviceType:"web",lang:r,displayLang:e||r,timezone:new Intl.DateTimeFormat().resolvedOptions().timeZone,timezoneSecondsFromGMT:new Date().getTimezoneOffset()*60},t);if(!a||a.exception)return null;const o=a.data;return typeof o?.accessToken!="string"||!o.accessToken||typeof o.refreshToken!="string"||!o.refreshToken?null:(d(T,o.accessToken,I),d(f,o.refreshToken,O),{accessToken:o.accessToken,anonymous:o.playerInfo?.anonymous===!0})},C=async(e,t={},n=p)=>{let s=e;const r=await w(s,n);if(r.status==="invalid"){const c=await R(t);if(!c||c.anonymous)return null;s=c.accessToken}else if(r.status!=="ok")return null;const o=(await u(_,s,{audience:"BLOG"},n))?.data?.validationToken;return typeof o=="string"&&o?o:null},S=(e,t)=>{const n=new URL(e);return n.searchParams.set("vt",t),n.href},b=()=>m.useCallback(e=>{if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const t=A();if(!t)return;const n=e.currentTarget;if(!(n instanceof HTMLAnchorElement)||!n.href)return;const{href:s,target:r}=n;e.preventDefault(),(async()=>{const a=await C(t,{displayLang:document.documentElement.lang}),o=a?S(s,a):s;if(r==="_blank"){const c=window.open(o,"_blank");if(c){c.opener=null;return}}window.location.assign(o)})()},[]),K=e=>e==="fr"?"fr":"en";export{K as t,b as u};
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.