@blinkk/root-cms 3.0.4 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +2 -1
- package/dist/{chunk-RLZFZT42.js → chunk-VSPPZPMP.js} +2 -2
- package/dist/core/schema.d.ts +20 -0
- package/dist/plugin.js +1 -1
- package/dist/shared/auto-slug-words.d.ts +7 -0
- package/dist/shared/auto-slug.d.ts +14 -0
- package/dist/ui/{AIPage-YI3RFK5F.js → AIPage-F3NNYM5E.js} +1 -1
- package/dist/ui/{AssetsPage-4JNAOFYF.js → AssetsPage-DZQHAENZ.js} +1 -1
- package/dist/ui/{CollectionPage-JWHH5G55.js → CollectionPage-WVVG62NR.js} +1 -1
- package/dist/ui/{ComparePage-YZE3EMU4.js → ComparePage-CRDHP45W.js} +1 -1
- package/dist/ui/{DataPage-VRCQSZZG.js → DataPage-WMLBCPGF.js} +1 -1
- package/dist/ui/{DataSourcePage-WMSPBZ3W.js → DataSourcePage-POZAQFPU.js} +1 -1
- package/dist/ui/{DocTranslationsPage-RY2LOZBX.js → DocTranslationsPage-UR5D2RF2.js} +1 -1
- package/dist/ui/DocumentPage-SQ7ROBMC.js +1 -0
- package/dist/ui/{EditDataSourcePage-LLCX6K4J.js → EditDataSourcePage-PUA2AJ4C.js} +1 -1
- package/dist/ui/{EditReleasePage-WQYXXMZQ.js → EditReleasePage-CENP46EO.js} +1 -1
- package/dist/ui/{LogsPage-IP2DKEYR.js → LogsPage-FZRN6MBJ.js} +1 -1
- package/dist/ui/{NewDataSourcePage-RDYJC4DH.js → NewDataSourcePage-FTILYFJY.js} +1 -1
- package/dist/ui/{NewReleasePage-DGMFU2JN.js → NewReleasePage-MHJC66KK.js} +1 -1
- package/dist/ui/{NotFoundPage-WDZ2K7EF.js → NotFoundPage-EP2OE4JV.js} +1 -1
- package/dist/ui/{ProjectPage-HYJOQUWR.js → ProjectPage-6J7QCG75.js} +1 -1
- package/dist/ui/{ReleasePage-2KSF23TK.js → ReleasePage-IZ3DNGT4.js} +1 -1
- package/dist/ui/{ReleasesPage-NZIBBXU4.js → ReleasesPage-RWFOJ5VG.js} +1 -1
- package/dist/ui/SettingsPage-M4SIDBTI.js +1 -0
- package/dist/ui/{SidebarToolsPage-5C6YBWJ7.js → SidebarToolsPage-GAX3XJ7W.js} +1 -1
- package/dist/ui/{TaskPage-SPIFPGPP.js → TaskPage-UCATTNZ5.js} +1 -1
- package/dist/ui/{TasksPage-ZOXRPBQV.js → TasksPage-4AQLQ4IT.js} +1 -1
- package/dist/ui/{TranslationsArbPage-UHANA7JD.js → TranslationsArbPage-JGQGATCS.js} +1 -1
- package/dist/ui/{TranslationsEditPage-PQY6W5YG.js → TranslationsEditPage-7AGZGHKS.js} +1 -1
- package/dist/ui/{TranslationsPage-V2PQFCN5.js → TranslationsPage-WIDVSTYF.js} +1 -1
- package/dist/ui/{chunk-FBJURT7Z.js → chunk-7MTDTPYB.js} +1 -1
- package/dist/ui/{chunk-GXSAEPU3.js → chunk-7UIUAHC4.js} +1 -1
- package/dist/ui/{chunk-JT5L6GPZ.js → chunk-AEWL2RWR.js} +1 -1
- package/dist/ui/{chunk-MDUBCXU2.js → chunk-JKCZGT6B.js} +1 -1
- package/dist/ui/chunk-P4U2LUTF.js +1 -0
- package/dist/ui/{chunk-V7S4IAGB.js → chunk-QGBR3J2Y.js} +1 -1
- package/dist/ui/ui.js +1 -1
- package/package.json +3 -3
- package/dist/ui/DocumentPage-EEGTJMIW.js +0 -1
- package/dist/ui/SettingsPage-36XFWV62.js +0 -1
- package/dist/ui/chunk-NXQVLOTK.js +0 -1
- /package/dist/ui/{chunk-JT5L6GPZ.js.LEGAL.txt → chunk-AEWL2RWR.js.LEGAL.txt} +0 -0
package/dist/ui/ui.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as Nt}from"./chunk-DEGMKEHP.js";import{a as Xn,c as Qn}from"./chunk-BZIRGB4W.js";import{a as _t,b as It,d as vt,e as yt,f as St,g as At,h as Pt,n as Ct}from"./chunk-JT5L6GPZ.js";import{b as Yn,d as Zn}from"./chunk-HHMG665Z.js";import"./chunk-YFA6U2CV.js";import{b as bt}from"./chunk-4W73RW5I.js";import"./chunk-P3NETZZP.js";import{b as Et}from"./chunk-JHBAMPGB.js";import{b as wt}from"./chunk-V7S4IAGB.js";import"./chunk-KFAZBEPV.js";import"./chunk-KYDOSLTO.js";import"./chunk-PHBMVORG.js";import"./chunk-JZFTZ4X4.js";import"./chunk-HKINZLMW.js";import"./chunk-TJBVMFNQ.js";import"./chunk-CGCKJFL4.js";import"./chunk-VMT7JFAM.js";import{a as Un}from"./chunk-SKEP5WYH.js";import{b as ht,c as Tt,f as kt,g as Rt}from"./chunk-GXSAEPU3.js";import{f as Bn}from"./chunk-NXQVLOTK.js";import{a as Wn,b as qn}from"./chunk-3IYZCUPI.js";import"./chunk-RSVO46S3.js";import{a as Kn}from"./chunk-54DVDYU6.js";import"./chunk-X2WHBGTP.js";import"./chunk-ONTGW2VA.js";import{b as Hn}from"./chunk-4KE2SZKH.js";import"./chunk-L4RHGQUG.js";import{b as gn}from"./chunk-HRGYNHZ3.js";import"./chunk-W3HIZQ4Z.js";import"./chunk-JDW4UORS.js";import"./chunk-YDO2EDVY.js";import"./chunk-AFWBSIPL.js";import"./chunk-XOQ3KDSR.js";import"./chunk-62UWGWON.js";import{d as _n}from"./chunk-I6ICVKEC.js";import"./chunk-HLMBCVRX.js";import"./chunk-ORXEMIQC.js";import"./chunk-5MV6XVGA.js";import{c as On,d as Dn,p as Ln,u as Mn}from"./chunk-EGEB6N4J.js";import{a as xn,b as Vn,c as m,d as Fn,e as Gn,h as Jn}from"./chunk-AL3TN2KI.js";import{Ac as jn,B as mn,Bb as ft,Eb as mt,Ha as c,a as Q,ab as zn,c as Z,g as ee,ib as $n,j as fn,pb as pt,wc as gt}from"./chunk-NZHF733K.js";import{g as pn,k as cr}from"./chunk-KUCVLANF.js";import{A as Rn,B as dt,C as ut,D as S,E as B,F as Cn,G as Nn,H as te,a as In,b as Tn,d as at,e as Te,f as En,h as wn,i as v,j as vn,k as yn,l as Sn,m as bn,n as An,p as Ee,q as we,r as kn,s as ve,t as $,u as j,v as K,w as Pn,x as O,y as ct,z as lt}from"./chunk-DTMZLUNY.js";import"./chunk-PVAE643M.js";var lr="firebase",dr="12.2.1";te(lr,dr,"app");function Ii(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}}var Ti=Ii,Ei=new we("auth","Firebase",Ii());var Re=new Rn("@firebase/auth");function ur(n,...e){Re.logLevel<=lt.WARN&&Re.warn(`Auth (${B}): ${n}`,...e)}function Se(n,...e){Re.logLevel<=lt.ERROR&&Re.error(`Auth (${B}): ${n}`,...e)}function y(n,...e){throw nn(n,...e)}function A(n,...e){return nn(n,...e)}function wi(n,e,t){let i={...Ti(),[e]:t};return new we("auth","Firebase",i).create(e,{appName:n.name})}function x(n){return wi(n,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function nn(n,...e){if(typeof n!="string"){let t=e[0],i=[...e.slice(1)];return i[0]&&(i[0].appName=n.name),n._errorFactory.create(t,...i)}return Ei.create(n,...e)}function u(n,e,...t){if(!n)throw nn(e,...t)}function b(n){let e="INTERNAL ASSERTION FAILED: "+n;throw Se(e),new Error(e)}function R(n,e){n||b(e)}function xt(){return typeof self<"u"&&self.location?.href||""}function hr(){return ei()==="http:"||ei()==="https:"}function ei(){return typeof self<"u"&&self.location?.protocol||null}function pr(){return typeof navigator<"u"&&navigator&&"onLine"in navigator&&typeof navigator.onLine=="boolean"&&(hr()||Sn()||"connection"in navigator)?navigator.onLine:!0}function fr(){if(typeof navigator>"u")return null;let n=navigator;return n.languages&&n.languages[0]||n.language||null}var V=class{constructor(e,t){this.shortDelay=e,this.longDelay=t,R(t>e,"Short delay should be less than long delay!"),this.isMobile=vn()||bn()}get(){return pr()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}};function rn(n,e){R(n.emulator,"Emulator should always be set here");let{url:t}=n.emulator;return e?`${t}${e.startsWith("/")?e.slice(1):e}`:t}var Ce=class{static initialize(e,t,i){this.fetchImpl=e,t&&(this.headersImpl=t),i&&(this.responseImpl=i)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<"u"&&"fetch"in self)return self.fetch;if(typeof globalThis<"u"&&globalThis.fetch)return globalThis.fetch;if(typeof fetch<"u")return fetch;b("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<"u"&&"Headers"in self)return self.Headers;if(typeof globalThis<"u"&&globalThis.Headers)return globalThis.Headers;if(typeof Headers<"u")return Headers;b("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<"u"&&"Response"in self)return self.Response;if(typeof globalThis<"u"&&globalThis.Response)return globalThis.Response;if(typeof Response<"u")return Response;b("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}};var mr={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"};var gr=["/v1/accounts:signInWithCustomToken","/v1/accounts:signInWithEmailLink","/v1/accounts:signInWithIdp","/v1/accounts:signInWithPassword","/v1/accounts:signInWithPhoneNumber","/v1/token"],_r=new V(3e4,6e4);function I(n,e){return n.tenantId&&!e.tenantId?{...e,tenantId:n.tenantId}:e}async function E(n,e,t,i,r={}){return vi(n,r,async()=>{let s={},o={};i&&(e==="GET"?o=i:s={body:JSON.stringify(i)});let a=$({key:n.config.apiKey,...o}).slice(1),l=await n._getAdditionalHeaders();l["Content-Type"]="application/json",n.languageCode&&(l["X-Firebase-Locale"]=n.languageCode);let d={method:e,headers:l,...s};return yn()||(d.referrerPolicy="no-referrer"),n.emulatorConfig&&Te(n.emulatorConfig.host)&&(d.credentials="include"),Ce.fetch()(await yi(n,n.config.apiHost,t,a),d)})}async function vi(n,e,t){n._canInitEmulator=!1;let i={...mr,...e};try{let r=new Vt(n),s=await Promise.race([t(),r.promise]);r.clearNetworkTimeout();let o=await s.json();if("needConfirmation"in o)throw ie(n,"account-exists-with-different-credential",o);if(s.ok&&!("errorMessage"in o))return o;{let a=s.ok?o.errorMessage:o.error.message,[l,d]=a.split(" : ");if(l==="FEDERATED_USER_ID_ALREADY_LINKED")throw ie(n,"credential-already-in-use",o);if(l==="EMAIL_EXISTS")throw ie(n,"email-already-in-use",o);if(l==="USER_DISABLED")throw ie(n,"user-disabled",o);let h=i[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(d)throw wi(n,h,d);y(n,h)}}catch(r){if(r instanceof Ee)throw r;y(n,"network-request-failed",{message:String(r)})}}async function q(n,e,t,i,r={}){let s=await E(n,e,t,i,r);return"mfaPendingCredential"in s&&y(n,"multi-factor-auth-required",{_serverResponse:s}),s}async function yi(n,e,t,i){let r=`${e}${t}?${i}`,s=n,o=s.config.emulator?rn(n.config,r):`${n.config.apiScheme}://${r}`;return gr.includes(t)&&(await s._persistenceManagerAvailable,s._getPersistenceType()==="COOKIE")?s._getPersistence()._getFinalTarget(o).toString():o}function Ir(n){switch(n){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}var Vt=class{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((t,i)=>{this.timer=setTimeout(()=>i(A(this.auth,"network-request-failed")),_r.get())})}};function ie(n,e,t){let i={appName:n.name};t.email&&(i.email=t.email),t.phoneNumber&&(i.phoneNumber=t.phoneNumber);let r=A(n,e,i);return r.customData._tokenResponse=t,r}function ti(n){return n!==void 0&&n.enterprise!==void 0}var Ne=class{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||this.recaptchaEnforcementState.length===0)return null;for(let t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return Ir(t.enforcementState);return null}isProviderEnabled(e){return this.getProviderEnforcementState(e)==="ENFORCE"||this.getProviderEnforcementState(e)==="AUDIT"}isAnyProviderEnabled(){return this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")||this.isProviderEnabled("PHONE_PROVIDER")}};async function Si(n,e){return E(n,"GET","/v2/recaptchaConfig",I(n,e))}async function Tr(n,e){return E(n,"POST","/v1/accounts:delete",e)}async function Oe(n,e){return E(n,"POST","/v1/accounts:lookup",e)}function re(n){if(n)try{let e=new Date(Number(n));if(!isNaN(e.getTime()))return e.toUTCString()}catch{}}async function bi(n,e=!1){let t=O(n),i=await t.getIdToken(e),r=sn(i);u(r&&r.exp&&r.auth_time&&r.iat,t.auth,"internal-error");let s=typeof r.firebase=="object"?r.firebase:void 0,o=s?.sign_in_provider;return{claims:r,token:i,authTime:re(Ot(r.auth_time)),issuedAtTime:re(Ot(r.iat)),expirationTime:re(Ot(r.exp)),signInProvider:o||null,signInSecondFactor:s?.sign_in_second_factor||null}}function Ot(n){return Number(n)*1e3}function sn(n){let[e,t,i]=n.split(".");if(e===void 0||t===void 0||i===void 0)return Se("JWT malformed, contained fewer than 3 sections"),null;try{let r=In(t);return r?JSON.parse(r):(Se("Failed to decode base64 JWT payload"),null)}catch(r){return Se("Caught error parsing JWT payload as JSON",r?.toString()),null}}function ni(n){let e=sn(n);return u(e,"internal-error"),u(typeof e.exp<"u","internal-error"),u(typeof e.iat<"u","internal-error"),Number(e.exp)-Number(e.iat)}async function ce(n,e,t=!1){if(t)return e;try{return await e}catch(i){throw i instanceof Ee&&Er(i)&&n.auth.currentUser===n&&await n.auth.signOut(),i}}function Er({code:n}){return n==="auth/user-disabled"||n==="auth/user-token-expired"}var Ft=class{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){if(e){let t=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),t}else{this.errorBackoff=3e4;let i=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,i)}}schedule(e=!1){if(!this.isRunning)return;let t=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){e?.code==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}};var le=class{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=re(this.lastLoginAt),this.creationTime=re(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}};async function De(n){let e=n.auth,t=await n.getIdToken(),i=await ce(n,Oe(e,{idToken:t}));u(i?.users.length,e,"internal-error");let r=i.users[0];n._notifyReloadListener(r);let s=r.providerUserInfo?.length?ki(r.providerUserInfo):[],o=wr(n.providerData,s),a=n.isAnonymous,l=!(n.email&&r.passwordHash)&&!o?.length,d=a?l:!1,h={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:o,metadata:new le(r.createdAt,r.lastLoginAt),isAnonymous:d};Object.assign(n,h)}async function Ai(n){let e=O(n);await De(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}function wr(n,e){return[...n.filter(i=>!e.some(r=>r.providerId===i.providerId)),...e]}function ki(n){return n.map(({providerId:e,...t})=>({providerId:e,uid:t.rawId||"",displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}))}async function vr(n,e){let t=await vi(n,{},async()=>{let i=$({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:r,apiKey:s}=n.config,o=await yi(n,r,"/v1/token",`key=${s}`),a=await n._getAdditionalHeaders();a["Content-Type"]="application/x-www-form-urlencoded";let l={method:"POST",headers:a,body:i};return n.emulatorConfig&&Te(n.emulatorConfig.host)&&(l.credentials="include"),Ce.fetch()(o,l)});return{accessToken:t.access_token,expiresIn:t.expires_in,refreshToken:t.refresh_token}}async function yr(n,e){return E(n,"POST","/v2/accounts:revokeToken",I(n,e))}var se=class n{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){u(e.idToken,"internal-error"),u(typeof e.idToken<"u","internal-error"),u(typeof e.refreshToken<"u","internal-error");let t="expiresIn"in e&&typeof e.expiresIn<"u"?Number(e.expiresIn):ni(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){u(e.length!==0,"internal-error");let t=ni(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:(u(this.refreshToken,e,"user-token-expired"),this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null)}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){let{accessToken:i,refreshToken:r,expiresIn:s}=await vr(e,t);this.updateTokensAndExpiration(i,r,Number(s))}updateTokensAndExpiration(e,t,i){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+i*1e3}static fromJSON(e,t){let{refreshToken:i,accessToken:r,expirationTime:s}=t,o=new n;return i&&(u(typeof i=="string","internal-error",{appName:e}),o.refreshToken=i),r&&(u(typeof r=="string","internal-error",{appName:e}),o.accessToken=r),s&&(u(typeof s=="number","internal-error",{appName:e}),o.expirationTime=s),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new n,this.toJSON())}_performRefresh(){return b("not implemented")}};function D(n,e){u(typeof n=="string"||typeof n>"u","internal-error",{appName:e})}var L=class n{constructor({uid:e,auth:t,stsTokenManager:i,...r}){this.providerId="firebase",this.proactiveRefresh=new Ft(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=i,this.accessToken=i.accessToken,this.displayName=r.displayName||null,this.email=r.email||null,this.emailVerified=r.emailVerified||!1,this.phoneNumber=r.phoneNumber||null,this.photoURL=r.photoURL||null,this.isAnonymous=r.isAnonymous||!1,this.tenantId=r.tenantId||null,this.providerData=r.providerData?[...r.providerData]:[],this.metadata=new le(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){let t=await ce(this,this.stsTokenManager.getToken(this.auth,e));return u(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return bi(this,e)}reload(){return Ai(this)}_assign(e){this!==e&&(u(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(t=>({...t})),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){let t=new n({...this,auth:e,stsTokenManager:this.stsTokenManager._clone()});return t.metadata._copy(this.metadata),t}_onReload(e){u(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let i=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),i=!0),t&&await De(this),await this.auth._persistUserIfCurrent(this),i&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(S(this.auth.app))return Promise.reject(x(this.auth));let e=await this.getIdToken();return await ce(this,Tr(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return{uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>({...e})),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId,...this.metadata.toJSON(),apiKey:this.auth.config.apiKey,appName:this.auth.name}}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){let i=t.displayName??void 0,r=t.email??void 0,s=t.phoneNumber??void 0,o=t.photoURL??void 0,a=t.tenantId??void 0,l=t._redirectEventId??void 0,d=t.createdAt??void 0,h=t.lastLoginAt??void 0,{uid:p,emailVerified:f,isAnonymous:T,providerData:C,stsTokenManager:M}=t;u(p&&M,e,"internal-error");let z=se.fromJSON(this.name,M);u(typeof p=="string",e,"internal-error"),D(i,e.name),D(r,e.name),u(typeof f=="boolean",e,"internal-error"),u(typeof T=="boolean",e,"internal-error"),D(s,e.name),D(o,e.name),D(a,e.name),D(l,e.name),D(d,e.name),D(h,e.name);let U=new n({uid:p,auth:e,email:r,emailVerified:f,displayName:i,isAnonymous:T,photoURL:o,phoneNumber:s,tenantId:a,stsTokenManager:z,createdAt:d,lastLoginAt:h});return C&&Array.isArray(C)&&(U.providerData=C.map(st=>({...st}))),l&&(U._redirectEventId=l),U}static async _fromIdTokenResponse(e,t,i=!1){let r=new se;r.updateFromServerResponse(t);let s=new n({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:i});return await De(s),s}static async _fromGetAccountInfoResponse(e,t,i){let r=t.users[0];u(r.localId!==void 0,"internal-error");let s=r.providerUserInfo!==void 0?ki(r.providerUserInfo):[],o=!(r.email&&r.passwordHash)&&!s?.length,a=new se;a.updateFromIdToken(i);let l=new n({uid:r.localId,auth:e,stsTokenManager:a,isAnonymous:o}),d={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:s,metadata:new le(r.createdAt,r.lastLoginAt),isAnonymous:!(r.email&&r.passwordHash)&&!s?.length};return Object.assign(l,d),l}};var ii=new Map;function P(n){R(n instanceof Function,"Expected a class definition");let e=ii.get(n);return e?(R(e instanceof n,"Instance stored in cache mismatched with class"),e):(e=new n,ii.set(n,e),e)}var Le=class{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){let t=this.storage[e];return t===void 0?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}};Le.type="NONE";var Gt=Le;function be(n,e,t){return`firebase:${n}:${e}:${t}`}var Me=class n{constructor(e,t,i){this.persistence=e,this.auth=t,this.userKey=i;let{config:r,name:s}=this.auth;this.fullUserKey=be(this.userKey,r.apiKey,s),this.fullPersistenceKey=be("persistence",r.apiKey,s),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){let e=await this.persistence._get(this.fullUserKey);if(!e)return null;if(typeof e=="string"){let t=await Oe(this.auth,{idToken:e}).catch(()=>{});return t?L._fromGetAccountInfoResponse(this.auth,t,e):null}return L._fromJSON(this.auth,e)}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;let t=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,t)return this.setCurrentUser(t)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,i="authUser"){if(!t.length)return new n(P(Gt),e,i);let r=(await Promise.all(t.map(async d=>{if(await d._isAvailable())return d}))).filter(d=>d),s=r[0]||P(Gt),o=be(i,e.config.apiKey,e.name),a=null;for(let d of t)try{let h=await d._get(o);if(h){let p;if(typeof h=="string"){let f=await Oe(e,{idToken:h}).catch(()=>{});if(!f)break;p=await L._fromGetAccountInfoResponse(e,f,h)}else p=L._fromJSON(e,h);d!==s&&(a=p),s=d;break}}catch{}let l=r.filter(d=>d._shouldAllowMigration);return!s._shouldAllowMigration||!l.length?new n(s,e,i):(s=l[0],a&&await s._set(o,a.toJSON()),await Promise.all(t.map(async d=>{if(d!==s)try{await d._remove(o)}catch{}})),new n(s,e,i))}};function ri(n){let e=n.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(Ni(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(Pi(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Di(e))return"Blackberry";if(Li(e))return"Webos";if(Ri(e))return"Safari";if((e.includes("chrome/")||Ci(e))&&!e.includes("edge/"))return"Chrome";if(Oi(e))return"Android";{let t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,i=n.match(t);if(i?.length===2)return i[1]}return"Other"}function Pi(n=v()){return/firefox\//i.test(n)}function Ri(n=v()){let e=n.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function Ci(n=v()){return/crios\//i.test(n)}function Ni(n=v()){return/iemobile/i.test(n)}function Oi(n=v()){return/android/i.test(n)}function Di(n=v()){return/blackberry/i.test(n)}function Li(n=v()){return/webos/i.test(n)}function on(n=v()){return/iphone|ipad|ipod/i.test(n)||/macintosh/i.test(n)&&/mobile/i.test(n)}function Sr(n=v()){return on(n)&&!!window.navigator?.standalone}function br(){return An()&&document.documentMode===10}function Mi(n=v()){return on(n)||Oi(n)||Li(n)||Di(n)||/windows phone/i.test(n)||Ni(n)}function Ui(n,e=[]){let t;switch(n){case"Browser":t=ri(v());break;case"Worker":t=`${ri(v())}-${n}`;break;default:t=n}let i=e.length?e.join(","):"FirebaseCore-web";return`${t}/JsCore/${B}/${i}`}var Ht=class{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let i=s=>new Promise((o,a)=>{try{let l=e(s);o(l)}catch(l){a(l)}});i.onAbort=t,this.queue.push(i);let r=this.queue.length-1;return()=>{this.queue[r]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;let t=[];try{for(let i of this.queue)await i(e),i.onAbort&&t.push(i.onAbort)}catch(i){t.reverse();for(let r of t)try{r()}catch{}throw this.auth._errorFactory.create("login-blocked",{originalMessage:i?.message})}}};async function Ar(n,e={}){return E(n,"GET","/v2/passwordPolicy",I(n,e))}var kr=6,Wt=class{constructor(e){let t=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=t.minPasswordLength??kr,t.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=t.maxPasswordLength),t.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=t.containsLowercaseCharacter),t.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=t.containsUppercaseCharacter),t.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=t.containsNumericCharacter),t.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=t.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState==="ENFORCEMENT_STATE_UNSPECIFIED"&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=e.allowedNonAlphanumericCharacters?.join("")??"",this.forceUpgradeOnSignin=e.forceUpgradeOnSignin??!1,this.schemaVersion=e.schemaVersion}validatePassword(e){let t={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,t),this.validatePasswordCharacterOptions(e,t),t.isValid&&(t.isValid=t.meetsMinPasswordLength??!0),t.isValid&&(t.isValid=t.meetsMaxPasswordLength??!0),t.isValid&&(t.isValid=t.containsLowercaseLetter??!0),t.isValid&&(t.isValid=t.containsUppercaseLetter??!0),t.isValid&&(t.isValid=t.containsNumericCharacter??!0),t.isValid&&(t.isValid=t.containsNonAlphanumericCharacter??!0),t}validatePasswordLengthOptions(e,t){let i=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;i&&(t.meetsMinPasswordLength=e.length>=i),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let i;for(let r=0;r<e.length;r++)i=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,i>="a"&&i<="z",i>="A"&&i<="Z",i>="0"&&i<="9",this.allowedNonAlphanumericCharacters.includes(i))}updatePasswordCharacterOptionsStatuses(e,t,i,r,s){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=i)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=s))}};var qt=class{constructor(e,t,i,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=i,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new Ue(this),this.idTokenSubscription=new Ue(this),this.beforeStateQueue=new Ht(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=Ei,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this._resolvePersistenceManagerAvailable=void 0,this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion,this._persistenceManagerAvailable=new Promise(s=>this._resolvePersistenceManagerAvailable=s)}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=P(t)),this._initializationPromise=this.queue(async()=>{if(!this._deleted&&(this.persistenceManager=await Me.create(this,e),this._resolvePersistenceManagerAvailable?.(),!this._deleted)){if(this._popupRedirectResolver?._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}await this.initializeCurrentUser(t),this.lastNotifiedUid=this.currentUser?.uid||null,!this._deleted&&(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;let e=await this.assertedPersistence.getCurrentUser();if(!(!this.currentUser&&!e)){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{let t=await Oe(this,{idToken:e}),i=await L._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(i)}catch(t){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",t),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(S(this.app)){let s=this.app.settings.authIdToken;return s?new Promise(o=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(s).then(o,o))}):this.directlySetCurrentUser(null)}let t=await this.assertedPersistence.getCurrentUser(),i=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let s=this.redirectUser?._redirectEventId,o=i?._redirectEventId,a=await this.tryRedirectSignIn(e);(!s||s===o)&&a?.user&&(i=a.user,r=!0)}if(!i)return this.directlySetCurrentUser(null);if(!i._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(i)}catch(s){i=t,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(s))}return i?this.reloadAndSetCurrentUserOrClear(i):this.directlySetCurrentUser(null)}return u(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===i._redirectEventId?this.directlySetCurrentUser(i):this.reloadAndSetCurrentUserOrClear(i)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await De(e)}catch(t){if(t?.code!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=fr()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(S(this.app))return Promise.reject(x(this));let t=e?O(e):null;return t&&u(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&u(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return S(this.app)?Promise.reject(x(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return S(this.app)?Promise.reject(x(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(P(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();let t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=await Ar(this),t=new Wt(e);this.tenantId===null?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistenceType(){return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){this._errorFactory=new we("auth","Firebase",e())}onAuthStateChanged(e,t,i){return this.registerStateListener(this.authStateSubscription,e,t,i)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,i){return this.registerStateListener(this.idTokenSubscription,e,t,i)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{let i=this.onAuthStateChanged(()=>{i(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t=await this.currentUser.getIdToken(),i={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:t};this.tenantId!=null&&(i.tenantId=this.tenantId),await yr(this,i)}}toJSON(){return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){let i=await this.getOrInitRedirectPersistenceManager(t);return e===null?i.removeCurrentUser():i.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&P(e)||this._popupRedirectResolver;u(t,this,"argument-error"),this.redirectPersistenceManager=await Me.create(this,[P(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){return this._isInitialized&&await this.queue(async()=>{}),this._currentUser?._redirectEventId===e?this._currentUser:this.redirectUser?._redirectEventId===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);let e=this.currentUser?.uid??null;this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,i,r){if(this._deleted)return()=>{};let s=typeof t=="function"?t:t.next.bind(t),o=!1,a=this._isInitialized?Promise.resolve():this._initializationPromise;if(u(a,this,"internal-error"),a.then(()=>{o||s(this.currentUser)}),typeof t=="function"){let l=e.addObserver(t,i,r);return()=>{o=!0,l()}}else{let l=e.addObserver(t);return()=>{o=!0,l()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return u(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Ui(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){let e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);let t=await this.heartbeatServiceProvider.getImmediate({optional:!0})?.getHeartbeatsHeader();t&&(e["X-Firebase-Client"]=t);let i=await this._getAppCheckToken();return i&&(e["X-Firebase-AppCheck"]=i),e}async _getAppCheckToken(){if(S(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;let e=await this.appCheckServiceProvider.getImmediate({optional:!0})?.getToken();return e?.error&&ur(`Error while retrieving App Check token: ${e.error}`),e?.token}};function X(n){return O(n)}var Ue=class{constructor(e){this.auth=e,this.observer=null,this.addObserver=Pn(t=>this.observer=t)}get next(){return u(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}};var et={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function Pr(n){et=n}function xi(n){return et.loadJS(n)}function Rr(){return et.recaptchaEnterpriseScript}function Cr(){return et.gapiScript}function Vi(n){return`__${n}${Math.floor(Math.random()*1e6)}`}var zt=class{constructor(){this.enterprise=new $t}ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}},$t=class{ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}};var Nr="recaptcha-enterprise",oe="NO_RECAPTCHA",xe=class{constructor(e){this.type=Nr,this.auth=X(e)}async verify(e="verify",t=!1){async function i(s){if(!t){if(s.tenantId==null&&s._agentRecaptchaConfig!=null)return s._agentRecaptchaConfig.siteKey;if(s.tenantId!=null&&s._tenantRecaptchaConfigs[s.tenantId]!==void 0)return s._tenantRecaptchaConfigs[s.tenantId].siteKey}return new Promise(async(o,a)=>{Si(s,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(l=>{if(l.recaptchaKey===void 0)a(new Error("recaptcha Enterprise site key undefined"));else{let d=new Ne(l);return s.tenantId==null?s._agentRecaptchaConfig=d:s._tenantRecaptchaConfigs[s.tenantId]=d,o(d.siteKey)}}).catch(l=>{a(l)})})}function r(s,o,a){let l=window.grecaptcha;ti(l)?l.enterprise.ready(()=>{l.enterprise.execute(s,{action:e}).then(d=>{o(d)}).catch(()=>{o(oe)})}):a(Error("No reCAPTCHA enterprise script loaded."))}return this.auth.settings.appVerificationDisabledForTesting?new zt().execute("siteKey",{action:"verify"}):new Promise((s,o)=>{i(this.auth).then(a=>{if(!t&&ti(window.grecaptcha))r(a,s,o);else{if(typeof window>"u"){o(new Error("RecaptchaVerifier is only supported in browser"));return}let l=Rr();l.length!==0&&(l+=a),xi(l).then(()=>{r(a,s,o)}).catch(d=>{o(d)})}}).catch(a=>{o(a)})})}};async function ne(n,e,t,i=!1,r=!1){let s=new xe(n),o;if(r)o=oe;else try{o=await s.verify(t)}catch{o=await s.verify(t,!0)}let a={...e};if(t==="mfaSmsEnrollment"||t==="mfaSmsSignIn"){if("phoneEnrollmentInfo"in a){let l=a.phoneEnrollmentInfo.phoneNumber,d=a.phoneEnrollmentInfo.recaptchaToken;Object.assign(a,{phoneEnrollmentInfo:{phoneNumber:l,recaptchaToken:d,captchaResponse:o,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})}else if("phoneSignInInfo"in a){let l=a.phoneSignInInfo.recaptchaToken;Object.assign(a,{phoneSignInInfo:{recaptchaToken:l,captchaResponse:o,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})}return a}return i?Object.assign(a,{captchaResp:o}):Object.assign(a,{captchaResponse:o}),Object.assign(a,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(a,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),a}async function ae(n,e,t,i,r){if(r==="EMAIL_PASSWORD_PROVIDER")if(n._getRecaptchaConfig()?.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){let s=await ne(n,e,t,t==="getOobCode");return i(n,s)}else return i(n,e).catch(async s=>{if(s.code==="auth/missing-recaptcha-token"){console.log(`${t} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);let o=await ne(n,e,t,t==="getOobCode");return i(n,o)}else return Promise.reject(s)});else if(r==="PHONE_PROVIDER")if(n._getRecaptchaConfig()?.isProviderEnabled("PHONE_PROVIDER")){let s=await ne(n,e,t);return i(n,s).catch(async o=>{if(n._getRecaptchaConfig()?.getProviderEnforcementState("PHONE_PROVIDER")==="AUDIT"&&(o.code==="auth/missing-recaptcha-token"||o.code==="auth/invalid-app-credential")){console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${t} flow.`);let a=await ne(n,e,t,!1,!0);return i(n,a)}return Promise.reject(o)})}else{let s=await ne(n,e,t,!1,!0);return i(n,s)}else return Promise.reject(r+" provider is not supported.")}async function Or(n){let e=X(n),t=await Si(e,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}),i=new Ne(t);e.tenantId==null?e._agentRecaptchaConfig=i:e._tenantRecaptchaConfigs[e.tenantId]=i,i.isAnyProviderEnabled()&&new xe(e).verify()}function Fi(n,e){let t=ut(n,"auth");if(t.isInitialized()){let r=t.getImmediate(),s=t.getOptions();if(ve(s,e??{}))return r;y(r,"already-initialized")}return t.initialize({options:e})}function Dr(n,e){let t=e?.persistence||[],i=(Array.isArray(t)?t:[t]).map(P);e?.errorMap&&n._updateErrorMap(e.errorMap),n._initializeWithPersistence(i,e?.popupRedirectResolver)}function Gi(n,e,t){let i=X(n);u(/^https?:\/\//.test(e),i,"invalid-emulator-scheme");let r=!!t?.disableWarnings,s=Hi(e),{host:o,port:a}=Lr(e),l=a===null?"":`:${a}`,d={url:`${s}//${o}${l}/`},h=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:r})});if(!i._canInitEmulator){u(i.config.emulator&&i.emulatorConfig,i,"emulator-config-failed"),u(ve(d,i.config.emulator)&&ve(h,i.emulatorConfig),i,"emulator-config-failed");return}i.config.emulator=d,i.emulatorConfig=h,i.settings.appVerificationDisabledForTesting=!0,Te(o)?(En(`${s}//${o}${l}`),wn("Auth",!0)):r||Mr()}function Hi(n){let e=n.indexOf(":");return e<0?"":n.substr(0,e+1)}function Lr(n){let e=Hi(n),t=/(\/\/)?([^?#/]+)/.exec(n.substr(e.length));if(!t)return{host:"",port:null};let i=t[2].split("@").pop()||"",r=/^(\[[^\]]+\])(:|$)/.exec(i);if(r){let s=r[1];return{host:s,port:si(i.substr(s.length+1))}}else{let[s,o]=i.split(":");return{host:s,port:si(o)}}}function si(n){if(!n)return null;let e=Number(n);return isNaN(e)?null:e}function Mr(){function n(){let e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}typeof console<"u"&&typeof console.info=="function"&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),typeof window<"u"&&typeof document<"u"&&(document.readyState==="loading"?window.addEventListener("DOMContentLoaded",n):n())}var F=class{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return b("not implemented")}_getIdTokenResponse(e){return b("not implemented")}_linkToIdToken(e,t){return b("not implemented")}_getReauthenticationResolver(e){return b("not implemented")}};async function Ur(n,e){return E(n,"POST","/v1/accounts:signUp",e)}async function xr(n,e){return q(n,"POST","/v1/accounts:signInWithPassword",I(n,e))}async function Vr(n,e){return q(n,"POST","/v1/accounts:signInWithEmailLink",I(n,e))}async function Fr(n,e){return q(n,"POST","/v1/accounts:signInWithEmailLink",I(n,e))}var de=class n extends F{constructor(e,t,i,r=null){super("password",i),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new n(e,t,"password")}static _fromEmailAndCode(e,t,i=null){return new n(e,t,"emailLink",i)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){let t=typeof e=="string"?JSON.parse(e):e;if(t?.email&&t?.password){if(t.signInMethod==="password")return this._fromEmailAndPassword(t.email,t.password);if(t.signInMethod==="emailLink")return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":let t={returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return ae(e,t,"signInWithPassword",xr,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Vr(e,{email:this._email,oobCode:this._password});default:y(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":let i={idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return ae(e,i,"signUpPassword",Ur,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Fr(e,{idToken:t,email:this._email,oobCode:this._password});default:y(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}};async function Y(n,e){return q(n,"POST","/v1/accounts:signInWithIdp",I(n,e))}var Gr="http://localhost",G=class n extends F{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){let t=new n(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):y("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){let t=typeof e=="string"?JSON.parse(e):e,{providerId:i,signInMethod:r,...s}=t;if(!i||!r)return null;let o=new n(i,r);return o.idToken=s.idToken||void 0,o.accessToken=s.accessToken||void 0,o.secret=s.secret,o.nonce=s.nonce,o.pendingToken=s.pendingToken||null,o}_getIdTokenResponse(e){let t=this.buildRequest();return Y(e,t)}_linkToIdToken(e,t){let i=this.buildRequest();return i.idToken=t,Y(e,i)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,Y(e,t)}buildRequest(){let e={requestUri:Gr,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{let t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=$(t)}return e}};async function oi(n,e){return E(n,"POST","/v1/accounts:sendVerificationCode",I(n,e))}async function Hr(n,e){return q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,e))}async function Wr(n,e){let t=await q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,e));if(t.temporaryProof)throw ie(n,"account-exists-with-different-credential",t);return t}var qr={USER_NOT_FOUND:"user-not-found"};async function zr(n,e){let t={...e,operation:"REAUTH"};return q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,t),qr)}var ue=class n extends F{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new n({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new n({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return Hr(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return Wr(e,{idToken:t,...this._makeVerificationRequest()})}_getReauthenticationResolver(e){return zr(e,this._makeVerificationRequest())}_makeVerificationRequest(){let{temporaryProof:e,phoneNumber:t,verificationId:i,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:i,code:r}}toJSON(){let e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){typeof e=="string"&&(e=JSON.parse(e));let{verificationId:t,verificationCode:i,phoneNumber:r,temporaryProof:s}=e;return!i&&!t&&!r&&!s?null:new n({verificationId:t,verificationCode:i,phoneNumber:r,temporaryProof:s})}};function $r(n){switch(n){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}function jr(n){let e=j(K(n)).link,t=e?j(K(e)).deep_link_id:null,i=j(K(n)).deep_link_id;return(i?j(K(i)).link:null)||i||t||e||n}var Ve=class n{constructor(e){let t=j(K(e)),i=t.apiKey??null,r=t.oobCode??null,s=$r(t.mode??null);u(i&&r&&s,"argument-error"),this.apiKey=i,this.operation=s,this.code=r,this.continueUrl=t.continueUrl??null,this.languageCode=t.lang??null,this.tenantId=t.tenantId??null}static parseLink(e){let t=jr(e);try{return new n(t)}catch{return null}}};var J=class n{constructor(){this.providerId=n.PROVIDER_ID}static credential(e,t){return de._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let i=Ve.parseLink(t);return u(i,"argument-error"),de._fromEmailAndCode(e,i.code,i.tenantId)}};J.PROVIDER_ID="password";J.EMAIL_PASSWORD_SIGN_IN_METHOD="password";J.EMAIL_LINK_SIGN_IN_METHOD="emailLink";var Fe=class{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}};var H=class extends Fe{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}};var he=class n extends H{constructor(){super("facebook.com")}static credential(e){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return n.credential(e.oauthAccessToken)}catch{return null}}};he.FACEBOOK_SIGN_IN_METHOD="facebook.com";he.PROVIDER_ID="facebook.com";var pe=class n extends H{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthIdToken:t,oauthAccessToken:i}=e;if(!t&&!i)return null;try{return n.credential(t,i)}catch{return null}}};pe.GOOGLE_SIGN_IN_METHOD="google.com";pe.PROVIDER_ID="google.com";var fe=class n extends H{constructor(){super("github.com")}static credential(e){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return n.credential(e.oauthAccessToken)}catch{return null}}};fe.GITHUB_SIGN_IN_METHOD="github.com";fe.PROVIDER_ID="github.com";var me=class n extends H{constructor(){super("twitter.com")}static credential(e,t){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthAccessToken:t,oauthTokenSecret:i}=e;if(!t||!i)return null;try{return n.credential(t,i)}catch{return null}}};me.TWITTER_SIGN_IN_METHOD="twitter.com";me.PROVIDER_ID="twitter.com";var ge=class n{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,i,r=!1){let s=await L._fromIdTokenResponse(e,i,r),o=ai(i);return new n({user:s,providerId:o,_tokenResponse:i,operationType:t})}static async _forOperation(e,t,i){await e._updateTokensIfNecessary(i,!0);let r=ai(i);return new n({user:e,providerId:r,_tokenResponse:i,operationType:t})}};function ai(n){return n.providerId?n.providerId:"phoneNumber"in n?"phone":null}var jt=class n extends Ee{constructor(e,t,i,r){super(t.code,t.message),this.operationType=i,this.user=r,Object.setPrototypeOf(this,n.prototype),this.customData={appName:e.name,tenantId:e.tenantId??void 0,_serverResponse:t.customData._serverResponse,operationType:i}}static _fromErrorAndOperation(e,t,i,r){return new n(e,t,i,r)}};function Wi(n,e,t,i){return(e==="reauthenticate"?t._getReauthenticationResolver(n):t._getIdTokenResponse(n)).catch(s=>{throw s.code==="auth/multi-factor-auth-required"?jt._fromErrorAndOperation(n,s,e,i):s})}async function Kr(n,e,t=!1){let i=await ce(n,e._linkToIdToken(n.auth,await n.getIdToken()),t);return ge._forOperation(n,"link",i)}async function Br(n,e,t=!1){let{auth:i}=n;if(S(i.app))return Promise.reject(x(i));let r="reauthenticate";try{let s=await ce(n,Wi(i,r,e,n),t);u(s.idToken,i,"internal-error");let o=sn(s.idToken);u(o,i,"internal-error");let{sub:a}=o;return u(n.uid===a,i,"user-mismatch"),ge._forOperation(n,r,s)}catch(s){throw s?.code==="auth/user-not-found"&&y(i,"user-mismatch"),s}}async function Yr(n,e,t=!1){if(S(n.app))return Promise.reject(x(n));let i="signIn",r=await Wi(n,i,e),s=await ge._fromIdTokenResponse(n,i,r);return t||await n._updateCurrentUser(s.user),s}function qi(n,e,t,i){return O(n).onIdTokenChanged(e,t,i)}function zi(n,e,t){return O(n).beforeAuthStateChanged(e,t)}function ci(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:start",I(n,e))}function Jr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:finalize",I(n,e))}function Xr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:start",I(n,e))}function Qr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:finalize",I(n,e))}var Ge="__sak";var He=class{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Ge,"1"),this.storage.removeItem(Ge),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){let t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}};var Zr=1e3,es=10,We=class extends He{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Mi(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let i=this.storage.getItem(t),r=this.localCache[t];i!==r&&e(t,r,i)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((o,a,l)=>{this.notifyListeners(o,l)});return}let i=e.key;t?this.detachListener():this.stopPolling();let r=()=>{let o=this.storage.getItem(i);!t&&this.localCache[i]===o||this.notifyListeners(i,o)},s=this.storage.getItem(i);br()&&s!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,es):r()}notifyListeners(e,t){this.localCache[e]=t;let i=this.listeners[e];if(i)for(let r of Array.from(i))r(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,i)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:i}),!0)})},Zr)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){let t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}};We.type="LOCAL";var $i=We;var ts=1e3;function Dt(n){let e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),t=RegExp(`${e}=([^;]+)`);return document.cookie.match(t)?.[1]??null}function Lt(n){return`${window.location.protocol==="http:"?"__dev_":"__HOST-"}FIREBASE_${n.split(":")[3]}`}var Kt=class{constructor(){this.type="COOKIE",this.listenerUnsubscribes=new Map}_getFinalTarget(e){if(typeof window===void 0)return e;let t=new URL(`${window.location.origin}/__cookies__`);return t.searchParams.set("finalTarget",e),t}async _isAvailable(){return typeof isSecureContext=="boolean"&&!isSecureContext||typeof navigator>"u"||typeof document>"u"?!1:navigator.cookieEnabled??!0}async _set(e,t){}async _get(e){if(!this._isAvailable())return null;let t=Lt(e);return window.cookieStore?(await window.cookieStore.get(t))?.value:Dt(t)}async _remove(e){if(!this._isAvailable()||!await this._get(e))return;let i=Lt(e);document.cookie=`${i}=;Max-Age=34560000;Partitioned;Secure;SameSite=Strict;Path=/;Priority=High`,await fetch("/__cookies__",{method:"DELETE"}).catch(()=>{})}_addListener(e,t){if(!this._isAvailable())return;let i=Lt(e);if(window.cookieStore){let a=(d=>{let h=d.changed.find(f=>f.name===i);h&&t(h.value),d.deleted.find(f=>f.name===i)&&t(null)}),l=()=>window.cookieStore.removeEventListener("change",a);return this.listenerUnsubscribes.set(t,l),window.cookieStore.addEventListener("change",a)}let r=Dt(i),s=setInterval(()=>{let a=Dt(i);a!==r&&(t(a),r=a)},ts),o=()=>clearInterval(s);this.listenerUnsubscribes.set(t,o)}_removeListener(e,t){let i=this.listenerUnsubscribes.get(t);i&&(i(),this.listenerUnsubscribes.delete(t))}};Kt.type="COOKIE";var qe=class extends He{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}};qe.type="SESSION";var an=qe;function ns(n){return Promise.all(n.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(t){return{fulfilled:!1,reason:t}}}))}var ze=class n{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){let t=this.receivers.find(r=>r.isListeningto(e));if(t)return t;let i=new n(e);return this.receivers.push(i),i}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let t=e,{eventId:i,eventType:r,data:s}=t.data,o=this.handlersMap[r];if(!o?.size)return;t.ports[0].postMessage({status:"ack",eventId:i,eventType:r});let a=Array.from(o).map(async d=>d(t.origin,s)),l=await ns(a);t.ports[0].postMessage({status:"done",eventId:i,eventType:r,response:l})}_subscribe(e,t){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),(!t||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}};ze.receivers=[];function cn(n="",e=10){let t="";for(let i=0;i<e;i++)t+=Math.floor(Math.random()*10);return n+t}var Bt=class{constructor(e){this.target=e,this.handlers=new Set}removeMessageHandler(e){e.messageChannel&&(e.messageChannel.port1.removeEventListener("message",e.onMessage),e.messageChannel.port1.close()),this.handlers.delete(e)}async _send(e,t,i=50){let r=typeof MessageChannel<"u"?new MessageChannel:null;if(!r)throw new Error("connection_unavailable");let s,o;return new Promise((a,l)=>{let d=cn("",20);r.port1.start();let h=setTimeout(()=>{l(new Error("unsupported_event"))},i);o={messageChannel:r,onMessage(p){let f=p;if(f.data.eventId===d)switch(f.data.status){case"ack":clearTimeout(h),s=setTimeout(()=>{l(new Error("timeout"))},3e3);break;case"done":clearTimeout(s),a(f.data.response);break;default:clearTimeout(h),clearTimeout(s),l(new Error("invalid_response"));break}}},this.handlers.add(o),r.port1.addEventListener("message",o.onMessage),this.target.postMessage({eventType:e,eventId:d,data:t},[r.port2])}).finally(()=>{o&&this.removeMessageHandler(o)})}};function k(){return window}function is(n){k().location.href=n}function ji(){return typeof k().WorkerGlobalScope<"u"&&typeof k().importScripts=="function"}async function rs(){if(!navigator?.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function ss(){return navigator?.serviceWorker?.controller||null}function os(){return ji()?self:null}var Ki="firebaseLocalStorageDb",as=1,$e="firebaseLocalStorage",Bi="fbase_key",W=class{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{t(this.request.error)})})}};function tt(n,e){return n.transaction([$e],e?"readwrite":"readonly").objectStore($e)}function cs(){let n=indexedDB.deleteDatabase(Ki);return new W(n).toPromise()}function Yt(){let n=indexedDB.open(Ki,as);return new Promise((e,t)=>{n.addEventListener("error",()=>{t(n.error)}),n.addEventListener("upgradeneeded",()=>{let i=n.result;try{i.createObjectStore($e,{keyPath:Bi})}catch(r){t(r)}}),n.addEventListener("success",async()=>{let i=n.result;i.objectStoreNames.contains($e)?e(i):(i.close(),await cs(),e(await Yt()))})})}async function li(n,e,t){let i=tt(n,!0).put({[Bi]:e,value:t});return new W(i).toPromise()}async function ls(n,e){let t=tt(n,!1).get(e),i=await new W(t).toPromise();return i===void 0?null:i.value}function di(n,e){let t=tt(n,!0).delete(e);return new W(t).toPromise()}var ds=800,us=3,je=class{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db?this.db:(this.db=await Yt(),this.db)}async _withRetries(e){let t=0;for(;;)try{let i=await this._openDb();return await e(i)}catch(i){if(t++>us)throw i;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return ji()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=ze._getInstance(os()),this.receiver._subscribe("keyChanged",async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)})),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){if(this.activeServiceWorker=await rs(),!this.activeServiceWorker)return;this.sender=new Bt(this.activeServiceWorker);let e=await this.sender._send("ping",{},800);e&&e[0]?.fulfilled&&e[0]?.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(!(!this.sender||!this.activeServiceWorker||ss()!==this.activeServiceWorker))try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;let e=await Yt();return await li(e,Ge,"1"),await di(e,Ge),!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite(async()=>(await this._withRetries(i=>li(i,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(i=>ls(i,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>di(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){let e=await this._withRetries(r=>{let s=tt(r,!1).getAll();return new W(s).toPromise()});if(!e)return[];if(this.pendingWrites!==0)return[];let t=[],i=new Set;if(e.length!==0)for(let{fbase_key:r,value:s}of e)i.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(s)&&(this.notifyListeners(r,s),t.push(r));for(let r of Object.keys(this.localCache))this.localCache[r]&&!i.has(r)&&(this.notifyListeners(r,null),t.push(r));return t}notifyListeners(e,t){this.localCache[e]=t;let i=this.listeners[e];if(i)for(let r of Array.from(i))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),ds)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){Object.keys(this.listeners).length===0&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&this.stopPolling()}};je.type="LOCAL";var Yi=je;function ui(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:start",I(n,e))}function hs(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:finalize",I(n,e))}function ps(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:finalize",I(n,e))}var pa=Vi("rcb"),fa=new V(3e4,6e4);var Ae="recaptcha";async function fs(n,e,t){if(!n._getRecaptchaConfig())try{await Or(n)}catch{console.log("Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.")}try{let i;if(typeof e=="string"?i={phoneNumber:e}:i=e,"session"in i){let r=i.session;if("phoneNumber"in i){u(r.type==="enroll",n,"internal-error");let s={idToken:r.credential,phoneEnrollmentInfo:{phoneNumber:i.phoneNumber,clientType:"CLIENT_TYPE_WEB"}};return(await ae(n,s,"mfaSmsEnrollment",async(d,h)=>{if(h.phoneEnrollmentInfo.captchaResponse===oe){u(t?.type===Ae,d,"argument-error");let p=await Mt(d,h,t);return ci(d,p)}return ci(d,h)},"PHONE_PROVIDER").catch(d=>Promise.reject(d))).phoneSessionInfo.sessionInfo}else{u(r.type==="signin",n,"internal-error");let s=i.multiFactorHint?.uid||i.multiFactorUid;u(s,n,"missing-multi-factor-info");let o={mfaPendingCredential:r.credential,mfaEnrollmentId:s,phoneSignInInfo:{clientType:"CLIENT_TYPE_WEB"}};return(await ae(n,o,"mfaSmsSignIn",async(h,p)=>{if(p.phoneSignInInfo.captchaResponse===oe){u(t?.type===Ae,h,"argument-error");let f=await Mt(h,p,t);return ui(h,f)}return ui(h,p)},"PHONE_PROVIDER").catch(h=>Promise.reject(h))).phoneResponseInfo.sessionInfo}}else{let r={phoneNumber:i.phoneNumber,clientType:"CLIENT_TYPE_WEB"};return(await ae(n,r,"sendVerificationCode",async(l,d)=>{if(d.captchaResponse===oe){u(t?.type===Ae,l,"argument-error");let h=await Mt(l,d,t);return oi(l,h)}return oi(l,d)},"PHONE_PROVIDER").catch(l=>Promise.reject(l))).sessionInfo}}finally{t?._reset()}}async function Mt(n,e,t){u(t.type===Ae,n,"argument-error");let i=await t.verify();u(typeof i=="string",n,"argument-error");let r={...e};if("phoneEnrollmentInfo"in r){let s=r.phoneEnrollmentInfo.phoneNumber,o=r.phoneEnrollmentInfo.captchaResponse,a=r.phoneEnrollmentInfo.clientType,l=r.phoneEnrollmentInfo.recaptchaVersion;return Object.assign(r,{phoneEnrollmentInfo:{phoneNumber:s,recaptchaToken:i,captchaResponse:o,clientType:a,recaptchaVersion:l}}),r}else if("phoneSignInInfo"in r){let s=r.phoneSignInInfo.captchaResponse,o=r.phoneSignInInfo.clientType,a=r.phoneSignInInfo.recaptchaVersion;return Object.assign(r,{phoneSignInInfo:{recaptchaToken:i,captchaResponse:s,clientType:o,recaptchaVersion:a}}),r}else return Object.assign(r,{recaptchaToken:i}),r}var _e=class n{constructor(e){this.providerId=n.PROVIDER_ID,this.auth=X(e)}verifyPhoneNumber(e,t){return fs(this.auth,e,O(t))}static credential(e,t){return ue._fromVerification(e,t)}static credentialFromResult(e){let t=e;return n.credentialFromTaggedObject(t)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{phoneNumber:t,temporaryProof:i}=e;return t&&i?ue._fromTokenResponse(t,i):null}};_e.PROVIDER_ID="phone";_e.PHONE_SIGN_IN_METHOD="phone";function ms(n,e){return e?P(e):(u(n._popupRedirectResolver,n,"argument-error"),n._popupRedirectResolver)}var Ie=class extends F{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Y(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Y(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Y(e,this._buildIdpRequest())}_buildIdpRequest(e){let t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}};function gs(n){return Yr(n.auth,new Ie(n),n.bypassAuthState)}function _s(n){let{auth:e,user:t}=n;return u(t,e,"internal-error"),Br(t,new Ie(n),n.bypassAuthState)}async function Is(n){let{auth:e,user:t}=n;return u(t,e,"internal-error"),Kr(t,new Ie(n),n.bypassAuthState)}var Ke=class{constructor(e,t,i,r,s=!1){this.auth=e,this.resolver=i,this.user=r,this.bypassAuthState=s,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(i){this.reject(i)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:i,postBody:r,tenantId:s,error:o,type:a}=e;if(o){this.reject(o);return}let l={auth:this.auth,requestUri:t,sessionId:i,tenantId:s||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(l))}catch(d){this.reject(d)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return gs;case"linkViaPopup":case"linkViaRedirect":return Is;case"reauthViaPopup":case"reauthViaRedirect":return _s;default:y(this.auth,"internal-error")}}resolve(e){R(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){R(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}};var Ts=new V(2e3,1e4);var Jt=class n extends Ke{constructor(e,t,i,r,s){super(e,t,r,s),this.provider=i,this.authWindow=null,this.pollId=null,n.currentPopupAction&&n.currentPopupAction.cancel(),n.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return u(e,this.auth,"internal-error"),e}async onExecution(){R(this.filter.length===1,"Popup operations only handle one event");let e=cn();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(t=>{this.reject(t)}),this.resolver._isIframeWebStorageSupported(this.auth,t=>{t||this.reject(A(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){this.reject(A(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,n.currentPopupAction=null}pollUserCancellation(){let e=()=>{if(this.authWindow?.window?.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(A(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,Ts.get())};e()}};Jt.currentPopupAction=null;var Es="pendingRedirect",ke=new Map,Xt=class extends Ke{constructor(e,t,i=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,i),this.eventId=null}async execute(){let e=ke.get(this.auth._key());if(!e){try{let i=await ws(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(i)}catch(t){e=()=>Promise.reject(t)}ke.set(this.auth._key(),e)}return this.bypassAuthState||ke.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type==="signInViaRedirect")return super.onAuthEvent(e);if(e.type==="unknown"){this.resolve(null);return}if(e.eventId){let t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}};async function ws(n,e){let t=Ss(e),i=ys(n);if(!await i._isAvailable())return!1;let r=await i._get(t)==="true";return await i._remove(t),r}function vs(n,e){ke.set(n._key(),e)}function ys(n){return P(n._redirectPersistence)}function Ss(n){return be(Es,n.config.apiKey,n.name)}async function bs(n,e,t=!1){if(S(n.app))return Promise.reject(x(n));let i=X(n),r=ms(i,e),o=await new Xt(i,r,t).execute();return o&&!t&&(delete o.user._redirectEventId,await i._persistUserIfCurrent(o.user),await i._setRedirectUser(null,e)),o}var As=600*1e3,Qt=class{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach(i=>{this.isEventForConsumer(e,i)&&(t=!0,this.sendToConsumer(e,i),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!ks(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){if(e.error&&!Ji(e)){let i=e.error.code?.split("auth/")[1]||"internal-error";t.onError(A(this.auth,i))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let i=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&i}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=As&&this.cachedEventUids.clear(),this.cachedEventUids.has(hi(e))}saveEventToCache(e){this.cachedEventUids.add(hi(e)),this.lastProcessedEventTime=Date.now()}};function hi(n){return[n.type,n.eventId,n.sessionId,n.tenantId].filter(e=>e).join("-")}function Ji({type:n,error:e}){return n==="unknown"&&e?.code==="auth/no-auth-event"}function ks(n){switch(n.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return Ji(n);default:return!1}}async function Ps(n,e={}){return E(n,"GET","/v1/projects",e)}var Rs=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Cs=/^https?/;async function Ns(n){if(n.config.emulator)return;let{authorizedDomains:e}=await Ps(n);for(let t of e)try{if(Os(t))return}catch{}y(n,"unauthorized-domain")}function Os(n){let e=xt(),{protocol:t,hostname:i}=new URL(e);if(n.startsWith("chrome-extension://")){let o=new URL(n);return o.hostname===""&&i===""?t==="chrome-extension:"&&n.replace("chrome-extension://","")===e.replace("chrome-extension://",""):t==="chrome-extension:"&&o.hostname===i}if(!Cs.test(t))return!1;if(Rs.test(n))return i===n;let r=n.replace(/\./g,"\\.");return new RegExp("^(.+\\."+r+"|"+r+")$","i").test(i)}var Ds=new V(3e4,6e4);function pi(){let n=k().___jsl;if(n?.H){for(let e of Object.keys(n.H))if(n.H[e].r=n.H[e].r||[],n.H[e].L=n.H[e].L||[],n.H[e].r=[...n.H[e].L],n.CP)for(let t=0;t<n.CP.length;t++)n.CP[t]=null}}function Ls(n){return new Promise((e,t)=>{function i(){pi(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{pi(),t(A(n,"network-request-failed"))},timeout:Ds.get()})}if(k().gapi?.iframes?.Iframe)e(gapi.iframes.getContext());else if(k().gapi?.load)i();else{let r=Vi("iframefcb");return k()[r]=()=>{gapi.load?i():t(A(n,"network-request-failed"))},xi(`${Cr()}?onload=${r}`).catch(s=>t(s))}}).catch(e=>{throw Pe=null,e})}var Pe=null;function Ms(n){return Pe=Pe||Ls(n),Pe}var Us=new V(5e3,15e3),xs="__/auth/iframe",Vs="emulator/auth/iframe",Fs={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Gs=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Hs(n){let e=n.config;u(e.authDomain,n,"auth-domain-config-required");let t=e.emulator?rn(e,Vs):`https://${n.config.authDomain}/${xs}`,i={apiKey:e.apiKey,appName:n.name,v:B},r=Gs.get(n.config.apiHost);r&&(i.eid=r);let s=n._getFrameworks();return s.length&&(i.fw=s.join(",")),`${t}?${$(i).slice(1)}`}async function Ws(n){let e=await Ms(n),t=k().gapi;return u(t,n,"internal-error"),e.open({where:document.body,url:Hs(n),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Fs,dontclear:!0},i=>new Promise(async(r,s)=>{await i.restyle({setHideOnLeave:!1});let o=A(n,"network-request-failed"),a=k().setTimeout(()=>{s(o)},Us.get());function l(){k().clearTimeout(a),r(i)}i.ping(l).then(l,()=>{s(o)})}))}var qs={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},zs=500,$s=600,js="_blank",Ks="http://localhost",Be=class{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}};function Bs(n,e,t,i=zs,r=$s){let s=Math.max((window.screen.availHeight-r)/2,0).toString(),o=Math.max((window.screen.availWidth-i)/2,0).toString(),a="",l={...qs,width:i.toString(),height:r.toString(),top:s,left:o},d=v().toLowerCase();t&&(a=Ci(d)?js:t),Pi(d)&&(e=e||Ks,l.scrollbars="yes");let h=Object.entries(l).reduce((f,[T,C])=>`${f}${T}=${C},`,"");if(Sr(d)&&a!=="_self")return Ys(e||"",a),new Be(null);let p=window.open(e||"",a,h);u(p,n,"popup-blocked");try{p.focus()}catch{}return new Be(p)}function Ys(n,e){let t=document.createElement("a");t.href=n,t.target=e;let i=document.createEvent("MouseEvent");i.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),t.dispatchEvent(i)}var Js="__/auth/handler",Xs="emulator/auth/handler",Qs=encodeURIComponent("fac");async function fi(n,e,t,i,r,s){u(n.config.authDomain,n,"auth-domain-config-required"),u(n.config.apiKey,n,"invalid-api-key");let o={apiKey:n.config.apiKey,appName:n.name,authType:t,redirectUrl:i,v:B,eventId:r};if(e instanceof Fe){e.setDefaultLanguage(n.languageCode),o.providerId=e.providerId||"",kn(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(let[h,p]of Object.entries(s||{}))o[h]=p}if(e instanceof H){let h=e.getScopes().filter(p=>p!=="");h.length>0&&(o.scopes=h.join(","))}n.tenantId&&(o.tid=n.tenantId);let a=o;for(let h of Object.keys(a))a[h]===void 0&&delete a[h];let l=await n._getAppCheckToken(),d=l?`#${Qs}=${encodeURIComponent(l)}`:"";return`${Zs(n)}?${$(a).slice(1)}${d}`}function Zs({config:n}){return n.emulator?rn(n,Xs):`https://${n.authDomain}/${Js}`}var Ut="webStorageSupport",Zt=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=an,this._completeRedirectFn=bs,this._overrideRedirectResult=vs}async _openPopup(e,t,i,r){R(this.eventManagers[e._key()]?.manager,"_initialize() not called before _openPopup()");let s=await fi(e,t,i,xt(),r);return Bs(e,s,cn())}async _openRedirect(e,t,i,r){await this._originValidation(e);let s=await fi(e,t,i,xt(),r);return is(s),new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){let{manager:r,promise:s}=this.eventManagers[t];return r?Promise.resolve(r):(R(s,"If manager is not set, promise should be"),s)}let i=this.initAndGetManager(e);return this.eventManagers[t]={promise:i},i.catch(()=>{delete this.eventManagers[t]}),i}async initAndGetManager(e){let t=await Ws(e),i=new Qt(e);return t.register("authEvent",r=>(u(r?.authEvent,e,"invalid-auth-event"),{status:i.onEvent(r.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:i},this.iframes[e._key()]=t,i}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Ut,{type:Ut},r=>{let s=r?.[0]?.[Ut];s!==void 0&&t(!!s),y(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Ns(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Mi()||Ri()||on()}},Xi=Zt,Ye=class{constructor(e){this.factorId=e}_process(e,t,i){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,i);case"signin":return this._finalizeSignIn(e,t.credential);default:return b("unexpected MultiFactorSessionType")}}},en=class n extends Ye{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new n(e)}_finalizeEnroll(e,t,i){return Jr(e,{idToken:t,displayName:i,phoneVerificationInfo:this.credential._makeVerificationRequest()})}_finalizeSignIn(e,t){return hs(e,{mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()})}},Je=class{constructor(){}static assertion(e){return en._fromCredential(e)}};Je.FACTOR_ID="phone";var Xe=class{static assertionForEnrollment(e,t){return Qe._fromSecret(e,t)}static assertionForSignIn(e,t){return Qe._fromEnrollmentId(e,t)}static async generateSecret(e){let t=e;u(typeof t.user?.auth<"u","internal-error");let i=await Xr(t.user.auth,{idToken:t.credential,totpEnrollmentInfo:{}});return Ze._fromStartTotpMfaEnrollmentResponse(i,t.user.auth)}};Xe.FACTOR_ID="totp";var Qe=class n extends Ye{constructor(e,t,i){super("totp"),this.otp=e,this.enrollmentId=t,this.secret=i}static _fromSecret(e,t){return new n(t,void 0,e)}static _fromEnrollmentId(e,t){return new n(t,e)}async _finalizeEnroll(e,t,i){return u(typeof this.secret<"u",e,"argument-error"),Qr(e,{idToken:t,displayName:i,totpVerificationInfo:this.secret._makeTotpVerificationInfo(this.otp)})}async _finalizeSignIn(e,t){u(this.enrollmentId!==void 0&&this.otp!==void 0,e,"argument-error");let i={verificationCode:this.otp};return ps(e,{mfaPendingCredential:t,mfaEnrollmentId:this.enrollmentId,totpVerificationInfo:i})}},Ze=class n{constructor(e,t,i,r,s,o,a){this.sessionInfo=o,this.auth=a,this.secretKey=e,this.hashingAlgorithm=t,this.codeLength=i,this.codeIntervalSeconds=r,this.enrollmentCompletionDeadline=s}static _fromStartTotpMfaEnrollmentResponse(e,t){return new n(e.totpSessionInfo.sharedSecretKey,e.totpSessionInfo.hashingAlgorithm,e.totpSessionInfo.verificationCodeLength,e.totpSessionInfo.periodSec,new Date(e.totpSessionInfo.finalizeEnrollmentTime).toUTCString(),e.totpSessionInfo.sessionInfo,t)}_makeTotpVerificationInfo(e){return{sessionInfo:this.sessionInfo,verificationCode:e}}generateQrCodeUrl(e,t){let i=!1;return(ye(e)||ye(t))&&(i=!0),i&&(ye(e)&&(e=this.auth.currentUser?.email||"unknownuser"),ye(t)&&(t=this.auth.name)),`otpauth://totp/${t}:${e}?secret=${this.secretKey}&issuer=${t}&algorithm=${this.hashingAlgorithm}&digits=${this.codeLength}`}};function ye(n){return typeof n>"u"||n?.length===0}var mi="@firebase/auth",gi="1.11.0";var tn=class{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){return this.assertAuthConfigured(),this.auth.currentUser?.uid||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;let t=this.auth.onIdTokenChanged(i=>{e(i?.stsTokenManager.accessToken||null)});this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();let t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){u(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}};function eo(n){switch(n){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}function to(n){dt(new ct("auth",(e,{options:t})=>{let i=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),s=e.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=i.options;u(o&&!o.includes(":"),"invalid-api-key",{appName:i.name});let l={apiKey:o,authDomain:a,clientPlatform:n,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Ui(n)},d=new qt(i,r,s,l);return Dr(d,t),d},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,i)=>{e.getProvider("auth-internal").initialize()})),dt(new ct("auth-internal",e=>{let t=X(e.getProvider("auth").getImmediate());return(i=>new tn(i))(t)},"PRIVATE").setInstantiationMode("EXPLICIT")),te(mi,gi,eo(n)),te(mi,gi,"esm2020")}var no=300,io=at("authIdTokenMaxAge")||no,_i=null,ro=n=>async e=>{let t=e&&await e.getIdTokenResult(),i=t&&(new Date().getTime()-Date.parse(t.issuedAtTime))/1e3;if(i&&i>io)return;let r=t?.token;_i!==r&&(_i=r,await fetch(n,{method:r?"POST":"DELETE",headers:r?{Authorization:`Bearer ${r}`}:{}}))};function ln(n=Nn()){let e=ut(n,"auth");if(e.isInitialized())return e.getImmediate();let t=Fi(n,{popupRedirectResolver:Xi,persistence:[Yi,$i,an]}),i=at("authTokenSyncURL");if(i&&typeof isSecureContext=="boolean"&&isSecureContext){let s=new URL(i,location.origin);if(location.origin===s.origin){let o=ro(s.toString());zi(t,o,()=>o(t.currentUser)),qi(t,a=>o(a))}}let r=Tn("auth");return r&&Gi(t,`http://${r}`),t}function so(){return document.getElementsByTagName("head")?.[0]??document}Pr({loadJS(n){return new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=e,i.onerror=r=>{let s=A("internal-error");s.customData=r,t(s)},i.type="text/javascript",i.charset="UTF-8",so().appendChild(i)})},gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="});to("Browser");cr();fn();fn();var un="root::cms:recentViews",oo=5,dn="rootcms:recentViewsChange";function Zi(){try{let n=window.localStorage.getItem(un);if(!n)return[];let e=JSON.parse(n);return Array.isArray(e)?e.filter(t=>t&&typeof t=="object"&&typeof t.url=="string"&&typeof t.label=="string"&&typeof t.kind=="string"):[]}catch{return[]}}function ao(n){try{window.localStorage.setItem(un,JSON.stringify(n))}catch(e){console.error("failed to persist recent views:",e)}window.dispatchEvent(new CustomEvent(dn))}function Qi(){return Zi().sort((n,e)=>e.viewedAt-n.viewedAt)}function er(n){if(!n.url)return;let e=Zi().filter(i=>i.url!==n.url),t=[{...n,viewedAt:Date.now()},...e].slice(0,oo);ao(t)}function tr(){let[n,e]=Q(()=>Qi());return Z(()=>{let t=()=>e(Qi()),i=r=>{r.key===un&&t()};return window.addEventListener(dn,t),window.addEventListener("storage",i),()=>{window.removeEventListener(dn,t),window.removeEventListener("storage",i)}},[]),n}function nr(n){let e=n.split("?")[0]||n;try{e=new URL(n,window.location.origin).pathname}catch{}e=e.replace(/\/+$/,"");let t=e.split("/").filter(Boolean);if(t.length===4&&t[0]==="cms"&&t[1]==="content"){let i=decodeURIComponent(t[2]),r=decodeURIComponent(t[3]);return{kind:"doc",url:`/cms/content/${t[2]}/${t[3]}`,label:`${i} / ${r}`,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="content"){let i=decodeURIComponent(t[2]),r=window.__ROOT_CTX?.collections?.[i];return{kind:"collection",url:`/cms/content/${t[2]}`,label:r?.name||i,description:r?.description,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="data"&&t[2]!=="new"){let i=decodeURIComponent(t[2]);return{kind:"data-source",url:`/cms/data/${t[2]}`,label:i,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="releases"&&t[2]!=="new"){let i=decodeURIComponent(t[2]);return{kind:"release",url:`/cms/releases/${t[2]}`,label:i,viewedAt:0}}return null}function ir(n){let e=n.text||"",t=(n.terms||[]).filter(Boolean);if(!e)return[];if(!t.length)return[{kind:"text",value:e.slice(0,180)}];let i=e.toLowerCase(),r=[];for(let p of t){let f=p.toLowerCase();if(!f)continue;let T=0;for(;(T=i.indexOf(f,T))!==-1;)r.push({start:T,end:T+f.length}),T+=f.length}if(r.length===0)return[{kind:"text",value:e.slice(0,180)}];r.sort((p,f)=>p.start-f.start);let s=[];for(let p of r){let f=s[s.length-1];f&&p.start<=f.end?f.end=Math.max(f.end,p.end):s.push({...p})}let o=s[0],a=Math.max(0,o.start-60),l=Math.min(e.length,o.end+120),d=[];a>0&&d.push({kind:"text",value:"\u2026 "});let h=a;for(let p of s){if(p.end<=a||p.start>=l)continue;let f=Math.max(p.start,a),T=Math.min(p.end,l);f>h&&d.push({kind:"text",value:e.slice(h,f)}),d.push({kind:"mark",value:e.slice(f,T)}),h=T}return h<l&&d.push({kind:"text",value:e.slice(h,l)}),l<e.length&&d.push({kind:"text",value:" \u2026"}),d}function co(n){return n==="collection"?c(mt,{size:16}):n==="data-source"?c(pt,{size:16}):c(gt,{size:16})}function lo(n){return n==="collection"?c(mt,{size:16}):n==="data-source"?c(pt,{size:16}):n==="release"?c(gt,{size:16}):c(ft,{size:16})}function uo(n){return n==="collection"?"Collection":n==="data-source"?"Data source":"Release"}function ho(n){return n==="collection"?"Collection":n==="data-source"?"Data source":n==="release"?"Release":"Doc"}function nt(n){let e=["GlobalSearchAction",n.className||"",n.hovered?"GlobalSearchAction--hovered":""].filter(Boolean).join(" ");return c("button",{type:"button",className:e,onMouseDown:t=>{t.preventDefault(),n.onTrigger()},children:n.children})}function rr(n){let e=n.action?.meta;if(!e)return null;if(e.kind==="header")return c("div",{className:"GlobalSearchAction GlobalSearchAction--header",children:e.label});if(e.kind==="footer")return c("div",{className:"GlobalSearchAction GlobalSearchAction--footer",children:["Last indexed ",e.lastIndexed]});if(e.kind==="tips")return c("div",{className:"GlobalSearchAction GlobalSearchAction--tips",children:[c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:'"\u2026"'}),c("span",{children:"exact phrase"})]}),c("span",{className:"GlobalSearchAction__tipSep",children:"\xB7"}),c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:"-word"}),c("span",{children:"exclude"})]}),c("span",{className:"GlobalSearchAction__tipSep",children:"\xB7"}),c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:"coll/slug"}),c("span",{children:"jump by id"})]})]});if(e.kind==="field"){let t=e.hit,i=ir(t);return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:[c("div",{className:"GlobalSearchAction__crumbs",children:[c("span",{className:"GlobalSearchAction__docId",children:t.docId}),c("span",{className:"GlobalSearchAction__sep",children:c(zn,{size:16})}),c("span",{className:"GlobalSearchAction__field",children:t.fieldLabel})]}),c("div",{className:"GlobalSearchAction__snippet",children:i.map((r,s)=>r.kind==="mark"?c("mark",{className:"GlobalSearchAction__mark",children:r.value},s):c("span",{children:r.value},s))})]})}if(e.kind==="doc"){let t=e.hit;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon",children:c(ft,{size:16})}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.slug}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:"Doc"}),c("span",{className:"GlobalSearchAction__subText",children:t.docId})]})]})]})})}if(e.kind==="target"){let t=e.target;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon",children:co(t.kind)}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.label}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:uo(t.kind)}),t.description&&c("span",{className:"GlobalSearchAction__subText",children:t.description})]})]})]})})}if(e.kind==="recent"){let t=e.view;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon GlobalSearchAction__icon--muted",children:c($n,{size:16})}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.label}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:ho(t.kind)}),c("span",{className:"GlobalSearchAction__subIcon",children:lo(t.kind)})]})]})]})})}return null}function po(n){if(!n?.lastRun)return null;let e=Date.now()-n.lastRun;return e<6e4?"just now":e<60*6e4?`${Math.floor(e/6e4)}m ago`:e<1440*6e4?`${Math.floor(e/(60*6e4))}h ago`:`${Math.floor(e/(1440*6e4))}d ago`}function fo(){let n=window.__ROOT_CTX?.collections||{};return Object.entries(n).map(([e,t])=>{let i=t?.name||e,r=t?.description;return{kind:"collection",id:e,url:`/cms/content/${e}`,label:i,description:r,haystack:[e,i,r].filter(Boolean).join(" ").toLowerCase()}}).sort((e,t)=>e.label.localeCompare(t.label))}function mo(n){return n.map(e=>({kind:"data-source",id:e.id,url:`/cms/data/${e.id}`,label:e.id,description:e.description,haystack:[e.id,e.description].filter(Boolean).join(" ").toLowerCase()}))}function go(n){return n.map(e=>({kind:"release",id:e.id,url:`/cms/releases/${e.id}`,label:e.id,description:e.description,haystack:[e.id,e.description].filter(Boolean).join(" ").toLowerCase()}))}function _o(n,e){let t=e.trim().toLowerCase();if(!t)return[];let i=[],r=[];for(let s of n)s.id.toLowerCase().startsWith(t)||s.label.toLowerCase().startsWith(t)?i.push(s):s.haystack.includes(t)&&r.push(s);return[...i,...r]}function Io(n,e){let t={kind:"field",hit:n};return{id:`field:${n.id}`,title:n.text||n.fieldLabel,description:`${n.collection} \xB7 ${n.slug} \xB7 ${n.fieldLabel}`,keywords:[n.collection,n.slug,n.fieldLabel],onTrigger:e,meta:t}}function To(n,e){let t={kind:"doc",hit:n};return{id:`doc:${n.docId}`,title:n.slug,description:n.collection,keywords:[n.collection,n.slug,n.docId],onTrigger:e,meta:t}}function Eo(n,e){let t={kind:"target",target:n};return{id:`${n.kind}:${n.id}`,title:n.label,description:n.description||n.id,keywords:[n.id,n.label,n.description||""],onTrigger:e,meta:t}}function wo(n,e){let t={kind:"recent",view:n};return{id:`recent:${n.url}`,title:n.label,description:n.description||"",keywords:[n.label,n.description||"",n.url],onTrigger:e,meta:t}}function it(n,e){let t={kind:"header",label:e};return{id:`header:${n}`,title:e,description:"",keywords:"__internal__",onTrigger:()=>{},meta:t}}function vo(n){return{id:"__last-indexed__",title:"",description:"",keywords:"__internal__",onTrigger:()=>{},meta:{kind:"footer",lastIndexed:n}}}function yo(){return{id:"__syntax-tips__",title:"",description:"",keywords:"__internal__",onTrigger:()=>{},meta:{kind:"tips"}}}function So(n){let{query:e,onQueryChange:t}=n,i=Fn(),r=e.trim(),{hits:s,loading:o,status:a}=Xn(e),{hits:l,loading:d}=Qn(e),h=tr(),[p,f]=Q([]);Z(()=>{let _=!1;return Hn().then(N=>{_||f(N)}).catch(N=>{console.error("failed to list data sources:",N)}),()=>{_=!0}},[]);let{releases:T}=qn(),C=ee(()=>[...fo(),...mo(p),...go(T)],[p,T]);Z(()=>{let _=nr(i.url);_&&er(_)},[i.url]);let M=_=>i.route(_),z=ee(()=>{if(!r)return h.length===0?[]:[it("recent","Recently viewed"),...h.map(w=>wo(w,()=>M(w.url)))];let _=[],N=_o(C,r);if(N.length>0){_.push(it("static","Jump to"));for(let w of N)_.push(Eo(w,()=>M(w.url)))}if(l.length>0){_.push(it("docs","Documents"));for(let w of l){let ot=`/cms/content/${w.collection}/${encodeURIComponent(w.slug)}`;_.push(To(w,()=>M(ot)))}}if(s.length>0){_.push(it("fields","Field matches"));for(let w of s){let ot=`/cms/content/${w.collection}/${encodeURIComponent(w.slug)}?deeplink=${encodeURIComponent(w.deepKey)}`;_.push(Io(w,()=>M(ot)))}}return _},[r,s,l,C,h,i]),U=po(a),st=ee(()=>{if(z.length===0)return z;let _=[...z];return r&&_.push(yo()),U&&r&&_.push(vo(U)),_},[z,U,r]),hn=o||d,ar=ee(()=>hn?"Searching\u2026":r?'No results. Try fewer words, or "quotes" for an exact phrase.':'Type to search \xB7 "quotes" for exact match \xB7 -word to exclude',[hn,r]);return c(Jn,{actions:st,shortcut:["mod + K"],onQueryChange:t,searchPlaceholder:"Search docs, collections, releases\u2026",searchIcon:c(jn,{size:18}),nothingFoundMessage:ar,filter:(_,N)=>N,actionComponent:rr,limit:50,cleanQueryOnClose:!0,withinPortal:!0,children:n.children})}function sr(n){let[e,t]=Q("");return c(So,{query:e,onQueryChange:t,children:n.children})}function g(n){return Gn(()=>n().then(e=>({default:e})))}var or=g(()=>import("./AIPage-YI3RFK5F.js").then(n=>n.AIPage)),bo=g(()=>import("./AssetsPage-4JNAOFYF.js").then(n=>n.AssetsPage)),Ao=g(()=>import("./CollectionPage-JWHH5G55.js").then(n=>n.CollectionPage)),ko=g(()=>import("./ComparePage-YZE3EMU4.js").then(n=>n.ComparePage)),Po=g(()=>import("./DataPage-VRCQSZZG.js").then(n=>n.DataPage)),Ro=g(()=>import("./DataSourcePage-WMSPBZ3W.js").then(n=>n.DataSourcePage)),Co=g(()=>import("./DocTranslationsPage-RY2LOZBX.js").then(n=>n.DocTranslationsPage)),No=g(()=>import("./DocumentPage-EEGTJMIW.js").then(n=>n.DocumentPage)),Oo=g(()=>import("./EditDataSourcePage-LLCX6K4J.js").then(n=>n.EditDataSourcePage)),Do=g(()=>import("./EditReleasePage-WQYXXMZQ.js").then(n=>n.EditReleasePage)),Lo=g(()=>import("./LogsPage-IP2DKEYR.js").then(n=>n.LogsPage)),Mo=g(()=>import("./NewDataSourcePage-RDYJC4DH.js").then(n=>n.NewDataSourcePage)),Uo=g(()=>import("./NewReleasePage-DGMFU2JN.js").then(n=>n.NewReleasePage)),xo=g(()=>import("./NotFoundPage-WDZ2K7EF.js").then(n=>n.NotFoundPage)),Vo=g(()=>import("./ProjectPage-HYJOQUWR.js").then(n=>n.ProjectPage)),Fo=g(()=>import("./ReleasePage-2KSF23TK.js").then(n=>n.ReleasePage)),Go=g(()=>import("./ReleasesPage-NZIBBXU4.js").then(n=>n.ReleasesPage)),Ho=g(()=>import("./SettingsPage-36XFWV62.js").then(n=>n.SettingsPage)),Wo=g(()=>import("./SidebarToolsPage-5C6YBWJ7.js").then(n=>n.SidebarToolsPage)),qo=g(()=>import("./TaskPage-SPIFPGPP.js").then(n=>n.TaskPage)),zo=g(()=>import("./TasksPage-ZOXRPBQV.js").then(n=>n.TasksPage)),$o=g(()=>import("./TranslationsArbPage-UHANA7JD.js").then(n=>n.TranslationsArbPage)),jo=g(()=>import("./TranslationsEditPage-PQY6W5YG.js").then(n=>n.TranslationsEditPage)),Ko=g(()=>import("./TranslationsPage-V2PQFCN5.js").then(n=>n.TranslationsPage));function Bo(){return c(mn,{theme:{fontFamily:"Inter, sans-serif",fontSizes:{xs:12,sm:14,md:16,lg:18,xl:20}},children:c(_n,{children:c(Kn.Provider,{value:window.firebase,children:c(Bn,{children:c(Yn,{children:c(Wn,{children:c(Zn,{children:c(gn,{modals:{[ht.id]:ht,[_t.id]:_t,[It.id]:It,[Tt.id]:Tt,[wt.id]:wt,[Et.id]:Et,[vt.id]:vt,[yt.id]:yt,[St.id]:St,[At.id]:At,[kt.id]:kt,[bt.id]:bt,[Pt.id]:Pt,[Ct.id]:Ct,[Nt.id]:Nt,[Rt.id]:Rt},children:c(xn,{children:c(sr,{children:c(Vn,{children:[c(m,{path:"/cms",component:Vo}),c(m,{path:"/cms/ai",component:or}),c(m,{path:"/cms/ai/chat/:chatId",component:or}),c(m,{path:"/cms/assets",component:bo}),c(m,{path:"/cms/compare",component:ko}),c(m,{path:"/cms/content/:collection?",component:Ao}),c(m,{path:"/cms/content/:collection/:slug",component:No}),c(m,{path:"/cms/data",component:Po}),c(m,{path:"/cms/data/new",component:Mo}),c(m,{path:"/cms/data/:id",component:Ro}),c(m,{path:"/cms/data/:id/edit",component:Oo}),c(m,{path:"/cms/logs",component:Lo}),c(m,{path:"/cms/releases",component:Go}),c(m,{path:"/cms/releases/new",component:Uo}),c(m,{path:"/cms/releases/:id",component:Fo}),c(m,{path:"/cms/releases/:id/edit",component:Do}),c(m,{path:"/cms/settings",component:Ho}),c(m,{path:"/cms/tasks",component:zo}),c(m,{path:"/cms/tasks/:id",component:qo}),c(m,{path:"/cms/tools/:id",component:Wo}),c(m,{path:"/cms/translations",component:Ko}),c(m,{path:"/cms/translations/arb",component:$o}),c(m,{path:"/cms/translations/:hash",component:jo}),c(m,{path:"/cms/translations/:collection/:slug",component:Co}),c(m,{default:!0,component:xo})]})})})})})})})})})})})}function Yo(){let n=window.location.pathname;window.location.search&&(n=`${n}?${window.location.search}`);let e=new URLSearchParams({continue:n});window.location.replace(`/cms/login?${e.toString()}`)}function Jo(){window.addEventListener("keydown",n=>{if(!((n.metaKey||n.ctrlKey)&&n.shiftKey&&n.key.toLowerCase()==="d")||window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")return;n.preventDefault();let i=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.location.assign(`http://localhost:4007${i}`)})}Jo();var rt=document.getElementById("root");function Xo(n){return(n?.code||"")==="auth/invalid-api-key"?"Firebase API key is invalid.":n?.message||"An unknown startup error occurred."}function Qo(n){console.error(n),rt.innerHTML="";let e=document.createElement("div");e.className="bootstrap bootstrap--error";let t=document.createElement("h1");t.className="bootstrap__error-title",t.textContent="Something went wrong";let i=document.createElement("p");i.className="bootstrap__error-message",i.textContent=Xo(n),e.append(t,i),rt.append(e)}try{let n=Cn(window.__ROOT_CTX.firebaseConfig),e=window.__ROOT_CTX.firebaseConfig.databaseId||"(default)",t=Dn(n,{experimentalForceLongPolling:!0,useFetchStreams:!1},e),i=ln(n),r=Un(n);i.onAuthStateChanged(s=>{if(!s){Yo();return}window.firebase={app:n,auth:i,db:t,storage:r,user:s},rt.innerHTML="",pn(c(Bo,{}),rt),Zo(s),ea(s,t)})}catch(n){Qo(n)}async function Zo(n){let e=await n.getIdToken(),t=await fetch("/cms/login",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:e})});if(t.status!==200){console.error("login failed"),console.log(t);return}if(!(await t.json()).success){console.error("login failed"),console.log(t);return}}async function ea(n,e){if(!n.email)return;let t=window.__ROOT_CTX.rootConfig.projectId,i=On(e,"Projects",t,"UserProfiles",n.email);try{await Ln(i,{email:n.email,displayName:n.displayName||"",photoURL:n.photoURL||"",uid:n.uid,lastSignedInAt:Mn()},{merge:!0})}catch(r){console.error("failed to save user profile:",r)}}
|
|
1
|
+
import{b as Nt}from"./chunk-DEGMKEHP.js";import{a as Xn,c as Qn}from"./chunk-BZIRGB4W.js";import{a as _t,b as It,d as vt,e as yt,f as St,g as At,h as Pt,n as Ct}from"./chunk-AEWL2RWR.js";import{b as Yn,d as Zn}from"./chunk-HHMG665Z.js";import"./chunk-YFA6U2CV.js";import{b as bt}from"./chunk-4W73RW5I.js";import"./chunk-P3NETZZP.js";import{b as Et}from"./chunk-JHBAMPGB.js";import{b as wt}from"./chunk-QGBR3J2Y.js";import"./chunk-KFAZBEPV.js";import"./chunk-KYDOSLTO.js";import"./chunk-PHBMVORG.js";import"./chunk-JZFTZ4X4.js";import"./chunk-HKINZLMW.js";import"./chunk-TJBVMFNQ.js";import"./chunk-CGCKJFL4.js";import"./chunk-VMT7JFAM.js";import{a as Un}from"./chunk-SKEP5WYH.js";import{b as ht,c as Tt,f as kt,g as Rt}from"./chunk-7UIUAHC4.js";import{f as Bn}from"./chunk-P4U2LUTF.js";import{a as Wn,b as qn}from"./chunk-3IYZCUPI.js";import"./chunk-RSVO46S3.js";import{a as Kn}from"./chunk-54DVDYU6.js";import"./chunk-X2WHBGTP.js";import"./chunk-ONTGW2VA.js";import{b as Hn}from"./chunk-4KE2SZKH.js";import"./chunk-L4RHGQUG.js";import{b as gn}from"./chunk-HRGYNHZ3.js";import"./chunk-W3HIZQ4Z.js";import"./chunk-JDW4UORS.js";import"./chunk-YDO2EDVY.js";import"./chunk-AFWBSIPL.js";import"./chunk-XOQ3KDSR.js";import"./chunk-62UWGWON.js";import{d as _n}from"./chunk-I6ICVKEC.js";import"./chunk-HLMBCVRX.js";import"./chunk-ORXEMIQC.js";import"./chunk-5MV6XVGA.js";import{c as On,d as Dn,p as Ln,u as Mn}from"./chunk-EGEB6N4J.js";import{a as xn,b as Vn,c as m,d as Fn,e as Gn,h as Jn}from"./chunk-AL3TN2KI.js";import{Ac as jn,B as mn,Bb as ft,Eb as mt,Ha as c,a as Q,ab as zn,c as Z,g as ee,ib as $n,j as fn,pb as pt,wc as gt}from"./chunk-NZHF733K.js";import{g as pn,k as cr}from"./chunk-KUCVLANF.js";import{A as Rn,B as dt,C as ut,D as S,E as B,F as Cn,G as Nn,H as te,a as In,b as Tn,d as at,e as Te,f as En,h as wn,i as v,j as vn,k as yn,l as Sn,m as bn,n as An,p as Ee,q as we,r as kn,s as ve,t as $,u as j,v as K,w as Pn,x as O,y as ct,z as lt}from"./chunk-DTMZLUNY.js";import"./chunk-PVAE643M.js";var lr="firebase",dr="12.2.1";te(lr,dr,"app");function Ii(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}}var Ti=Ii,Ei=new we("auth","Firebase",Ii());var Re=new Rn("@firebase/auth");function ur(n,...e){Re.logLevel<=lt.WARN&&Re.warn(`Auth (${B}): ${n}`,...e)}function Se(n,...e){Re.logLevel<=lt.ERROR&&Re.error(`Auth (${B}): ${n}`,...e)}function y(n,...e){throw nn(n,...e)}function A(n,...e){return nn(n,...e)}function wi(n,e,t){let i={...Ti(),[e]:t};return new we("auth","Firebase",i).create(e,{appName:n.name})}function x(n){return wi(n,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function nn(n,...e){if(typeof n!="string"){let t=e[0],i=[...e.slice(1)];return i[0]&&(i[0].appName=n.name),n._errorFactory.create(t,...i)}return Ei.create(n,...e)}function u(n,e,...t){if(!n)throw nn(e,...t)}function b(n){let e="INTERNAL ASSERTION FAILED: "+n;throw Se(e),new Error(e)}function R(n,e){n||b(e)}function xt(){return typeof self<"u"&&self.location?.href||""}function hr(){return ei()==="http:"||ei()==="https:"}function ei(){return typeof self<"u"&&self.location?.protocol||null}function pr(){return typeof navigator<"u"&&navigator&&"onLine"in navigator&&typeof navigator.onLine=="boolean"&&(hr()||Sn()||"connection"in navigator)?navigator.onLine:!0}function fr(){if(typeof navigator>"u")return null;let n=navigator;return n.languages&&n.languages[0]||n.language||null}var V=class{constructor(e,t){this.shortDelay=e,this.longDelay=t,R(t>e,"Short delay should be less than long delay!"),this.isMobile=vn()||bn()}get(){return pr()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}};function rn(n,e){R(n.emulator,"Emulator should always be set here");let{url:t}=n.emulator;return e?`${t}${e.startsWith("/")?e.slice(1):e}`:t}var Ce=class{static initialize(e,t,i){this.fetchImpl=e,t&&(this.headersImpl=t),i&&(this.responseImpl=i)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<"u"&&"fetch"in self)return self.fetch;if(typeof globalThis<"u"&&globalThis.fetch)return globalThis.fetch;if(typeof fetch<"u")return fetch;b("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<"u"&&"Headers"in self)return self.Headers;if(typeof globalThis<"u"&&globalThis.Headers)return globalThis.Headers;if(typeof Headers<"u")return Headers;b("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<"u"&&"Response"in self)return self.Response;if(typeof globalThis<"u"&&globalThis.Response)return globalThis.Response;if(typeof Response<"u")return Response;b("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}};var mr={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"};var gr=["/v1/accounts:signInWithCustomToken","/v1/accounts:signInWithEmailLink","/v1/accounts:signInWithIdp","/v1/accounts:signInWithPassword","/v1/accounts:signInWithPhoneNumber","/v1/token"],_r=new V(3e4,6e4);function I(n,e){return n.tenantId&&!e.tenantId?{...e,tenantId:n.tenantId}:e}async function E(n,e,t,i,r={}){return vi(n,r,async()=>{let s={},o={};i&&(e==="GET"?o=i:s={body:JSON.stringify(i)});let a=$({key:n.config.apiKey,...o}).slice(1),l=await n._getAdditionalHeaders();l["Content-Type"]="application/json",n.languageCode&&(l["X-Firebase-Locale"]=n.languageCode);let d={method:e,headers:l,...s};return yn()||(d.referrerPolicy="no-referrer"),n.emulatorConfig&&Te(n.emulatorConfig.host)&&(d.credentials="include"),Ce.fetch()(await yi(n,n.config.apiHost,t,a),d)})}async function vi(n,e,t){n._canInitEmulator=!1;let i={...mr,...e};try{let r=new Vt(n),s=await Promise.race([t(),r.promise]);r.clearNetworkTimeout();let o=await s.json();if("needConfirmation"in o)throw ie(n,"account-exists-with-different-credential",o);if(s.ok&&!("errorMessage"in o))return o;{let a=s.ok?o.errorMessage:o.error.message,[l,d]=a.split(" : ");if(l==="FEDERATED_USER_ID_ALREADY_LINKED")throw ie(n,"credential-already-in-use",o);if(l==="EMAIL_EXISTS")throw ie(n,"email-already-in-use",o);if(l==="USER_DISABLED")throw ie(n,"user-disabled",o);let h=i[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(d)throw wi(n,h,d);y(n,h)}}catch(r){if(r instanceof Ee)throw r;y(n,"network-request-failed",{message:String(r)})}}async function q(n,e,t,i,r={}){let s=await E(n,e,t,i,r);return"mfaPendingCredential"in s&&y(n,"multi-factor-auth-required",{_serverResponse:s}),s}async function yi(n,e,t,i){let r=`${e}${t}?${i}`,s=n,o=s.config.emulator?rn(n.config,r):`${n.config.apiScheme}://${r}`;return gr.includes(t)&&(await s._persistenceManagerAvailable,s._getPersistenceType()==="COOKIE")?s._getPersistence()._getFinalTarget(o).toString():o}function Ir(n){switch(n){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}var Vt=class{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((t,i)=>{this.timer=setTimeout(()=>i(A(this.auth,"network-request-failed")),_r.get())})}};function ie(n,e,t){let i={appName:n.name};t.email&&(i.email=t.email),t.phoneNumber&&(i.phoneNumber=t.phoneNumber);let r=A(n,e,i);return r.customData._tokenResponse=t,r}function ti(n){return n!==void 0&&n.enterprise!==void 0}var Ne=class{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||this.recaptchaEnforcementState.length===0)return null;for(let t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return Ir(t.enforcementState);return null}isProviderEnabled(e){return this.getProviderEnforcementState(e)==="ENFORCE"||this.getProviderEnforcementState(e)==="AUDIT"}isAnyProviderEnabled(){return this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")||this.isProviderEnabled("PHONE_PROVIDER")}};async function Si(n,e){return E(n,"GET","/v2/recaptchaConfig",I(n,e))}async function Tr(n,e){return E(n,"POST","/v1/accounts:delete",e)}async function Oe(n,e){return E(n,"POST","/v1/accounts:lookup",e)}function re(n){if(n)try{let e=new Date(Number(n));if(!isNaN(e.getTime()))return e.toUTCString()}catch{}}async function bi(n,e=!1){let t=O(n),i=await t.getIdToken(e),r=sn(i);u(r&&r.exp&&r.auth_time&&r.iat,t.auth,"internal-error");let s=typeof r.firebase=="object"?r.firebase:void 0,o=s?.sign_in_provider;return{claims:r,token:i,authTime:re(Ot(r.auth_time)),issuedAtTime:re(Ot(r.iat)),expirationTime:re(Ot(r.exp)),signInProvider:o||null,signInSecondFactor:s?.sign_in_second_factor||null}}function Ot(n){return Number(n)*1e3}function sn(n){let[e,t,i]=n.split(".");if(e===void 0||t===void 0||i===void 0)return Se("JWT malformed, contained fewer than 3 sections"),null;try{let r=In(t);return r?JSON.parse(r):(Se("Failed to decode base64 JWT payload"),null)}catch(r){return Se("Caught error parsing JWT payload as JSON",r?.toString()),null}}function ni(n){let e=sn(n);return u(e,"internal-error"),u(typeof e.exp<"u","internal-error"),u(typeof e.iat<"u","internal-error"),Number(e.exp)-Number(e.iat)}async function ce(n,e,t=!1){if(t)return e;try{return await e}catch(i){throw i instanceof Ee&&Er(i)&&n.auth.currentUser===n&&await n.auth.signOut(),i}}function Er({code:n}){return n==="auth/user-disabled"||n==="auth/user-token-expired"}var Ft=class{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){if(e){let t=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),t}else{this.errorBackoff=3e4;let i=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,i)}}schedule(e=!1){if(!this.isRunning)return;let t=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){e?.code==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}};var le=class{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=re(this.lastLoginAt),this.creationTime=re(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}};async function De(n){let e=n.auth,t=await n.getIdToken(),i=await ce(n,Oe(e,{idToken:t}));u(i?.users.length,e,"internal-error");let r=i.users[0];n._notifyReloadListener(r);let s=r.providerUserInfo?.length?ki(r.providerUserInfo):[],o=wr(n.providerData,s),a=n.isAnonymous,l=!(n.email&&r.passwordHash)&&!o?.length,d=a?l:!1,h={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:o,metadata:new le(r.createdAt,r.lastLoginAt),isAnonymous:d};Object.assign(n,h)}async function Ai(n){let e=O(n);await De(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}function wr(n,e){return[...n.filter(i=>!e.some(r=>r.providerId===i.providerId)),...e]}function ki(n){return n.map(({providerId:e,...t})=>({providerId:e,uid:t.rawId||"",displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}))}async function vr(n,e){let t=await vi(n,{},async()=>{let i=$({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:r,apiKey:s}=n.config,o=await yi(n,r,"/v1/token",`key=${s}`),a=await n._getAdditionalHeaders();a["Content-Type"]="application/x-www-form-urlencoded";let l={method:"POST",headers:a,body:i};return n.emulatorConfig&&Te(n.emulatorConfig.host)&&(l.credentials="include"),Ce.fetch()(o,l)});return{accessToken:t.access_token,expiresIn:t.expires_in,refreshToken:t.refresh_token}}async function yr(n,e){return E(n,"POST","/v2/accounts:revokeToken",I(n,e))}var se=class n{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){u(e.idToken,"internal-error"),u(typeof e.idToken<"u","internal-error"),u(typeof e.refreshToken<"u","internal-error");let t="expiresIn"in e&&typeof e.expiresIn<"u"?Number(e.expiresIn):ni(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){u(e.length!==0,"internal-error");let t=ni(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:(u(this.refreshToken,e,"user-token-expired"),this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null)}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){let{accessToken:i,refreshToken:r,expiresIn:s}=await vr(e,t);this.updateTokensAndExpiration(i,r,Number(s))}updateTokensAndExpiration(e,t,i){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+i*1e3}static fromJSON(e,t){let{refreshToken:i,accessToken:r,expirationTime:s}=t,o=new n;return i&&(u(typeof i=="string","internal-error",{appName:e}),o.refreshToken=i),r&&(u(typeof r=="string","internal-error",{appName:e}),o.accessToken=r),s&&(u(typeof s=="number","internal-error",{appName:e}),o.expirationTime=s),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new n,this.toJSON())}_performRefresh(){return b("not implemented")}};function D(n,e){u(typeof n=="string"||typeof n>"u","internal-error",{appName:e})}var L=class n{constructor({uid:e,auth:t,stsTokenManager:i,...r}){this.providerId="firebase",this.proactiveRefresh=new Ft(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=i,this.accessToken=i.accessToken,this.displayName=r.displayName||null,this.email=r.email||null,this.emailVerified=r.emailVerified||!1,this.phoneNumber=r.phoneNumber||null,this.photoURL=r.photoURL||null,this.isAnonymous=r.isAnonymous||!1,this.tenantId=r.tenantId||null,this.providerData=r.providerData?[...r.providerData]:[],this.metadata=new le(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){let t=await ce(this,this.stsTokenManager.getToken(this.auth,e));return u(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return bi(this,e)}reload(){return Ai(this)}_assign(e){this!==e&&(u(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(t=>({...t})),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){let t=new n({...this,auth:e,stsTokenManager:this.stsTokenManager._clone()});return t.metadata._copy(this.metadata),t}_onReload(e){u(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let i=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),i=!0),t&&await De(this),await this.auth._persistUserIfCurrent(this),i&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(S(this.auth.app))return Promise.reject(x(this.auth));let e=await this.getIdToken();return await ce(this,Tr(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return{uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>({...e})),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId,...this.metadata.toJSON(),apiKey:this.auth.config.apiKey,appName:this.auth.name}}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){let i=t.displayName??void 0,r=t.email??void 0,s=t.phoneNumber??void 0,o=t.photoURL??void 0,a=t.tenantId??void 0,l=t._redirectEventId??void 0,d=t.createdAt??void 0,h=t.lastLoginAt??void 0,{uid:p,emailVerified:f,isAnonymous:T,providerData:C,stsTokenManager:M}=t;u(p&&M,e,"internal-error");let z=se.fromJSON(this.name,M);u(typeof p=="string",e,"internal-error"),D(i,e.name),D(r,e.name),u(typeof f=="boolean",e,"internal-error"),u(typeof T=="boolean",e,"internal-error"),D(s,e.name),D(o,e.name),D(a,e.name),D(l,e.name),D(d,e.name),D(h,e.name);let U=new n({uid:p,auth:e,email:r,emailVerified:f,displayName:i,isAnonymous:T,photoURL:o,phoneNumber:s,tenantId:a,stsTokenManager:z,createdAt:d,lastLoginAt:h});return C&&Array.isArray(C)&&(U.providerData=C.map(st=>({...st}))),l&&(U._redirectEventId=l),U}static async _fromIdTokenResponse(e,t,i=!1){let r=new se;r.updateFromServerResponse(t);let s=new n({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:i});return await De(s),s}static async _fromGetAccountInfoResponse(e,t,i){let r=t.users[0];u(r.localId!==void 0,"internal-error");let s=r.providerUserInfo!==void 0?ki(r.providerUserInfo):[],o=!(r.email&&r.passwordHash)&&!s?.length,a=new se;a.updateFromIdToken(i);let l=new n({uid:r.localId,auth:e,stsTokenManager:a,isAnonymous:o}),d={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:s,metadata:new le(r.createdAt,r.lastLoginAt),isAnonymous:!(r.email&&r.passwordHash)&&!s?.length};return Object.assign(l,d),l}};var ii=new Map;function P(n){R(n instanceof Function,"Expected a class definition");let e=ii.get(n);return e?(R(e instanceof n,"Instance stored in cache mismatched with class"),e):(e=new n,ii.set(n,e),e)}var Le=class{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){let t=this.storage[e];return t===void 0?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}};Le.type="NONE";var Gt=Le;function be(n,e,t){return`firebase:${n}:${e}:${t}`}var Me=class n{constructor(e,t,i){this.persistence=e,this.auth=t,this.userKey=i;let{config:r,name:s}=this.auth;this.fullUserKey=be(this.userKey,r.apiKey,s),this.fullPersistenceKey=be("persistence",r.apiKey,s),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){let e=await this.persistence._get(this.fullUserKey);if(!e)return null;if(typeof e=="string"){let t=await Oe(this.auth,{idToken:e}).catch(()=>{});return t?L._fromGetAccountInfoResponse(this.auth,t,e):null}return L._fromJSON(this.auth,e)}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;let t=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,t)return this.setCurrentUser(t)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,i="authUser"){if(!t.length)return new n(P(Gt),e,i);let r=(await Promise.all(t.map(async d=>{if(await d._isAvailable())return d}))).filter(d=>d),s=r[0]||P(Gt),o=be(i,e.config.apiKey,e.name),a=null;for(let d of t)try{let h=await d._get(o);if(h){let p;if(typeof h=="string"){let f=await Oe(e,{idToken:h}).catch(()=>{});if(!f)break;p=await L._fromGetAccountInfoResponse(e,f,h)}else p=L._fromJSON(e,h);d!==s&&(a=p),s=d;break}}catch{}let l=r.filter(d=>d._shouldAllowMigration);return!s._shouldAllowMigration||!l.length?new n(s,e,i):(s=l[0],a&&await s._set(o,a.toJSON()),await Promise.all(t.map(async d=>{if(d!==s)try{await d._remove(o)}catch{}})),new n(s,e,i))}};function ri(n){let e=n.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(Ni(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(Pi(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Di(e))return"Blackberry";if(Li(e))return"Webos";if(Ri(e))return"Safari";if((e.includes("chrome/")||Ci(e))&&!e.includes("edge/"))return"Chrome";if(Oi(e))return"Android";{let t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,i=n.match(t);if(i?.length===2)return i[1]}return"Other"}function Pi(n=v()){return/firefox\//i.test(n)}function Ri(n=v()){let e=n.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function Ci(n=v()){return/crios\//i.test(n)}function Ni(n=v()){return/iemobile/i.test(n)}function Oi(n=v()){return/android/i.test(n)}function Di(n=v()){return/blackberry/i.test(n)}function Li(n=v()){return/webos/i.test(n)}function on(n=v()){return/iphone|ipad|ipod/i.test(n)||/macintosh/i.test(n)&&/mobile/i.test(n)}function Sr(n=v()){return on(n)&&!!window.navigator?.standalone}function br(){return An()&&document.documentMode===10}function Mi(n=v()){return on(n)||Oi(n)||Li(n)||Di(n)||/windows phone/i.test(n)||Ni(n)}function Ui(n,e=[]){let t;switch(n){case"Browser":t=ri(v());break;case"Worker":t=`${ri(v())}-${n}`;break;default:t=n}let i=e.length?e.join(","):"FirebaseCore-web";return`${t}/JsCore/${B}/${i}`}var Ht=class{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let i=s=>new Promise((o,a)=>{try{let l=e(s);o(l)}catch(l){a(l)}});i.onAbort=t,this.queue.push(i);let r=this.queue.length-1;return()=>{this.queue[r]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;let t=[];try{for(let i of this.queue)await i(e),i.onAbort&&t.push(i.onAbort)}catch(i){t.reverse();for(let r of t)try{r()}catch{}throw this.auth._errorFactory.create("login-blocked",{originalMessage:i?.message})}}};async function Ar(n,e={}){return E(n,"GET","/v2/passwordPolicy",I(n,e))}var kr=6,Wt=class{constructor(e){let t=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=t.minPasswordLength??kr,t.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=t.maxPasswordLength),t.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=t.containsLowercaseCharacter),t.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=t.containsUppercaseCharacter),t.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=t.containsNumericCharacter),t.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=t.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState==="ENFORCEMENT_STATE_UNSPECIFIED"&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=e.allowedNonAlphanumericCharacters?.join("")??"",this.forceUpgradeOnSignin=e.forceUpgradeOnSignin??!1,this.schemaVersion=e.schemaVersion}validatePassword(e){let t={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,t),this.validatePasswordCharacterOptions(e,t),t.isValid&&(t.isValid=t.meetsMinPasswordLength??!0),t.isValid&&(t.isValid=t.meetsMaxPasswordLength??!0),t.isValid&&(t.isValid=t.containsLowercaseLetter??!0),t.isValid&&(t.isValid=t.containsUppercaseLetter??!0),t.isValid&&(t.isValid=t.containsNumericCharacter??!0),t.isValid&&(t.isValid=t.containsNonAlphanumericCharacter??!0),t}validatePasswordLengthOptions(e,t){let i=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;i&&(t.meetsMinPasswordLength=e.length>=i),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let i;for(let r=0;r<e.length;r++)i=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,i>="a"&&i<="z",i>="A"&&i<="Z",i>="0"&&i<="9",this.allowedNonAlphanumericCharacters.includes(i))}updatePasswordCharacterOptionsStatuses(e,t,i,r,s){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=i)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=s))}};var qt=class{constructor(e,t,i,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=i,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new Ue(this),this.idTokenSubscription=new Ue(this),this.beforeStateQueue=new Ht(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=Ei,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this._resolvePersistenceManagerAvailable=void 0,this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion,this._persistenceManagerAvailable=new Promise(s=>this._resolvePersistenceManagerAvailable=s)}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=P(t)),this._initializationPromise=this.queue(async()=>{if(!this._deleted&&(this.persistenceManager=await Me.create(this,e),this._resolvePersistenceManagerAvailable?.(),!this._deleted)){if(this._popupRedirectResolver?._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}await this.initializeCurrentUser(t),this.lastNotifiedUid=this.currentUser?.uid||null,!this._deleted&&(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;let e=await this.assertedPersistence.getCurrentUser();if(!(!this.currentUser&&!e)){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{let t=await Oe(this,{idToken:e}),i=await L._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(i)}catch(t){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",t),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(S(this.app)){let s=this.app.settings.authIdToken;return s?new Promise(o=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(s).then(o,o))}):this.directlySetCurrentUser(null)}let t=await this.assertedPersistence.getCurrentUser(),i=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let s=this.redirectUser?._redirectEventId,o=i?._redirectEventId,a=await this.tryRedirectSignIn(e);(!s||s===o)&&a?.user&&(i=a.user,r=!0)}if(!i)return this.directlySetCurrentUser(null);if(!i._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(i)}catch(s){i=t,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(s))}return i?this.reloadAndSetCurrentUserOrClear(i):this.directlySetCurrentUser(null)}return u(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===i._redirectEventId?this.directlySetCurrentUser(i):this.reloadAndSetCurrentUserOrClear(i)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await De(e)}catch(t){if(t?.code!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=fr()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(S(this.app))return Promise.reject(x(this));let t=e?O(e):null;return t&&u(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&u(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return S(this.app)?Promise.reject(x(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return S(this.app)?Promise.reject(x(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(P(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();let t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=await Ar(this),t=new Wt(e);this.tenantId===null?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistenceType(){return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){this._errorFactory=new we("auth","Firebase",e())}onAuthStateChanged(e,t,i){return this.registerStateListener(this.authStateSubscription,e,t,i)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,i){return this.registerStateListener(this.idTokenSubscription,e,t,i)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{let i=this.onAuthStateChanged(()=>{i(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t=await this.currentUser.getIdToken(),i={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:t};this.tenantId!=null&&(i.tenantId=this.tenantId),await yr(this,i)}}toJSON(){return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){let i=await this.getOrInitRedirectPersistenceManager(t);return e===null?i.removeCurrentUser():i.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&P(e)||this._popupRedirectResolver;u(t,this,"argument-error"),this.redirectPersistenceManager=await Me.create(this,[P(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){return this._isInitialized&&await this.queue(async()=>{}),this._currentUser?._redirectEventId===e?this._currentUser:this.redirectUser?._redirectEventId===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);let e=this.currentUser?.uid??null;this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,i,r){if(this._deleted)return()=>{};let s=typeof t=="function"?t:t.next.bind(t),o=!1,a=this._isInitialized?Promise.resolve():this._initializationPromise;if(u(a,this,"internal-error"),a.then(()=>{o||s(this.currentUser)}),typeof t=="function"){let l=e.addObserver(t,i,r);return()=>{o=!0,l()}}else{let l=e.addObserver(t);return()=>{o=!0,l()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return u(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Ui(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){let e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);let t=await this.heartbeatServiceProvider.getImmediate({optional:!0})?.getHeartbeatsHeader();t&&(e["X-Firebase-Client"]=t);let i=await this._getAppCheckToken();return i&&(e["X-Firebase-AppCheck"]=i),e}async _getAppCheckToken(){if(S(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;let e=await this.appCheckServiceProvider.getImmediate({optional:!0})?.getToken();return e?.error&&ur(`Error while retrieving App Check token: ${e.error}`),e?.token}};function X(n){return O(n)}var Ue=class{constructor(e){this.auth=e,this.observer=null,this.addObserver=Pn(t=>this.observer=t)}get next(){return u(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}};var et={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function Pr(n){et=n}function xi(n){return et.loadJS(n)}function Rr(){return et.recaptchaEnterpriseScript}function Cr(){return et.gapiScript}function Vi(n){return`__${n}${Math.floor(Math.random()*1e6)}`}var zt=class{constructor(){this.enterprise=new $t}ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}},$t=class{ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}};var Nr="recaptcha-enterprise",oe="NO_RECAPTCHA",xe=class{constructor(e){this.type=Nr,this.auth=X(e)}async verify(e="verify",t=!1){async function i(s){if(!t){if(s.tenantId==null&&s._agentRecaptchaConfig!=null)return s._agentRecaptchaConfig.siteKey;if(s.tenantId!=null&&s._tenantRecaptchaConfigs[s.tenantId]!==void 0)return s._tenantRecaptchaConfigs[s.tenantId].siteKey}return new Promise(async(o,a)=>{Si(s,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(l=>{if(l.recaptchaKey===void 0)a(new Error("recaptcha Enterprise site key undefined"));else{let d=new Ne(l);return s.tenantId==null?s._agentRecaptchaConfig=d:s._tenantRecaptchaConfigs[s.tenantId]=d,o(d.siteKey)}}).catch(l=>{a(l)})})}function r(s,o,a){let l=window.grecaptcha;ti(l)?l.enterprise.ready(()=>{l.enterprise.execute(s,{action:e}).then(d=>{o(d)}).catch(()=>{o(oe)})}):a(Error("No reCAPTCHA enterprise script loaded."))}return this.auth.settings.appVerificationDisabledForTesting?new zt().execute("siteKey",{action:"verify"}):new Promise((s,o)=>{i(this.auth).then(a=>{if(!t&&ti(window.grecaptcha))r(a,s,o);else{if(typeof window>"u"){o(new Error("RecaptchaVerifier is only supported in browser"));return}let l=Rr();l.length!==0&&(l+=a),xi(l).then(()=>{r(a,s,o)}).catch(d=>{o(d)})}}).catch(a=>{o(a)})})}};async function ne(n,e,t,i=!1,r=!1){let s=new xe(n),o;if(r)o=oe;else try{o=await s.verify(t)}catch{o=await s.verify(t,!0)}let a={...e};if(t==="mfaSmsEnrollment"||t==="mfaSmsSignIn"){if("phoneEnrollmentInfo"in a){let l=a.phoneEnrollmentInfo.phoneNumber,d=a.phoneEnrollmentInfo.recaptchaToken;Object.assign(a,{phoneEnrollmentInfo:{phoneNumber:l,recaptchaToken:d,captchaResponse:o,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})}else if("phoneSignInInfo"in a){let l=a.phoneSignInInfo.recaptchaToken;Object.assign(a,{phoneSignInInfo:{recaptchaToken:l,captchaResponse:o,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})}return a}return i?Object.assign(a,{captchaResp:o}):Object.assign(a,{captchaResponse:o}),Object.assign(a,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(a,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),a}async function ae(n,e,t,i,r){if(r==="EMAIL_PASSWORD_PROVIDER")if(n._getRecaptchaConfig()?.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){let s=await ne(n,e,t,t==="getOobCode");return i(n,s)}else return i(n,e).catch(async s=>{if(s.code==="auth/missing-recaptcha-token"){console.log(`${t} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);let o=await ne(n,e,t,t==="getOobCode");return i(n,o)}else return Promise.reject(s)});else if(r==="PHONE_PROVIDER")if(n._getRecaptchaConfig()?.isProviderEnabled("PHONE_PROVIDER")){let s=await ne(n,e,t);return i(n,s).catch(async o=>{if(n._getRecaptchaConfig()?.getProviderEnforcementState("PHONE_PROVIDER")==="AUDIT"&&(o.code==="auth/missing-recaptcha-token"||o.code==="auth/invalid-app-credential")){console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${t} flow.`);let a=await ne(n,e,t,!1,!0);return i(n,a)}return Promise.reject(o)})}else{let s=await ne(n,e,t,!1,!0);return i(n,s)}else return Promise.reject(r+" provider is not supported.")}async function Or(n){let e=X(n),t=await Si(e,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}),i=new Ne(t);e.tenantId==null?e._agentRecaptchaConfig=i:e._tenantRecaptchaConfigs[e.tenantId]=i,i.isAnyProviderEnabled()&&new xe(e).verify()}function Fi(n,e){let t=ut(n,"auth");if(t.isInitialized()){let r=t.getImmediate(),s=t.getOptions();if(ve(s,e??{}))return r;y(r,"already-initialized")}return t.initialize({options:e})}function Dr(n,e){let t=e?.persistence||[],i=(Array.isArray(t)?t:[t]).map(P);e?.errorMap&&n._updateErrorMap(e.errorMap),n._initializeWithPersistence(i,e?.popupRedirectResolver)}function Gi(n,e,t){let i=X(n);u(/^https?:\/\//.test(e),i,"invalid-emulator-scheme");let r=!!t?.disableWarnings,s=Hi(e),{host:o,port:a}=Lr(e),l=a===null?"":`:${a}`,d={url:`${s}//${o}${l}/`},h=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:r})});if(!i._canInitEmulator){u(i.config.emulator&&i.emulatorConfig,i,"emulator-config-failed"),u(ve(d,i.config.emulator)&&ve(h,i.emulatorConfig),i,"emulator-config-failed");return}i.config.emulator=d,i.emulatorConfig=h,i.settings.appVerificationDisabledForTesting=!0,Te(o)?(En(`${s}//${o}${l}`),wn("Auth",!0)):r||Mr()}function Hi(n){let e=n.indexOf(":");return e<0?"":n.substr(0,e+1)}function Lr(n){let e=Hi(n),t=/(\/\/)?([^?#/]+)/.exec(n.substr(e.length));if(!t)return{host:"",port:null};let i=t[2].split("@").pop()||"",r=/^(\[[^\]]+\])(:|$)/.exec(i);if(r){let s=r[1];return{host:s,port:si(i.substr(s.length+1))}}else{let[s,o]=i.split(":");return{host:s,port:si(o)}}}function si(n){if(!n)return null;let e=Number(n);return isNaN(e)?null:e}function Mr(){function n(){let e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}typeof console<"u"&&typeof console.info=="function"&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),typeof window<"u"&&typeof document<"u"&&(document.readyState==="loading"?window.addEventListener("DOMContentLoaded",n):n())}var F=class{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return b("not implemented")}_getIdTokenResponse(e){return b("not implemented")}_linkToIdToken(e,t){return b("not implemented")}_getReauthenticationResolver(e){return b("not implemented")}};async function Ur(n,e){return E(n,"POST","/v1/accounts:signUp",e)}async function xr(n,e){return q(n,"POST","/v1/accounts:signInWithPassword",I(n,e))}async function Vr(n,e){return q(n,"POST","/v1/accounts:signInWithEmailLink",I(n,e))}async function Fr(n,e){return q(n,"POST","/v1/accounts:signInWithEmailLink",I(n,e))}var de=class n extends F{constructor(e,t,i,r=null){super("password",i),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new n(e,t,"password")}static _fromEmailAndCode(e,t,i=null){return new n(e,t,"emailLink",i)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){let t=typeof e=="string"?JSON.parse(e):e;if(t?.email&&t?.password){if(t.signInMethod==="password")return this._fromEmailAndPassword(t.email,t.password);if(t.signInMethod==="emailLink")return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":let t={returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return ae(e,t,"signInWithPassword",xr,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Vr(e,{email:this._email,oobCode:this._password});default:y(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":let i={idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return ae(e,i,"signUpPassword",Ur,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Fr(e,{idToken:t,email:this._email,oobCode:this._password});default:y(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}};async function Y(n,e){return q(n,"POST","/v1/accounts:signInWithIdp",I(n,e))}var Gr="http://localhost",G=class n extends F{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){let t=new n(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):y("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){let t=typeof e=="string"?JSON.parse(e):e,{providerId:i,signInMethod:r,...s}=t;if(!i||!r)return null;let o=new n(i,r);return o.idToken=s.idToken||void 0,o.accessToken=s.accessToken||void 0,o.secret=s.secret,o.nonce=s.nonce,o.pendingToken=s.pendingToken||null,o}_getIdTokenResponse(e){let t=this.buildRequest();return Y(e,t)}_linkToIdToken(e,t){let i=this.buildRequest();return i.idToken=t,Y(e,i)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,Y(e,t)}buildRequest(){let e={requestUri:Gr,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{let t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=$(t)}return e}};async function oi(n,e){return E(n,"POST","/v1/accounts:sendVerificationCode",I(n,e))}async function Hr(n,e){return q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,e))}async function Wr(n,e){let t=await q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,e));if(t.temporaryProof)throw ie(n,"account-exists-with-different-credential",t);return t}var qr={USER_NOT_FOUND:"user-not-found"};async function zr(n,e){let t={...e,operation:"REAUTH"};return q(n,"POST","/v1/accounts:signInWithPhoneNumber",I(n,t),qr)}var ue=class n extends F{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new n({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new n({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return Hr(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return Wr(e,{idToken:t,...this._makeVerificationRequest()})}_getReauthenticationResolver(e){return zr(e,this._makeVerificationRequest())}_makeVerificationRequest(){let{temporaryProof:e,phoneNumber:t,verificationId:i,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:i,code:r}}toJSON(){let e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){typeof e=="string"&&(e=JSON.parse(e));let{verificationId:t,verificationCode:i,phoneNumber:r,temporaryProof:s}=e;return!i&&!t&&!r&&!s?null:new n({verificationId:t,verificationCode:i,phoneNumber:r,temporaryProof:s})}};function $r(n){switch(n){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}function jr(n){let e=j(K(n)).link,t=e?j(K(e)).deep_link_id:null,i=j(K(n)).deep_link_id;return(i?j(K(i)).link:null)||i||t||e||n}var Ve=class n{constructor(e){let t=j(K(e)),i=t.apiKey??null,r=t.oobCode??null,s=$r(t.mode??null);u(i&&r&&s,"argument-error"),this.apiKey=i,this.operation=s,this.code=r,this.continueUrl=t.continueUrl??null,this.languageCode=t.lang??null,this.tenantId=t.tenantId??null}static parseLink(e){let t=jr(e);try{return new n(t)}catch{return null}}};var J=class n{constructor(){this.providerId=n.PROVIDER_ID}static credential(e,t){return de._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let i=Ve.parseLink(t);return u(i,"argument-error"),de._fromEmailAndCode(e,i.code,i.tenantId)}};J.PROVIDER_ID="password";J.EMAIL_PASSWORD_SIGN_IN_METHOD="password";J.EMAIL_LINK_SIGN_IN_METHOD="emailLink";var Fe=class{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}};var H=class extends Fe{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}};var he=class n extends H{constructor(){super("facebook.com")}static credential(e){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return n.credential(e.oauthAccessToken)}catch{return null}}};he.FACEBOOK_SIGN_IN_METHOD="facebook.com";he.PROVIDER_ID="facebook.com";var pe=class n extends H{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthIdToken:t,oauthAccessToken:i}=e;if(!t&&!i)return null;try{return n.credential(t,i)}catch{return null}}};pe.GOOGLE_SIGN_IN_METHOD="google.com";pe.PROVIDER_ID="google.com";var fe=class n extends H{constructor(){super("github.com")}static credential(e){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return n.credential(e.oauthAccessToken)}catch{return null}}};fe.GITHUB_SIGN_IN_METHOD="github.com";fe.PROVIDER_ID="github.com";var me=class n extends H{constructor(){super("twitter.com")}static credential(e,t){return G._fromParams({providerId:n.PROVIDER_ID,signInMethod:n.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return n.credentialFromTaggedObject(e)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthAccessToken:t,oauthTokenSecret:i}=e;if(!t||!i)return null;try{return n.credential(t,i)}catch{return null}}};me.TWITTER_SIGN_IN_METHOD="twitter.com";me.PROVIDER_ID="twitter.com";var ge=class n{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,i,r=!1){let s=await L._fromIdTokenResponse(e,i,r),o=ai(i);return new n({user:s,providerId:o,_tokenResponse:i,operationType:t})}static async _forOperation(e,t,i){await e._updateTokensIfNecessary(i,!0);let r=ai(i);return new n({user:e,providerId:r,_tokenResponse:i,operationType:t})}};function ai(n){return n.providerId?n.providerId:"phoneNumber"in n?"phone":null}var jt=class n extends Ee{constructor(e,t,i,r){super(t.code,t.message),this.operationType=i,this.user=r,Object.setPrototypeOf(this,n.prototype),this.customData={appName:e.name,tenantId:e.tenantId??void 0,_serverResponse:t.customData._serverResponse,operationType:i}}static _fromErrorAndOperation(e,t,i,r){return new n(e,t,i,r)}};function Wi(n,e,t,i){return(e==="reauthenticate"?t._getReauthenticationResolver(n):t._getIdTokenResponse(n)).catch(s=>{throw s.code==="auth/multi-factor-auth-required"?jt._fromErrorAndOperation(n,s,e,i):s})}async function Kr(n,e,t=!1){let i=await ce(n,e._linkToIdToken(n.auth,await n.getIdToken()),t);return ge._forOperation(n,"link",i)}async function Br(n,e,t=!1){let{auth:i}=n;if(S(i.app))return Promise.reject(x(i));let r="reauthenticate";try{let s=await ce(n,Wi(i,r,e,n),t);u(s.idToken,i,"internal-error");let o=sn(s.idToken);u(o,i,"internal-error");let{sub:a}=o;return u(n.uid===a,i,"user-mismatch"),ge._forOperation(n,r,s)}catch(s){throw s?.code==="auth/user-not-found"&&y(i,"user-mismatch"),s}}async function Yr(n,e,t=!1){if(S(n.app))return Promise.reject(x(n));let i="signIn",r=await Wi(n,i,e),s=await ge._fromIdTokenResponse(n,i,r);return t||await n._updateCurrentUser(s.user),s}function qi(n,e,t,i){return O(n).onIdTokenChanged(e,t,i)}function zi(n,e,t){return O(n).beforeAuthStateChanged(e,t)}function ci(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:start",I(n,e))}function Jr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:finalize",I(n,e))}function Xr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:start",I(n,e))}function Qr(n,e){return E(n,"POST","/v2/accounts/mfaEnrollment:finalize",I(n,e))}var Ge="__sak";var He=class{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Ge,"1"),this.storage.removeItem(Ge),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){let t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}};var Zr=1e3,es=10,We=class extends He{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Mi(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let i=this.storage.getItem(t),r=this.localCache[t];i!==r&&e(t,r,i)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((o,a,l)=>{this.notifyListeners(o,l)});return}let i=e.key;t?this.detachListener():this.stopPolling();let r=()=>{let o=this.storage.getItem(i);!t&&this.localCache[i]===o||this.notifyListeners(i,o)},s=this.storage.getItem(i);br()&&s!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,es):r()}notifyListeners(e,t){this.localCache[e]=t;let i=this.listeners[e];if(i)for(let r of Array.from(i))r(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,i)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:i}),!0)})},Zr)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){let t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}};We.type="LOCAL";var $i=We;var ts=1e3;function Dt(n){let e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),t=RegExp(`${e}=([^;]+)`);return document.cookie.match(t)?.[1]??null}function Lt(n){return`${window.location.protocol==="http:"?"__dev_":"__HOST-"}FIREBASE_${n.split(":")[3]}`}var Kt=class{constructor(){this.type="COOKIE",this.listenerUnsubscribes=new Map}_getFinalTarget(e){if(typeof window===void 0)return e;let t=new URL(`${window.location.origin}/__cookies__`);return t.searchParams.set("finalTarget",e),t}async _isAvailable(){return typeof isSecureContext=="boolean"&&!isSecureContext||typeof navigator>"u"||typeof document>"u"?!1:navigator.cookieEnabled??!0}async _set(e,t){}async _get(e){if(!this._isAvailable())return null;let t=Lt(e);return window.cookieStore?(await window.cookieStore.get(t))?.value:Dt(t)}async _remove(e){if(!this._isAvailable()||!await this._get(e))return;let i=Lt(e);document.cookie=`${i}=;Max-Age=34560000;Partitioned;Secure;SameSite=Strict;Path=/;Priority=High`,await fetch("/__cookies__",{method:"DELETE"}).catch(()=>{})}_addListener(e,t){if(!this._isAvailable())return;let i=Lt(e);if(window.cookieStore){let a=(d=>{let h=d.changed.find(f=>f.name===i);h&&t(h.value),d.deleted.find(f=>f.name===i)&&t(null)}),l=()=>window.cookieStore.removeEventListener("change",a);return this.listenerUnsubscribes.set(t,l),window.cookieStore.addEventListener("change",a)}let r=Dt(i),s=setInterval(()=>{let a=Dt(i);a!==r&&(t(a),r=a)},ts),o=()=>clearInterval(s);this.listenerUnsubscribes.set(t,o)}_removeListener(e,t){let i=this.listenerUnsubscribes.get(t);i&&(i(),this.listenerUnsubscribes.delete(t))}};Kt.type="COOKIE";var qe=class extends He{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}};qe.type="SESSION";var an=qe;function ns(n){return Promise.all(n.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(t){return{fulfilled:!1,reason:t}}}))}var ze=class n{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){let t=this.receivers.find(r=>r.isListeningto(e));if(t)return t;let i=new n(e);return this.receivers.push(i),i}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let t=e,{eventId:i,eventType:r,data:s}=t.data,o=this.handlersMap[r];if(!o?.size)return;t.ports[0].postMessage({status:"ack",eventId:i,eventType:r});let a=Array.from(o).map(async d=>d(t.origin,s)),l=await ns(a);t.ports[0].postMessage({status:"done",eventId:i,eventType:r,response:l})}_subscribe(e,t){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),(!t||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}};ze.receivers=[];function cn(n="",e=10){let t="";for(let i=0;i<e;i++)t+=Math.floor(Math.random()*10);return n+t}var Bt=class{constructor(e){this.target=e,this.handlers=new Set}removeMessageHandler(e){e.messageChannel&&(e.messageChannel.port1.removeEventListener("message",e.onMessage),e.messageChannel.port1.close()),this.handlers.delete(e)}async _send(e,t,i=50){let r=typeof MessageChannel<"u"?new MessageChannel:null;if(!r)throw new Error("connection_unavailable");let s,o;return new Promise((a,l)=>{let d=cn("",20);r.port1.start();let h=setTimeout(()=>{l(new Error("unsupported_event"))},i);o={messageChannel:r,onMessage(p){let f=p;if(f.data.eventId===d)switch(f.data.status){case"ack":clearTimeout(h),s=setTimeout(()=>{l(new Error("timeout"))},3e3);break;case"done":clearTimeout(s),a(f.data.response);break;default:clearTimeout(h),clearTimeout(s),l(new Error("invalid_response"));break}}},this.handlers.add(o),r.port1.addEventListener("message",o.onMessage),this.target.postMessage({eventType:e,eventId:d,data:t},[r.port2])}).finally(()=>{o&&this.removeMessageHandler(o)})}};function k(){return window}function is(n){k().location.href=n}function ji(){return typeof k().WorkerGlobalScope<"u"&&typeof k().importScripts=="function"}async function rs(){if(!navigator?.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function ss(){return navigator?.serviceWorker?.controller||null}function os(){return ji()?self:null}var Ki="firebaseLocalStorageDb",as=1,$e="firebaseLocalStorage",Bi="fbase_key",W=class{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{t(this.request.error)})})}};function tt(n,e){return n.transaction([$e],e?"readwrite":"readonly").objectStore($e)}function cs(){let n=indexedDB.deleteDatabase(Ki);return new W(n).toPromise()}function Yt(){let n=indexedDB.open(Ki,as);return new Promise((e,t)=>{n.addEventListener("error",()=>{t(n.error)}),n.addEventListener("upgradeneeded",()=>{let i=n.result;try{i.createObjectStore($e,{keyPath:Bi})}catch(r){t(r)}}),n.addEventListener("success",async()=>{let i=n.result;i.objectStoreNames.contains($e)?e(i):(i.close(),await cs(),e(await Yt()))})})}async function li(n,e,t){let i=tt(n,!0).put({[Bi]:e,value:t});return new W(i).toPromise()}async function ls(n,e){let t=tt(n,!1).get(e),i=await new W(t).toPromise();return i===void 0?null:i.value}function di(n,e){let t=tt(n,!0).delete(e);return new W(t).toPromise()}var ds=800,us=3,je=class{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db?this.db:(this.db=await Yt(),this.db)}async _withRetries(e){let t=0;for(;;)try{let i=await this._openDb();return await e(i)}catch(i){if(t++>us)throw i;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return ji()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=ze._getInstance(os()),this.receiver._subscribe("keyChanged",async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)})),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){if(this.activeServiceWorker=await rs(),!this.activeServiceWorker)return;this.sender=new Bt(this.activeServiceWorker);let e=await this.sender._send("ping",{},800);e&&e[0]?.fulfilled&&e[0]?.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(!(!this.sender||!this.activeServiceWorker||ss()!==this.activeServiceWorker))try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;let e=await Yt();return await li(e,Ge,"1"),await di(e,Ge),!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite(async()=>(await this._withRetries(i=>li(i,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(i=>ls(i,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>di(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){let e=await this._withRetries(r=>{let s=tt(r,!1).getAll();return new W(s).toPromise()});if(!e)return[];if(this.pendingWrites!==0)return[];let t=[],i=new Set;if(e.length!==0)for(let{fbase_key:r,value:s}of e)i.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(s)&&(this.notifyListeners(r,s),t.push(r));for(let r of Object.keys(this.localCache))this.localCache[r]&&!i.has(r)&&(this.notifyListeners(r,null),t.push(r));return t}notifyListeners(e,t){this.localCache[e]=t;let i=this.listeners[e];if(i)for(let r of Array.from(i))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),ds)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){Object.keys(this.listeners).length===0&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&this.stopPolling()}};je.type="LOCAL";var Yi=je;function ui(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:start",I(n,e))}function hs(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:finalize",I(n,e))}function ps(n,e){return E(n,"POST","/v2/accounts/mfaSignIn:finalize",I(n,e))}var pa=Vi("rcb"),fa=new V(3e4,6e4);var Ae="recaptcha";async function fs(n,e,t){if(!n._getRecaptchaConfig())try{await Or(n)}catch{console.log("Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.")}try{let i;if(typeof e=="string"?i={phoneNumber:e}:i=e,"session"in i){let r=i.session;if("phoneNumber"in i){u(r.type==="enroll",n,"internal-error");let s={idToken:r.credential,phoneEnrollmentInfo:{phoneNumber:i.phoneNumber,clientType:"CLIENT_TYPE_WEB"}};return(await ae(n,s,"mfaSmsEnrollment",async(d,h)=>{if(h.phoneEnrollmentInfo.captchaResponse===oe){u(t?.type===Ae,d,"argument-error");let p=await Mt(d,h,t);return ci(d,p)}return ci(d,h)},"PHONE_PROVIDER").catch(d=>Promise.reject(d))).phoneSessionInfo.sessionInfo}else{u(r.type==="signin",n,"internal-error");let s=i.multiFactorHint?.uid||i.multiFactorUid;u(s,n,"missing-multi-factor-info");let o={mfaPendingCredential:r.credential,mfaEnrollmentId:s,phoneSignInInfo:{clientType:"CLIENT_TYPE_WEB"}};return(await ae(n,o,"mfaSmsSignIn",async(h,p)=>{if(p.phoneSignInInfo.captchaResponse===oe){u(t?.type===Ae,h,"argument-error");let f=await Mt(h,p,t);return ui(h,f)}return ui(h,p)},"PHONE_PROVIDER").catch(h=>Promise.reject(h))).phoneResponseInfo.sessionInfo}}else{let r={phoneNumber:i.phoneNumber,clientType:"CLIENT_TYPE_WEB"};return(await ae(n,r,"sendVerificationCode",async(l,d)=>{if(d.captchaResponse===oe){u(t?.type===Ae,l,"argument-error");let h=await Mt(l,d,t);return oi(l,h)}return oi(l,d)},"PHONE_PROVIDER").catch(l=>Promise.reject(l))).sessionInfo}}finally{t?._reset()}}async function Mt(n,e,t){u(t.type===Ae,n,"argument-error");let i=await t.verify();u(typeof i=="string",n,"argument-error");let r={...e};if("phoneEnrollmentInfo"in r){let s=r.phoneEnrollmentInfo.phoneNumber,o=r.phoneEnrollmentInfo.captchaResponse,a=r.phoneEnrollmentInfo.clientType,l=r.phoneEnrollmentInfo.recaptchaVersion;return Object.assign(r,{phoneEnrollmentInfo:{phoneNumber:s,recaptchaToken:i,captchaResponse:o,clientType:a,recaptchaVersion:l}}),r}else if("phoneSignInInfo"in r){let s=r.phoneSignInInfo.captchaResponse,o=r.phoneSignInInfo.clientType,a=r.phoneSignInInfo.recaptchaVersion;return Object.assign(r,{phoneSignInInfo:{recaptchaToken:i,captchaResponse:s,clientType:o,recaptchaVersion:a}}),r}else return Object.assign(r,{recaptchaToken:i}),r}var _e=class n{constructor(e){this.providerId=n.PROVIDER_ID,this.auth=X(e)}verifyPhoneNumber(e,t){return fs(this.auth,e,O(t))}static credential(e,t){return ue._fromVerification(e,t)}static credentialFromResult(e){let t=e;return n.credentialFromTaggedObject(t)}static credentialFromError(e){return n.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{phoneNumber:t,temporaryProof:i}=e;return t&&i?ue._fromTokenResponse(t,i):null}};_e.PROVIDER_ID="phone";_e.PHONE_SIGN_IN_METHOD="phone";function ms(n,e){return e?P(e):(u(n._popupRedirectResolver,n,"argument-error"),n._popupRedirectResolver)}var Ie=class extends F{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Y(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Y(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Y(e,this._buildIdpRequest())}_buildIdpRequest(e){let t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}};function gs(n){return Yr(n.auth,new Ie(n),n.bypassAuthState)}function _s(n){let{auth:e,user:t}=n;return u(t,e,"internal-error"),Br(t,new Ie(n),n.bypassAuthState)}async function Is(n){let{auth:e,user:t}=n;return u(t,e,"internal-error"),Kr(t,new Ie(n),n.bypassAuthState)}var Ke=class{constructor(e,t,i,r,s=!1){this.auth=e,this.resolver=i,this.user=r,this.bypassAuthState=s,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(i){this.reject(i)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:i,postBody:r,tenantId:s,error:o,type:a}=e;if(o){this.reject(o);return}let l={auth:this.auth,requestUri:t,sessionId:i,tenantId:s||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(l))}catch(d){this.reject(d)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return gs;case"linkViaPopup":case"linkViaRedirect":return Is;case"reauthViaPopup":case"reauthViaRedirect":return _s;default:y(this.auth,"internal-error")}}resolve(e){R(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){R(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}};var Ts=new V(2e3,1e4);var Jt=class n extends Ke{constructor(e,t,i,r,s){super(e,t,r,s),this.provider=i,this.authWindow=null,this.pollId=null,n.currentPopupAction&&n.currentPopupAction.cancel(),n.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return u(e,this.auth,"internal-error"),e}async onExecution(){R(this.filter.length===1,"Popup operations only handle one event");let e=cn();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(t=>{this.reject(t)}),this.resolver._isIframeWebStorageSupported(this.auth,t=>{t||this.reject(A(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){this.reject(A(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,n.currentPopupAction=null}pollUserCancellation(){let e=()=>{if(this.authWindow?.window?.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(A(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,Ts.get())};e()}};Jt.currentPopupAction=null;var Es="pendingRedirect",ke=new Map,Xt=class extends Ke{constructor(e,t,i=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,i),this.eventId=null}async execute(){let e=ke.get(this.auth._key());if(!e){try{let i=await ws(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(i)}catch(t){e=()=>Promise.reject(t)}ke.set(this.auth._key(),e)}return this.bypassAuthState||ke.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type==="signInViaRedirect")return super.onAuthEvent(e);if(e.type==="unknown"){this.resolve(null);return}if(e.eventId){let t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}};async function ws(n,e){let t=Ss(e),i=ys(n);if(!await i._isAvailable())return!1;let r=await i._get(t)==="true";return await i._remove(t),r}function vs(n,e){ke.set(n._key(),e)}function ys(n){return P(n._redirectPersistence)}function Ss(n){return be(Es,n.config.apiKey,n.name)}async function bs(n,e,t=!1){if(S(n.app))return Promise.reject(x(n));let i=X(n),r=ms(i,e),o=await new Xt(i,r,t).execute();return o&&!t&&(delete o.user._redirectEventId,await i._persistUserIfCurrent(o.user),await i._setRedirectUser(null,e)),o}var As=600*1e3,Qt=class{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach(i=>{this.isEventForConsumer(e,i)&&(t=!0,this.sendToConsumer(e,i),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!ks(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){if(e.error&&!Ji(e)){let i=e.error.code?.split("auth/")[1]||"internal-error";t.onError(A(this.auth,i))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let i=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&i}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=As&&this.cachedEventUids.clear(),this.cachedEventUids.has(hi(e))}saveEventToCache(e){this.cachedEventUids.add(hi(e)),this.lastProcessedEventTime=Date.now()}};function hi(n){return[n.type,n.eventId,n.sessionId,n.tenantId].filter(e=>e).join("-")}function Ji({type:n,error:e}){return n==="unknown"&&e?.code==="auth/no-auth-event"}function ks(n){switch(n.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return Ji(n);default:return!1}}async function Ps(n,e={}){return E(n,"GET","/v1/projects",e)}var Rs=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Cs=/^https?/;async function Ns(n){if(n.config.emulator)return;let{authorizedDomains:e}=await Ps(n);for(let t of e)try{if(Os(t))return}catch{}y(n,"unauthorized-domain")}function Os(n){let e=xt(),{protocol:t,hostname:i}=new URL(e);if(n.startsWith("chrome-extension://")){let o=new URL(n);return o.hostname===""&&i===""?t==="chrome-extension:"&&n.replace("chrome-extension://","")===e.replace("chrome-extension://",""):t==="chrome-extension:"&&o.hostname===i}if(!Cs.test(t))return!1;if(Rs.test(n))return i===n;let r=n.replace(/\./g,"\\.");return new RegExp("^(.+\\."+r+"|"+r+")$","i").test(i)}var Ds=new V(3e4,6e4);function pi(){let n=k().___jsl;if(n?.H){for(let e of Object.keys(n.H))if(n.H[e].r=n.H[e].r||[],n.H[e].L=n.H[e].L||[],n.H[e].r=[...n.H[e].L],n.CP)for(let t=0;t<n.CP.length;t++)n.CP[t]=null}}function Ls(n){return new Promise((e,t)=>{function i(){pi(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{pi(),t(A(n,"network-request-failed"))},timeout:Ds.get()})}if(k().gapi?.iframes?.Iframe)e(gapi.iframes.getContext());else if(k().gapi?.load)i();else{let r=Vi("iframefcb");return k()[r]=()=>{gapi.load?i():t(A(n,"network-request-failed"))},xi(`${Cr()}?onload=${r}`).catch(s=>t(s))}}).catch(e=>{throw Pe=null,e})}var Pe=null;function Ms(n){return Pe=Pe||Ls(n),Pe}var Us=new V(5e3,15e3),xs="__/auth/iframe",Vs="emulator/auth/iframe",Fs={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Gs=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Hs(n){let e=n.config;u(e.authDomain,n,"auth-domain-config-required");let t=e.emulator?rn(e,Vs):`https://${n.config.authDomain}/${xs}`,i={apiKey:e.apiKey,appName:n.name,v:B},r=Gs.get(n.config.apiHost);r&&(i.eid=r);let s=n._getFrameworks();return s.length&&(i.fw=s.join(",")),`${t}?${$(i).slice(1)}`}async function Ws(n){let e=await Ms(n),t=k().gapi;return u(t,n,"internal-error"),e.open({where:document.body,url:Hs(n),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Fs,dontclear:!0},i=>new Promise(async(r,s)=>{await i.restyle({setHideOnLeave:!1});let o=A(n,"network-request-failed"),a=k().setTimeout(()=>{s(o)},Us.get());function l(){k().clearTimeout(a),r(i)}i.ping(l).then(l,()=>{s(o)})}))}var qs={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},zs=500,$s=600,js="_blank",Ks="http://localhost",Be=class{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}};function Bs(n,e,t,i=zs,r=$s){let s=Math.max((window.screen.availHeight-r)/2,0).toString(),o=Math.max((window.screen.availWidth-i)/2,0).toString(),a="",l={...qs,width:i.toString(),height:r.toString(),top:s,left:o},d=v().toLowerCase();t&&(a=Ci(d)?js:t),Pi(d)&&(e=e||Ks,l.scrollbars="yes");let h=Object.entries(l).reduce((f,[T,C])=>`${f}${T}=${C},`,"");if(Sr(d)&&a!=="_self")return Ys(e||"",a),new Be(null);let p=window.open(e||"",a,h);u(p,n,"popup-blocked");try{p.focus()}catch{}return new Be(p)}function Ys(n,e){let t=document.createElement("a");t.href=n,t.target=e;let i=document.createEvent("MouseEvent");i.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),t.dispatchEvent(i)}var Js="__/auth/handler",Xs="emulator/auth/handler",Qs=encodeURIComponent("fac");async function fi(n,e,t,i,r,s){u(n.config.authDomain,n,"auth-domain-config-required"),u(n.config.apiKey,n,"invalid-api-key");let o={apiKey:n.config.apiKey,appName:n.name,authType:t,redirectUrl:i,v:B,eventId:r};if(e instanceof Fe){e.setDefaultLanguage(n.languageCode),o.providerId=e.providerId||"",kn(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(let[h,p]of Object.entries(s||{}))o[h]=p}if(e instanceof H){let h=e.getScopes().filter(p=>p!=="");h.length>0&&(o.scopes=h.join(","))}n.tenantId&&(o.tid=n.tenantId);let a=o;for(let h of Object.keys(a))a[h]===void 0&&delete a[h];let l=await n._getAppCheckToken(),d=l?`#${Qs}=${encodeURIComponent(l)}`:"";return`${Zs(n)}?${$(a).slice(1)}${d}`}function Zs({config:n}){return n.emulator?rn(n,Xs):`https://${n.authDomain}/${Js}`}var Ut="webStorageSupport",Zt=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=an,this._completeRedirectFn=bs,this._overrideRedirectResult=vs}async _openPopup(e,t,i,r){R(this.eventManagers[e._key()]?.manager,"_initialize() not called before _openPopup()");let s=await fi(e,t,i,xt(),r);return Bs(e,s,cn())}async _openRedirect(e,t,i,r){await this._originValidation(e);let s=await fi(e,t,i,xt(),r);return is(s),new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){let{manager:r,promise:s}=this.eventManagers[t];return r?Promise.resolve(r):(R(s,"If manager is not set, promise should be"),s)}let i=this.initAndGetManager(e);return this.eventManagers[t]={promise:i},i.catch(()=>{delete this.eventManagers[t]}),i}async initAndGetManager(e){let t=await Ws(e),i=new Qt(e);return t.register("authEvent",r=>(u(r?.authEvent,e,"invalid-auth-event"),{status:i.onEvent(r.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:i},this.iframes[e._key()]=t,i}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Ut,{type:Ut},r=>{let s=r?.[0]?.[Ut];s!==void 0&&t(!!s),y(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Ns(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Mi()||Ri()||on()}},Xi=Zt,Ye=class{constructor(e){this.factorId=e}_process(e,t,i){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,i);case"signin":return this._finalizeSignIn(e,t.credential);default:return b("unexpected MultiFactorSessionType")}}},en=class n extends Ye{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new n(e)}_finalizeEnroll(e,t,i){return Jr(e,{idToken:t,displayName:i,phoneVerificationInfo:this.credential._makeVerificationRequest()})}_finalizeSignIn(e,t){return hs(e,{mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()})}},Je=class{constructor(){}static assertion(e){return en._fromCredential(e)}};Je.FACTOR_ID="phone";var Xe=class{static assertionForEnrollment(e,t){return Qe._fromSecret(e,t)}static assertionForSignIn(e,t){return Qe._fromEnrollmentId(e,t)}static async generateSecret(e){let t=e;u(typeof t.user?.auth<"u","internal-error");let i=await Xr(t.user.auth,{idToken:t.credential,totpEnrollmentInfo:{}});return Ze._fromStartTotpMfaEnrollmentResponse(i,t.user.auth)}};Xe.FACTOR_ID="totp";var Qe=class n extends Ye{constructor(e,t,i){super("totp"),this.otp=e,this.enrollmentId=t,this.secret=i}static _fromSecret(e,t){return new n(t,void 0,e)}static _fromEnrollmentId(e,t){return new n(t,e)}async _finalizeEnroll(e,t,i){return u(typeof this.secret<"u",e,"argument-error"),Qr(e,{idToken:t,displayName:i,totpVerificationInfo:this.secret._makeTotpVerificationInfo(this.otp)})}async _finalizeSignIn(e,t){u(this.enrollmentId!==void 0&&this.otp!==void 0,e,"argument-error");let i={verificationCode:this.otp};return ps(e,{mfaPendingCredential:t,mfaEnrollmentId:this.enrollmentId,totpVerificationInfo:i})}},Ze=class n{constructor(e,t,i,r,s,o,a){this.sessionInfo=o,this.auth=a,this.secretKey=e,this.hashingAlgorithm=t,this.codeLength=i,this.codeIntervalSeconds=r,this.enrollmentCompletionDeadline=s}static _fromStartTotpMfaEnrollmentResponse(e,t){return new n(e.totpSessionInfo.sharedSecretKey,e.totpSessionInfo.hashingAlgorithm,e.totpSessionInfo.verificationCodeLength,e.totpSessionInfo.periodSec,new Date(e.totpSessionInfo.finalizeEnrollmentTime).toUTCString(),e.totpSessionInfo.sessionInfo,t)}_makeTotpVerificationInfo(e){return{sessionInfo:this.sessionInfo,verificationCode:e}}generateQrCodeUrl(e,t){let i=!1;return(ye(e)||ye(t))&&(i=!0),i&&(ye(e)&&(e=this.auth.currentUser?.email||"unknownuser"),ye(t)&&(t=this.auth.name)),`otpauth://totp/${t}:${e}?secret=${this.secretKey}&issuer=${t}&algorithm=${this.hashingAlgorithm}&digits=${this.codeLength}`}};function ye(n){return typeof n>"u"||n?.length===0}var mi="@firebase/auth",gi="1.11.0";var tn=class{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){return this.assertAuthConfigured(),this.auth.currentUser?.uid||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;let t=this.auth.onIdTokenChanged(i=>{e(i?.stsTokenManager.accessToken||null)});this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();let t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){u(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}};function eo(n){switch(n){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}function to(n){dt(new ct("auth",(e,{options:t})=>{let i=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),s=e.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=i.options;u(o&&!o.includes(":"),"invalid-api-key",{appName:i.name});let l={apiKey:o,authDomain:a,clientPlatform:n,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Ui(n)},d=new qt(i,r,s,l);return Dr(d,t),d},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,i)=>{e.getProvider("auth-internal").initialize()})),dt(new ct("auth-internal",e=>{let t=X(e.getProvider("auth").getImmediate());return(i=>new tn(i))(t)},"PRIVATE").setInstantiationMode("EXPLICIT")),te(mi,gi,eo(n)),te(mi,gi,"esm2020")}var no=300,io=at("authIdTokenMaxAge")||no,_i=null,ro=n=>async e=>{let t=e&&await e.getIdTokenResult(),i=t&&(new Date().getTime()-Date.parse(t.issuedAtTime))/1e3;if(i&&i>io)return;let r=t?.token;_i!==r&&(_i=r,await fetch(n,{method:r?"POST":"DELETE",headers:r?{Authorization:`Bearer ${r}`}:{}}))};function ln(n=Nn()){let e=ut(n,"auth");if(e.isInitialized())return e.getImmediate();let t=Fi(n,{popupRedirectResolver:Xi,persistence:[Yi,$i,an]}),i=at("authTokenSyncURL");if(i&&typeof isSecureContext=="boolean"&&isSecureContext){let s=new URL(i,location.origin);if(location.origin===s.origin){let o=ro(s.toString());zi(t,o,()=>o(t.currentUser)),qi(t,a=>o(a))}}let r=Tn("auth");return r&&Gi(t,`http://${r}`),t}function so(){return document.getElementsByTagName("head")?.[0]??document}Pr({loadJS(n){return new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=e,i.onerror=r=>{let s=A("internal-error");s.customData=r,t(s)},i.type="text/javascript",i.charset="UTF-8",so().appendChild(i)})},gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="});to("Browser");cr();fn();fn();var un="root::cms:recentViews",oo=5,dn="rootcms:recentViewsChange";function Zi(){try{let n=window.localStorage.getItem(un);if(!n)return[];let e=JSON.parse(n);return Array.isArray(e)?e.filter(t=>t&&typeof t=="object"&&typeof t.url=="string"&&typeof t.label=="string"&&typeof t.kind=="string"):[]}catch{return[]}}function ao(n){try{window.localStorage.setItem(un,JSON.stringify(n))}catch(e){console.error("failed to persist recent views:",e)}window.dispatchEvent(new CustomEvent(dn))}function Qi(){return Zi().sort((n,e)=>e.viewedAt-n.viewedAt)}function er(n){if(!n.url)return;let e=Zi().filter(i=>i.url!==n.url),t=[{...n,viewedAt:Date.now()},...e].slice(0,oo);ao(t)}function tr(){let[n,e]=Q(()=>Qi());return Z(()=>{let t=()=>e(Qi()),i=r=>{r.key===un&&t()};return window.addEventListener(dn,t),window.addEventListener("storage",i),()=>{window.removeEventListener(dn,t),window.removeEventListener("storage",i)}},[]),n}function nr(n){let e=n.split("?")[0]||n;try{e=new URL(n,window.location.origin).pathname}catch{}e=e.replace(/\/+$/,"");let t=e.split("/").filter(Boolean);if(t.length===4&&t[0]==="cms"&&t[1]==="content"){let i=decodeURIComponent(t[2]),r=decodeURIComponent(t[3]);return{kind:"doc",url:`/cms/content/${t[2]}/${t[3]}`,label:`${i} / ${r}`,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="content"){let i=decodeURIComponent(t[2]),r=window.__ROOT_CTX?.collections?.[i];return{kind:"collection",url:`/cms/content/${t[2]}`,label:r?.name||i,description:r?.description,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="data"&&t[2]!=="new"){let i=decodeURIComponent(t[2]);return{kind:"data-source",url:`/cms/data/${t[2]}`,label:i,viewedAt:0}}if(t.length===3&&t[0]==="cms"&&t[1]==="releases"&&t[2]!=="new"){let i=decodeURIComponent(t[2]);return{kind:"release",url:`/cms/releases/${t[2]}`,label:i,viewedAt:0}}return null}function ir(n){let e=n.text||"",t=(n.terms||[]).filter(Boolean);if(!e)return[];if(!t.length)return[{kind:"text",value:e.slice(0,180)}];let i=e.toLowerCase(),r=[];for(let p of t){let f=p.toLowerCase();if(!f)continue;let T=0;for(;(T=i.indexOf(f,T))!==-1;)r.push({start:T,end:T+f.length}),T+=f.length}if(r.length===0)return[{kind:"text",value:e.slice(0,180)}];r.sort((p,f)=>p.start-f.start);let s=[];for(let p of r){let f=s[s.length-1];f&&p.start<=f.end?f.end=Math.max(f.end,p.end):s.push({...p})}let o=s[0],a=Math.max(0,o.start-60),l=Math.min(e.length,o.end+120),d=[];a>0&&d.push({kind:"text",value:"\u2026 "});let h=a;for(let p of s){if(p.end<=a||p.start>=l)continue;let f=Math.max(p.start,a),T=Math.min(p.end,l);f>h&&d.push({kind:"text",value:e.slice(h,f)}),d.push({kind:"mark",value:e.slice(f,T)}),h=T}return h<l&&d.push({kind:"text",value:e.slice(h,l)}),l<e.length&&d.push({kind:"text",value:" \u2026"}),d}function co(n){return n==="collection"?c(mt,{size:16}):n==="data-source"?c(pt,{size:16}):c(gt,{size:16})}function lo(n){return n==="collection"?c(mt,{size:16}):n==="data-source"?c(pt,{size:16}):n==="release"?c(gt,{size:16}):c(ft,{size:16})}function uo(n){return n==="collection"?"Collection":n==="data-source"?"Data source":"Release"}function ho(n){return n==="collection"?"Collection":n==="data-source"?"Data source":n==="release"?"Release":"Doc"}function nt(n){let e=["GlobalSearchAction",n.className||"",n.hovered?"GlobalSearchAction--hovered":""].filter(Boolean).join(" ");return c("button",{type:"button",className:e,onMouseDown:t=>{t.preventDefault(),n.onTrigger()},children:n.children})}function rr(n){let e=n.action?.meta;if(!e)return null;if(e.kind==="header")return c("div",{className:"GlobalSearchAction GlobalSearchAction--header",children:e.label});if(e.kind==="footer")return c("div",{className:"GlobalSearchAction GlobalSearchAction--footer",children:["Last indexed ",e.lastIndexed]});if(e.kind==="tips")return c("div",{className:"GlobalSearchAction GlobalSearchAction--tips",children:[c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:'"\u2026"'}),c("span",{children:"exact phrase"})]}),c("span",{className:"GlobalSearchAction__tipSep",children:"\xB7"}),c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:"-word"}),c("span",{children:"exclude"})]}),c("span",{className:"GlobalSearchAction__tipSep",children:"\xB7"}),c("span",{className:"GlobalSearchAction__tipItem",children:[c("kbd",{className:"GlobalSearchAction__kbd",children:"coll/slug"}),c("span",{children:"jump by id"})]})]});if(e.kind==="field"){let t=e.hit,i=ir(t);return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:[c("div",{className:"GlobalSearchAction__crumbs",children:[c("span",{className:"GlobalSearchAction__docId",children:t.docId}),c("span",{className:"GlobalSearchAction__sep",children:c(zn,{size:16})}),c("span",{className:"GlobalSearchAction__field",children:t.fieldLabel})]}),c("div",{className:"GlobalSearchAction__snippet",children:i.map((r,s)=>r.kind==="mark"?c("mark",{className:"GlobalSearchAction__mark",children:r.value},s):c("span",{children:r.value},s))})]})}if(e.kind==="doc"){let t=e.hit;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon",children:c(ft,{size:16})}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.slug}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:"Doc"}),c("span",{className:"GlobalSearchAction__subText",children:t.docId})]})]})]})})}if(e.kind==="target"){let t=e.target;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon",children:co(t.kind)}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.label}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:uo(t.kind)}),t.description&&c("span",{className:"GlobalSearchAction__subText",children:t.description})]})]})]})})}if(e.kind==="recent"){let t=e.view;return c(nt,{hovered:n.hovered,onTrigger:n.onTrigger,children:c("div",{className:"GlobalSearchAction__row",children:[c("div",{className:"GlobalSearchAction__icon GlobalSearchAction__icon--muted",children:c($n,{size:16})}),c("div",{className:"GlobalSearchAction__body",children:[c("div",{className:"GlobalSearchAction__title",children:t.label}),c("div",{className:"GlobalSearchAction__sub",children:[c("span",{className:"GlobalSearchAction__tag",children:ho(t.kind)}),c("span",{className:"GlobalSearchAction__subIcon",children:lo(t.kind)})]})]})]})})}return null}function po(n){if(!n?.lastRun)return null;let e=Date.now()-n.lastRun;return e<6e4?"just now":e<60*6e4?`${Math.floor(e/6e4)}m ago`:e<1440*6e4?`${Math.floor(e/(60*6e4))}h ago`:`${Math.floor(e/(1440*6e4))}d ago`}function fo(){let n=window.__ROOT_CTX?.collections||{};return Object.entries(n).map(([e,t])=>{let i=t?.name||e,r=t?.description;return{kind:"collection",id:e,url:`/cms/content/${e}`,label:i,description:r,haystack:[e,i,r].filter(Boolean).join(" ").toLowerCase()}}).sort((e,t)=>e.label.localeCompare(t.label))}function mo(n){return n.map(e=>({kind:"data-source",id:e.id,url:`/cms/data/${e.id}`,label:e.id,description:e.description,haystack:[e.id,e.description].filter(Boolean).join(" ").toLowerCase()}))}function go(n){return n.map(e=>({kind:"release",id:e.id,url:`/cms/releases/${e.id}`,label:e.id,description:e.description,haystack:[e.id,e.description].filter(Boolean).join(" ").toLowerCase()}))}function _o(n,e){let t=e.trim().toLowerCase();if(!t)return[];let i=[],r=[];for(let s of n)s.id.toLowerCase().startsWith(t)||s.label.toLowerCase().startsWith(t)?i.push(s):s.haystack.includes(t)&&r.push(s);return[...i,...r]}function Io(n,e){let t={kind:"field",hit:n};return{id:`field:${n.id}`,title:n.text||n.fieldLabel,description:`${n.collection} \xB7 ${n.slug} \xB7 ${n.fieldLabel}`,keywords:[n.collection,n.slug,n.fieldLabel],onTrigger:e,meta:t}}function To(n,e){let t={kind:"doc",hit:n};return{id:`doc:${n.docId}`,title:n.slug,description:n.collection,keywords:[n.collection,n.slug,n.docId],onTrigger:e,meta:t}}function Eo(n,e){let t={kind:"target",target:n};return{id:`${n.kind}:${n.id}`,title:n.label,description:n.description||n.id,keywords:[n.id,n.label,n.description||""],onTrigger:e,meta:t}}function wo(n,e){let t={kind:"recent",view:n};return{id:`recent:${n.url}`,title:n.label,description:n.description||"",keywords:[n.label,n.description||"",n.url],onTrigger:e,meta:t}}function it(n,e){let t={kind:"header",label:e};return{id:`header:${n}`,title:e,description:"",keywords:"__internal__",onTrigger:()=>{},meta:t}}function vo(n){return{id:"__last-indexed__",title:"",description:"",keywords:"__internal__",onTrigger:()=>{},meta:{kind:"footer",lastIndexed:n}}}function yo(){return{id:"__syntax-tips__",title:"",description:"",keywords:"__internal__",onTrigger:()=>{},meta:{kind:"tips"}}}function So(n){let{query:e,onQueryChange:t}=n,i=Fn(),r=e.trim(),{hits:s,loading:o,status:a}=Xn(e),{hits:l,loading:d}=Qn(e),h=tr(),[p,f]=Q([]);Z(()=>{let _=!1;return Hn().then(N=>{_||f(N)}).catch(N=>{console.error("failed to list data sources:",N)}),()=>{_=!0}},[]);let{releases:T}=qn(),C=ee(()=>[...fo(),...mo(p),...go(T)],[p,T]);Z(()=>{let _=nr(i.url);_&&er(_)},[i.url]);let M=_=>i.route(_),z=ee(()=>{if(!r)return h.length===0?[]:[it("recent","Recently viewed"),...h.map(w=>wo(w,()=>M(w.url)))];let _=[],N=_o(C,r);if(N.length>0){_.push(it("static","Jump to"));for(let w of N)_.push(Eo(w,()=>M(w.url)))}if(l.length>0){_.push(it("docs","Documents"));for(let w of l){let ot=`/cms/content/${w.collection}/${encodeURIComponent(w.slug)}`;_.push(To(w,()=>M(ot)))}}if(s.length>0){_.push(it("fields","Field matches"));for(let w of s){let ot=`/cms/content/${w.collection}/${encodeURIComponent(w.slug)}?deeplink=${encodeURIComponent(w.deepKey)}`;_.push(Io(w,()=>M(ot)))}}return _},[r,s,l,C,h,i]),U=po(a),st=ee(()=>{if(z.length===0)return z;let _=[...z];return r&&_.push(yo()),U&&r&&_.push(vo(U)),_},[z,U,r]),hn=o||d,ar=ee(()=>hn?"Searching\u2026":r?'No results. Try fewer words, or "quotes" for an exact phrase.':'Type to search \xB7 "quotes" for exact match \xB7 -word to exclude',[hn,r]);return c(Jn,{actions:st,shortcut:["mod + K"],onQueryChange:t,searchPlaceholder:"Search docs, collections, releases\u2026",searchIcon:c(jn,{size:18}),nothingFoundMessage:ar,filter:(_,N)=>N,actionComponent:rr,limit:50,cleanQueryOnClose:!0,withinPortal:!0,children:n.children})}function sr(n){let[e,t]=Q("");return c(So,{query:e,onQueryChange:t,children:n.children})}function g(n){return Gn(()=>n().then(e=>({default:e})))}var or=g(()=>import("./AIPage-F3NNYM5E.js").then(n=>n.AIPage)),bo=g(()=>import("./AssetsPage-DZQHAENZ.js").then(n=>n.AssetsPage)),Ao=g(()=>import("./CollectionPage-WVVG62NR.js").then(n=>n.CollectionPage)),ko=g(()=>import("./ComparePage-CRDHP45W.js").then(n=>n.ComparePage)),Po=g(()=>import("./DataPage-WMLBCPGF.js").then(n=>n.DataPage)),Ro=g(()=>import("./DataSourcePage-POZAQFPU.js").then(n=>n.DataSourcePage)),Co=g(()=>import("./DocTranslationsPage-UR5D2RF2.js").then(n=>n.DocTranslationsPage)),No=g(()=>import("./DocumentPage-SQ7ROBMC.js").then(n=>n.DocumentPage)),Oo=g(()=>import("./EditDataSourcePage-PUA2AJ4C.js").then(n=>n.EditDataSourcePage)),Do=g(()=>import("./EditReleasePage-CENP46EO.js").then(n=>n.EditReleasePage)),Lo=g(()=>import("./LogsPage-FZRN6MBJ.js").then(n=>n.LogsPage)),Mo=g(()=>import("./NewDataSourcePage-FTILYFJY.js").then(n=>n.NewDataSourcePage)),Uo=g(()=>import("./NewReleasePage-MHJC66KK.js").then(n=>n.NewReleasePage)),xo=g(()=>import("./NotFoundPage-EP2OE4JV.js").then(n=>n.NotFoundPage)),Vo=g(()=>import("./ProjectPage-6J7QCG75.js").then(n=>n.ProjectPage)),Fo=g(()=>import("./ReleasePage-IZ3DNGT4.js").then(n=>n.ReleasePage)),Go=g(()=>import("./ReleasesPage-RWFOJ5VG.js").then(n=>n.ReleasesPage)),Ho=g(()=>import("./SettingsPage-M4SIDBTI.js").then(n=>n.SettingsPage)),Wo=g(()=>import("./SidebarToolsPage-GAX3XJ7W.js").then(n=>n.SidebarToolsPage)),qo=g(()=>import("./TaskPage-UCATTNZ5.js").then(n=>n.TaskPage)),zo=g(()=>import("./TasksPage-4AQLQ4IT.js").then(n=>n.TasksPage)),$o=g(()=>import("./TranslationsArbPage-JGQGATCS.js").then(n=>n.TranslationsArbPage)),jo=g(()=>import("./TranslationsEditPage-7AGZGHKS.js").then(n=>n.TranslationsEditPage)),Ko=g(()=>import("./TranslationsPage-WIDVSTYF.js").then(n=>n.TranslationsPage));function Bo(){return c(mn,{theme:{fontFamily:"Inter, sans-serif",fontSizes:{xs:12,sm:14,md:16,lg:18,xl:20}},children:c(_n,{children:c(Kn.Provider,{value:window.firebase,children:c(Bn,{children:c(Yn,{children:c(Wn,{children:c(Zn,{children:c(gn,{modals:{[ht.id]:ht,[_t.id]:_t,[It.id]:It,[Tt.id]:Tt,[wt.id]:wt,[Et.id]:Et,[vt.id]:vt,[yt.id]:yt,[St.id]:St,[At.id]:At,[kt.id]:kt,[bt.id]:bt,[Pt.id]:Pt,[Ct.id]:Ct,[Nt.id]:Nt,[Rt.id]:Rt},children:c(xn,{children:c(sr,{children:c(Vn,{children:[c(m,{path:"/cms",component:Vo}),c(m,{path:"/cms/ai",component:or}),c(m,{path:"/cms/ai/chat/:chatId",component:or}),c(m,{path:"/cms/assets",component:bo}),c(m,{path:"/cms/compare",component:ko}),c(m,{path:"/cms/content/:collection?",component:Ao}),c(m,{path:"/cms/content/:collection/:slug",component:No}),c(m,{path:"/cms/data",component:Po}),c(m,{path:"/cms/data/new",component:Mo}),c(m,{path:"/cms/data/:id",component:Ro}),c(m,{path:"/cms/data/:id/edit",component:Oo}),c(m,{path:"/cms/logs",component:Lo}),c(m,{path:"/cms/releases",component:Go}),c(m,{path:"/cms/releases/new",component:Uo}),c(m,{path:"/cms/releases/:id",component:Fo}),c(m,{path:"/cms/releases/:id/edit",component:Do}),c(m,{path:"/cms/settings",component:Ho}),c(m,{path:"/cms/tasks",component:zo}),c(m,{path:"/cms/tasks/:id",component:qo}),c(m,{path:"/cms/tools/:id",component:Wo}),c(m,{path:"/cms/translations",component:Ko}),c(m,{path:"/cms/translations/arb",component:$o}),c(m,{path:"/cms/translations/:hash",component:jo}),c(m,{path:"/cms/translations/:collection/:slug",component:Co}),c(m,{default:!0,component:xo})]})})})})})})})})})})})}function Yo(){let n=window.location.pathname;window.location.search&&(n=`${n}?${window.location.search}`);let e=new URLSearchParams({continue:n});window.location.replace(`/cms/login?${e.toString()}`)}function Jo(){window.addEventListener("keydown",n=>{if(!((n.metaKey||n.ctrlKey)&&n.shiftKey&&n.key.toLowerCase()==="d")||window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")return;n.preventDefault();let i=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.location.assign(`http://localhost:4007${i}`)})}Jo();var rt=document.getElementById("root");function Xo(n){return(n?.code||"")==="auth/invalid-api-key"?"Firebase API key is invalid.":n?.message||"An unknown startup error occurred."}function Qo(n){console.error(n),rt.innerHTML="";let e=document.createElement("div");e.className="bootstrap bootstrap--error";let t=document.createElement("h1");t.className="bootstrap__error-title",t.textContent="Something went wrong";let i=document.createElement("p");i.className="bootstrap__error-message",i.textContent=Xo(n),e.append(t,i),rt.append(e)}try{let n=Cn(window.__ROOT_CTX.firebaseConfig),e=window.__ROOT_CTX.firebaseConfig.databaseId||"(default)",t=Dn(n,{experimentalForceLongPolling:!0,useFetchStreams:!1},e),i=ln(n),r=Un(n);i.onAuthStateChanged(s=>{if(!s){Yo();return}window.firebase={app:n,auth:i,db:t,storage:r,user:s},rt.innerHTML="",pn(c(Bo,{}),rt),Zo(s),ea(s,t)})}catch(n){Qo(n)}async function Zo(n){let e=await n.getIdToken(),t=await fetch("/cms/login",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:e})});if(t.status!==200){console.error("login failed"),console.log(t);return}if(!(await t.json()).success){console.error("login failed"),console.log(t);return}}async function ea(n,e){if(!n.email)return;let t=window.__ROOT_CTX.rootConfig.projectId,i=On(e,"Projects",t,"UserProfiles",n.email);try{await Ln(i,{email:n.email,displayName:n.displayName||"",photoURL:n.photoURL||"",uid:n.uid,lastSignedInAt:Mn()},{merge:!0})}catch(r){console.error("failed to save user profile:",r)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blinkk/root-cms",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"author": "s@blinkk.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -153,10 +153,10 @@
|
|
|
153
153
|
"vite": "8.0.13",
|
|
154
154
|
"vitest": "4.1.6",
|
|
155
155
|
"yjs": "13.6.27",
|
|
156
|
-
"@blinkk/root": "3.0.
|
|
156
|
+
"@blinkk/root": "3.0.5"
|
|
157
157
|
},
|
|
158
158
|
"peerDependencies": {
|
|
159
|
-
"@blinkk/root": "3.0.
|
|
159
|
+
"@blinkk/root": "3.0.5",
|
|
160
160
|
"firebase-admin": ">=11",
|
|
161
161
|
"firebase-functions": ">=4"
|
|
162
162
|
},
|