cyrus-studio 1.0.2 → 1.0.4

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.
Files changed (23) hide show
  1. package/dist/assets/{AuthDialog-99eATcMi.js → AuthDialog-YdYw5lFN.js} +1 -1
  2. package/dist/assets/CanvaSaveModal-BitQsGCb.js +1 -0
  3. package/dist/assets/{CodingWorkspace-DR_k5kLM.js → CodingWorkspace-DiBeNuSx.js} +1 -1
  4. package/dist/assets/{CreateAppDialog-DO1cNQS6.js → CreateAppDialog-BJeg36NU.js} +2 -2
  5. package/dist/assets/{CreateProjectDialog-BHLIiafO.js → CreateProjectDialog-CVYB9td_.js} +1 -1
  6. package/dist/assets/{HistoryTimelineDialog-CWMdlEP1.js → HistoryTimelineDialog-D12bt47I.js} +1 -1
  7. package/dist/assets/{ImportModal-Cqy4Yhch.js → ImportModal-69EavD-n.js} +1 -1
  8. package/dist/assets/{KeyboardShortcutsDialog-BpFX3PHV.js → KeyboardShortcutsDialog-DgLLjQIQ.js} +1 -1
  9. package/dist/assets/{LiveRuntimeWorkspace-DtzLfYo8.js → LiveRuntimeWorkspace-YEX-a1mf.js} +1 -1
  10. package/dist/assets/{ShareExportDialog-Dzmz8crE.js → ShareExportDialog-eSOGrmx0.js} +1 -1
  11. package/dist/assets/UserProfileDialog-C_4cQgpX.js +1 -0
  12. package/dist/assets/{WelcomeOnboardingModal-BAqkpnG-.js → WelcomeOnboardingModal-DPwvG1WZ.js} +1 -1
  13. package/dist/assets/index-COkFr0Rf.css +2 -0
  14. package/dist/assets/{index-DP1fe-Ay.js → index-CkVsrMas.js} +17 -17
  15. package/dist/assets/{reactTsGenerator-CkYUg1Bs.js → reactTsGenerator-a0llqmE2.js} +1 -1
  16. package/dist/assets/themes-Cn_1tMt7.js +1 -0
  17. package/dist/assets/{vendor-firebase-DHYCsgNh.js → vendor-firebase-DNMzpOGz.js} +1 -1
  18. package/dist/index.html +4 -4
  19. package/package.json +1 -1
  20. package/dist/assets/CanvaSaveModal-Cje8wza2.js +0 -9
  21. package/dist/assets/UserProfileDialog-CqZTjkPU.js +0 -1
  22. package/dist/assets/index-Ci4Kj5Ez.css +0 -2
  23. package/dist/assets/themes-CNabH9CH.js +0 -1
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-W7wSyTde.js";import{t}from"./themes-CNabH9CH.js";import{t as n}from"./vendor-jszip-Cv4gVObP.js";var r=e(n(),1);async function i(e,t,n=`react`){let i=new r.default;for(let e of t)i.file(e.path,e.content);let a=await i.generateAsync({type:`blob`}),o=URL.createObjectURL(a),s=document.createElement(`a`);s.href=o,s.download=`${e.toLowerCase().replace(/[^a-z0-9]/g,`_`)}_${n}_app.zip`,s.click(),URL.revokeObjectURL(o)}function a(e,n=`nextjs`){let r=(e.components||[]).map(e=>{let t=o(e.templateElement),n=l(e.name);return{name:n,fileName:`${n}.tsx`,propsSchema:[{name:`title`,type:`string`,defaultValue:e.templateElement.content?.title},{name:`className`,type:`string`,defaultValue:``}],rootNode:t}}),i=e.pages.map(t=>{let n=s(t.elements);return{id:t.id,name:t.name,slug:t.slug,route:t.slug===`home`||t.slug===`index`?`/`:`/${t.slug}`,sections:n,metaTitle:t.settings?.metaTitle||`${t.name} | ${e.name}`,metaDescription:t.settings?.metaDescription||`${t.name} page for ${e.name}`,favicon:t.settings?.favicon||e.settings?.favicon,canonicalUrl:t.settings?.canonicalUrl,socialImage:t.settings?.socialImage||e.settings?.defaultOgImage,ogType:t.settings?.ogType||`website`,twitterCard:t.settings?.twitterCard||`summary_large_image`,noIndex:t.settings?.noIndex||!1,keywords:t.settings?.keywords||[]}}),a=[];return e.pages.forEach(e=>{e.elements.forEach(e=>{let t=e.content?.src||e.content?.url;t&&typeof t==`string`&&a.push({id:e.id,name:e.name||`Asset`,url:t})})}),{id:e.id,name:e.name,description:e.description,target:n,designTokens:e.designSystem||t,pages:i,components:r,assets:a,variables:e.variables||[],dataSources:e.dataSources||[],siteUrl:e.settings?.siteUrl||`https://example.com`,defaultOgImage:e.settings?.defaultOgImage,defaultFavicon:e.settings?.favicon,sitemapEnabled:e.settings?.sitemapEnabled??!0,robotsTxtEnabled:e.settings?.robotsTxtEnabled??!0}}function o(e){let t=c(e.type);return{id:e.id,type:e.type,semanticRole:t,name:e.name,props:{...e.content},styles:{...e.styles},responsive:e.responsive,bindings:e.bindings,collectionBinding:e.collectionBinding,formConfig:e.formConfig,interactions:(e.interactions||[]).map(e=>({trigger:e.trigger,action:e.action,target:e.target,targetName:e.targetName})),animations:(e.animations||[]).map(e=>({trigger:e.trigger===`hover`?`hover`:`load`,type:e.type||`none`,duration:e.duration,delay:e.delay,easing:e.easing})),componentName:e.isComponentInstance?l(e.name):void 0,accessibility:e.accessibility}}function s(e){if(e.length===0)return[];let t=[...e].sort((e,t)=>e.y-t.y),n=[],r=0;for(;r<t.length;){let e=t[r];if(e.type===`navbar`||e.type===`hero`||e.type===`heroSection`||e.type===`footer`||e.type===`cta`||e.type===`sidebar`||e.type===`bottomNav`||e.type===`loginForm`){n.push(o(e)),r++;continue}if(e.type.includes(`Card`)||e.type===`card`){let i=[e],a=r+1;for(;a<t.length;){let n=t[a];if((n.type.includes(`Card`)||n.type===`card`)&&Math.abs(n.y-e.y)<=60)i.push(n),a++;else break}if(i.length>1){let t={id:`grid_${e.id}`,type:`grid`,semanticRole:e.type===`pricingCard`?`pricing`:e.type===`metricCard`?`stats`:`features`,name:`${e.name} Grid (${i.length} items)`,props:{columns:i.length},styles:{display:`grid`,gap:24},children:i.map(o)};n.push(t),r=a;continue}}n.push(o(e)),r++}return n}function c(e){return e===`navbar`?`header`:e===`hero`||e===`heroSection`?`hero`:e===`pricingCard`?`pricing`:e===`metricCard`||e===`chart`||e===`dataTable`?`stats`:e===`featureCard`||e===`card`?`features`:e===`loginForm`?`auth`:e===`footer`?`footer`:`content`}function l(e){return e.replace(/[^a-zA-Z0-9]/g,` `).split(` `).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)||`Component`}function u(e){let t=0,n=0,r=0,i=[];e.pages.forEach(e=>{(!e.metaTitle||e.metaTitle.length<5)&&i.push(`${e.name} (Missing or short title)`),(!e.metaDescription||e.metaDescription.length<10)&&i.push(`${e.name} (Missing meta description)`),(e.sections||[]).forEach(e=>{r++,(e.type===`image`||e.props?.src)&&(t++,!e.props?.alt&&!e.accessibility?.altText&&n++)})});let a=Math.max(0,Math.round(100-n*10)),o=Math.max(0,Math.round(100-i.length*15)),s=[];return n>0&&s.push(`Add descriptive alt text to ${n} image elements.`),i.length>0&&s.push(`Provide custom meta descriptions for ${i.length} pages.`),s.length===0&&s.push(`All core WCAG 2.1 AA and SEO standards are met!`),{accessibilityReport:`
1
+ import{r as e}from"./rolldown-runtime-W7wSyTde.js";import{t}from"./themes-Cn_1tMt7.js";import{t as n}from"./vendor-jszip-Cv4gVObP.js";var r=e(n(),1);async function i(e,t,n=`react`){let i=new r.default;for(let e of t)i.file(e.path,e.content);let a=await i.generateAsync({type:`blob`}),o=URL.createObjectURL(a),s=document.createElement(`a`);s.href=o,s.download=`${e.toLowerCase().replace(/[^a-z0-9]/g,`_`)}_${n}_app.zip`,document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout(()=>URL.revokeObjectURL(o),1e3)}function a(e,n=`nextjs`){let r=(e.components||[]).map(e=>{let t=o(e.templateElement),n=l(e.name);return{name:n,fileName:`${n}.tsx`,propsSchema:[{name:`title`,type:`string`,defaultValue:e.templateElement.content?.title},{name:`className`,type:`string`,defaultValue:``}],rootNode:t}}),i=e.pages.map(t=>{let n=s(t.elements);return{id:t.id,name:t.name,slug:t.slug,route:t.slug===`home`||t.slug===`index`?`/`:`/${t.slug}`,sections:n,metaTitle:t.settings?.metaTitle||`${t.name} | ${e.name}`,metaDescription:t.settings?.metaDescription||`${t.name} page for ${e.name}`,favicon:t.settings?.favicon||e.settings?.favicon,canonicalUrl:t.settings?.canonicalUrl,socialImage:t.settings?.socialImage||e.settings?.defaultOgImage,ogType:t.settings?.ogType||`website`,twitterCard:t.settings?.twitterCard||`summary_large_image`,noIndex:t.settings?.noIndex||!1,keywords:t.settings?.keywords||[]}}),a=[];return e.pages.forEach(e=>{e.elements.forEach(e=>{let t=e.content?.src||e.content?.url;t&&typeof t==`string`&&a.push({id:e.id,name:e.name||`Asset`,url:t})})}),{id:e.id,name:e.name,description:e.description,target:n,designTokens:e.designSystem||t,pages:i,components:r,assets:a,variables:e.variables||[],dataSources:e.dataSources||[],siteUrl:e.settings?.siteUrl||`https://example.com`,defaultOgImage:e.settings?.defaultOgImage,defaultFavicon:e.settings?.favicon,sitemapEnabled:e.settings?.sitemapEnabled??!0,robotsTxtEnabled:e.settings?.robotsTxtEnabled??!0}}function o(e){let t=c(e.type);return{id:e.id,type:e.type,semanticRole:t,name:e.name,props:{...e.content},styles:{...e.styles},responsive:e.responsive,bindings:e.bindings,collectionBinding:e.collectionBinding,formConfig:e.formConfig,interactions:(e.interactions||[]).map(e=>({trigger:e.trigger,action:e.action,target:e.target,targetName:e.targetName})),animations:(e.animations||[]).map(e=>({trigger:e.trigger===`hover`?`hover`:`load`,type:e.type||`none`,duration:e.duration,delay:e.delay,easing:e.easing})),componentName:e.isComponentInstance?l(e.name):void 0,accessibility:e.accessibility}}function s(e){if(e.length===0)return[];let t=[...e].sort((e,t)=>e.y-t.y),n=[],r=0;for(;r<t.length;){let e=t[r];if(e.type===`navbar`||e.type===`hero`||e.type===`heroSection`||e.type===`footer`||e.type===`cta`||e.type===`sidebar`||e.type===`bottomNav`||e.type===`loginForm`){n.push(o(e)),r++;continue}if(e.type.includes(`Card`)||e.type===`card`){let i=[e],a=r+1;for(;a<t.length;){let n=t[a];if((n.type.includes(`Card`)||n.type===`card`)&&Math.abs(n.y-e.y)<=60)i.push(n),a++;else break}if(i.length>1){let t={id:`grid_${e.id}`,type:`grid`,semanticRole:e.type===`pricingCard`?`pricing`:e.type===`metricCard`?`stats`:`features`,name:`${e.name} Grid (${i.length} items)`,props:{columns:i.length},styles:{display:`grid`,gap:24},children:i.map(o)};n.push(t),r=a;continue}}n.push(o(e)),r++}return n}function c(e){return e===`navbar`?`header`:e===`hero`||e===`heroSection`?`hero`:e===`pricingCard`?`pricing`:e===`metricCard`||e===`chart`||e===`dataTable`?`stats`:e===`featureCard`||e===`card`?`features`:e===`loginForm`?`auth`:e===`footer`?`footer`:`content`}function l(e){return e.replace(/[^a-zA-Z0-9]/g,` `).split(` `).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)||`Component`}function u(e){let t=0,n=0,r=0,i=[];e.pages.forEach(e=>{(!e.metaTitle||e.metaTitle.length<5)&&i.push(`${e.name} (Missing or short title)`),(!e.metaDescription||e.metaDescription.length<10)&&i.push(`${e.name} (Missing meta description)`),(e.sections||[]).forEach(e=>{r++,(e.type===`image`||e.props?.src)&&(t++,!e.props?.alt&&!e.accessibility?.altText&&n++)})});let a=Math.max(0,Math.round(100-n*10)),o=Math.max(0,Math.round(100-i.length*15)),s=[];return n>0&&s.push(`Add descriptive alt text to ${n} image elements.`),i.length>0&&s.push(`Provide custom meta descriptions for ${i.length} pages.`),s.length===0&&s.push(`All core WCAG 2.1 AA and SEO standards are met!`),{accessibilityReport:`
2
2
  # Accessibility Compliance Report (WCAG 2.1 AA)
3
3
 
4
4
  **Project:** ${e.name}
@@ -0,0 +1 @@
1
+ import{a as e,i as t,o as n,r,s as i}from"./vendor-utils-3OgY5Lif.js";import{C as a,E as o,S as s,T as c,_ as l,b as u,g as d,h as f,n as p,o as m,r as h,v as g,w as _,x as v,y}from"./vendor-firebase-DNMzpOGz.js";function b(e=`elem`){let t=``;for(let e=0;e<8;e++)t+=`0123456789abcdefghijklmnopqrstuvwxyz`.charAt(Math.floor(Math.random()*36));return`${e}_${t}`}var x=c().length?_():o({apiKey:`AIzaSyADETpVkjSKxwXbcvDOKwVOpNq5QmmEkAg`,authDomain:`faah-canfig.firebaseapp.com`,projectId:`faah-canfig`,storageBucket:`faah-canfig.firebasestorage.app`,messagingSenderId:`947514329279`,appId:`1:947514329279:web:6bca4f5a228c7d0c9e9e0a`,measurementId:`G-02RKCV7NZT`}),S=m(x),C=a(x),w=new h;w.addScope(`profile`),w.addScope(`email`),w.setCustomParameters({prompt:`select_account`});var T=new p;T.addScope(`user:email`);var E=`cyrus_projects`;function D(e){if(e==null)return null;if(Array.isArray(e))return e.map(D);if(typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=D(r));return t}return e}async function O(e){try{let t=S.currentUser,n=s(C,E,e.id),r=D({...e,ownerId:t?t.uid:e.ownerId||`guest`,ownerEmail:t?t.email:null,updatedAt:new Date().toISOString(),cloudSyncedAt:new Date().toISOString()});await y(n,r,{merge:!0})}catch(t){console.warn(`[CloudSync] Could not sync project ${e.id} to Firestore:`,t.message)}}async function k(e){try{let t=s(C,E,e),n=await d(t);return n.exists()?n.data():null}catch(t){return console.warn(`[CloudSync] Error reading project ${e} from Firestore:`,t.message),null}}async function A(){try{let e=S.currentUser;if(!e)return[];let t=g(v(C,E),u(`ownerId`,`==`,e.uid)),n=await l(t),r=[];return n.forEach(e=>{r.push(e.data())}),r.sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}catch(e){return console.warn(`[CloudSync] Error fetching user projects from Firestore:`,e.message),[]}}async function j(e){try{let t=s(C,E,e);await f(t)}catch(t){console.warn(`[CloudSync] Error deleting project ${e} from Firestore:`,t.message)}}var M=`cyrus_proj_`,N=`cyrus_db_initialized_v5`;async function P(){try{await i(N,!0)}catch(e){console.warn(`Storage init note:`,e)}}async function F(){try{let t=await e(),n=new Map;for(let[e,r]of t)if(typeof e==`string`&&e.startsWith(M)&&r){let e=r;n.set(e.id,e)}try{let e=await A();for(let t of e)(!n.has(t.id)||new Date(t.updatedAt).getTime()>new Date(n.get(t.id).updatedAt).getTime())&&(n.set(t.id,t),await i(`${M}${t.id}`,t))}catch{}return Array.from(n.values()).sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}catch(e){return console.error(`Error fetching projects:`,e),[]}}async function I(e){try{let t=await n(`${M}${e}`);if(t)return t;let r=await k(e);return r?(await i(`${M}${e}`,r),r):null}catch(t){return console.error(`Error fetching project ${e}:`,t),null}}async function L(e){try{let t={...e,updatedAt:new Date().toISOString()};await i(`${M}${e.id}`,t),O(t).catch(()=>{})}catch(t){console.error(`Error saving project ${e.id}:`,t)}}async function R(e){try{await t(`${M}${e}`),j(e).catch(()=>{})}catch(t){console.error(`Error deleting project ${e}:`,t)}}async function z(e){return JSON.stringify(e,null,2)}async function B(e){let t=JSON.parse(e);if(!t.id||!t.name||!Array.isArray(t.pages))throw Error(`Invalid Cyrus project JSON format.`);let n={...t,id:b(`proj`),name:`${t.name} (Imported)`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await L(n),n}async function V(){try{let n=await e();for(let[e]of n)typeof e==`string`&&e.startsWith(M)&&await t(e)}catch(e){console.error(`Error resetting data:`,e)}}var H=new Map,U=r(e=>({toasts:[],addToast:(t,n=`info`,r=3200)=>{let i=`toast_${Date.now()}_${Math.random()}`,a={id:i,type:n,text:t,duration:r};e(e=>({toasts:[...e.toasts,a]}));let o=setTimeout(()=>{H.delete(i),e(e=>({toasts:e.toasts.filter(e=>e.id!==i)}))},r);H.set(i,o)},removeToast:t=>{let n=H.get(t);n&&(clearTimeout(n),H.delete(t)),e(e=>({toasts:e.toasts.filter(e=>e.id!==t)}))}})),W={colors:{blue50:`#f0f7ff`,blue100:`#e0effe`,blue200:`#bae0fd`,blue300:`#7cc5fb`,blue400:`#38a5f8`,blue500:`#0071e3`,blue600:`#0062c4`,blue700:`#004fa1`,blue800:`#004385`,blue900:`#05386f`,indigo500:`#5856d6`,purple500:`#af52de`,emerald500:`#34c759`,rose500:`#ff2d55`,amber500:`#ff9500`,gray50:`#fbfbfd`,gray100:`#f5f5f7`,gray200:`#e5e5ea`,gray300:`#d1d1d6`,gray400:`#c7c7cc`,gray500:`#8e8e93`,gray600:`#636366`,gray700:`#3a3a3c`,gray800:`#2c2c2e`,gray900:`#1c1c1e`,gray950:`#1d1d1f`,white:`#ffffff`,black:`#000000`,transparent:`transparent`},spacing:{spacing0:0,spacing2:2,spacing4:4,spacing8:8,spacing12:12,spacing16:16,spacing20:20,spacing24:24,spacing32:32,spacing40:40,spacing48:48,spacing64:64,spacing80:80},radius:{radius0:0,radius2:2,radius4:4,radius6:6,radius8:8,radius10:10,radius12:12,radius16:16,radius20:20,radius24:24,radiusPill:9999},typography:{fontSans:`Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif`,fontMono:`'SF Mono', Monaco, Consolas, monospace`,fontSerif:`'New York', Georgia, serif`,size10:10,size11:11,size12:12,size13:13,size14:14,size15:15,size16:16,size18:18,size20:20,size24:24,size28:28,size32:32,size40:40,size48:48,size64:64,weightLight:`300`,weightRegular:`400`,weightMedium:`500`,weightSemibold:`600`,weightBold:`700`,weightExtrabold:`800`},shadows:{shadowNone:`none`,shadowXs:`0 1px 2px 0 rgba(0, 0, 0, 0.05)`,shadowSm:`0 2px 8px -1px rgba(0, 0, 0, 0.06)`,shadowMd:`0 4px 16px -2px rgba(0, 0, 0, 0.08)`,shadowLg:`0 12px 28px -4px rgba(0, 0, 0, 0.12)`,shadowXl:`0 20px 48px -6px rgba(0, 0, 0, 0.16)`}},G={colors:{colorPrimary:`#0071e3`,colorPrimaryHover:`#0077ed`,colorSecondary:`#5856d6`,colorBackground:`#f5f5f7`,colorBackgroundAlt:`#fbfbfd`,colorSurface:`#ffffff`,colorSurfaceSecondary:`#f4f4f6`,colorSurfaceTertiary:`#e5e5ea`,colorText:`#1d1d1f`,colorTextSecondary:`#86868b`,colorTextTertiary:`#a1a1a6`,colorTextInverse:`#ffffff`,colorBorder:`#e5e5ea`,colorBorderSecondary:`#d1d1d6`,colorFocusRing:`#0071e3`,colorSuccess:`#34c759`,colorWarning:`#ff9500`,colorError:`#ff3b30`,colorInfo:`#0071e3`},spacing:{spacingInline:8,spacingStack:16,spacingCard:24,spacingSection:48,spacingContainer:80},radius:{radiusControl:10,radiusCard:16,radiusModal:20,radiusBadge:9999}},K={button:{primaryBackground:`#0071e3`,primaryHover:`#0077ed`,primaryText:`#ffffff`,secondaryBackground:`#f4f4f6`,secondaryHover:`#e5e5ea`,secondaryText:`#1d1d1f`,borderRadius:10,paddingX:18,paddingY:10,fontSize:14,fontWeight:`600`},card:{background:`#ffffff`,border:`#e5e5ea`,borderRadius:16,padding:24,shadow:`0 4px 16px -2px rgba(0, 0, 0, 0.08)`},input:{background:`#fbfbfd`,backgroundFocus:`#ffffff`,border:`#e5e5ea`,borderFocus:`#0071e3`,text:`#1d1d1f`,placeholder:`#86868b`,borderRadius:10,height:40,fontSize:13},navbar:{background:`rgba(255, 255, 255, 0.85)`,border:`#e5e5ea`,text:`#1d1d1f`,height:60,backdropBlur:16}},q={colors:{colorPrimary:`#0a84ff`,colorPrimaryHover:`#409cff`,colorSecondary:`#5e5ce6`,colorBackground:`#000000`,colorBackgroundAlt:`#121214`,colorSurface:`#1c1c1e`,colorSurfaceSecondary:`#2c2c2e`,colorSurfaceTertiary:`#3a3a3c`,colorText:`#ffffff`,colorTextSecondary:`#8e8e93`,colorTextTertiary:`#636366`,colorTextInverse:`#000000`,colorBorder:`#38383a`,colorBorderSecondary:`#48484a`,colorFocusRing:`#0a84ff`,colorSuccess:`#30d158`,colorWarning:`#ffd60a`,colorError:`#ff453a`,colorInfo:`#64d2ff`},spacing:{spacingInline:8,spacingStack:16,spacingCard:24,spacingSection:48,spacingContainer:80},radius:{radiusControl:10,radiusCard:16,radiusModal:20,radiusBadge:9999}},J={button:{primaryBackground:`#0a84ff`,primaryHover:`#409cff`,primaryText:`#ffffff`,secondaryBackground:`#2c2c2e`,secondaryHover:`#3a3a3c`,secondaryText:`#ffffff`,borderRadius:10,paddingX:18,paddingY:10,fontSize:14,fontWeight:`600`},card:{background:`#1c1c1e`,border:`#38383a`,borderRadius:16,padding:24,shadow:`0 8px 24px -2px rgba(0, 0, 0, 0.45)`},input:{background:`#1c1c1e`,backgroundFocus:`#2c2c2e`,border:`#38383a`,borderFocus:`#0a84ff`,text:`#ffffff`,placeholder:`#8e8e93`,borderRadius:10,height:40,fontSize:13},navbar:{background:`rgba(28, 28, 30, 0.85)`,border:`#38383a`,text:`#ffffff`,height:60,backdropBlur:16}},Y={colors:{...G.colors,primary:`#0071e3`,secondary:`#5856d6`,background:`#f5f5f7`,surface:`#ffffff`,surfaceSecondary:`#f4f4f6`,text:`#1d1d1f`,textSecondary:`#86868b`,border:`#e5e5ea`,success:`#34c759`,warning:`#ff9500`,error:`#ff3b30`,info:`#0071e3`},typography:{display:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:48,fontWeight:`700`,lineHeight:1.15,letterSpacing:`-0.03em`},heading1:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:32,fontWeight:`700`,lineHeight:1.2,letterSpacing:`-0.025em`},heading2:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:24,fontWeight:`600`,lineHeight:1.3,letterSpacing:`-0.02em`},heading3:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:18,fontWeight:`600`,lineHeight:1.4,letterSpacing:`-0.015em`},body:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:14,fontWeight:`400`,lineHeight:1.5,letterSpacing:`-0.01em`},bodySmall:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:12,fontWeight:`400`,lineHeight:1.5,letterSpacing:`0`},caption:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:11,fontWeight:`500`,lineHeight:1.4,letterSpacing:`0.01em`},label:{fontFamily:`Inter, -apple-system, sans-serif`,fontSize:12,fontWeight:`600`,lineHeight:1.4,letterSpacing:`0.02em`}},radius:{none:0,small:6,medium:12,large:18,pill:999},shadows:{none:`none`,small:`0 1px 2px 0 rgba(0, 0, 0, 0.05)`,medium:`0 4px 12px -2px rgba(0, 0, 0, 0.08)`,large:`0 12px 24px -4px rgba(0, 0, 0, 0.12)`},spacing:{xs:4,sm:8,md:16,lg:24,xl:32,"2xl":48},primitives:W,semantic:G,components:K,mode:`light`,activeThemeId:`apple_system`};function X(e,t){let n=t===`dark`,r=n?q:G,i=n?J:K;return{...e,mode:t,colors:{...e.colors,...r.colors,primary:n?`#0a84ff`:`#0071e3`,background:r.colors.colorBackground,surface:r.colors.colorSurface,surfaceSecondary:r.colors.colorSurfaceSecondary,text:r.colors.colorText,textSecondary:r.colors.colorTextSecondary,border:r.colors.colorBorder},semantic:r,components:i}}function Z(e,t,n){let r=e.semantic||G,i={...r.colors,[t]:n},a={...e.components||K};return t===`colorPrimary`&&(a.button={...a.button,primaryBackground:n},a.input={...a.input,borderFocus:n}),{...e,colors:{...e.colors,[t===`colorPrimary`?`primary`:t===`colorBackground`?`background`:t===`colorSurface`?`surface`:t===`colorText`?`text`:t]:n},semantic:{...r,colors:i},components:a}}var Q=[{id:`minimal`,name:`Apple Minimal`,description:`Clean light neutrals with iconic Cupertino blue accents and crisp typography.`,tokens:Y},{id:`modern`,name:`Modern Indigo`,description:`Vibrant indigo accents, Plus Jakarta Sans, and rounded-2xl cards.`,tokens:{...Y,colors:{...Y.colors,primary:`#4f46e5`,secondary:`#06b6d4`,background:`#f8fafc`,surface:`#ffffff`,border:`#e2e8f0`,text:`#0f172a`},semantic:{...G,colors:{...G.colors,colorPrimary:`#4f46e5`,colorSecondary:`#06b6d4`,colorBackground:`#f8fafc`,colorSurface:`#ffffff`,colorBorder:`#e2e8f0`,colorText:`#0f172a`}},components:{...K,button:{...K.button,primaryBackground:`#4f46e5`,borderRadius:14}}}},{id:`dark`,name:`OLED Dark Studio`,description:`Deep OLED space gray, frosted translucent surfaces, and electric cyan.`,tokens:X(Y,`dark`)},{id:`emerald`,name:`Emerald Green`,description:`Fresh organic greens, sustainable earthy neutrals, and warm cards.`,tokens:{...Y,colors:{...Y.colors,primary:`#059669`,secondary:`#10b981`,background:`#f0fdf4`,surface:`#ffffff`,border:`#dcfce7`,text:`#064e3b`},semantic:{...G,colors:{...G.colors,colorPrimary:`#059669`,colorSecondary:`#10b981`,colorBackground:`#f0fdf4`,colorSurface:`#ffffff`,colorBorder:`#dcfce7`,colorText:`#064e3b`}},components:{...K,button:{...K.button,primaryBackground:`#059669`,borderRadius:10}}}},{id:`cyberpunk`,name:`Cyberpunk Neon`,description:`Electric violet, hot pink accents, deep obsidian background.`,tokens:{...X(Y,`dark`),colors:{...X(Y,`dark`).colors,primary:`#ec4899`,secondary:`#a855f7`,background:`#09090b`,surface:`#18181b`,border:`#27272a`,text:`#fafafa`},semantic:{...q,colors:{...q.colors,colorPrimary:`#ec4899`,colorSecondary:`#a855f7`,colorBackground:`#09090b`,colorSurface:`#18181b`,colorBorder:`#27272a`,colorText:`#fafafa`}},components:{...J,button:{...J.button,primaryBackground:`#ec4899`,borderRadius:8}}}}];export{b as _,U as a,F as c,P as d,V as f,w as g,T as h,Z as i,I as l,S as m,Q as n,R as o,L as p,X as r,z as s,Y as t,B as u};
@@ -29,4 +29,4 @@ Total Duration: ${c-l}ms`),J.resolve({didRun:!0,sequenceNumbersCollected:r,targe
29
29
  `+e.join(`
30
30
  `)+`
31
31
  )`}copy(t,n){let r=new e;return r.comparator=this.comparator,r.keyedMap=t,r.sortedSet=n,r}},Jm=class{constructor(){this.mu=new z(U.comparator)}track(e){let t=e.doc.key,n=this.mu.get(t);n?e.type!==0&&n.type===3?this.mu=this.mu.insert(t,e):e.type===3&&n.type!==1?this.mu=this.mu.insert(t,{type:n.type,doc:e.doc}):e.type===2&&n.type===2?this.mu=this.mu.insert(t,{type:2,doc:e.doc}):e.type===2&&n.type===0?this.mu=this.mu.insert(t,{type:0,doc:e.doc}):e.type===1&&n.type===0?this.mu=this.mu.remove(t):e.type===1&&n.type===2?this.mu=this.mu.insert(t,{type:1,doc:n.doc}):e.type===0&&n.type===1?this.mu=this.mu.insert(t,{type:2,doc:e.doc}):F(63341,{ye:e,pu:n}):this.mu=this.mu.insert(t,e)}gu(){let e=[];return this.mu.inorderTraversal(((t,n)=>{e.push(n)})),e}},Ym=class e{constructor(e,t,n,r,i,a,o,s,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=r,this.mutatedKeys=i,this.fromCache=a,this.syncStateChanged=o,this.excludesMetadataChanges=s,this.hasCachedResults=c}static fromInitialDocuments(t,n,r,i,a){let o=[];return n.forEach((e=>{o.push({type:0,doc:e})})),new e(t,n,qm.emptySet(n),o,r,i,!0,!1,a)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&ip(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;let t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let e=0;e<t.length;e++)if(t[e].type!==n[e].type||!t[e].doc.isEqual(n[e].doc))return!1;return!0}},Xm=class{constructor(){this.yu=void 0,this.wu=[]}bu(){return this.wu.some((e=>e.Su()))}},Zm=class{constructor(){this.queries=Qm(),this.onlineState=`Unknown`,this.vu=new Set}terminate(){(function(e,t){let n=L(e),r=n.queries;n.queries=Qm(),r.forEach(((e,n)=>{for(let e of n.wu)e.onError(t)}))})(this,new V(B.ABORTED,`Firestore shutting down`))}};function Qm(){return new Ts((e=>rp(e)),ip)}async function $m(e,t){let n=L(e),r=3,i=t.query,a=n.queries.get(i);a?!a.bu()&&t.Su()&&(r=2):(a=new Xm,r=+!t.Su());try{switch(r){case 0:a.yu=await n.onListen(i,!0);break;case 1:a.yu=await n.onListen(i,!1);break;case 2:await n.onFirstRemoteStoreListen(i)}}catch(e){let n=Um(e,`Initialization of query '${tp(t.query)?$f(t.query):_s(t.query)}' failed`);t.onError(n);return}n.queries.set(i,a),a.wu.push(t),t.Du(n.onlineState),a.yu&&t.xu(a.yu)&&rh(n)}async function eh(e,t){let n=L(e),r=t.query,i=3,a=n.queries.get(r);if(a){let e=a.wu.indexOf(t);e>=0&&(a.wu.splice(e,1),a.wu.length===0?i=+!t.Su():!a.bu()&&t.Su()&&(i=2))}switch(i){case 0:return n.queries.delete(r),n.onUnlisten(r,!0);case 1:return n.queries.delete(r),n.onUnlisten(r,!1);case 2:return n.onLastRemoteStoreUnlisten(r);default:return}}function th(e,t){let n=L(e),r=!1;for(let e of t){let t=e.query,i=n.queries.get(t);if(i){for(let t of i.wu)t.xu(e)&&(r=!0);i.yu=e}}r&&rh(n)}function nh(e,t,n){let r=L(e),i=r.queries.get(t);if(i)for(let e of i.wu)e.onError(n);r.queries.delete(t)}function rh(e){e.vu.forEach((e=>{e.next()}))}var ih;(function(e){e.Default=`default`,e.Cache=`cache`})(ih||={});var ah=class{constructor(e,t,n){this.query=e,this.Cu=t,this.Fu=!1,this.Ou=null,this.onlineState=`Unknown`,this.options=n||{}}xu(e){if(!this.options.includeMetadataChanges){let t=[];for(let n of e.docChanges)n.type!==3&&t.push(n);e=new Ym(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Fu?this.Mu(e)&&(this.Cu.next(e),t=!0):this.Nu(e,this.onlineState)&&(this.Lu(e),t=!0),this.Ou=e,t}onError(e){this.Cu.error(e)}Du(e){this.onlineState=e;let t=!1;return this.Ou&&!this.Fu&&this.Nu(this.Ou,e)&&(this.Lu(this.Ou),t=!0),t}Nu(e,t){if(!e.fromCache||!this.Su())return!0;let n=t!==`Offline`;return(!this.options.waitForSyncWhenOnline||!n)&&(!e.docs.isEmpty()||e.hasCachedResults||t===`Offline`)}Mu(e){if(e.docChanges.length>0)return!0;let t=this.Ou&&this.Ou.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}Lu(e){e=Ym.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Fu=!0,this.Cu.next(e)}Su(){return this.options.source!==ih.Cache}},oh=class{constructor(e){this.key=e}},sh=class{constructor(e){this.key=e}},ch=class{constructor(e,t){this.query=e,this.Gu=t,this.zu=null,this.hasCachedResults=!1,this.current=!1,this.ju=q(),this.mutatedKeys=q(),this.Hu=tp(e)?Ep(e):ys(e),this.Ju=new qm(this.Hu)}get Yu(){return this.Gu}Zu(e,t){let n=t?t.Xu:new Jm,r=t?t.Ju:this.Ju,i=t?t.mutatedKeys:this.mutatedKeys,a=r,o=!1,[s,c]=this.ec(this.query,r);e.inorderTraversal(((e,t)=>{let l=r.get(e),u=wp(this.query,t)?t:null,d=!!l&&this.mutatedKeys.has(l.key),f=!!u&&(u.hasLocalMutations||this.mutatedKeys.has(u.key)&&u.hasCommittedMutations),p=!1;l&&u?l.data.isEqual(u.data)?d!==f&&(n.track({type:3,doc:u}),p=!0):this.tc(l,u)||(n.track({type:2,doc:u}),p=!0,(s&&this.Hu(u,s)>0||c&&this.Hu(u,c)<0)&&(o=!0)):!l&&u?(n.track({type:0,doc:u}),p=!0):l&&!u&&(n.track({type:1,doc:l}),p=!0,(s||c)&&(o=!0)),p&&(u?(a=a.add(u),i=f?i.add(e):i.delete(e)):(a=a.delete(e),i=i.delete(e)))}));let l=this.nc(this.query);if(l){if(tp(this.query)){let e=[];a.forEach((t=>e.push(t)));let t=Sp(this.query,e),r=new qm(Ep(this.query));for(let e of t)r=r.add(e);a.forEach((e=>{r.has(e.key)||(i=i.delete(e.key),n.track({type:1,doc:e}))})),a=r}else{let e=this.rc(this.query);for(;a.size>l;){let t=e===`F`?a.last():a.first();a=a.delete(t.key),i=i.delete(t.key),n.track({type:1,doc:t})}}}return{Ju:a,Xu:n,Fo:o,mutatedKeys:i}}nc(e){return tp(e)?Dp(e)?.limit:e.limit||void 0}rc(e){if(tp(e)){let t=Dp(e);return t&&t.limit<0?`L`:`F`}return e.limitType}ec(e,t){if(tp(e)){let n=Dp(e)?.limit;return[t.size===n?t.last():null,null]}return[e.limitType===`F`&&t.size===this.nc(this.query)?t.last():null,e.limitType===`L`&&t.size===this.nc(this.query)?t.first():null]}tc(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n,r){let i=this.Ju;this.Ju=e.Ju,this.mutatedKeys=e.mutatedKeys;let a=e.Xu.gu();a.sort(((e,t)=>function(e,t){let n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return F(20277,{ye:e})}};return n(e)-n(t)}(e.type,t.type)||this.Hu(e.doc,t.doc))),this.sc(n),r??=!1;let o=t&&!r?this._c():[],s=this.ju.size===0&&this.current&&!r?1:0,c=s!==this.zu;return this.zu=s,a.length!==0||c?{snapshot:new Ym(this.query,e.Ju,i,a,e.mutatedKeys,s===0,c,!1,!!n&&n.resumeToken.approximateByteSize()>0),oc:o}:{oc:o}}Du(e){return this.current&&e===`Offline`?(this.current=!1,this.applyChanges({Ju:this.Ju,Xu:new Jm,mutatedKeys:this.mutatedKeys,Fo:!1},!1)):{oc:[]}}ac(e){return!this.Gu.has(e)&&!!this.Ju.has(e)&&!this.Ju.get(e).hasLocalMutations}sc(e){e&&(e.addedDocuments.forEach((e=>this.Gu=this.Gu.add(e))),e.modifiedDocuments.forEach((e=>{})),e.removedDocuments.forEach((e=>this.Gu=this.Gu.delete(e))),this.current=e.current)}_c(){if(!this.current)return[];let e=this.ju;this.ju=q(),this.Ju.forEach((e=>{this.ac(e.key)&&(this.ju=this.ju.add(e.key))}));let t=[];return e.forEach((e=>{this.ju.has(e)||t.push(new sh(e))})),this.ju.forEach((n=>{e.has(n)||t.push(new oh(n))})),t}uc(e){this.Gu=e.Qo,this.ju=q();let t=this.Zu(e.documents);return this.applyChanges(t,!0)}cc(){return Ym.fromInitialDocuments(this.query,this.Ju,this.mutatedKeys,this.zu===0,this.hasCachedResults)}},lh=`SyncEngine`,uh=class{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}},dh=class{constructor(e){this.key=e,this.lc=!1}},fh=class{constructor(e,t,n,r,i,a){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=r,this.currentUser=i,this.maxConcurrentLimboResolutions=a,this.Ec={},this.hc=new Ts((e=>rp(e)),ip),this.Tc=new Map,this.Pc=new Set,this.Rc=new z(U.comparator),this.Ic=new Map,this.Ac=new Pp,this.Vc={},this.dc=new Map,this.fc=xp.ws(),this.onlineState=`Unknown`,this.mc=void 0}get isPrimaryClient(){return!0===this.mc}};async function ph(e,t,n=!0){let r=Fh(e),i,a=r.hc.get(t);return a?(r.sharedClientState.addLocalQueryTarget(a.targetId),i=a.view.cc()):i=await hh(r,t,n,!0),i}async function mh(e,t){await hh(Fh(e),t,!0,!1)}async function hh(e,t,n,r){let i=await im(e.localStore,tp(t)?t:fs(t)),a=i.targetId,o=e.sharedClientState.addLocalQueryTarget(a,n),s;return r&&(s=await gh(e,t,a,o===`current`,i.resumeToken)),e.isPrimaryClient&&n&&mm(e.remoteStore,i),s}async function gh(e,t,n,r,i){e.gc=(t,n,r)=>async function(e,t,n,r){let i=t.view.Zu(n);i.Fo&&(i=await om(e.localStore,t.query,!1).then((({documents:e})=>t.view.Zu(e,i))));let a=r&&r.targetChanges.get(t.targetId),o=r&&r.targetMismatches.get(t.targetId)!=null,s=t.view.applyChanges(i,e.isPrimaryClient,a,o);return kh(e,t.targetId,s.oc),s.snapshot}(e,t,n,r);let a=await om(e.localStore,t,!0),o=new ch(t,a.Qo),s=o.Zu(a.documents),c=Ks.createSynthesizedTargetChangeForCurrentChange(n,r&&e.onlineState!==`Offline`,i),l=o.applyChanges(s,e.isPrimaryClient,c);kh(e,n,l.oc);let u=new uh(t,n,o);return e.hc.set(t,u),e.Tc.has(n)?e.Tc.get(n).push(t):e.Tc.set(n,[t]),l.snapshot}async function _h(e,t,n){let r=L(e),i=r.hc.get(t),a=r.Tc.get(i.targetId);if(a.length>1)return r.Tc.set(i.targetId,a.filter((e=>!ip(e,t)))),void r.hc.delete(t);r.isPrimaryClient?(r.sharedClientState.removeLocalQueryTarget(i.targetId),r.sharedClientState.isActiveQueryTarget(i.targetId)||await am(r.localStore,i.targetId,!1).then((()=>{r.sharedClientState.clearQueryState(i.targetId),n&&hm(r.remoteStore,i.targetId),Dh(r,i.targetId)})).catch(Pl)):(Dh(r,i.targetId),await am(r.localStore,i.targetId,!0))}async function vh(e,t){let n=L(e),r=n.hc.get(t),i=n.Tc.get(r.targetId);n.isPrimaryClient&&i.length===1&&(n.sharedClientState.removeLocalQueryTarget(r.targetId),hm(n.remoteStore,r.targetId))}async function yh(e,t,n){let r=Ih(e);try{let e=await function(e,t){let n=L(e),r=Ui.now(),i=t.reduce(((e,t)=>e.add(t.key)),q()),a,o;return n.persistence.runTransaction(`Locally write mutations`,`readwrite`,(e=>{let s=Ds(),c=q();return n.Uo.getEntries(e,i).next((e=>{s=e,s.forEach(((e,t)=>{t.isValidDocument()||(c=c.add(e))}))})).next((()=>n.localDocuments.getOverlayedDocuments(e,s))).next((i=>{a=i;let o=[];for(let e of t){let t=go(e,a.get(e.key).overlayedDocument);t!=null&&o.push(new yo(e.key,t,Va(t.value.mapValue),lo.exists(!0)))}return n.mutationQueue.addMutationBatch(e,r,o,t)})).next((t=>{o=t;let r=t.applyToLocalDocumentSet(a,c);return n.documentOverlayCache.saveOverlays(e,t.batchId,r)}))})).then((()=>({batchId:o.batchId,changes:As(a)})))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.Vc[e.currentUser.toKey()];r||=new z(R),r=r.insert(t,n),e.Vc[e.currentUser.toKey()]=r}(r,e.batchId,n),await Mh(r,e.changes),await Om(r.remoteStore)}catch(e){let t=Um(e,`Failed to persist write`);n.reject(t)}}async function bh(e,t){let n=L(e);try{let e=await tm(n.localStore,t);t.targetChanges.forEach(((e,t)=>{let r=n.Ic.get(t);r&&(I(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1,22616),e.addedDocuments.size>0?r.lc=!0:e.modifiedDocuments.size>0?I(r.lc,14607):e.removedDocuments.size>0&&(I(r.lc,42227),r.lc=!1))})),await Mh(n,e,t)}catch(e){await Pl(e)}}function xh(e,t,n){let r=L(e);if(r.isPrimaryClient&&n===0||!r.isPrimaryClient&&n===1){let e=[];r.hc.forEach(((n,r)=>{let i=r.view.Du(t);i.snapshot&&e.push(i.snapshot)})),function(e,t){let n=L(e);n.onlineState=t;let r=!1;n.queries.forEach(((e,n)=>{for(let e of n.wu)e.Du(t)&&(r=!0)})),r&&rh(n)}(r.eventManager,t),e.length&&r.Ec.hn(e),r.onlineState=t,r.isPrimaryClient&&r.sharedClientState.setOnlineState(t)}}async function Sh(e,t,n){let r=L(e);r.sharedClientState.updateQueryState(t,`rejected`,n);let i=r.Ic.get(t),a=i&&i.key;if(a){let e=new z(U.comparator);e=e.insert(a,qo.newNoDocument(a,G.min()));let n=q().add(a);await bh(r,new Gs(G.min(),new Map,new z(R),e,Ds(),n)),r.Rc=r.Rc.remove(a),r.Ic.delete(t),jh(r)}else await am(r.localStore,t,!1).then((()=>Dh(r,t,n))).catch(Pl)}async function Ch(e,t){let n=L(e),r=t.batch.batchId;try{let e=await $p(n.localStore,t);Eh(n,r,null),Th(n,r),n.sharedClientState.updateMutationState(r,`acknowledged`),await Mh(n,e)}catch(e){await Pl(e)}}async function wh(e,t,n){let r=L(e);try{let e=await function(e,t){let n=L(e);return n.persistence.runTransaction(`Reject batch`,`readwrite-primary`,(e=>{let r;return n.mutationQueue.lookupMutationBatch(e,t).next((t=>(I(t!==null,37113),r=t.keys(),n.mutationQueue.removeMutationBatch(e,t)))).next((()=>n.mutationQueue.performConsistencyCheck(e))).next((()=>n.documentOverlayCache.removeOverlaysForBatchId(e,r,t))).next((()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,r))).next((()=>n.localDocuments.getDocuments(e,r)))}))}(r.localStore,t);Eh(r,t,n),Th(r,t),r.sharedClientState.updateMutationState(t,`rejected`,n),await Mh(r,e)}catch(e){await Pl(e)}}function Th(e,t){(e.dc.get(t)||[]).forEach((e=>{e.resolve()})),e.dc.delete(t)}function Eh(e,t,n){let r=L(e),i=r.Vc[r.currentUser.toKey()];if(i){let e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.Vc[r.currentUser.toKey()]=i}}function Dh(e,t,n=null){e.sharedClientState.removeLocalQueryTarget(t);for(let r of e.Tc.get(t))e.hc.delete(r),n&&e.Ec.yc(r,n);e.Tc.delete(t),e.isPrimaryClient&&e.Ac.Xs(t).forEach((t=>{e.Ac.containsKey(t)||Oh(e,t)}))}function Oh(e,t){e.Pc.delete(t.path.canonicalString());let n=e.Rc.get(t);n!==null&&(hm(e.remoteStore,n),e.Rc=e.Rc.remove(t),e.Ic.delete(n),jh(e))}function kh(e,t,n){for(let r of n)r instanceof oh?(e.Ac.addReference(r.key,t),Ah(e,r)):r instanceof sh?(P(lh,`Document no longer in limbo: `+r.key),e.Ac.removeReference(r.key,t),e.Ac.containsKey(r.key)||Oh(e,r.key)):F(19791,{wc:r})}function Ah(e,t){let n=t.key,r=n.path.canonicalString();e.Rc.get(n)||e.Pc.has(r)||(P(lh,`New document in limbo: `+n),e.Pc.add(r),jh(e))}function jh(e){for(;e.Pc.size>0&&e.Rc.size<e.maxConcurrentLimboResolutions;){let t=e.Pc.values().next().value;e.Pc.delete(t);let n=new U(H.fromString(t)),r=e.fc.next();e.Ic.set(r,new dh(n)),e.Rc=e.Rc.insert(n,r),mm(e.remoteStore,new hp(fs(ss(n.path)),r,`TargetPurposeLimboResolution`,jl.yn))}}async function Mh(e,t,n){let r=L(e),i=[],a=[],o=[];r.hc.isEmpty()||(r.hc.forEach(((e,s)=>{o.push(r.gc(s,t,n).then((e=>{if((e||n)&&r.isPrimaryClient){let t=e?!e.fromCache:n?.targetChanges.get(s.targetId)?.current;r.sharedClientState.updateQueryState(s.targetId,t?`current`:`not-current`)}if(e){i.push(e);let t=Wp.fo(s.targetId,e);a.push(t)}})))})),await Promise.all(o),r.Ec.hn(i),await async function(e,t){let n=L(e);try{await n.persistence.runTransaction(`notifyLocalViewChanges`,`readwrite`,(e=>J.forEach(t,(t=>J.forEach(t.Ao,(r=>n.persistence.referenceDelegate.addReference(e,t.targetId,r))).next((()=>J.forEach(t.Vo,(r=>n.persistence.referenceDelegate.removeReference(e,t.targetId,r)))))))))}catch(e){if(!Il(e))throw e;P(Jp,`Failed to update sequence numbers: `+e)}for(let e of t){let t=e.targetId;if(!e.fromCache){let e=n.No.get(t),r=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(r);n.No=n.No.insert(t,i)}}}(r.localStore,a))}async function Nh(e,t){let n=L(e);if(!n.currentUser.isEqual(t)){P(lh,`User change. New user:`,t.toKey());let e=await Qp(n.localStore,t);n.currentUser=t,function(e,t){e.dc.forEach((e=>{e.forEach((e=>{e.reject(new V(B.CANCELLED,t))}))})),e.dc.clear()}(n,`'waitForPendingWrites' promise is rejected due to a user change.`),n.sharedClientState.handleUserChange(t,e.removedBatchIds,e.addedBatchIds),await Mh(n,e.qo)}}function Ph(e,t){let n=L(e),r=n.Ic.get(t);if(r&&r.lc)return q().add(r.key);{let e=q(),r=n.Tc.get(t);if(!r)return e;for(let t of r??[]){let r=n.hc.get(t);e=e.unionWith(r.view.Yu)}return e}}function Fh(e){let t=L(e);return t.remoteStore.remoteSyncer.applyRemoteEvent=bh.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=Ph.bind(null,t),t.remoteStore.remoteSyncer.rejectListen=Sh.bind(null,t),t.Ec.hn=th.bind(null,t.eventManager),t.Ec.yc=nh.bind(null,t.eventManager),t}function Ih(e){let t=L(e);return t.remoteStore.remoteSyncer.applySuccessfulWrite=Ch.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=wh.bind(null,t),t}var Lh=class{constructor(){this.kind=`memory`,this.synchronizeTabs=!1}async initialize(e){this.serializer=Vc(e.databaseInfo.databaseId),this.sharedClientState=this.Sc(e),this.persistence=this.vc(e),await this.persistence.start(),this.localStore=this.Dc(e),this.gcScheduler=this.xc(e,this.localStore),this.indexBackfillerScheduler=this.Cc(e,this.localStore)}xc(e,t){return null}Cc(e,t){return null}Dc(e){return Zp(this.persistence,new qp,e.initialUser,this.serializer)}vc(e){return new Bp(Hp.w_,this.serializer)}Sc(e){return new Gm}async terminate(){this.gcScheduler?.stop(),this.indexBackfillerScheduler?.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}};Lh.provider={build:()=>new Lh};var Rh=class extends Lh{constructor(e){super(),this.cacheSizeBytes=e}xc(e,t){I(this.persistence.referenceDelegate instanceof Up,46915);let n=this.persistence.referenceDelegate.garbageCollector;return new Vl(n,e.asyncQueue,t)}vc(e){let t=this.cacheSizeBytes===void 0?Al.DEFAULT:Al.withCacheSize(this.cacheSizeBytes);return new Bp((e=>Up.w_(e,t)),this.serializer)}},zh=class{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=e=>xh(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=Nh.bind(null,this.syncEngine),await Rm(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return function(){return new Zm}()}createDatastore(e){let t=Vc(e.databaseInfo.databaseId),n=gl(e.databaseInfo);return wl(e.authCredentials,e.appCheckCredentials,n,t)}createRemoteStore(e){return function(e,t,n,r,i){return new um(e,t,n,r,i)}(this.localStore,this.datastore,e.asyncQueue,(e=>xh(this.syncEngine,e,0)),function(){return ol.Je()?new ol:new il}())}createSyncEngine(e,t){return function(e,t,n,r,i,a,o){let s=new fh(e,t,n,r,i,a);return o&&(s.mc=!0),s}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){await async function(e){let t=L(e);P(lm,`RemoteStore shutting down.`),t.ca.add(5),await fm(t),t.Ea.shutdown(),t.ha.set(`Unknown`)}(this.remoteStore),this.datastore?.terminate(),this.eventManager?.terminate()}};zh.provider={build:()=>new zh};var Bh=`FirestoreClient`,Vh=class{constructor(e,t,n,r,i){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this._databaseInfo=r,this.user=qc.UNAUTHENTICATED,this.clientId=pi.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=i,this.authCredentials.start(n,(async e=>{P(Bh,`Received user=`,e.uid),await this.authCredentialListener(e),this.user=e})),this.appCheckCredentials.start(n,(e=>(P(Bh,`Received new app check token=`,e),this.appCheckCredentialListener(e,this.user))))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this._databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}terminate(){this.asyncQueue.enterRestrictedMode();let e=new Jc;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(t){let n=Um(t,`Failed to shutdown persistence`);e.reject(n)}})),e.promise}};async function Hh(e,t){e.asyncQueue.verifyOperationInProgress(),P(Bh,`Initializing OfflineComponentProvider`);let n=e.configuration;await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener((async e=>{r.isEqual(e)||(await Qp(t.localStore,e),r=e)})),t.persistence.setDatabaseDeletedListener((()=>e.terminate())),e._offlineComponents=t}async function Uh(e,t){e.asyncQueue.verifyOperationInProgress();let n=await Wh(e);P(Bh,`Initializing OnlineComponentProvider`),await t.initialize(n,e.configuration),e.setCredentialChangeListener((e=>Lm(t.remoteStore,e))),e.setAppCheckTokenChangeListener(((e,n)=>Lm(t.remoteStore,n))),e._onlineComponents=t}async function Wh(e){if(!e._offlineComponents){if(e._uninitializedComponentsProvider){P(Bh,`Using user provided OfflineComponentProvider`);try{await Hh(e,e._uninitializedComponentsProvider._offline)}catch(t){let n=t;if(!function(e){return e.name===`FirebaseError`?e.code===B.FAILED_PRECONDITION||e.code===B.UNIMPLEMENTED:!(typeof DOMException<`u`&&e instanceof DOMException)||e.code===22||e.code===20||e.code===11}(n))throw n;li(`Error using user provided cache. Falling back to memory cache: `+n),await Hh(e,new Lh)}}else P(Bh,`Using default OfflineComponentProvider`),await Hh(e,new Rh(void 0))}return e._offlineComponents}async function Gh(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(P(Bh,`Using user provided OnlineComponentProvider`),await Uh(e,e._uninitializedComponentsProvider._online)):(P(Bh,`Using default OnlineComponentProvider`),await Uh(e,new zh))),e._onlineComponents}function Kh(e){return Gh(e).then((e=>e.syncEngine))}async function qh(e){let t=await Gh(e),n=t.eventManager;return n.onListen=ph.bind(null,t.syncEngine),n.onUnlisten=_h.bind(null,t.syncEngine),n.onFirstRemoteStoreListen=mh.bind(null,t.syncEngine),n.onLastRemoteStoreUnlisten=vh.bind(null,t.syncEngine),n}function Jh(e,t,n={}){let r=new Jc;return e.asyncQueue.enqueueAndForget((async()=>function(e,t,n,r,i){let a=new Vm({next:s=>{a.Aa(),t.enqueueAndForget((()=>eh(e,o)));let c=s.docs.has(n);!c&&s.fromCache?i.reject(new V(B.UNAVAILABLE,`Failed to get document because the client is offline.`)):c&&s.fromCache&&r&&r.source===`server`?i.reject(new V(B.UNAVAILABLE,`Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)`)):i.resolve(s)},error:e=>i.reject(e)}),o=new ah(ss(n.path),a,{includeMetadataChanges:!0,waitForSyncWhenOnline:!0});return $m(e,o)}(await qh(e),e.asyncQueue,t,n,r))),r.promise}function Yh(e,t,n={}){let r=new Jc;return e.asyncQueue.enqueueAndForget((async()=>function(e,t,n,r,i){let a=new Vm({next:n=>{a.Aa(),t.enqueueAndForget((()=>eh(e,o))),n.fromCache&&r.source===`server`?i.reject(new V(B.UNAVAILABLE,`Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)`)):i.resolve(n)},error:e=>i.reject(e)}),o=new ah(n instanceof ad?sp(n):n,a,{includeMetadataChanges:!0,waitForSyncWhenOnline:!0});return $m(e,o)}(await qh(e),e.asyncQueue,t,n,r))),r.promise}function Xh(e,t){let n=new Jc;return e.asyncQueue.enqueueAndForget((async()=>yh(await Kh(e),t,n))),n.promise}var Zh=class{constructor(e,t,n,r,i){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=r,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new Xl(this._firestore,this._converter,this._key)}exists(){return this._document!==null}data(){if(this._document){if(this._converter){let e=new Qh(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}_fieldsProto(){return this._document?.data.clone().value.mapValue.fields??void 0}get(e){if(this._document){let t=this._document.data.field(pu(`DocumentSnapshot.get`,e));if(t!==null)return this._userDataWriter.convertValue(t)}}},Qh=class extends Zh{data(){return super.data()}},$h=class{convertValue(e,t=`none`){switch(ya(e)){case 0:return null;case 1:return e.booleanValue;case 2:return W(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Ji(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 11:return this.convertObject(e.mapValue,t);case 10:return this.convertVectorValue(e.mapValue);default:throw F(62114,{value:e})}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,t=`none`){let n={};return ki(e,((e,r)=>{n[e]=this.convertValue(r,t)})),n}convertVectorValue(e){let t=e.fields?.[ha].arrayValue?.values?.map((e=>W(e.doubleValue)));return new eu(t)}convertGeoPoint(e){return new Kc(W(e.latitude),W(e.longitude))}convertArray(e,t){return(e.values||[]).map((e=>this.convertValue(e,t)))}convertServerTimestamp(e,t){switch(t){case`previous`:let n=ea(e);return n==null?null:this.convertValue(n,t);case`estimate`:return this.convertTimestamp(ta(e));default:return null}}convertTimestamp(e){let t=qi(e);return new Ui(t.seconds,t.nanos)}convertDocumentKey(e,t){let n=H.fromString(e);I(Lc(n),9688,{name:e});let r=new ia(n.get(1),n.get(3)),i=new U(n.popFirst(5));return r.isEqual(t)||ci(`A document reference to ${i} refers to a different database (${r.projectId}/${r.database}), which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}};function eg(e,t,n){let r;return r=e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t,r}var tg=`AsyncQueue`,ng=class{constructor(e=Promise.resolve()){this.qc=[],this.$c=!1,this.Kc=[],this.Qc=null,this.Wc=!1,this.Gc=!1,this.zc=[],this.jt=new _l(this,`async_queue_retry`),this.jc=()=>{let e=Km();e&&P(tg,`Visibility state changed to `+e.visibilityState),this.jt.qt()},this.Hc=e;let t=Km();t&&typeof t.addEventListener==`function`&&t.addEventListener(`visibilitychange`,this.jc)}get isShuttingDown(){return this.$c}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.Jc(),this.Yc(e)}enterRestrictedMode(e){if(!this.$c){this.$c=!0,this.Gc=e||!1;let t=Km();t&&typeof t.removeEventListener==`function`&&t.removeEventListener(`visibilitychange`,this.jc)}}enqueue(e){if(this.Jc(),this.$c)return new Promise((()=>{}));let t=new Jc;return this.Yc((()=>this.$c&&this.Gc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise))).then((()=>t.promise))}enqueueRetryable(e){this.enqueueAndForget((()=>(this.qc.push(e),this.Zc())))}async Zc(){if(this.qc.length!==0){try{await this.qc[0](),this.qc.shift(),this.jt.reset()}catch(e){if(!Il(e))throw e;P(tg,`Operation failed with retryable error: `+e)}this.qc.length>0&&this.jt.Ut((()=>this.Zc()))}}Yc(e){let t=this.Hc.then((()=>(this.Wc=!0,e().catch((e=>{throw this.Qc=e,this.Wc=!1,ci(`INTERNAL UNHANDLED ERROR: `,rg(e)),e})).then((e=>(this.Wc=!1,e))))));return this.Hc=t,t}enqueueAfterDelay(e,t,n){this.Jc(),this.zc.indexOf(e)>-1&&(t=0);let r=Hm.createAndSchedule(this,e,t,n,(e=>this.Xc(e)));return this.Kc.push(r),r}Jc(){this.Qc&&F(47125,{el:rg(this.Qc)})}verifyOperationInProgress(){}async tl(){let e;do e=this.Hc,await e;while(e!==this.Hc)}nl(e){for(let t of this.Kc)if(t.timerId===e)return!0;return!1}rl(e){return this.tl().then((()=>{this.Kc.sort(((e,t)=>e.targetTimeMs-t.targetTimeMs));for(let t of this.Kc)if(t.skipDelay(),e!==`all`&&t.timerId===e)break;return this.tl()}))}il(e){this.zc.push(e)}Xc(e){let t=this.Kc.indexOf(e);this.Kc.splice(t,1)}};function rg(e){let t=e.message||``;return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+`
32
- `+e.stack),t}var ig=class extends ql{constructor(e,t,n,r){super(e,t,n,r),this.type=`firestore`,this._queue=new ng,this._persistenceKey=r?.name||`[DEFAULT]`}async _terminate(){if(this._firestoreClient){let e=this._firestoreClient.terminate();this._queue=new ng(e),this._firestoreClient=void 0,await e}}};function ag(e,t){let n=typeof e==`object`?e:Qt(),r=typeof e==`string`?e:t||ra,i=qt(n,`firestore`).getImmediate({identifier:r});if(!i._initialized){let e=m(`firestore`);e&&Jl(i,...e)}return i}function og(e){if(e._terminated)throw new V(B.FAILED_PRECONDITION,`The client has already been terminated.`);return e._firestoreClient||sg(e),e._firestoreClient}function sg(e){let t=e._freezeSettings(),n=Dl(e._databaseId,e._app?.options.appId||``,e._persistenceKey,e._app?.options.apiKey,t);e._componentsProvider||t.localCache?._offlineComponentProvider&&t.localCache?._onlineComponentProvider&&(e._componentsProvider={_offline:t.localCache._offlineComponentProvider,_online:t.localCache._onlineComponentProvider}),e._firestoreClient=new Vh(e._authCredentials,e._appCheckCredentials,e._queue,n,e._componentsProvider&&function(e){let t=e?._online.build();return{_offline:e?._offline.build(t),_online:t}}(e._componentsProvider))}var cg=class extends $h{constructor(e){super(),this.firestore=e}convertBytes(e){return new Hc(e)}convertReference(e){let t=this.convertDocumentKey(e,this.firestore._databaseId);return new Xl(this.firestore,null,t)}},lg=class{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}},ug=class e extends Zh{constructor(e,t,n,r,i,a){super(e,t,n,r,a),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){let t=new dg(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){let n=this._document.data.field(pu(`DocumentSnapshot.get`,e));if(n!==null)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}toJSON(){if(this.metadata.hasPendingWrites)throw new V(B.FAILED_PRECONDITION,`DocumentSnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().`);let t=this._document,n={};return n.type=e._jsonSchemaVersion,n.bundle=``,n.bundleSource=`DocumentSnapshot`,n.bundleName=this._key.toString(),!t||!t.isValidDocument()||!t.isFoundDocument()?n:(this._userDataWriter.convertObjectMap(t.data.value.mapValue.fields,`previous`),n.bundle=(this._firestore,this.ref.path,`NOT SUPPORTED`),n)}};ug._jsonSchemaVersion=`firestore/documentSnapshot/1.0`,ug._jsonSchema={type:zi(`string`,ug._jsonSchemaVersion),bundleSource:zi(`string`,`DocumentSnapshot`),bundleName:zi(`string`),bundle:zi(`string`)};var dg=class extends ug{data(e={}){return super.data(e)}},fg=class e{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new lg(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){let e=[];return this.forEach((t=>e.push(t))),e}get size(){return this._snapshot.docs.size}get empty(){return this.size===0}forEach(e,t){this._snapshot.docs.forEach((n=>{e.call(t,new dg(this._firestore,this._userDataWriter,n.key,n,new lg(this._snapshot.mutatedKeys.has(n.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(e={}){let t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new V(B.INVALID_ARGUMENT,`To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().`);return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map((n=>{tp(e._snapshot.query)?Ep(e._snapshot.query):e.query._query;let r=new dg(e._firestore,e._userDataWriter,n.doc.key,n.doc,new lg(e._snapshot.mutatedKeys.has(n.doc.key),e._snapshot.fromCache),e.query.converter);return n.doc,{type:`added`,doc:r,oldIndex:-1,newIndex:t++}}))}{let n=e._snapshot.oldDocs;return e._snapshot.docChanges.filter((e=>t||e.type!==3)).map((t=>{let r=new dg(e._firestore,e._userDataWriter,t.doc.key,t.doc,new lg(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter),i=-1,a=-1;return t.type!==0&&(i=n.indexOf(t.doc.key),n=n.delete(t.doc.key)),t.type!==1&&(n=n.add(t.doc),a=n.indexOf(t.doc.key)),{type:pg(t.type),doc:r,oldIndex:i,newIndex:a}}))}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}toJSON(){if(this.metadata.hasPendingWrites)throw new V(B.FAILED_PRECONDITION,`QuerySnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().`);let t={};t.type=e._jsonSchemaVersion,t.bundleSource=`QuerySnapshot`,t.bundleName=pi.newId(),this._firestore._databaseId.database,this._firestore._databaseId.projectId;let n=[],r=[],i=[];return this.docs.forEach((e=>{e._document!==null&&(n.push(e._document),r.push(this._userDataWriter.convertObjectMap(e._document.data.value.mapValue.fields,`previous`)),i.push(e.ref.path))})),t.bundle=(this._firestore,this.query._query,t.bundleName,`NOT SUPPORTED`),t}};function pg(e){switch(e){case 0:return`added`;case 2:case 3:return`modified`;case 1:return`removed`;default:return F(61501,{type:e})}}fg._jsonSchemaVersion=`firestore/querySnapshot/1.0`,fg._jsonSchema={type:zi(`string`,fg._jsonSchemaVersion),bundleSource:zi(`string`,`QuerySnapshot`),bundleName:zi(`string`),bundle:zi(`string`)};function mg(e){if(e.limitType===`L`&&e.explicitOrderBy.length===0)throw new V(B.UNIMPLEMENTED,`limitToLast() queries require specifying at least one orderBy() clause`)}var hg=class{},gg=class extends hg{};function _g(e,t,...n){let r=[];t instanceof hg&&r.push(t),r=r.concat(n),function(e){let t=e.filter((e=>e instanceof bg)).length,n=e.filter((e=>e instanceof vg)).length;if(t>1||t>0&&n>0)throw new V(B.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(r);for(let t of r)e=t._apply(e);return e}var vg=class e extends gg{constructor(e,t,n){super(),this._field=e,this._op=t,this._value=n,this.type=`where`}static _create(t,n,r){return new e(t,n,r)}_apply(e){let t=this._parse(e);return Cg(e._query,t),new Yl(e.firestore,e.converter,ms(e._query,t))}_parse(e){let t=ou(e.firestore);return function(e,t,n,r,i,a,o){let s;if(i.isKeyField()){if(a===`array-contains`||a===`array-contains-any`)throw new V(B.INVALID_ARGUMENT,`Invalid Query. You can't perform '${a}' queries on documentId().`);if(a===`in`||a===`not-in`){Sg(o,a);let t=[];for(let n of o)t.push(xg(r,e,n));s={arrayValue:{values:t}}}else s=xg(r,e,o)}else a!==`in`&&a!==`not-in`&&a!==`array-contains-any`||Sg(o,a),s=cu(n,t,o,a===`in`||a===`not-in`);return ko.create(i,a,s)}(e._query,`where`,t,e.firestore._databaseId,this._field,this._op,this._value)}};function yg(e,t,n){let r=t,i=pu(`where`,e);return vg._create(i,r,n)}var bg=class e extends hg{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(t,n){return new e(t,n)}_parse(e){let t=this._queryConstraints.map((t=>t._parse(e))).filter((e=>e.getFilters().length>0));return t.length===1?t[0]:Ao.create(t,this._getOperator())}_apply(e){let t=this._parse(e);return t.getFilters().length===0?e:(function(e,t){let n=e,r=t.getFlattenedFilters();for(let e of r)Cg(n,e),n=ms(n,e)}(e._query,t),new Yl(e.firestore,e.converter,ms(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return this.type===`and`?`and`:`or`}};function xg(e,t,n){if(typeof(n=v(n))==`string`){if(n===``)throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.`);if(!us(t)&&n.indexOf(`/`)!==-1)throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);let r=t.path.child(H.fromString(n));if(!U.isDocumentKey(r))throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);return Oa(e,new U(r))}if(n instanceof Xl)return Oa(e,n._key);throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${Li(n)}.`)}function Sg(e,t){if(!Array.isArray(e)||e.length===0)throw new V(B.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function Cg(e,t){let n=function(e,t){for(let n of e)for(let e of n.getFlattenedFilters())if(t.indexOf(e.op)>=0)return e.op;return null}(e.filters,function(e){switch(e){case`!=`:return[`!=`,`not-in`];case`array-contains-any`:case`in`:return[`not-in`];case`not-in`:return[`array-contains-any`,`in`,`not-in`,`!=`];default:return[]}}(t.op));if(n!==null)throw n===t.op?new V(B.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new V(B.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${n.toString()}' filters.`)}function wg(e){e=Ri(e,Xl);let t=Ri(e.firestore,ig);return Jh(og(t),e._key).then((n=>kg(t,e,n)))}function Tg(e){e=Ri(e,Yl);let t=Ri(e.firestore,ig),n=og(t),r=new cg(t);return mg(e._query),Yh(n,e._query).then((n=>new fg(t,r,e,n)))}function Eg(e,t,n){e=Ri(e,Xl);let r=Ri(e.firestore,ig),i=eg(e.converter,t,n);return Og(r,[su(ou(r),`setDoc`,e._key,i,e.converter!==null,n).toMutation(e._key,lo.none())])}function Dg(e){return Og(Ri(e.firestore,ig),[new Co(e._key,lo.none())])}function Og(e,t){return Xh(og(e),t)}function kg(e,t,n){let r=n.docs.get(t._key);return new ug(e,new cg(e),t._key,r,new lg(n.hasPendingWrites,n.fromCache),t.converter)}var Ag=`@firebase/firestore`,jg=`4.17.1`;(function(e,t=!0){ai(Xt),Kt(new De(`firestore`,((e,{instanceIdentifier:n,options:r})=>{let i=e.getProvider(`app`).getImmediate(),a=new ig(new Qc(e.getProvider(`auth-internal`)),new nl(i,e.getProvider(`app-check-internal`)),aa(i,n),i);return r={useFetchStreams:t,...r},a._setSettings(r),a}),`PUBLIC`).setMultipleInstances(!0)),en(Ag,jg,e),en(Ag,jg,`esm2020`)})(),en(`firebase`,`12.18.0`,`app`);function Mg(){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 Ng=Mg,Pg=new pe(`auth`,`Firebase`,Mg()),Fg=new Re(`@firebase/auth`);function Ig(e,...t){Fg.logLevel<=y.WARN&&Fg.warn(`Auth (${Xt}): ${e}`,...t)}function Lg(e,...t){Fg.logLevel<=y.ERROR&&Fg.error(`Auth (${Xt}): ${e}`,...t)}function Rg(e,...t){throw Ug(e,...t)}function zg(e,...t){return Ug(e,...t)}function Bg(e,t,n){return new pe(`auth`,`Firebase`,{...Ng(),[t]:n}).create(t,{appName:e.name})}function Vg(e){return Bg(e,`operation-not-supported-in-this-environment`,`Operations that alter the current user are not supported in conjunction with FirebaseServerApp`)}function Hg(e,t,n){let r=n;if(!(t instanceof r))throw r.name!==t.constructor.name&&Rg(e,`argument-error`),Bg(e,`argument-error`,`Type of ${t.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}function Ug(e,...t){if(typeof e!=`string`){let n=t[0],r=[...t.slice(1)];return r[0]&&(r[0].appName=e.name),e._errorFactory.create(n,...r)}return Pg.create(e,...t)}function $(e,t,...n){if(!e)throw Ug(t,...n)}function Wg(e){let t=`INTERNAL ASSERTION FAILED: `+e;throw Lg(t),Error(t)}function Gg(e,t){e||Wg(t)}function Kg(){return typeof self<`u`&&self.location?.href||``}function qg(){return Jg()===`http:`||Jg()===`https:`}function Jg(){return typeof self<`u`&&self.location?.protocol||null}function Yg(){return typeof navigator<`u`&&navigator&&`onLine`in navigator&&typeof navigator.onLine==`boolean`&&(qg()||ae()||`connection`in navigator)?navigator.onLine:!0}function Xg(){if(typeof navigator>`u`)return null;let e=navigator;return e.languages&&e.languages[0]||e.language||null}var Zg=class{constructor(e,t){this.shortDelay=e,this.longDelay=t,Gg(t>e,`Short delay should be less than long delay!`),this.isMobile=ne()||oe()}get(){return Yg()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}};function Qg(e,t){Gg(e.emulator,`Emulator should always be set here`);let{url:n}=e.emulator;return t?`${n}${t.startsWith(`/`)?t.slice(1):t}`:n}var $g=class{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}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;Wg(`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;Wg(`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;Wg(`Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill`)}},e_={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`},t_=[`/v1/accounts:signInWithCustomToken`,`/v1/accounts:signInWithEmailLink`,`/v1/accounts:signInWithIdp`,`/v1/accounts:signInWithPassword`,`/v1/accounts:signInWithPhoneNumber`,`/v1/token`],n_=new Zg(3e4,6e4);function r_(e,t){return e.tenantId&&!t.tenantId?{...t,tenantId:e.tenantId}:t}async function i_(e,t,n,r,i={}){return a_(e,i,async()=>{let i={},a={};r&&(t===`GET`?a=r:i={body:JSON.stringify(r)});let o=ve({...a,key:e.config.apiKey}).slice(1),s=await e._getAdditionalHeaders();s[`Content-Type`]=`application/json`,e.languageCode&&(s[`X-Firebase-Locale`]=e.languageCode);let c={method:t,headers:s,...i};return ie()||(c.referrerPolicy=`strict-origin-when-cross-origin`),e.emulatorConfig&&Te(e.emulatorConfig.host)&&(c.credentials=`include`),$g.fetch()(await s_(e,e.config.apiHost,n,o),c)})}async function a_(e,t,n){e._canInitEmulator=!1;let r={...e_,...t};try{let t=new l_(e),i=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();let a=await i.json();if(`needConfirmation`in a)throw u_(e,`account-exists-with-different-credential`,a);if(i.ok&&!(`errorMessage`in a))return a;{let[t,n]=(i.ok?a.errorMessage:a.error.message).split(` : `);if(t===`FEDERATED_USER_ID_ALREADY_LINKED`)throw u_(e,`credential-already-in-use`,a);if(t===`EMAIL_EXISTS`)throw u_(e,`email-already-in-use`,a);if(t===`USER_DISABLED`)throw u_(e,`user-disabled`,a);let o=r[t]||t.toLowerCase().replace(/[_\s]+/g,`-`);if(n)throw Bg(e,o,n);Rg(e,o)}}catch(t){if(t instanceof fe)throw t;Rg(e,`network-request-failed`,{message:String(t)})}}async function o_(e,t,n,r,i={}){let a=await i_(e,t,n,r,i);return`mfaPendingCredential`in a&&Rg(e,`multi-factor-auth-required`,{_serverResponse:a}),a}async function s_(e,t,n,r){let i=`${t}${n}?${r}`,a=e,o=a.config.emulator?Qg(e.config,i):`${e.config.apiScheme}://${i}`;return t_.includes(n)&&(await a._persistenceManagerAvailable,a._getPersistenceType()===`COOKIE`)?a._getPersistence()._getFinalTarget(o).toString():o}function c_(e){switch(e){case`ENFORCE`:return`ENFORCE`;case`AUDIT`:return`AUDIT`;case`OFF`:return`OFF`;default:return`ENFORCEMENT_STATE_UNSPECIFIED`}}var l_=class{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(zg(this.auth,`network-request-failed`)),n_.get())})}};function u_(e,t,n){let r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);let i=zg(e,t,r);return i.customData._tokenResponse=n,i}function d_(e){return e!==void 0&&e.enterprise!==void 0}var f_=class{constructor(e){if(this.siteKey=``,this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw 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 c_(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 p_(e,t){return i_(e,`GET`,`/v2/recaptchaConfig`,r_(e,t))}async function m_(e,t){return i_(e,`POST`,`/v1/accounts:delete`,t)}async function h_(e,t){return i_(e,`POST`,`/v1/accounts:lookup`,t)}function g_(e){if(e)try{let t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch{}}async function __(e,t=!1){let n=v(e),r=await n.getIdToken(t),i=y_(r);$(i&&i.exp&&i.auth_time&&i.iat,n.auth,`internal-error`);let a=typeof i.firebase==`object`?i.firebase:void 0,o=a?.sign_in_provider;return{claims:i,token:r,authTime:g_(v_(i.auth_time)),issuedAtTime:g_(v_(i.iat)),expirationTime:g_(v_(i.exp)),signInProvider:o||null,signInSecondFactor:a?.sign_in_second_factor||null}}function v_(e){return Number(e)*1e3}function y_(e){let[t,n,r]=e.split(`.`);if(t===void 0||n===void 0||r===void 0)return Lg(`JWT malformed, contained fewer than 3 sections`),null;try{let e=s(n);return e?JSON.parse(e):(Lg(`Failed to decode base64 JWT payload`),null)}catch(e){return Lg(`Caught error parsing JWT payload as JSON`,e?.toString()),null}}function b_(e){let t=y_(e);return $(t,`internal-error`),$(t.exp!==void 0,`internal-error`),$(t.iat!==void 0,`internal-error`),Number(t.exp)-Number(t.iat)}async function x_(e,t,n=!1){if(n)return t;try{return await t}catch(t){throw t instanceof fe&&S_(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}function S_({code:e}){return e===`auth/user-disabled`||e===`auth/user-token-expired`}var C_=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 e=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),e}{this.errorBackoff=3e4;let e=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,e)}}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()}},w_=class{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=g_(this.lastLoginAt),this.creationTime=g_(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}};async function T_(e){let t=e.auth,n=await x_(e,h_(t,{idToken:await e.getIdToken()}));$(n?.users.length,t,`internal-error`);let r=n.users[0];e._notifyReloadListener(r);let i=r.providerUserInfo?.length?O_(r.providerUserInfo):[],a=D_(e.providerData,i),o=e.isAnonymous,s=!(e.email&&r.passwordHash)&&!a?.length,c=o?s:!1,l={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:a,metadata:new w_(r.createdAt,r.lastLoginAt),isAnonymous:c};Object.assign(e,l)}async function E_(e){let t=v(e);await T_(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}function D_(e,t){return[...e.filter(e=>!t.some(t=>t.providerId===e.providerId)),...t]}function O_(e){return e.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 k_(e,t){let n=await a_(e,{},async()=>{let n=ve({grant_type:`refresh_token`,refresh_token:t}).slice(1),{tokenApiHost:r,apiKey:i}=e.config,a=await s_(e,r,`/v1/token`,`key=${i}`),o=await e._getAdditionalHeaders();o[`Content-Type`]=`application/x-www-form-urlencoded`;let s={method:`POST`,headers:o,body:n};return e.emulatorConfig&&Te(e.emulatorConfig.host)&&(s.credentials=`include`),$g.fetch()(a,s)});return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}async function A_(e,t){return i_(e,`POST`,`/v2/accounts:revokeToken`,r_(e,t))}var j_=class e{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){$(e.idToken,`internal-error`),$(e.idToken!==void 0,`internal-error`),$(e.refreshToken!==void 0,`internal-error`);let t=`expiresIn`in e&&e.expiresIn!==void 0?Number(e.expiresIn):b_(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){$(e.length!==0,`internal-error`);let t=b_(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:($(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:n,refreshToken:r,expiresIn:i}=await k_(e,t);this.updateTokensAndExpiration(n,r,Number(i))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+n*1e3}static fromJSON(t,n){let{refreshToken:r,accessToken:i,expirationTime:a}=n,o=new e;return r&&($(typeof r==`string`,`internal-error`,{appName:t}),o.refreshToken=r),i&&($(typeof i==`string`,`internal-error`,{appName:t}),o.accessToken=i),a&&($(typeof a==`number`,`internal-error`,{appName:t}),o.expirationTime=a),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 e,this.toJSON())}_performRefresh(){return Wg(`not implemented`)}};function M_(e,t){$(typeof e==`string`||e===void 0,`internal-error`,{appName:t})}var N_=class e{constructor({uid:e,auth:t,stsTokenManager:n,...r}){this.providerId=`firebase`,this.proactiveRefresh=new C_(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=n,this.accessToken=n.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 w_(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){let t=await x_(this,this.stsTokenManager.getToken(this.auth,e));return $(t,this.auth,`internal-error`),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return __(this,e)}reload(){return E_(this)}_assign(e){this!==e&&($(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(e=>({...e})),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(t){let n=new e({...this,auth:t,stsTokenManager:this.stsTokenManager._clone()});return n.metadata._copy(this.metadata),n}_onReload(e){$(!this.reloadListener,this.auth,`internal-error`),this.reloadListener=e,this.reloadUserInfo&&=(this._notifyReloadListener(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 n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await T_(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(Jt(this.auth.app))return Promise.reject(Vg(this.auth));let e=await this.getIdToken();return await x_(this,m_(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(t,n){let r=n.displayName??void 0,i=n.email??void 0,a=n.phoneNumber??void 0,o=n.photoURL??void 0,s=n.tenantId??void 0,c=n._redirectEventId??void 0,l=n.createdAt??void 0,u=n.lastLoginAt??void 0,{uid:d,emailVerified:f,isAnonymous:p,providerData:m,stsTokenManager:h}=n;$(d&&h,t,`internal-error`);let g=j_.fromJSON(this.name,h);$(typeof d==`string`,t,`internal-error`),M_(r,t.name),M_(i,t.name),$(typeof f==`boolean`,t,`internal-error`),$(typeof p==`boolean`,t,`internal-error`),M_(a,t.name),M_(o,t.name),M_(s,t.name),M_(c,t.name),M_(l,t.name),M_(u,t.name);let ee=new e({uid:d,auth:t,email:i,emailVerified:f,displayName:r,isAnonymous:p,photoURL:o,phoneNumber:a,tenantId:s,stsTokenManager:g,createdAt:l,lastLoginAt:u});return m&&Array.isArray(m)&&(ee.providerData=m.map(e=>({...e}))),c&&(ee._redirectEventId=c),ee}static async _fromIdTokenResponse(t,n,r=!1){let i=new j_;i.updateFromServerResponse(n);let a=new e({uid:n.localId,auth:t,stsTokenManager:i,isAnonymous:r});return await T_(a),a}static async _fromGetAccountInfoResponse(t,n,r){let i=n.users[0];$(i.localId!==void 0,`internal-error`);let a=i.providerUserInfo===void 0?[]:O_(i.providerUserInfo),o=!(i.email&&i.passwordHash)&&!a?.length,s=new j_;s.updateFromIdToken(r);let c=new e({uid:i.localId,auth:t,stsTokenManager:s,isAnonymous:o}),l={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:a,metadata:new w_(i.createdAt,i.lastLoginAt),isAnonymous:!(i.email&&i.passwordHash)&&!a?.length};return Object.assign(c,l),c}},P_=new Map;function F_(e){Gg(e instanceof Function,`Expected a class definition`);let t=P_.get(e);return t?(Gg(t instanceof e,`Instance stored in cache mismatched with class`),t):(t=new e,P_.set(e,t),t)}var I_=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){}};I_.type=`NONE`;var L_=I_;function R_(e,t,n){return`firebase:${e}:${t}:${n}`}var z_=class e{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;let{config:r,name:i}=this.auth;this.fullUserKey=R_(this.userKey,r.apiKey,i),this.fullPersistenceKey=R_(`persistence`,r.apiKey,i),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 h_(this.auth,{idToken:e}).catch(()=>void 0);return t?N_._fromGetAccountInfoResponse(this.auth,t,e):null}return N_._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(t,n,r=`authUser`){if(!n.length)return new e(F_(L_),t,r);let i=(await Promise.all(n.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e),a=i[0]||F_(L_),o=R_(r,t.config.apiKey,t.name),s=null;for(let e of n)try{let n=await e._get(o);if(n){let r;if(typeof n==`string`){let e=await h_(t,{idToken:n}).catch(()=>void 0);if(!e)break;r=await N_._fromGetAccountInfoResponse(t,e,n)}else r=N_._fromJSON(t,n);e!==a&&(s=r),a=e;break}}catch{}let c=i.filter(e=>e._shouldAllowMigration);return!a._shouldAllowMigration||!c.length?new e(a,t,r):(a=c[0],s&&await a._set(o,s.toJSON()),await Promise.all(n.map(async e=>{if(e!==a)try{await e._remove(o)}catch{}})),new e(a,t,r))}};function B_(e){let t=e.toLowerCase();if(t.includes(`opera/`)||t.includes(`opr/`)||t.includes(`opios/`))return`Opera`;if(W_(t))return`IEMobile`;if(t.includes(`msie`)||t.includes(`trident/`))return`IE`;if(t.includes(`edge/`))return`Edge`;if(V_(t))return`Firefox`;if(t.includes(`silk/`))return`Silk`;if(K_(t))return`Blackberry`;if(q_(t))return`Webos`;if(H_(t))return`Safari`;if((t.includes(`chrome/`)||U_(t))&&!t.includes(`edge/`))return`Chrome`;if(G_(t))return`Android`;{let t=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);if(t?.length===2)return t[1]}return`Other`}function V_(e=_()){return/firefox\//i.test(e)}function H_(e=_()){let t=e.toLowerCase();return t.includes(`safari/`)&&!t.includes(`chrome/`)&&!t.includes(`crios/`)&&!t.includes(`android`)}function U_(e=_()){return/crios\//i.test(e)}function W_(e=_()){return/iemobile/i.test(e)}function G_(e=_()){return/android/i.test(e)}function K_(e=_()){return/blackberry/i.test(e)}function q_(e=_()){return/webos/i.test(e)}function J_(e=_()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function Y_(e=_()){return J_(e)&&!!window.navigator?.standalone}function X_(){return se()&&document.documentMode===10}function Z_(e=_()){return J_(e)||G_(e)||q_(e)||K_(e)||/windows phone/i.test(e)||W_(e)}function Q_(e,t=[]){let n;switch(e){case`Browser`:n=B_(_());break;case`Worker`:n=`${B_(_())}-${e}`;break;default:n=e}let r=t.length?t.join(`,`):`FirebaseCore-web`;return`${n}/JsCore/${Xt}/${r}`}var $_=class{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let n=t=>new Promise((n,r)=>{try{n(e(t))}catch(e){r(e)}});n.onAbort=t,this.queue.push(n);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 n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(let e of t)try{e()}catch{}throw this.auth._errorFactory.create(`login-blocked`,{originalMessage:e?.message})}}};async function ev(e,t={}){return i_(e,`GET`,`/v2/passwordPolicy`,r_(e,t))}var tv=6,nv=class{constructor(e){let t=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=t.minPasswordLength??tv,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.meetsMinPasswordLength??!0,t.isValid&&=t.meetsMaxPasswordLength??!0,t.isValid&&=t.containsLowercaseLetter??!0,t.isValid&&=t.containsUppercaseLetter??!0,t.isValid&&=t.containsNumericCharacter??!0,t.isValid&&=t.containsNonAlphanumericCharacter??!0,t}validatePasswordLengthOptions(e,t){let n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let n;for(let r=0;r<e.length;r++)n=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,n>=`a`&&n<=`z`,n>=`A`&&n<=`Z`,n>=`0`&&n<=`9`,this.allowedNonAlphanumericCharacters.includes(n))}updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||=t),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||=n),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||=r),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||=i)}},rv=class{constructor(e,t,n,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=n,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new av(this),this.idTokenSubscription=new av(this),this.beforeStateQueue=new $_(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=Pg,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(e=>this._resolvePersistenceManagerAvailable=e)}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=F_(t)),this._initializationPromise=this.queue(async()=>{if(!this._deleted&&(this.persistenceManager=await z_.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 h_(this,{idToken:e}),n=await N_._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(n)}catch(e){console.warn(`FirebaseServerApp could not login user with provided authIdToken: `,e),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(Jt(this.app)){let e=this.app.settings.authIdToken;return e?new Promise(t=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(e).then(t,t))}):this.directlySetCurrentUser(null)}let t=await this.assertedPersistence.getCurrentUser(),n=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let t=this.redirectUser?._redirectEventId,i=n?._redirectEventId,a=await this.tryRedirectSignIn(e);(!t||t===i)&&a?.user&&(n=a.user,r=!0)}if(!n)return this.directlySetCurrentUser(null);if(!n._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(n)}catch(e){n=t,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return n?this.reloadAndSetCurrentUserOrClear(n):this.directlySetCurrentUser(null)}return $(this._popupRedirectResolver,this,`argument-error`),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===n._redirectEventId?this.directlySetCurrentUser(n):this.reloadAndSetCurrentUserOrClear(n)}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 T_(e)}catch(e){if(e?.code!==`auth/network-request-failed`)return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=Xg()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(Jt(this.app))return Promise.reject(Vg(this));let t=e?v(e):null;return t&&$(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&&$(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 Jt(this.app)?Promise.reject(Vg(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return Jt(this.app)?Promise.reject(Vg(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(F_(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?t.validatePassword(e):Promise.reject(this._errorFactory.create(`unsupported-password-policy-schema-version`,{}))}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=new nv(await ev(this));this.tenantId===null?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistenceType(){return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){this._errorFactory=new pe(`auth`,`Firebase`,e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{let n=this.onAuthStateChanged(()=>{n(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t={providerId:`apple.com`,tokenType:`ACCESS_TOKEN`,token:e,idToken:await this.currentUser.getIdToken()};this.tenantId!=null&&(t.tenantId=this.tenantId),await A_(this,t)}}toJSON(){return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){let n=await this.getOrInitRedirectPersistenceManager(t);return e===null?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&F_(e)||this._popupRedirectResolver;$(t,this,`argument-error`),this.redirectPersistenceManager=await z_.create(this,[F_(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,n,r){if(this._deleted)return()=>{};let i=typeof t==`function`?t:t.next.bind(t),a=!1,o=this._isInitialized?Promise.resolve():this._initializationPromise;if($(o,this,`internal-error`),o.then(()=>{a||i(this.currentUser)}),typeof t==`function`){let i=e.addObserver(t,n,r);return()=>{a=!0,i()}}{let n=e.addObserver(t);return()=>{a=!0,n()}}}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 $(this.persistenceManager,this,`internal-error`),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Q_(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 n=await this._getAppCheckToken();return n&&(e[`X-Firebase-AppCheck`]=n),e}async _getAppCheckToken(){if(Jt(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;let e=await this.appCheckServiceProvider.getImmediate({optional:!0})?.getToken();return e?.error&&Ig(`Error while retrieving App Check token: ${e.error}`),e?.token}};function iv(e){return v(e)}var av=class{constructor(e){this.auth=e,this.observer=null,this.addObserver=xe(e=>this.observer=e)}get next(){return $(this.observer,this.auth,`internal-error`),this.observer.next.bind(this.observer)}},ov={async loadJS(){throw Error(`Unable to load external scripts`)},recaptchaV2Script:``,recaptchaEnterpriseScript:``,gapiScript:``};function sv(e){ov=e}function cv(e){return ov.loadJS(e)}function lv(){return ov.recaptchaEnterpriseScript}function uv(){return ov.gapiScript}function dv(e){return`__${e}${Math.floor(Math.random()*1e6)}`}var fv=class{constructor(){this.enterprise=new pv}ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},pv=class{ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},mv=`recaptcha-enterprise`,hv=`NO_RECAPTCHA`,gv=`onFirebaseAuthREInstanceReady`,_v=class e{constructor(e){this.type=mv,this.auth=iv(e)}async verify(t=`verify`,n=!1){async function r(e){if(!n){if(e.tenantId==null&&e._agentRecaptchaConfig!=null)return e._agentRecaptchaConfig.siteKey;if(e.tenantId!=null&&e._tenantRecaptchaConfigs[e.tenantId]!==void 0)return e._tenantRecaptchaConfigs[e.tenantId].siteKey}return new Promise(async(t,n)=>{p_(e,{clientType:`CLIENT_TYPE_WEB`,version:`RECAPTCHA_ENTERPRISE`}).then(r=>{if(r.recaptchaKey===void 0)n(Error(`recaptcha Enterprise site key undefined`));else{let n=new f_(r);return e.tenantId==null?e._agentRecaptchaConfig=n:e._tenantRecaptchaConfigs[e.tenantId]=n,t(n.siteKey)}}).catch(e=>{n(e)})})}function i(e,n,r){let i=window.grecaptcha;d_(i)?i.enterprise.ready(()=>{i.enterprise.execute(e,{action:t}).then(e=>{n(e)}).catch(()=>{n(hv)})}):r(Error(`No reCAPTCHA enterprise script loaded.`))}return this.auth.settings.appVerificationDisabledForTesting?new fv().execute(`siteKey`,{action:`verify`}):new Promise((t,a)=>{r(this.auth).then(async r=>{if(!n&&d_(window.grecaptcha)&&e.scriptInjectionDeferred)await e.scriptInjectionDeferred.promise,i(r,t,a);else{if(typeof window>`u`){a(Error(`RecaptchaVerifier is only supported in browser`));return}let n=lv();n.length!==0&&(n+=r+`&onload=${gv}`),e.scriptInjectionDeferred=new ee,window[gv]=()=>{e.scriptInjectionDeferred?.resolve()},cv(n).then(()=>e.scriptInjectionDeferred?.promise).then(()=>{i(r,t,a)}).catch(e=>{a(e)})}}).catch(e=>{a(e)})})}};_v.scriptInjectionDeferred=null;async function vv(e,t,n,r=!1,i=!1){let a=new _v(e),o;if(i)o=hv;else try{o=await a.verify(n)}catch{o=await a.verify(n,!0)}let s={...t};if(n===`mfaSmsEnrollment`||n===`mfaSmsSignIn`){if(`phoneEnrollmentInfo`in s){let e=s.phoneEnrollmentInfo.phoneNumber,t=s.phoneEnrollmentInfo.recaptchaToken;Object.assign(s,{phoneEnrollmentInfo:{phoneNumber:e,recaptchaToken:t,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}else if(`phoneSignInInfo`in s){let e=s.phoneSignInInfo.recaptchaToken;Object.assign(s,{phoneSignInInfo:{recaptchaToken:e,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}return s}return r?Object.assign(s,{captchaResp:o}):Object.assign(s,{captchaResponse:o}),Object.assign(s,{clientType:`CLIENT_TYPE_WEB`}),Object.assign(s,{recaptchaVersion:`RECAPTCHA_ENTERPRISE`}),s}async function yv(e,t,n,r,i){return i===`EMAIL_PASSWORD_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`EMAIL_PASSWORD_PROVIDER`)?r(e,await vv(e,t,n,n===`getOobCode`)):r(e,t).catch(async i=>i.code===`auth/missing-recaptcha-token`?(console.log(`${n} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`),r(e,await vv(e,t,n,n===`getOobCode`))):Promise.reject(i)):i===`PHONE_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`PHONE_PROVIDER`)?r(e,await vv(e,t,n)).catch(async i=>e._getRecaptchaConfig()?.getProviderEnforcementState(`PHONE_PROVIDER`)===`AUDIT`&&(i.code===`auth/missing-recaptcha-token`||i.code===`auth/invalid-app-credential`)?(console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${n} flow.`),r(e,await vv(e,t,n,!1,!0))):Promise.reject(i)):r(e,await vv(e,t,n,!1,!0)):Promise.reject(i+` provider is not supported.`)}function bv(e,t){let n=qt(e,`auth`);if(n.isInitialized()){let e=n.getImmediate();if(ge(n.getOptions(),t??{}))return e;Rg(e,`already-initialized`)}return n.initialize({options:t})}function xv(e,t){let n=t?.persistence||[],r=(Array.isArray(n)?n:[n]).map(F_);t?.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,t?.popupRedirectResolver)}function Sv(e,t,n){let r=iv(e);$(/^https?:\/\//.test(t),r,`invalid-emulator-scheme`);let i=!!n?.disableWarnings,a=Cv(t),{host:o,port:s}=wv(t),c=s===null?``:`:${s}`,l={url:`${a}//${o}${c}/`},u=Object.freeze({host:o,port:s,protocol:a.replace(`:`,``),options:Object.freeze({disableWarnings:i})});if(!r._canInitEmulator){$(r.config.emulator&&r.emulatorConfig,r,`emulator-config-failed`),$(ge(l,r.config.emulator)&&ge(u,r.emulatorConfig),r,`emulator-config-failed`);return}r.config.emulator=l,r.emulatorConfig=u,r.settings.appVerificationDisabledForTesting=!0,Te(o)?Ee(`${a}//${o}${c}`):i||Ev()}function Cv(e){let t=e.indexOf(`:`);return t<0?``:e.substr(0,t+1)}function wv(e){let t=Cv(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:``,port:null};let r=n[2].split(`@`).pop()||``,i=/^(\[[^\]]+\])(:|$)/.exec(r);if(i){let e=i[1];return{host:e,port:Tv(r.substr(e.length+1))}}{let[e,t]=r.split(`:`);return{host:e,port:Tv(t)}}}function Tv(e){if(!e)return null;let t=Number(e);return isNaN(t)?null:t}function Ev(){function e(){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`,e):e())}var Dv=class{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return Wg(`not implemented`)}_getIdTokenResponse(e){return Wg(`not implemented`)}_linkToIdToken(e,t){return Wg(`not implemented`)}_getReauthenticationResolver(e){return Wg(`not implemented`)}};async function Ov(e,t){return i_(e,`POST`,`/v1/accounts:update`,t)}async function kv(e,t){return i_(e,`POST`,`/v1/accounts:signUp`,t)}async function Av(e,t){return o_(e,`POST`,`/v1/accounts:signInWithPassword`,r_(e,t))}async function jv(e,t){return i_(e,`POST`,`/v1/accounts:sendOobCode`,r_(e,t))}async function Mv(e,t){return jv(e,t)}async function Nv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithEmailLink`,r_(e,t))}async function Pv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithEmailLink`,r_(e,t))}var Fv=class e extends Dv{constructor(e,t,n,r=null){super(`password`,n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(t,n){return new e(t,n,`password`)}static _fromEmailAndCode(t,n,r=null){return new e(t,n,`emailLink`,r)}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`:return yv(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signInWithPassword`,Av,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return Nv(e,{email:this._email,oobCode:this._password});default:Rg(e,`internal-error`)}}async _linkToIdToken(e,t){switch(this.signInMethod){case`password`:return yv(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,kv,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return Pv(e,{idToken:t,email:this._email,oobCode:this._password});default:Rg(e,`internal-error`)}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}};async function Iv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithIdp`,r_(e,t))}var Lv=`http://localhost`,Rv=class e extends Dv{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(t){let n=new e(t.providerId,t.signInMethod);return t.idToken||t.accessToken?(t.idToken&&(n.idToken=t.idToken),t.accessToken&&(n.accessToken=t.accessToken),t.nonce&&!t.pendingToken&&(n.nonce=t.nonce),t.pendingToken&&(n.pendingToken=t.pendingToken)):t.oauthToken&&t.oauthTokenSecret?(n.accessToken=t.oauthToken,n.secret=t.oauthTokenSecret):Rg(`argument-error`),n}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(t){let{providerId:n,signInMethod:r,...i}=typeof t==`string`?JSON.parse(t):t;if(!n||!r)return null;let a=new e(n,r);return a.idToken=i.idToken||void 0,a.accessToken=i.accessToken||void 0,a.secret=i.secret,a.nonce=i.nonce,a.pendingToken=i.pendingToken||null,a}_getIdTokenResponse(e){return Iv(e,this.buildRequest())}_linkToIdToken(e,t){let n=this.buildRequest();return n.idToken=t,Iv(e,n)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,Iv(e,t)}buildRequest(){let e={requestUri:Lv,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=ve(t)}return e}};function zv(e){switch(e){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 Bv(e){let t=ye(be(e)).link,n=t?ye(be(t)).deep_link_id:null,r=ye(be(e)).deep_link_id;return(r?ye(be(r)).link:null)||r||n||t||e}var Vv=class e{constructor(e){let t=ye(be(e)),n=t.apiKey??null,r=t.oobCode??null,i=zv(t.mode??null);$(n&&r&&i,`argument-error`),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=t.continueUrl??null,this.languageCode=t.lang??null,this.tenantId=t.tenantId??null}static parseLink(t){let n=Bv(t);try{return new e(n)}catch{return null}}},Hv=class e{constructor(){this.providerId=e.PROVIDER_ID}static credential(e,t){return Fv._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let n=Vv.parseLink(t);return $(n,`argument-error`),Fv._fromEmailAndCode(e,n.code,n.tenantId)}};Hv.PROVIDER_ID=`password`,Hv.EMAIL_PASSWORD_SIGN_IN_METHOD=`password`,Hv.EMAIL_LINK_SIGN_IN_METHOD=`emailLink`;var Uv=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}},Wv=class extends Uv{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}},Gv=class e extends Wv{constructor(){super(`facebook.com`)}static credential(t){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.FACEBOOK_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};Gv.FACEBOOK_SIGN_IN_METHOD=`facebook.com`,Gv.PROVIDER_ID=`facebook.com`;var Kv=class e extends Wv{constructor(){super(`google.com`),this.addScope(`profile`)}static credential(t,n){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GOOGLE_SIGN_IN_METHOD,idToken:t,accessToken:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthIdToken:n,oauthAccessToken:r}=t;if(!n&&!r)return null;try{return e.credential(n,r)}catch{return null}}};Kv.GOOGLE_SIGN_IN_METHOD=`google.com`,Kv.PROVIDER_ID=`google.com`;var qv=class e extends Wv{constructor(){super(`github.com`)}static credential(t){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GITHUB_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};qv.GITHUB_SIGN_IN_METHOD=`github.com`,qv.PROVIDER_ID=`github.com`;var Jv=class e extends Wv{constructor(){super(`twitter.com`)}static credential(t,n){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.TWITTER_SIGN_IN_METHOD,oauthToken:t,oauthTokenSecret:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthAccessToken:n,oauthTokenSecret:r}=t;if(!n||!r)return null;try{return e.credential(n,r)}catch{return null}}};Jv.TWITTER_SIGN_IN_METHOD=`twitter.com`,Jv.PROVIDER_ID=`twitter.com`;async function Yv(e,t){return o_(e,`POST`,`/v1/accounts:signUp`,r_(e,t))}var Xv=class e{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(t,n,r,i=!1){let a=await N_._fromIdTokenResponse(t,r,i),o=Zv(r);return new e({user:a,providerId:o,_tokenResponse:r,operationType:n})}static async _forOperation(t,n,r){await t._updateTokensIfNecessary(r,!0);let i=Zv(r);return new e({user:t,providerId:i,_tokenResponse:r,operationType:n})}};function Zv(e){return e.providerId?e.providerId:`phoneNumber`in e?`phone`:null}var Qv=class e extends fe{constructor(t,n,r,i){super(n.code,n.message),this.operationType=r,this.user=i,Object.setPrototypeOf(this,e.prototype),this.customData={appName:t.name,tenantId:t.tenantId??void 0,_serverResponse:n.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(t,n,r,i){return new e(t,n,r,i)}};function $v(e,t,n,r){return(t===`reauthenticate`?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch(n=>{throw n.code===`auth/multi-factor-auth-required`?Qv._fromErrorAndOperation(e,n,t,r):n})}async function ey(e,t,n=!1){let r=await x_(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Xv._forOperation(e,`link`,r)}async function ty(e,t,n=!1){let{auth:r}=e;if(Jt(r.app))return Promise.reject(Vg(r));let i=`reauthenticate`;try{let a=await x_(e,$v(r,i,t,e),n);$(a.idToken,r,`internal-error`);let o=y_(a.idToken);$(o,r,`internal-error`);let{sub:s}=o;return $(e.uid===s,r,`user-mismatch`),Xv._forOperation(e,i,a)}catch(e){throw e?.code===`auth/user-not-found`&&Rg(r,`user-mismatch`),e}}async function ny(e,t,n=!1){if(Jt(e.app))return Promise.reject(Vg(e));let r=`signIn`,i=await $v(e,r,t),a=await Xv._fromIdTokenResponse(e,r,i);return n||await e._updateCurrentUser(a.user),a}async function ry(e,t){return ny(iv(e),t)}async function iy(e,t){return ty(v(e),t)}function ay(e,t,n){$(n.url?.length>0,e,`invalid-continue-uri`),$(n.dynamicLinkDomain===void 0||n.dynamicLinkDomain.length>0,e,`invalid-dynamic-link-domain`),$(n.linkDomain===void 0||n.linkDomain.length>0,e,`invalid-hosting-link-domain`),t.continueUrl=n.url,t.dynamicLinkDomain=n.dynamicLinkDomain,t.linkDomain=n.linkDomain,t.canHandleCodeInApp=n.handleCodeInApp,n.iOS&&($(n.iOS.bundleId.length>0,e,`missing-ios-bundle-id`),t.iOSBundleId=n.iOS.bundleId),n.android&&($(n.android.packageName.length>0,e,`missing-android-pkg-name`),t.androidInstallApp=n.android.installApp,t.androidMinimumVersionCode=n.android.minimumVersion,t.androidPackageName=n.android.packageName)}async function oy(e){let t=iv(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}async function sy(e,t,n){let r=iv(e),i={requestType:`PASSWORD_RESET`,email:t,clientType:`CLIENT_TYPE_WEB`};n&&ay(r,i,n),await yv(r,i,`getOobCode`,Mv,`EMAIL_PASSWORD_PROVIDER`)}async function cy(e,t,n){if(Jt(e.app))return Promise.reject(Vg(e));let r=iv(e),i=await yv(r,{returnSecureToken:!0,email:t,password:n,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,Yv,`EMAIL_PASSWORD_PROVIDER`).catch(t=>{throw t.code===`auth/password-does-not-meet-requirements`&&oy(e),t}),a=await Xv._fromIdTokenResponse(r,`signIn`,i);return await r._updateCurrentUser(a.user),a}function ly(e,t,n){return Jt(e.app)?Promise.reject(Vg(e)):ry(v(e),Hv.credential(t,n)).catch(async t=>{throw t.code===`auth/password-does-not-meet-requirements`&&oy(e),t})}async function uy(e,t){return i_(e,`POST`,`/v1/accounts:update`,t)}async function dy(e,{displayName:t,photoURL:n}){if(t===void 0&&n===void 0)return;let r=v(e),i={idToken:await r.getIdToken(),displayName:t,photoUrl:n,returnSecureToken:!0},a=await x_(r,uy(r.auth,i));r.displayName=a.displayName||null,r.photoURL=a.photoUrl||null;let o=r.providerData.find(({providerId:e})=>e===`password`);o&&(o.displayName=r.displayName,o.photoURL=r.photoURL),await r._updateTokensIfNecessary(a)}function fy(e,t){return py(v(e),null,t)}async function py(e,t,n){let{auth:r}=e,i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);let a=await x_(e,Ov(r,i));await e._updateTokensIfNecessary(a,!0)}function my(e,t,n,r){return v(e).onIdTokenChanged(t,n,r)}function hy(e,t,n){return v(e).beforeAuthStateChanged(t,n)}function gy(e,t,n,r){return v(e).onAuthStateChanged(t,n,r)}function _y(e){return v(e).signOut()}var vy=`__sak`,yy=class{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(vy,`1`),this.storage.removeItem(vy),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()}},by=1e3,xy=10,Sy=class extends yy{constructor(){super(()=>window.localStorage,`LOCAL`),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Z_(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let n=this.storage.getItem(t),r=this.localCache[t];n!==r&&e(t,r,n)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)});return}let n=e.key;t?this.detachListener():this.stopPolling();let r=()=>{let e=this.storage.getItem(n);!t&&this.localCache[n]===e||this.notifyListeners(n,e)},i=this.storage.getItem(n);X_()&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,xy):r()}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{this.onStorageEvent(new StorageEvent(`storage`,{key:e,oldValue:t,newValue:n}),!0)})},by)}stopPolling(){this.pollTimer&&=(clearInterval(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]}};Sy.type=`LOCAL`;var Cy=Sy,wy=class extends yy{constructor(){super(()=>window.sessionStorage,`SESSION`)}_addListener(e,t){}_removeListener(e,t){}};wy.type=`SESSION`;var Ty=wy;function Ey(e){return Promise.all(e.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}}))}var Dy=class e{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){let n=this.receivers.find(e=>e.isListeningto(t));if(n)return n;let r=new e(t);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let t=e,{eventId:n,eventType:r,data:i}=t.data,a=this.handlersMap[r];if(!a?.size)return;t.ports[0].postMessage({status:`ack`,eventId:n,eventType:r});let o=await Ey(Array.from(a).map(async e=>e(t.origin,i)));t.ports[0].postMessage({status:`done`,eventId:n,eventType:r,response:o})}_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)}};Dy.receivers=[];function Oy(e=``,t=10){let n=``;for(let e=0;e<t;e++)n+=Math.floor(Math.random()*10);return e+n}var ky=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,n=50){let r=typeof MessageChannel<`u`?new MessageChannel:null;if(!r)throw Error(`connection_unavailable`);let i,a;return new Promise((o,s)=>{let c=Oy(``,20);r.port1.start();let l=setTimeout(()=>{s(Error(`unsupported_event`))},n);a={messageChannel:r,onMessage(e){let t=e;if(t.data.eventId===c)switch(t.data.status){case`ack`:clearTimeout(l),i=setTimeout(()=>{s(Error(`timeout`))},3e3);break;case`done`:clearTimeout(i),o(t.data.response);break;default:clearTimeout(l),clearTimeout(i),s(Error(`invalid_response`))}}},this.handlers.add(a),r.port1.addEventListener(`message`,a.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[r.port2])}).finally(()=>{a&&this.removeMessageHandler(a)})}};function Ay(){return window}function jy(e){Ay().location.href=e}function My(){return Ay().WorkerGlobalScope!==void 0&&typeof Ay().importScripts==`function`}async function Ny(){if(!navigator?.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function Py(){return navigator?.serviceWorker?.controller||null}function Fy(){return My()?self:null}var Iy=`firebaseLocalStorageDb`,Ly=1,Ry=`firebaseLocalStorage`,zy=`fbase_key`,By=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 Vy(e,t){return e.transaction([Ry],t?`readwrite`:`readonly`).objectStore(Ry)}function Hy(){return new By(indexedDB.deleteDatabase(Iy)).toPromise()}function Uy(){let e=indexedDB.open(Iy,Ly);return new Promise((t,n)=>{e.addEventListener(`error`,()=>{n(e.error)}),e.addEventListener(`upgradeneeded`,()=>{let t=e.result;try{t.createObjectStore(Ry,{keyPath:zy})}catch(e){n(e)}}),e.addEventListener(`success`,async()=>{let n=e.result;n.objectStoreNames.contains(Ry)?t(n):(n.close(),await Hy(),t(await Uy()))})})}async function Wy(e,t,n){return new By(Vy(e,!0).put({[zy]:t,value:n})).toPromise()}async function Gy(e,t){let n=await new By(Vy(e,!1).get(t)).toPromise();return n===void 0?null:n.value}function Ky(e,t){return new By(Vy(e,!0).delete(t)).toPromise()}var qy=800,Jy=3,Yy=class{registerLifecycleListeners(){typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`pageshow`,this.onPageShow))}unregisterLifecycleListeners(){typeof window<`u`&&typeof window.removeEventListener==`function`&&(window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`pageshow`,this.onPageShow))}constructor(){this.type=`LOCAL`,this.dbPromise=null,this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.isClosing=!1,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this.onPageHide=()=>{this.isClosing=!0,this.stopPolling(),this.dbPromise&&=(this.dbPromise.then(e=>e.close()).catch(()=>{}),null)},this.onPageShow=()=>{this.isClosing&&(this.isClosing=!1,Object.keys(this.listeners).length>0&&this.startPolling())},this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){if(this.isClosing)throw Error(`Database is closing`);return this.dbPromise?this.dbPromise:(this.dbPromise=Uy(),this.dbPromise.catch(()=>{this.dbPromise=null}),this.dbPromise)}async _withRetries(e){let t=0;for(;;)try{return await e(await this._openDb())}catch(e){if(this.isClosing||t++>Jy)throw e;this.dbPromise&&=((await this.dbPromise).close(),null)}}async initializeServiceWorkerMessaging(){return My()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Dy._getInstance(Fy()),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 Ny(),!this.activeServiceWorker)return;this.sender=new ky(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||Py()!==this.activeServiceWorker))try{await this.sender._send(`keyChanged`,{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{return indexedDB?(await this._withRetries(async e=>{await Wy(e,vy,`1`),await Ky(e,vy)}),!0):!1}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(n=>Wy(n,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(t=>Gy(t,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>Ky(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){if(this.isClosing)return[];try{let e=await this._withRetries(e=>new By(Vy(e,!1).getAll()).toPromise());if(this.isClosing||!e||this.pendingWrites!==0)return[];let t=[],n=new Set;if(e.length!==0)for(let{fbase_key:r,value:i}of e)n.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(i)&&(this.notifyListeners(r,i),t.push(r));for(let e of Object.keys(this.localCache))this.localCache[e]&&!n.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}catch(e){return this.isClosing||Ig(`Firebase Auth cross-tab polling failed with error: ${e}`),[]}}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),qy)}stopPolling(){this.pollTimer&&=(clearInterval(this.pollTimer),null)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.startPolling(),this.registerLifecycleListeners()),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(),this.unregisterLifecycleListeners())}};Yy.type=`LOCAL`;var Xy=Yy;dv(`rcb`),new Zg(3e4,6e4);function Zy(e,t){return t?F_(t):($(e._popupRedirectResolver,e,`argument-error`),e._popupRedirectResolver)}var Qy=class extends Dv{constructor(e){super(`custom`,`custom`),this.params=e}_getIdTokenResponse(e){return Iv(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Iv(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Iv(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 $y(e){return ny(e.auth,new Qy(e),e.bypassAuthState)}function eb(e){let{auth:t,user:n}=e;return $(n,t,`internal-error`),ty(n,new Qy(e),e.bypassAuthState)}async function tb(e){let{auth:t,user:n}=e;return $(n,t,`internal-error`),ey(n,new Qy(e),e.bypassAuthState)}var nb=class{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,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(e){this.reject(e)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:a,type:o}=e;if(a){this.reject(a);return}let s={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(s))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case`signInViaPopup`:case`signInViaRedirect`:return $y;case`linkViaPopup`:case`linkViaRedirect`:return tb;case`reauthViaPopup`:case`reauthViaRedirect`:return eb;default:Rg(this.auth,`internal-error`)}}resolve(e){Gg(this.pendingPromise,`Pending promise was never set`),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){Gg(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()}},rb=new Zg(2e3,1e4);async function ib(e,t,n){if(Jt(e.app))return Promise.reject(zg(e,`operation-not-supported-in-this-environment`));let r=iv(e);return Hg(e,t,Uv),new ab(r,`signInViaPopup`,t,Zy(r,n)).executeNotNull()}var ab=class e extends nb{constructor(t,n,r,i,a){super(t,n,i,a),this.provider=r,this.authWindow=null,this.pollId=null,e.currentPopupAction&&e.currentPopupAction.cancel(),e.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return $(e,this.auth,`internal-error`),e}async onExecution(){Gg(this.filter.length===1,`Popup operations only handle one event`);let e=Oy();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(zg(this.auth,`web-storage-unsupported`))}),this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){this.reject(zg(this.auth,`cancelled-popup-request`))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,e.currentPopupAction=null}pollUserCancellation(){let e=()=>{if(this.authWindow?.window?.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(zg(this.auth,`popup-closed-by-user`))},8e3);return}this.pollId=window.setTimeout(e,rb.get())};e()}};ab.currentPopupAction=null;var ob=`pendingRedirect`,sb=new Map,cb=class extends nb{constructor(e,t,n=!1){super(e,[`signInViaRedirect`,`linkViaRedirect`,`reauthViaRedirect`,`unknown`],t,void 0,n),this.eventId=null}async execute(){let e=sb.get(this.auth._key());if(!e){try{let t=await lb(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(t)}catch(t){e=()=>Promise.reject(t)}sb.set(this.auth._key(),e)}return this.bypassAuthState||sb.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 lb(e,t){let n=fb(t),r=db(e);if(!await r._isAvailable())return!1;let i=await r._get(n)===`true`;return await r._remove(n),i}function ub(e,t){sb.set(e._key(),t)}function db(e){return F_(e._redirectPersistence)}function fb(e){return R_(ob,e.config.apiKey,e.name)}async function pb(e,t,n=!1){if(Jt(e.app))return Promise.reject(Vg(e));let r=iv(e),i=await new cb(r,Zy(r,t),n).execute();return i&&!n&&(delete i.user._redirectEventId,await r._persistUserIfCurrent(i.user),await r._setRedirectUser(null,t)),i}var mb=6e5,hb=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(n=>{this.isEventForConsumer(e,n)&&(t=!0,this.sendToConsumer(e,n),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!vb(e)?t:(this.hasHandledPotentialRedirect=!0,t||=(this.queuedRedirectEvent=e,!0),t)}sendToConsumer(e,t){if(e.error&&!_b(e)){let n=e.error.code?.split(`auth/`)[1]||`internal-error`;t.onError(zg(this.auth,n))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let n=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=mb&&this.cachedEventUids.clear(),this.cachedEventUids.has(gb(e))}saveEventToCache(e){this.cachedEventUids.add(gb(e)),this.lastProcessedEventTime=Date.now()}};function gb(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join(`-`)}function _b({type:e,error:t}){return e===`unknown`&&t?.code===`auth/no-auth-event`}function vb(e){switch(e.type){case`signInViaRedirect`:case`linkViaRedirect`:case`reauthViaRedirect`:return!0;case`unknown`:return _b(e);default:return!1}}async function yb(e,t={}){return i_(e,`GET`,`/v1/projects`,t)}var bb=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,xb=/^https?/;async function Sb(e){if(e.config.emulator)return;let{authorizedDomains:t}=await yb(e);for(let e of t)try{if(Cb(e))return}catch{}Rg(e,`unauthorized-domain`)}function Cb(e){let t=Kg(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith(`chrome-extension://`)){let i=new URL(e);return i.hostname===``&&r===``?n===`chrome-extension:`&&e.replace(`chrome-extension://`,``)===t.replace(`chrome-extension://`,``):n===`chrome-extension:`&&i.hostname===r}if(!xb.test(n))return!1;if(bb.test(e))return r===e;let i=e.replace(/\./g,`\\.`);return RegExp(`^(.+\\.`+i+`|`+i+`)$`,`i`).test(r)}var wb=new Zg(3e4,6e4);function Tb(){let e=Ay().___jsl;if(e?.H){for(let t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t<e.CP.length;t++)e.CP[t]=null}}function Eb(e){return new Promise((t,n)=>{function r(){Tb(),gapi.load(`gapi.iframes`,{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{Tb(),n(zg(e,`network-request-failed`))},timeout:wb.get()})}if(Ay().gapi?.iframes?.Iframe)t(gapi.iframes.getContext());else if(Ay().gapi?.load)r();else{let t=dv(`iframefcb`);return Ay()[t]=()=>{gapi.load?r():n(zg(e,`network-request-failed`))},cv(`${uv()}?onload=${t}`).catch(e=>n(e))}}).catch(e=>{throw Db=null,e})}var Db=null;function Ob(e){return Db||=Eb(e),Db}var kb=new Zg(5e3,15e3),Ab=`__/auth/iframe`,jb=`emulator/auth/iframe`,Mb={style:{position:`absolute`,top:`-100px`,width:`1px`,height:`1px`},"aria-hidden":`true`,tabindex:`-1`},Nb=new Map([[`identitytoolkit.googleapis.com`,`p`],[`staging-identitytoolkit.sandbox.googleapis.com`,`s`],[`test-identitytoolkit.sandbox.googleapis.com`,`t`]]);function Pb(e){let t=e.config;$(t.authDomain,e,`auth-domain-config-required`);let n=t.emulator?Qg(t,jb):`https://${e.config.authDomain}/${Ab}`,r={apiKey:t.apiKey,appName:e.name,v:Xt},i=Nb.get(e.config.apiHost);i&&(r.eid=i);let a=e._getFrameworks();return a.length&&(r.fw=a.join(`,`)),`${n}?${ve(r).slice(1)}`}async function Fb(e){let t=await Ob(e),n=Ay().gapi;return $(n,e,`internal-error`),t.open({where:document.body,url:Pb(e),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Mb,dontclear:!0},t=>new Promise(async(n,r)=>{await t.restyle({setHideOnLeave:!1});let i=zg(e,`network-request-failed`),a=Ay().setTimeout(()=>{r(i)},kb.get());function o(){Ay().clearTimeout(a),n(t)}t.ping(o).then(o,()=>{r(i)})}))}var Ib={location:`yes`,resizable:`yes`,statusbar:`yes`,toolbar:`no`},Lb=500,Rb=600,zb=`_blank`,Bb=`http://localhost`,Vb=class{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}};function Hb(e,t,n,r=Lb,i=Rb){let a=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString(),s=``,c={...Ib,width:r.toString(),height:i.toString(),top:a,left:o},l=_().toLowerCase();n&&(s=U_(l)?zb:n),V_(l)&&(t||=Bb,c.scrollbars=`yes`);let u=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,``);if(Y_(l)&&s!==`_self`)return Ub(t||``,s),new Vb(null);let d=window.open(t||``,s,u);$(d,e,`popup-blocked`);try{d.focus()}catch{}return new Vb(d)}function Ub(e,t){let n=document.createElement(`a`);n.href=e,n.target=t;let r=document.createEvent(`MouseEvent`);r.initMouseEvent(`click`,!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}var Wb=`__/auth/handler`,Gb=`emulator/auth/handler`,Kb=`fac`;async function qb(e,t,n,r,i,a){$(e.config.authDomain,e,`auth-domain-config-required`),$(e.config.apiKey,e,`invalid-api-key`);let o={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Xt,eventId:i};if(t instanceof Uv){t.setDefaultLanguage(e.languageCode),o.providerId=t.providerId||``,he(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(let[e,t]of Object.entries(a||{}))o[e]=t}if(t instanceof Wv){let e=t.getScopes().filter(e=>e!==``);e.length>0&&(o.scopes=e.join(`,`))}e.tenantId&&(o.tid=e.tenantId);let s=o;for(let e of Object.keys(s))s[e]===void 0&&delete s[e];let c=await e._getAppCheckToken(),l=c?`#${Kb}=${encodeURIComponent(c)}`:``;return`${Jb(e)}?${ve(s).slice(1)}${l}`}function Jb({config:e}){return e.emulator?Qg(e,Gb):`https://${e.authDomain}/${Wb}`}var Yb=`webStorageSupport`,Xb=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Ty,this._completeRedirectFn=pb,this._overrideRedirectResult=ub}async _openPopup(e,t,n,r){return Gg(this.eventManagers[e._key()]?.manager,`_initialize() not called before _openPopup()`),Hb(e,await qb(e,t,n,Kg(),r),Oy())}async _openRedirect(e,t,n,r){return await this._originValidation(e),jy(await qb(e,t,n,Kg(),r)),new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){let{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(Gg(n,`If manager is not set, promise should be`),n)}let n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(e){let t=await Fb(e),n=new hb(e);return t.register(`authEvent`,t=>($(t?.authEvent,e,`invalid-auth-event`),{status:n.onEvent(t.authEvent)?`ACK`:`ERROR`}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:n},this.iframes[e._key()]=t,n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Yb,{type:Yb},n=>{let r=n?.[0]?.[Yb];r!==void 0&&t(!!r),Rg(e,`internal-error`)},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Sb(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Z_()||H_()||J_()}},Zb=`@firebase/auth`,Qb=`1.13.5`,$b=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(t=>{e(t?.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(){$(this.auth._initializationPromise,`dependent-sdk-initialized-before-auth`)}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}};function ex(e){switch(e){case`Node`:return`node`;case`ReactNative`:return`rn`;case`Worker`:return`webworker`;case`Cordova`:return`cordova`;case`WebExtension`:return`web-extension`;default:return}}function tx(e){Kt(new De(`auth`,(t,{options:n})=>{let r=t.getProvider(`app`).getImmediate(),i=t.getProvider(`heartbeat`),a=t.getProvider(`app-check-internal`),{apiKey:o,authDomain:s}=r.options;$(o&&!o.includes(`:`),`invalid-api-key`,{appName:r.name});let c=new rv(r,i,a,{apiKey:o,authDomain:s,clientPlatform:e,apiHost:`identitytoolkit.googleapis.com`,tokenApiHost:`securetoken.googleapis.com`,apiScheme:`https`,sdkClientVersion:Q_(e)});return xv(c,n),c},`PUBLIC`).setInstantiationMode(`EXPLICIT`).setInstanceCreatedCallback((e,t,n)=>{e.getProvider(`auth-internal`).initialize()})),Kt(new De(`auth-internal`,e=>(e=>new $b(e))(iv(e.getProvider(`auth`).getImmediate())),`PRIVATE`).setInstantiationMode(`EXPLICIT`)),en(Zb,Qb,ex(e)),en(Zb,Qb,`esm2020`)}var nx=g(`authIdTokenMaxAge`)||300,rx=null,ix=e=>async t=>{let n=t&&await t.getIdTokenResult(),r=n&&(new Date().getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>nx)return;let i=n?.token;rx!==i&&(rx=i,await fetch(e,{method:i?`POST`:`DELETE`,headers:i?{Authorization:`Bearer ${i}`}:{}}))};function ax(e=Qt()){let t=qt(e,`auth`);if(t.isInitialized())return t.getImmediate();let n=bv(e,{popupRedirectResolver:Xb,persistence:[Xy,Cy,Ty]}),r=g(`authTokenSyncURL`);if(r&&typeof isSecureContext==`boolean`&&isSecureContext){let e=new URL(r,location.origin);if(location.origin===e.origin){let t=ix(e.toString());hy(n,t,()=>t(n.currentUser)),my(n,e=>t(e))}}let i=p(`auth`);return i&&Sv(n,`http://${i}`),n}function ox(){return document.getElementsByTagName(`head`)?.[0]??document}sv({loadJS(e){return new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=t,r.onerror=e=>{let t=zg(`internal-error`);t.customData=e,n(t)},r.type=`text/javascript`,r.charset=`UTF-8`,ox().appendChild(r)})},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=`}),tx(`Browser`);export{Qt as C,ag as S,Zt as T,_g as _,ax as a,Ql as b,sy as c,_y as d,fy as f,Tg as g,wg as h,cy as i,ly as l,Dg as m,qv as n,gy as o,dy as p,Kv as r,iy as s,Hv as t,ib as u,Eg as v,$t as w,$l as x,yg as y};
32
+ `+e.stack),t}var ig=class extends ql{constructor(e,t,n,r){super(e,t,n,r),this.type=`firestore`,this._queue=new ng,this._persistenceKey=r?.name||`[DEFAULT]`}async _terminate(){if(this._firestoreClient){let e=this._firestoreClient.terminate();this._queue=new ng(e),this._firestoreClient=void 0,await e}}};function ag(e,t){let n=typeof e==`object`?e:Qt(),r=typeof e==`string`?e:t||ra,i=qt(n,`firestore`).getImmediate({identifier:r});if(!i._initialized){let e=m(`firestore`);e&&Jl(i,...e)}return i}function og(e){if(e._terminated)throw new V(B.FAILED_PRECONDITION,`The client has already been terminated.`);return e._firestoreClient||sg(e),e._firestoreClient}function sg(e){let t=e._freezeSettings(),n=Dl(e._databaseId,e._app?.options.appId||``,e._persistenceKey,e._app?.options.apiKey,t);e._componentsProvider||t.localCache?._offlineComponentProvider&&t.localCache?._onlineComponentProvider&&(e._componentsProvider={_offline:t.localCache._offlineComponentProvider,_online:t.localCache._onlineComponentProvider}),e._firestoreClient=new Vh(e._authCredentials,e._appCheckCredentials,e._queue,n,e._componentsProvider&&function(e){let t=e?._online.build();return{_offline:e?._offline.build(t),_online:t}}(e._componentsProvider))}var cg=class extends $h{constructor(e){super(),this.firestore=e}convertBytes(e){return new Hc(e)}convertReference(e){let t=this.convertDocumentKey(e,this.firestore._databaseId);return new Xl(this.firestore,null,t)}},lg=class{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}},ug=class e extends Zh{constructor(e,t,n,r,i,a){super(e,t,n,r,a),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){let t=new dg(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){let n=this._document.data.field(pu(`DocumentSnapshot.get`,e));if(n!==null)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}toJSON(){if(this.metadata.hasPendingWrites)throw new V(B.FAILED_PRECONDITION,`DocumentSnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().`);let t=this._document,n={};return n.type=e._jsonSchemaVersion,n.bundle=``,n.bundleSource=`DocumentSnapshot`,n.bundleName=this._key.toString(),!t||!t.isValidDocument()||!t.isFoundDocument()?n:(this._userDataWriter.convertObjectMap(t.data.value.mapValue.fields,`previous`),n.bundle=(this._firestore,this.ref.path,`NOT SUPPORTED`),n)}};ug._jsonSchemaVersion=`firestore/documentSnapshot/1.0`,ug._jsonSchema={type:zi(`string`,ug._jsonSchemaVersion),bundleSource:zi(`string`,`DocumentSnapshot`),bundleName:zi(`string`),bundle:zi(`string`)};var dg=class extends ug{data(e={}){return super.data(e)}},fg=class e{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new lg(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){let e=[];return this.forEach((t=>e.push(t))),e}get size(){return this._snapshot.docs.size}get empty(){return this.size===0}forEach(e,t){this._snapshot.docs.forEach((n=>{e.call(t,new dg(this._firestore,this._userDataWriter,n.key,n,new lg(this._snapshot.mutatedKeys.has(n.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(e={}){let t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new V(B.INVALID_ARGUMENT,`To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().`);return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map((n=>{tp(e._snapshot.query)?Ep(e._snapshot.query):e.query._query;let r=new dg(e._firestore,e._userDataWriter,n.doc.key,n.doc,new lg(e._snapshot.mutatedKeys.has(n.doc.key),e._snapshot.fromCache),e.query.converter);return n.doc,{type:`added`,doc:r,oldIndex:-1,newIndex:t++}}))}{let n=e._snapshot.oldDocs;return e._snapshot.docChanges.filter((e=>t||e.type!==3)).map((t=>{let r=new dg(e._firestore,e._userDataWriter,t.doc.key,t.doc,new lg(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter),i=-1,a=-1;return t.type!==0&&(i=n.indexOf(t.doc.key),n=n.delete(t.doc.key)),t.type!==1&&(n=n.add(t.doc),a=n.indexOf(t.doc.key)),{type:pg(t.type),doc:r,oldIndex:i,newIndex:a}}))}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}toJSON(){if(this.metadata.hasPendingWrites)throw new V(B.FAILED_PRECONDITION,`QuerySnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().`);let t={};t.type=e._jsonSchemaVersion,t.bundleSource=`QuerySnapshot`,t.bundleName=pi.newId(),this._firestore._databaseId.database,this._firestore._databaseId.projectId;let n=[],r=[],i=[];return this.docs.forEach((e=>{e._document!==null&&(n.push(e._document),r.push(this._userDataWriter.convertObjectMap(e._document.data.value.mapValue.fields,`previous`)),i.push(e.ref.path))})),t.bundle=(this._firestore,this.query._query,t.bundleName,`NOT SUPPORTED`),t}};function pg(e){switch(e){case 0:return`added`;case 2:case 3:return`modified`;case 1:return`removed`;default:return F(61501,{type:e})}}fg._jsonSchemaVersion=`firestore/querySnapshot/1.0`,fg._jsonSchema={type:zi(`string`,fg._jsonSchemaVersion),bundleSource:zi(`string`,`QuerySnapshot`),bundleName:zi(`string`),bundle:zi(`string`)};function mg(e){if(e.limitType===`L`&&e.explicitOrderBy.length===0)throw new V(B.UNIMPLEMENTED,`limitToLast() queries require specifying at least one orderBy() clause`)}var hg=class{},gg=class extends hg{};function _g(e,t,...n){let r=[];t instanceof hg&&r.push(t),r=r.concat(n),function(e){let t=e.filter((e=>e instanceof bg)).length,n=e.filter((e=>e instanceof vg)).length;if(t>1||t>0&&n>0)throw new V(B.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(r);for(let t of r)e=t._apply(e);return e}var vg=class e extends gg{constructor(e,t,n){super(),this._field=e,this._op=t,this._value=n,this.type=`where`}static _create(t,n,r){return new e(t,n,r)}_apply(e){let t=this._parse(e);return Cg(e._query,t),new Yl(e.firestore,e.converter,ms(e._query,t))}_parse(e){let t=ou(e.firestore);return function(e,t,n,r,i,a,o){let s;if(i.isKeyField()){if(a===`array-contains`||a===`array-contains-any`)throw new V(B.INVALID_ARGUMENT,`Invalid Query. You can't perform '${a}' queries on documentId().`);if(a===`in`||a===`not-in`){Sg(o,a);let t=[];for(let n of o)t.push(xg(r,e,n));s={arrayValue:{values:t}}}else s=xg(r,e,o)}else a!==`in`&&a!==`not-in`&&a!==`array-contains-any`||Sg(o,a),s=cu(n,t,o,a===`in`||a===`not-in`);return ko.create(i,a,s)}(e._query,`where`,t,e.firestore._databaseId,this._field,this._op,this._value)}};function yg(e,t,n){let r=t,i=pu(`where`,e);return vg._create(i,r,n)}var bg=class e extends hg{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(t,n){return new e(t,n)}_parse(e){let t=this._queryConstraints.map((t=>t._parse(e))).filter((e=>e.getFilters().length>0));return t.length===1?t[0]:Ao.create(t,this._getOperator())}_apply(e){let t=this._parse(e);return t.getFilters().length===0?e:(function(e,t){let n=e,r=t.getFlattenedFilters();for(let e of r)Cg(n,e),n=ms(n,e)}(e._query,t),new Yl(e.firestore,e.converter,ms(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return this.type===`and`?`and`:`or`}};function xg(e,t,n){if(typeof(n=v(n))==`string`){if(n===``)throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.`);if(!us(t)&&n.indexOf(`/`)!==-1)throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);let r=t.path.child(H.fromString(n));if(!U.isDocumentKey(r))throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);return Oa(e,new U(r))}if(n instanceof Xl)return Oa(e,n._key);throw new V(B.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${Li(n)}.`)}function Sg(e,t){if(!Array.isArray(e)||e.length===0)throw new V(B.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function Cg(e,t){let n=function(e,t){for(let n of e)for(let e of n.getFlattenedFilters())if(t.indexOf(e.op)>=0)return e.op;return null}(e.filters,function(e){switch(e){case`!=`:return[`!=`,`not-in`];case`array-contains-any`:case`in`:return[`not-in`];case`not-in`:return[`array-contains-any`,`in`,`not-in`,`!=`];default:return[]}}(t.op));if(n!==null)throw n===t.op?new V(B.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new V(B.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${n.toString()}' filters.`)}function wg(e){e=Ri(e,Xl);let t=Ri(e.firestore,ig);return Jh(og(t),e._key).then((n=>kg(t,e,n)))}function Tg(e){e=Ri(e,Yl);let t=Ri(e.firestore,ig),n=og(t),r=new cg(t);return mg(e._query),Yh(n,e._query).then((n=>new fg(t,r,e,n)))}function Eg(e,t,n){e=Ri(e,Xl);let r=Ri(e.firestore,ig),i=eg(e.converter,t,n);return Og(r,[su(ou(r),`setDoc`,e._key,i,e.converter!==null,n).toMutation(e._key,lo.none())])}function Dg(e){return Og(Ri(e.firestore,ig),[new Co(e._key,lo.none())])}function Og(e,t){return Xh(og(e),t)}function kg(e,t,n){let r=n.docs.get(t._key);return new ug(e,new cg(e),t._key,r,new lg(n.hasPendingWrites,n.fromCache),t.converter)}var Ag=`@firebase/firestore`,jg=`4.17.1`;(function(e,t=!0){ai(Xt),Kt(new De(`firestore`,((e,{instanceIdentifier:n,options:r})=>{let i=e.getProvider(`app`).getImmediate(),a=new ig(new Qc(e.getProvider(`auth-internal`)),new nl(i,e.getProvider(`app-check-internal`)),aa(i,n),i);return r={useFetchStreams:t,...r},a._setSettings(r),a}),`PUBLIC`).setMultipleInstances(!0)),en(Ag,jg,e),en(Ag,jg,`esm2020`)})(),en(`firebase`,`12.18.0`,`app`);function Mg(){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 Ng=Mg,Pg=new pe(`auth`,`Firebase`,Mg()),Fg=new Re(`@firebase/auth`);function Ig(e,...t){Fg.logLevel<=y.WARN&&Fg.warn(`Auth (${Xt}): ${e}`,...t)}function Lg(e,...t){Fg.logLevel<=y.ERROR&&Fg.error(`Auth (${Xt}): ${e}`,...t)}function Rg(e,...t){throw Ug(e,...t)}function zg(e,...t){return Ug(e,...t)}function Bg(e,t,n){return new pe(`auth`,`Firebase`,{...Ng(),[t]:n}).create(t,{appName:e.name})}function Vg(e){return Bg(e,`operation-not-supported-in-this-environment`,`Operations that alter the current user are not supported in conjunction with FirebaseServerApp`)}function Hg(e,t,n){let r=n;if(!(t instanceof r))throw r.name!==t.constructor.name&&Rg(e,`argument-error`),Bg(e,`argument-error`,`Type of ${t.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}function Ug(e,...t){if(typeof e!=`string`){let n=t[0],r=[...t.slice(1)];return r[0]&&(r[0].appName=e.name),e._errorFactory.create(n,...r)}return Pg.create(e,...t)}function $(e,t,...n){if(!e)throw Ug(t,...n)}function Wg(e){let t=`INTERNAL ASSERTION FAILED: `+e;throw Lg(t),Error(t)}function Gg(e,t){e||Wg(t)}function Kg(){return typeof self<`u`&&self.location?.href||``}function qg(){return Jg()===`http:`||Jg()===`https:`}function Jg(){return typeof self<`u`&&self.location?.protocol||null}function Yg(){return typeof navigator<`u`&&navigator&&`onLine`in navigator&&typeof navigator.onLine==`boolean`&&(qg()||ae()||`connection`in navigator)?navigator.onLine:!0}function Xg(){if(typeof navigator>`u`)return null;let e=navigator;return e.languages&&e.languages[0]||e.language||null}var Zg=class{constructor(e,t){this.shortDelay=e,this.longDelay=t,Gg(t>e,`Short delay should be less than long delay!`),this.isMobile=ne()||oe()}get(){return Yg()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}};function Qg(e,t){Gg(e.emulator,`Emulator should always be set here`);let{url:n}=e.emulator;return t?`${n}${t.startsWith(`/`)?t.slice(1):t}`:n}var $g=class{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}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;Wg(`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;Wg(`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;Wg(`Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill`)}},e_={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`},t_=[`/v1/accounts:signInWithCustomToken`,`/v1/accounts:signInWithEmailLink`,`/v1/accounts:signInWithIdp`,`/v1/accounts:signInWithPassword`,`/v1/accounts:signInWithPhoneNumber`,`/v1/token`],n_=new Zg(3e4,6e4);function r_(e,t){return e.tenantId&&!t.tenantId?{...t,tenantId:e.tenantId}:t}async function i_(e,t,n,r,i={}){return a_(e,i,async()=>{let i={},a={};r&&(t===`GET`?a=r:i={body:JSON.stringify(r)});let o=ve({...a,key:e.config.apiKey}).slice(1),s=await e._getAdditionalHeaders();s[`Content-Type`]=`application/json`,e.languageCode&&(s[`X-Firebase-Locale`]=e.languageCode);let c={method:t,headers:s,...i};return ie()||(c.referrerPolicy=`strict-origin-when-cross-origin`),e.emulatorConfig&&Te(e.emulatorConfig.host)&&(c.credentials=`include`),$g.fetch()(await s_(e,e.config.apiHost,n,o),c)})}async function a_(e,t,n){e._canInitEmulator=!1;let r={...e_,...t};try{let t=new l_(e),i=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();let a=await i.json();if(`needConfirmation`in a)throw u_(e,`account-exists-with-different-credential`,a);if(i.ok&&!(`errorMessage`in a))return a;{let[t,n]=(i.ok?a.errorMessage:a.error.message).split(` : `);if(t===`FEDERATED_USER_ID_ALREADY_LINKED`)throw u_(e,`credential-already-in-use`,a);if(t===`EMAIL_EXISTS`)throw u_(e,`email-already-in-use`,a);if(t===`USER_DISABLED`)throw u_(e,`user-disabled`,a);let o=r[t]||t.toLowerCase().replace(/[_\s]+/g,`-`);if(n)throw Bg(e,o,n);Rg(e,o)}}catch(t){if(t instanceof fe)throw t;Rg(e,`network-request-failed`,{message:String(t)})}}async function o_(e,t,n,r,i={}){let a=await i_(e,t,n,r,i);return`mfaPendingCredential`in a&&Rg(e,`multi-factor-auth-required`,{_serverResponse:a}),a}async function s_(e,t,n,r){let i=`${t}${n}?${r}`,a=e,o=a.config.emulator?Qg(e.config,i):`${e.config.apiScheme}://${i}`;return t_.includes(n)&&(await a._persistenceManagerAvailable,a._getPersistenceType()===`COOKIE`)?a._getPersistence()._getFinalTarget(o).toString():o}function c_(e){switch(e){case`ENFORCE`:return`ENFORCE`;case`AUDIT`:return`AUDIT`;case`OFF`:return`OFF`;default:return`ENFORCEMENT_STATE_UNSPECIFIED`}}var l_=class{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(zg(this.auth,`network-request-failed`)),n_.get())})}};function u_(e,t,n){let r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);let i=zg(e,t,r);return i.customData._tokenResponse=n,i}function d_(e){return e!==void 0&&e.enterprise!==void 0}var f_=class{constructor(e){if(this.siteKey=``,this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw 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 c_(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 p_(e,t){return i_(e,`GET`,`/v2/recaptchaConfig`,r_(e,t))}async function m_(e,t){return i_(e,`POST`,`/v1/accounts:delete`,t)}async function h_(e,t){return i_(e,`POST`,`/v1/accounts:lookup`,t)}function g_(e){if(e)try{let t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch{}}async function __(e,t=!1){let n=v(e),r=await n.getIdToken(t),i=y_(r);$(i&&i.exp&&i.auth_time&&i.iat,n.auth,`internal-error`);let a=typeof i.firebase==`object`?i.firebase:void 0,o=a?.sign_in_provider;return{claims:i,token:r,authTime:g_(v_(i.auth_time)),issuedAtTime:g_(v_(i.iat)),expirationTime:g_(v_(i.exp)),signInProvider:o||null,signInSecondFactor:a?.sign_in_second_factor||null}}function v_(e){return Number(e)*1e3}function y_(e){let[t,n,r]=e.split(`.`);if(t===void 0||n===void 0||r===void 0)return Lg(`JWT malformed, contained fewer than 3 sections`),null;try{let e=s(n);return e?JSON.parse(e):(Lg(`Failed to decode base64 JWT payload`),null)}catch(e){return Lg(`Caught error parsing JWT payload as JSON`,e?.toString()),null}}function b_(e){let t=y_(e);return $(t,`internal-error`),$(t.exp!==void 0,`internal-error`),$(t.iat!==void 0,`internal-error`),Number(t.exp)-Number(t.iat)}async function x_(e,t,n=!1){if(n)return t;try{return await t}catch(t){throw t instanceof fe&&S_(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}function S_({code:e}){return e===`auth/user-disabled`||e===`auth/user-token-expired`}var C_=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 e=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),e}{this.errorBackoff=3e4;let e=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,e)}}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()}},w_=class{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=g_(this.lastLoginAt),this.creationTime=g_(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}};async function T_(e){let t=e.auth,n=await x_(e,h_(t,{idToken:await e.getIdToken()}));$(n?.users.length,t,`internal-error`);let r=n.users[0];e._notifyReloadListener(r);let i=r.providerUserInfo?.length?O_(r.providerUserInfo):[],a=D_(e.providerData,i),o=e.isAnonymous,s=!(e.email&&r.passwordHash)&&!a?.length,c=o?s:!1,l={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:a,metadata:new w_(r.createdAt,r.lastLoginAt),isAnonymous:c};Object.assign(e,l)}async function E_(e){let t=v(e);await T_(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}function D_(e,t){return[...e.filter(e=>!t.some(t=>t.providerId===e.providerId)),...t]}function O_(e){return e.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 k_(e,t){let n=await a_(e,{},async()=>{let n=ve({grant_type:`refresh_token`,refresh_token:t}).slice(1),{tokenApiHost:r,apiKey:i}=e.config,a=await s_(e,r,`/v1/token`,`key=${i}`),o=await e._getAdditionalHeaders();o[`Content-Type`]=`application/x-www-form-urlencoded`;let s={method:`POST`,headers:o,body:n};return e.emulatorConfig&&Te(e.emulatorConfig.host)&&(s.credentials=`include`),$g.fetch()(a,s)});return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}async function A_(e,t){return i_(e,`POST`,`/v2/accounts:revokeToken`,r_(e,t))}var j_=class e{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){$(e.idToken,`internal-error`),$(e.idToken!==void 0,`internal-error`),$(e.refreshToken!==void 0,`internal-error`);let t=`expiresIn`in e&&e.expiresIn!==void 0?Number(e.expiresIn):b_(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){$(e.length!==0,`internal-error`);let t=b_(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:($(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:n,refreshToken:r,expiresIn:i}=await k_(e,t);this.updateTokensAndExpiration(n,r,Number(i))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+n*1e3}static fromJSON(t,n){let{refreshToken:r,accessToken:i,expirationTime:a}=n,o=new e;return r&&($(typeof r==`string`,`internal-error`,{appName:t}),o.refreshToken=r),i&&($(typeof i==`string`,`internal-error`,{appName:t}),o.accessToken=i),a&&($(typeof a==`number`,`internal-error`,{appName:t}),o.expirationTime=a),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 e,this.toJSON())}_performRefresh(){return Wg(`not implemented`)}};function M_(e,t){$(typeof e==`string`||e===void 0,`internal-error`,{appName:t})}var N_=class e{constructor({uid:e,auth:t,stsTokenManager:n,...r}){this.providerId=`firebase`,this.proactiveRefresh=new C_(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=n,this.accessToken=n.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 w_(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){let t=await x_(this,this.stsTokenManager.getToken(this.auth,e));return $(t,this.auth,`internal-error`),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return __(this,e)}reload(){return E_(this)}_assign(e){this!==e&&($(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(e=>({...e})),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(t){let n=new e({...this,auth:t,stsTokenManager:this.stsTokenManager._clone()});return n.metadata._copy(this.metadata),n}_onReload(e){$(!this.reloadListener,this.auth,`internal-error`),this.reloadListener=e,this.reloadUserInfo&&=(this._notifyReloadListener(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 n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await T_(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(Jt(this.auth.app))return Promise.reject(Vg(this.auth));let e=await this.getIdToken();return await x_(this,m_(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(t,n){let r=n.displayName??void 0,i=n.email??void 0,a=n.phoneNumber??void 0,o=n.photoURL??void 0,s=n.tenantId??void 0,c=n._redirectEventId??void 0,l=n.createdAt??void 0,u=n.lastLoginAt??void 0,{uid:d,emailVerified:f,isAnonymous:p,providerData:m,stsTokenManager:h}=n;$(d&&h,t,`internal-error`);let g=j_.fromJSON(this.name,h);$(typeof d==`string`,t,`internal-error`),M_(r,t.name),M_(i,t.name),$(typeof f==`boolean`,t,`internal-error`),$(typeof p==`boolean`,t,`internal-error`),M_(a,t.name),M_(o,t.name),M_(s,t.name),M_(c,t.name),M_(l,t.name),M_(u,t.name);let ee=new e({uid:d,auth:t,email:i,emailVerified:f,displayName:r,isAnonymous:p,photoURL:o,phoneNumber:a,tenantId:s,stsTokenManager:g,createdAt:l,lastLoginAt:u});return m&&Array.isArray(m)&&(ee.providerData=m.map(e=>({...e}))),c&&(ee._redirectEventId=c),ee}static async _fromIdTokenResponse(t,n,r=!1){let i=new j_;i.updateFromServerResponse(n);let a=new e({uid:n.localId,auth:t,stsTokenManager:i,isAnonymous:r});return await T_(a),a}static async _fromGetAccountInfoResponse(t,n,r){let i=n.users[0];$(i.localId!==void 0,`internal-error`);let a=i.providerUserInfo===void 0?[]:O_(i.providerUserInfo),o=!(i.email&&i.passwordHash)&&!a?.length,s=new j_;s.updateFromIdToken(r);let c=new e({uid:i.localId,auth:t,stsTokenManager:s,isAnonymous:o}),l={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:a,metadata:new w_(i.createdAt,i.lastLoginAt),isAnonymous:!(i.email&&i.passwordHash)&&!a?.length};return Object.assign(c,l),c}},P_=new Map;function F_(e){Gg(e instanceof Function,`Expected a class definition`);let t=P_.get(e);return t?(Gg(t instanceof e,`Instance stored in cache mismatched with class`),t):(t=new e,P_.set(e,t),t)}var I_=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){}};I_.type=`NONE`;var L_=I_;function R_(e,t,n){return`firebase:${e}:${t}:${n}`}var z_=class e{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;let{config:r,name:i}=this.auth;this.fullUserKey=R_(this.userKey,r.apiKey,i),this.fullPersistenceKey=R_(`persistence`,r.apiKey,i),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 h_(this.auth,{idToken:e}).catch(()=>void 0);return t?N_._fromGetAccountInfoResponse(this.auth,t,e):null}return N_._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(t,n,r=`authUser`){if(!n.length)return new e(F_(L_),t,r);let i=(await Promise.all(n.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e),a=i[0]||F_(L_),o=R_(r,t.config.apiKey,t.name),s=null;for(let e of n)try{let n=await e._get(o);if(n){let r;if(typeof n==`string`){let e=await h_(t,{idToken:n}).catch(()=>void 0);if(!e)break;r=await N_._fromGetAccountInfoResponse(t,e,n)}else r=N_._fromJSON(t,n);e!==a&&(s=r),a=e;break}}catch{}let c=i.filter(e=>e._shouldAllowMigration);return!a._shouldAllowMigration||!c.length?new e(a,t,r):(a=c[0],s&&await a._set(o,s.toJSON()),await Promise.all(n.map(async e=>{if(e!==a)try{await e._remove(o)}catch{}})),new e(a,t,r))}};function B_(e){let t=e.toLowerCase();if(t.includes(`opera/`)||t.includes(`opr/`)||t.includes(`opios/`))return`Opera`;if(W_(t))return`IEMobile`;if(t.includes(`msie`)||t.includes(`trident/`))return`IE`;if(t.includes(`edge/`))return`Edge`;if(V_(t))return`Firefox`;if(t.includes(`silk/`))return`Silk`;if(K_(t))return`Blackberry`;if(q_(t))return`Webos`;if(H_(t))return`Safari`;if((t.includes(`chrome/`)||U_(t))&&!t.includes(`edge/`))return`Chrome`;if(G_(t))return`Android`;{let t=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);if(t?.length===2)return t[1]}return`Other`}function V_(e=_()){return/firefox\//i.test(e)}function H_(e=_()){let t=e.toLowerCase();return t.includes(`safari/`)&&!t.includes(`chrome/`)&&!t.includes(`crios/`)&&!t.includes(`android`)}function U_(e=_()){return/crios\//i.test(e)}function W_(e=_()){return/iemobile/i.test(e)}function G_(e=_()){return/android/i.test(e)}function K_(e=_()){return/blackberry/i.test(e)}function q_(e=_()){return/webos/i.test(e)}function J_(e=_()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function Y_(e=_()){return J_(e)&&!!window.navigator?.standalone}function X_(){return se()&&document.documentMode===10}function Z_(e=_()){return J_(e)||G_(e)||q_(e)||K_(e)||/windows phone/i.test(e)||W_(e)}function Q_(e,t=[]){let n;switch(e){case`Browser`:n=B_(_());break;case`Worker`:n=`${B_(_())}-${e}`;break;default:n=e}let r=t.length?t.join(`,`):`FirebaseCore-web`;return`${n}/JsCore/${Xt}/${r}`}var $_=class{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let n=t=>new Promise((n,r)=>{try{n(e(t))}catch(e){r(e)}});n.onAbort=t,this.queue.push(n);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 n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(let e of t)try{e()}catch{}throw this.auth._errorFactory.create(`login-blocked`,{originalMessage:e?.message})}}};async function ev(e,t={}){return i_(e,`GET`,`/v2/passwordPolicy`,r_(e,t))}var tv=6,nv=class{constructor(e){let t=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=t.minPasswordLength??tv,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.meetsMinPasswordLength??!0,t.isValid&&=t.meetsMaxPasswordLength??!0,t.isValid&&=t.containsLowercaseLetter??!0,t.isValid&&=t.containsUppercaseLetter??!0,t.isValid&&=t.containsNumericCharacter??!0,t.isValid&&=t.containsNonAlphanumericCharacter??!0,t}validatePasswordLengthOptions(e,t){let n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let n;for(let r=0;r<e.length;r++)n=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,n>=`a`&&n<=`z`,n>=`A`&&n<=`Z`,n>=`0`&&n<=`9`,this.allowedNonAlphanumericCharacters.includes(n))}updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||=t),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||=n),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||=r),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||=i)}},rv=class{constructor(e,t,n,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=n,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new av(this),this.idTokenSubscription=new av(this),this.beforeStateQueue=new $_(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=Pg,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(e=>this._resolvePersistenceManagerAvailable=e)}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=F_(t)),this._initializationPromise=this.queue(async()=>{if(!this._deleted&&(this.persistenceManager=await z_.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 h_(this,{idToken:e}),n=await N_._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(n)}catch(e){console.warn(`FirebaseServerApp could not login user with provided authIdToken: `,e),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(Jt(this.app)){let e=this.app.settings.authIdToken;return e?new Promise(t=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(e).then(t,t))}):this.directlySetCurrentUser(null)}let t=await this.assertedPersistence.getCurrentUser(),n=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let t=this.redirectUser?._redirectEventId,i=n?._redirectEventId,a=await this.tryRedirectSignIn(e);(!t||t===i)&&a?.user&&(n=a.user,r=!0)}if(!n)return this.directlySetCurrentUser(null);if(!n._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(n)}catch(e){n=t,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return n?this.reloadAndSetCurrentUserOrClear(n):this.directlySetCurrentUser(null)}return $(this._popupRedirectResolver,this,`argument-error`),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===n._redirectEventId?this.directlySetCurrentUser(n):this.reloadAndSetCurrentUserOrClear(n)}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 T_(e)}catch(e){if(e?.code!==`auth/network-request-failed`)return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=Xg()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(Jt(this.app))return Promise.reject(Vg(this));let t=e?v(e):null;return t&&$(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&&$(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 Jt(this.app)?Promise.reject(Vg(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return Jt(this.app)?Promise.reject(Vg(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(F_(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?t.validatePassword(e):Promise.reject(this._errorFactory.create(`unsupported-password-policy-schema-version`,{}))}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=new nv(await ev(this));this.tenantId===null?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistenceType(){return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){this._errorFactory=new pe(`auth`,`Firebase`,e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{let n=this.onAuthStateChanged(()=>{n(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t={providerId:`apple.com`,tokenType:`ACCESS_TOKEN`,token:e,idToken:await this.currentUser.getIdToken()};this.tenantId!=null&&(t.tenantId=this.tenantId),await A_(this,t)}}toJSON(){return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){let n=await this.getOrInitRedirectPersistenceManager(t);return e===null?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&F_(e)||this._popupRedirectResolver;$(t,this,`argument-error`),this.redirectPersistenceManager=await z_.create(this,[F_(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,n,r){if(this._deleted)return()=>{};let i=typeof t==`function`?t:t.next.bind(t),a=!1,o=this._isInitialized?Promise.resolve():this._initializationPromise;if($(o,this,`internal-error`),o.then(()=>{a||i(this.currentUser)}),typeof t==`function`){let i=e.addObserver(t,n,r);return()=>{a=!0,i()}}{let n=e.addObserver(t);return()=>{a=!0,n()}}}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 $(this.persistenceManager,this,`internal-error`),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Q_(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 n=await this._getAppCheckToken();return n&&(e[`X-Firebase-AppCheck`]=n),e}async _getAppCheckToken(){if(Jt(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;let e=await this.appCheckServiceProvider.getImmediate({optional:!0})?.getToken();return e?.error&&Ig(`Error while retrieving App Check token: ${e.error}`),e?.token}};function iv(e){return v(e)}var av=class{constructor(e){this.auth=e,this.observer=null,this.addObserver=xe(e=>this.observer=e)}get next(){return $(this.observer,this.auth,`internal-error`),this.observer.next.bind(this.observer)}},ov={async loadJS(){throw Error(`Unable to load external scripts`)},recaptchaV2Script:``,recaptchaEnterpriseScript:``,gapiScript:``};function sv(e){ov=e}function cv(e){return ov.loadJS(e)}function lv(){return ov.recaptchaEnterpriseScript}function uv(){return ov.gapiScript}function dv(e){return`__${e}${Math.floor(Math.random()*1e6)}`}var fv=class{constructor(){this.enterprise=new pv}ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},pv=class{ready(e){e()}execute(e,t){return Promise.resolve(`token`)}render(e,t){return``}},mv=`recaptcha-enterprise`,hv=`NO_RECAPTCHA`,gv=`onFirebaseAuthREInstanceReady`,_v=class e{constructor(e){this.type=mv,this.auth=iv(e)}async verify(t=`verify`,n=!1){async function r(e){if(!n){if(e.tenantId==null&&e._agentRecaptchaConfig!=null)return e._agentRecaptchaConfig.siteKey;if(e.tenantId!=null&&e._tenantRecaptchaConfigs[e.tenantId]!==void 0)return e._tenantRecaptchaConfigs[e.tenantId].siteKey}return new Promise(async(t,n)=>{p_(e,{clientType:`CLIENT_TYPE_WEB`,version:`RECAPTCHA_ENTERPRISE`}).then(r=>{if(r.recaptchaKey===void 0)n(Error(`recaptcha Enterprise site key undefined`));else{let n=new f_(r);return e.tenantId==null?e._agentRecaptchaConfig=n:e._tenantRecaptchaConfigs[e.tenantId]=n,t(n.siteKey)}}).catch(e=>{n(e)})})}function i(e,n,r){let i=window.grecaptcha;d_(i)?i.enterprise.ready(()=>{i.enterprise.execute(e,{action:t}).then(e=>{n(e)}).catch(()=>{n(hv)})}):r(Error(`No reCAPTCHA enterprise script loaded.`))}return this.auth.settings.appVerificationDisabledForTesting?new fv().execute(`siteKey`,{action:`verify`}):new Promise((t,a)=>{r(this.auth).then(async r=>{if(!n&&d_(window.grecaptcha)&&e.scriptInjectionDeferred)await e.scriptInjectionDeferred.promise,i(r,t,a);else{if(typeof window>`u`){a(Error(`RecaptchaVerifier is only supported in browser`));return}let n=lv();n.length!==0&&(n+=r+`&onload=${gv}`),e.scriptInjectionDeferred=new ee,window[gv]=()=>{e.scriptInjectionDeferred?.resolve()},cv(n).then(()=>e.scriptInjectionDeferred?.promise).then(()=>{i(r,t,a)}).catch(e=>{a(e)})}}).catch(e=>{a(e)})})}};_v.scriptInjectionDeferred=null;async function vv(e,t,n,r=!1,i=!1){let a=new _v(e),o;if(i)o=hv;else try{o=await a.verify(n)}catch{o=await a.verify(n,!0)}let s={...t};if(n===`mfaSmsEnrollment`||n===`mfaSmsSignIn`){if(`phoneEnrollmentInfo`in s){let e=s.phoneEnrollmentInfo.phoneNumber,t=s.phoneEnrollmentInfo.recaptchaToken;Object.assign(s,{phoneEnrollmentInfo:{phoneNumber:e,recaptchaToken:t,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}else if(`phoneSignInInfo`in s){let e=s.phoneSignInInfo.recaptchaToken;Object.assign(s,{phoneSignInInfo:{recaptchaToken:e,captchaResponse:o,clientType:`CLIENT_TYPE_WEB`,recaptchaVersion:`RECAPTCHA_ENTERPRISE`}})}return s}return r?Object.assign(s,{captchaResp:o}):Object.assign(s,{captchaResponse:o}),Object.assign(s,{clientType:`CLIENT_TYPE_WEB`}),Object.assign(s,{recaptchaVersion:`RECAPTCHA_ENTERPRISE`}),s}async function yv(e,t,n,r,i){return i===`EMAIL_PASSWORD_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`EMAIL_PASSWORD_PROVIDER`)?r(e,await vv(e,t,n,n===`getOobCode`)):r(e,t).catch(async i=>i.code===`auth/missing-recaptcha-token`?(console.log(`${n} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`),r(e,await vv(e,t,n,n===`getOobCode`))):Promise.reject(i)):i===`PHONE_PROVIDER`?e._getRecaptchaConfig()?.isProviderEnabled(`PHONE_PROVIDER`)?r(e,await vv(e,t,n)).catch(async i=>e._getRecaptchaConfig()?.getProviderEnforcementState(`PHONE_PROVIDER`)===`AUDIT`&&(i.code===`auth/missing-recaptcha-token`||i.code===`auth/invalid-app-credential`)?(console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${n} flow.`),r(e,await vv(e,t,n,!1,!0))):Promise.reject(i)):r(e,await vv(e,t,n,!1,!0)):Promise.reject(i+` provider is not supported.`)}function bv(e,t){let n=qt(e,`auth`);if(n.isInitialized()){let e=n.getImmediate();if(ge(n.getOptions(),t??{}))return e;Rg(e,`already-initialized`)}return n.initialize({options:t})}function xv(e,t){let n=t?.persistence||[],r=(Array.isArray(n)?n:[n]).map(F_);t?.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,t?.popupRedirectResolver)}function Sv(e,t,n){let r=iv(e);$(/^https?:\/\//.test(t),r,`invalid-emulator-scheme`);let i=!!n?.disableWarnings,a=Cv(t),{host:o,port:s}=wv(t),c=s===null?``:`:${s}`,l={url:`${a}//${o}${c}/`},u=Object.freeze({host:o,port:s,protocol:a.replace(`:`,``),options:Object.freeze({disableWarnings:i})});if(!r._canInitEmulator){$(r.config.emulator&&r.emulatorConfig,r,`emulator-config-failed`),$(ge(l,r.config.emulator)&&ge(u,r.emulatorConfig),r,`emulator-config-failed`);return}r.config.emulator=l,r.emulatorConfig=u,r.settings.appVerificationDisabledForTesting=!0,Te(o)?Ee(`${a}//${o}${c}`):i||Ev()}function Cv(e){let t=e.indexOf(`:`);return t<0?``:e.substr(0,t+1)}function wv(e){let t=Cv(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:``,port:null};let r=n[2].split(`@`).pop()||``,i=/^(\[[^\]]+\])(:|$)/.exec(r);if(i){let e=i[1];return{host:e,port:Tv(r.substr(e.length+1))}}{let[e,t]=r.split(`:`);return{host:e,port:Tv(t)}}}function Tv(e){if(!e)return null;let t=Number(e);return isNaN(t)?null:t}function Ev(){function e(){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`,e):e())}var Dv=class{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return Wg(`not implemented`)}_getIdTokenResponse(e){return Wg(`not implemented`)}_linkToIdToken(e,t){return Wg(`not implemented`)}_getReauthenticationResolver(e){return Wg(`not implemented`)}};async function Ov(e,t){return i_(e,`POST`,`/v1/accounts:update`,t)}async function kv(e,t){return i_(e,`POST`,`/v1/accounts:signUp`,t)}async function Av(e,t){return o_(e,`POST`,`/v1/accounts:signInWithPassword`,r_(e,t))}async function jv(e,t){return i_(e,`POST`,`/v1/accounts:sendOobCode`,r_(e,t))}async function Mv(e,t){return jv(e,t)}async function Nv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithEmailLink`,r_(e,t))}async function Pv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithEmailLink`,r_(e,t))}var Fv=class e extends Dv{constructor(e,t,n,r=null){super(`password`,n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(t,n){return new e(t,n,`password`)}static _fromEmailAndCode(t,n,r=null){return new e(t,n,`emailLink`,r)}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`:return yv(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signInWithPassword`,Av,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return Nv(e,{email:this._email,oobCode:this._password});default:Rg(e,`internal-error`)}}async _linkToIdToken(e,t){switch(this.signInMethod){case`password`:return yv(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,kv,`EMAIL_PASSWORD_PROVIDER`);case`emailLink`:return Pv(e,{idToken:t,email:this._email,oobCode:this._password});default:Rg(e,`internal-error`)}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}};async function Iv(e,t){return o_(e,`POST`,`/v1/accounts:signInWithIdp`,r_(e,t))}var Lv=`http://localhost`,Rv=class e extends Dv{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(t){let n=new e(t.providerId,t.signInMethod);return t.idToken||t.accessToken?(t.idToken&&(n.idToken=t.idToken),t.accessToken&&(n.accessToken=t.accessToken),t.nonce&&!t.pendingToken&&(n.nonce=t.nonce),t.pendingToken&&(n.pendingToken=t.pendingToken)):t.oauthToken&&t.oauthTokenSecret?(n.accessToken=t.oauthToken,n.secret=t.oauthTokenSecret):Rg(`argument-error`),n}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(t){let{providerId:n,signInMethod:r,...i}=typeof t==`string`?JSON.parse(t):t;if(!n||!r)return null;let a=new e(n,r);return a.idToken=i.idToken||void 0,a.accessToken=i.accessToken||void 0,a.secret=i.secret,a.nonce=i.nonce,a.pendingToken=i.pendingToken||null,a}_getIdTokenResponse(e){return Iv(e,this.buildRequest())}_linkToIdToken(e,t){let n=this.buildRequest();return n.idToken=t,Iv(e,n)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,Iv(e,t)}buildRequest(){let e={requestUri:Lv,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=ve(t)}return e}};function zv(e){switch(e){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 Bv(e){let t=ye(be(e)).link,n=t?ye(be(t)).deep_link_id:null,r=ye(be(e)).deep_link_id;return(r?ye(be(r)).link:null)||r||n||t||e}var Vv=class e{constructor(e){let t=ye(be(e)),n=t.apiKey??null,r=t.oobCode??null,i=zv(t.mode??null);$(n&&r&&i,`argument-error`),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=t.continueUrl??null,this.languageCode=t.lang??null,this.tenantId=t.tenantId??null}static parseLink(t){let n=Bv(t);try{return new e(n)}catch{return null}}},Hv=class e{constructor(){this.providerId=e.PROVIDER_ID}static credential(e,t){return Fv._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let n=Vv.parseLink(t);return $(n,`argument-error`),Fv._fromEmailAndCode(e,n.code,n.tenantId)}};Hv.PROVIDER_ID=`password`,Hv.EMAIL_PASSWORD_SIGN_IN_METHOD=`password`,Hv.EMAIL_LINK_SIGN_IN_METHOD=`emailLink`;var Uv=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}},Wv=class extends Uv{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}},Gv=class e extends Wv{static credentialFromJSON(e){let t=typeof e==`string`?JSON.parse(e):e;return $(`providerId`in t&&`signInMethod`in t,`argument-error`),Rv._fromParams(t)}credential(e){return this._credential({...e,nonce:e.rawNonce})}_credential(e){return $(e.idToken||e.accessToken,`argument-error`),Rv._fromParams({...e,providerId:this.providerId,signInMethod:this.providerId})}static credentialFromResult(t){return e.oauthCredentialFromTaggedObject(t)}static credentialFromError(t){return e.oauthCredentialFromTaggedObject(t.customData||{})}static oauthCredentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthIdToken:n,oauthAccessToken:r,oauthTokenSecret:i,pendingToken:a,nonce:o,providerId:s}=t;if(!r&&!i&&!n&&!a||!s)return null;try{return new e(s)._credential({idToken:n,accessToken:r,nonce:o,pendingToken:a})}catch{return null}}},Kv=class e extends Wv{constructor(){super(`facebook.com`)}static credential(t){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.FACEBOOK_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};Kv.FACEBOOK_SIGN_IN_METHOD=`facebook.com`,Kv.PROVIDER_ID=`facebook.com`;var qv=class e extends Wv{constructor(){super(`google.com`),this.addScope(`profile`)}static credential(t,n){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GOOGLE_SIGN_IN_METHOD,idToken:t,accessToken:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthIdToken:n,oauthAccessToken:r}=t;if(!n&&!r)return null;try{return e.credential(n,r)}catch{return null}}};qv.GOOGLE_SIGN_IN_METHOD=`google.com`,qv.PROVIDER_ID=`google.com`;var Jv=class e extends Wv{constructor(){super(`github.com`)}static credential(t){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.GITHUB_SIGN_IN_METHOD,accessToken:t})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t||!(`oauthAccessToken`in t)||!t.oauthAccessToken)return null;try{return e.credential(t.oauthAccessToken)}catch{return null}}};Jv.GITHUB_SIGN_IN_METHOD=`github.com`,Jv.PROVIDER_ID=`github.com`;var Yv=class e extends Wv{constructor(){super(`twitter.com`)}static credential(t,n){return Rv._fromParams({providerId:e.PROVIDER_ID,signInMethod:e.TWITTER_SIGN_IN_METHOD,oauthToken:t,oauthTokenSecret:n})}static credentialFromResult(t){return e.credentialFromTaggedObject(t)}static credentialFromError(t){return e.credentialFromTaggedObject(t.customData||{})}static credentialFromTaggedObject({_tokenResponse:t}){if(!t)return null;let{oauthAccessToken:n,oauthTokenSecret:r}=t;if(!n||!r)return null;try{return e.credential(n,r)}catch{return null}}};Yv.TWITTER_SIGN_IN_METHOD=`twitter.com`,Yv.PROVIDER_ID=`twitter.com`;async function Xv(e,t){return o_(e,`POST`,`/v1/accounts:signUp`,r_(e,t))}var Zv=class e{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(t,n,r,i=!1){let a=await N_._fromIdTokenResponse(t,r,i),o=Qv(r);return new e({user:a,providerId:o,_tokenResponse:r,operationType:n})}static async _forOperation(t,n,r){await t._updateTokensIfNecessary(r,!0);let i=Qv(r);return new e({user:t,providerId:i,_tokenResponse:r,operationType:n})}};function Qv(e){return e.providerId?e.providerId:`phoneNumber`in e?`phone`:null}var $v=class e extends fe{constructor(t,n,r,i){super(n.code,n.message),this.operationType=r,this.user=i,Object.setPrototypeOf(this,e.prototype),this.customData={appName:t.name,tenantId:t.tenantId??void 0,_serverResponse:n.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(t,n,r,i){return new e(t,n,r,i)}};function ey(e,t,n,r){return(t===`reauthenticate`?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch(n=>{throw n.code===`auth/multi-factor-auth-required`?$v._fromErrorAndOperation(e,n,t,r):n})}async function ty(e,t,n=!1){let r=await x_(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Zv._forOperation(e,`link`,r)}async function ny(e,t,n=!1){let{auth:r}=e;if(Jt(r.app))return Promise.reject(Vg(r));let i=`reauthenticate`;try{let a=await x_(e,ey(r,i,t,e),n);$(a.idToken,r,`internal-error`);let o=y_(a.idToken);$(o,r,`internal-error`);let{sub:s}=o;return $(e.uid===s,r,`user-mismatch`),Zv._forOperation(e,i,a)}catch(e){throw e?.code===`auth/user-not-found`&&Rg(r,`user-mismatch`),e}}async function ry(e,t,n=!1){if(Jt(e.app))return Promise.reject(Vg(e));let r=`signIn`,i=await ey(e,r,t),a=await Zv._fromIdTokenResponse(e,r,i);return n||await e._updateCurrentUser(a.user),a}async function iy(e,t){return ry(iv(e),t)}async function ay(e,t){return ny(v(e),t)}function oy(e,t,n){$(n.url?.length>0,e,`invalid-continue-uri`),$(n.dynamicLinkDomain===void 0||n.dynamicLinkDomain.length>0,e,`invalid-dynamic-link-domain`),$(n.linkDomain===void 0||n.linkDomain.length>0,e,`invalid-hosting-link-domain`),t.continueUrl=n.url,t.dynamicLinkDomain=n.dynamicLinkDomain,t.linkDomain=n.linkDomain,t.canHandleCodeInApp=n.handleCodeInApp,n.iOS&&($(n.iOS.bundleId.length>0,e,`missing-ios-bundle-id`),t.iOSBundleId=n.iOS.bundleId),n.android&&($(n.android.packageName.length>0,e,`missing-android-pkg-name`),t.androidInstallApp=n.android.installApp,t.androidMinimumVersionCode=n.android.minimumVersion,t.androidPackageName=n.android.packageName)}async function sy(e){let t=iv(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}async function cy(e,t,n){let r=iv(e),i={requestType:`PASSWORD_RESET`,email:t,clientType:`CLIENT_TYPE_WEB`};n&&oy(r,i,n),await yv(r,i,`getOobCode`,Mv,`EMAIL_PASSWORD_PROVIDER`)}async function ly(e,t,n){if(Jt(e.app))return Promise.reject(Vg(e));let r=iv(e),i=await yv(r,{returnSecureToken:!0,email:t,password:n,clientType:`CLIENT_TYPE_WEB`},`signUpPassword`,Xv,`EMAIL_PASSWORD_PROVIDER`).catch(t=>{throw t.code===`auth/password-does-not-meet-requirements`&&sy(e),t}),a=await Zv._fromIdTokenResponse(r,`signIn`,i);return await r._updateCurrentUser(a.user),a}function uy(e,t,n){return Jt(e.app)?Promise.reject(Vg(e)):iy(v(e),Hv.credential(t,n)).catch(async t=>{throw t.code===`auth/password-does-not-meet-requirements`&&sy(e),t})}async function dy(e,t){return i_(e,`POST`,`/v1/accounts:update`,t)}async function fy(e,{displayName:t,photoURL:n}){if(t===void 0&&n===void 0)return;let r=v(e),i={idToken:await r.getIdToken(),displayName:t,photoUrl:n,returnSecureToken:!0},a=await x_(r,dy(r.auth,i));r.displayName=a.displayName||null,r.photoURL=a.photoUrl||null;let o=r.providerData.find(({providerId:e})=>e===`password`);o&&(o.displayName=r.displayName,o.photoURL=r.photoURL),await r._updateTokensIfNecessary(a)}function py(e,t){return my(v(e),null,t)}async function my(e,t,n){let{auth:r}=e,i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);let a=await x_(e,Ov(r,i));await e._updateTokensIfNecessary(a,!0)}function hy(e,t,n,r){return v(e).onIdTokenChanged(t,n,r)}function gy(e,t,n){return v(e).beforeAuthStateChanged(t,n)}function _y(e,t,n,r){return v(e).onAuthStateChanged(t,n,r)}function vy(e){return v(e).signOut()}var yy=`__sak`,by=class{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(yy,`1`),this.storage.removeItem(yy),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()}},xy=1e3,Sy=10,Cy=class extends by{constructor(){super(()=>window.localStorage,`LOCAL`),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Z_(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let n=this.storage.getItem(t),r=this.localCache[t];n!==r&&e(t,r,n)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)});return}let n=e.key;t?this.detachListener():this.stopPolling();let r=()=>{let e=this.storage.getItem(n);!t&&this.localCache[n]===e||this.notifyListeners(n,e)},i=this.storage.getItem(n);X_()&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,Sy):r()}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{this.onStorageEvent(new StorageEvent(`storage`,{key:e,oldValue:t,newValue:n}),!0)})},xy)}stopPolling(){this.pollTimer&&=(clearInterval(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]}};Cy.type=`LOCAL`;var wy=Cy,Ty=class extends by{constructor(){super(()=>window.sessionStorage,`SESSION`)}_addListener(e,t){}_removeListener(e,t){}};Ty.type=`SESSION`;var Ey=Ty;function Dy(e){return Promise.all(e.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}}))}var Oy=class e{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){let n=this.receivers.find(e=>e.isListeningto(t));if(n)return n;let r=new e(t);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let t=e,{eventId:n,eventType:r,data:i}=t.data,a=this.handlersMap[r];if(!a?.size)return;t.ports[0].postMessage({status:`ack`,eventId:n,eventType:r});let o=await Dy(Array.from(a).map(async e=>e(t.origin,i)));t.ports[0].postMessage({status:`done`,eventId:n,eventType:r,response:o})}_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)}};Oy.receivers=[];function ky(e=``,t=10){let n=``;for(let e=0;e<t;e++)n+=Math.floor(Math.random()*10);return e+n}var Ay=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,n=50){let r=typeof MessageChannel<`u`?new MessageChannel:null;if(!r)throw Error(`connection_unavailable`);let i,a;return new Promise((o,s)=>{let c=ky(``,20);r.port1.start();let l=setTimeout(()=>{s(Error(`unsupported_event`))},n);a={messageChannel:r,onMessage(e){let t=e;if(t.data.eventId===c)switch(t.data.status){case`ack`:clearTimeout(l),i=setTimeout(()=>{s(Error(`timeout`))},3e3);break;case`done`:clearTimeout(i),o(t.data.response);break;default:clearTimeout(l),clearTimeout(i),s(Error(`invalid_response`))}}},this.handlers.add(a),r.port1.addEventListener(`message`,a.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[r.port2])}).finally(()=>{a&&this.removeMessageHandler(a)})}};function jy(){return window}function My(e){jy().location.href=e}function Ny(){return jy().WorkerGlobalScope!==void 0&&typeof jy().importScripts==`function`}async function Py(){if(!navigator?.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function Fy(){return navigator?.serviceWorker?.controller||null}function Iy(){return Ny()?self:null}var Ly=`firebaseLocalStorageDb`,Ry=1,zy=`firebaseLocalStorage`,By=`fbase_key`,Vy=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 Hy(e,t){return e.transaction([zy],t?`readwrite`:`readonly`).objectStore(zy)}function Uy(){return new Vy(indexedDB.deleteDatabase(Ly)).toPromise()}function Wy(){let e=indexedDB.open(Ly,Ry);return new Promise((t,n)=>{e.addEventListener(`error`,()=>{n(e.error)}),e.addEventListener(`upgradeneeded`,()=>{let t=e.result;try{t.createObjectStore(zy,{keyPath:By})}catch(e){n(e)}}),e.addEventListener(`success`,async()=>{let n=e.result;n.objectStoreNames.contains(zy)?t(n):(n.close(),await Uy(),t(await Wy()))})})}async function Gy(e,t,n){return new Vy(Hy(e,!0).put({[By]:t,value:n})).toPromise()}async function Ky(e,t){let n=await new Vy(Hy(e,!1).get(t)).toPromise();return n===void 0?null:n.value}function qy(e,t){return new Vy(Hy(e,!0).delete(t)).toPromise()}var Jy=800,Yy=3,Xy=class{registerLifecycleListeners(){typeof window<`u`&&typeof window.addEventListener==`function`&&(window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`pageshow`,this.onPageShow))}unregisterLifecycleListeners(){typeof window<`u`&&typeof window.removeEventListener==`function`&&(window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`pageshow`,this.onPageShow))}constructor(){this.type=`LOCAL`,this.dbPromise=null,this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.isClosing=!1,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this.onPageHide=()=>{this.isClosing=!0,this.stopPolling(),this.dbPromise&&=(this.dbPromise.then(e=>e.close()).catch(()=>{}),null)},this.onPageShow=()=>{this.isClosing&&(this.isClosing=!1,Object.keys(this.listeners).length>0&&this.startPolling())},this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){if(this.isClosing)throw Error(`Database is closing`);return this.dbPromise?this.dbPromise:(this.dbPromise=Wy(),this.dbPromise.catch(()=>{this.dbPromise=null}),this.dbPromise)}async _withRetries(e){let t=0;for(;;)try{return await e(await this._openDb())}catch(e){if(this.isClosing||t++>Yy)throw e;this.dbPromise&&=((await this.dbPromise).close(),null)}}async initializeServiceWorkerMessaging(){return Ny()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Oy._getInstance(Iy()),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 Py(),!this.activeServiceWorker)return;this.sender=new Ay(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||Fy()!==this.activeServiceWorker))try{await this.sender._send(`keyChanged`,{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{return indexedDB?(await this._withRetries(async e=>{await Gy(e,yy,`1`),await qy(e,yy)}),!0):!1}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(n=>Gy(n,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(t=>Ky(t,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>qy(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){if(this.isClosing)return[];try{let e=await this._withRetries(e=>new Vy(Hy(e,!1).getAll()).toPromise());if(this.isClosing||!e||this.pendingWrites!==0)return[];let t=[],n=new Set;if(e.length!==0)for(let{fbase_key:r,value:i}of e)n.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(i)&&(this.notifyListeners(r,i),t.push(r));for(let e of Object.keys(this.localCache))this.localCache[e]&&!n.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}catch(e){return this.isClosing||Ig(`Firebase Auth cross-tab polling failed with error: ${e}`),[]}}notifyListeners(e,t){this.localCache[e]=t;let n=this.listeners[e];if(n)for(let e of Array.from(n))e(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),Jy)}stopPolling(){this.pollTimer&&=(clearInterval(this.pollTimer),null)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.startPolling(),this.registerLifecycleListeners()),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(),this.unregisterLifecycleListeners())}};Xy.type=`LOCAL`;var Zy=Xy;dv(`rcb`),new Zg(3e4,6e4);function Qy(e,t){return t?F_(t):($(e._popupRedirectResolver,e,`argument-error`),e._popupRedirectResolver)}var $y=class extends Dv{constructor(e){super(`custom`,`custom`),this.params=e}_getIdTokenResponse(e){return Iv(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Iv(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Iv(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 eb(e){return ry(e.auth,new $y(e),e.bypassAuthState)}function tb(e){let{auth:t,user:n}=e;return $(n,t,`internal-error`),ny(n,new $y(e),e.bypassAuthState)}async function nb(e){let{auth:t,user:n}=e;return $(n,t,`internal-error`),ty(n,new $y(e),e.bypassAuthState)}var rb=class{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,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(e){this.reject(e)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:a,type:o}=e;if(a){this.reject(a);return}let s={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(s))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case`signInViaPopup`:case`signInViaRedirect`:return eb;case`linkViaPopup`:case`linkViaRedirect`:return nb;case`reauthViaPopup`:case`reauthViaRedirect`:return tb;default:Rg(this.auth,`internal-error`)}}resolve(e){Gg(this.pendingPromise,`Pending promise was never set`),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){Gg(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()}},ib=new Zg(2e3,1e4);async function ab(e,t,n){if(Jt(e.app))return Promise.reject(zg(e,`operation-not-supported-in-this-environment`));let r=iv(e);return Hg(e,t,Uv),new ob(r,`signInViaPopup`,t,Qy(r,n)).executeNotNull()}var ob=class e extends rb{constructor(t,n,r,i,a){super(t,n,i,a),this.provider=r,this.authWindow=null,this.pollId=null,e.currentPopupAction&&e.currentPopupAction.cancel(),e.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return $(e,this.auth,`internal-error`),e}async onExecution(){Gg(this.filter.length===1,`Popup operations only handle one event`);let e=ky();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(zg(this.auth,`web-storage-unsupported`))}),this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){this.reject(zg(this.auth,`cancelled-popup-request`))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,e.currentPopupAction=null}pollUserCancellation(){let e=()=>{if(this.authWindow?.window?.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(zg(this.auth,`popup-closed-by-user`))},8e3);return}this.pollId=window.setTimeout(e,ib.get())};e()}};ob.currentPopupAction=null;var sb=`pendingRedirect`,cb=new Map,lb=class extends rb{constructor(e,t,n=!1){super(e,[`signInViaRedirect`,`linkViaRedirect`,`reauthViaRedirect`,`unknown`],t,void 0,n),this.eventId=null}async execute(){let e=cb.get(this.auth._key());if(!e){try{let t=await ub(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(t)}catch(t){e=()=>Promise.reject(t)}cb.set(this.auth._key(),e)}return this.bypassAuthState||cb.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 ub(e,t){let n=pb(t),r=fb(e);if(!await r._isAvailable())return!1;let i=await r._get(n)===`true`;return await r._remove(n),i}function db(e,t){cb.set(e._key(),t)}function fb(e){return F_(e._redirectPersistence)}function pb(e){return R_(sb,e.config.apiKey,e.name)}async function mb(e,t,n=!1){if(Jt(e.app))return Promise.reject(Vg(e));let r=iv(e),i=await new lb(r,Qy(r,t),n).execute();return i&&!n&&(delete i.user._redirectEventId,await r._persistUserIfCurrent(i.user),await r._setRedirectUser(null,t)),i}var hb=6e5,gb=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(n=>{this.isEventForConsumer(e,n)&&(t=!0,this.sendToConsumer(e,n),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!yb(e)?t:(this.hasHandledPotentialRedirect=!0,t||=(this.queuedRedirectEvent=e,!0),t)}sendToConsumer(e,t){if(e.error&&!vb(e)){let n=e.error.code?.split(`auth/`)[1]||`internal-error`;t.onError(zg(this.auth,n))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let n=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=hb&&this.cachedEventUids.clear(),this.cachedEventUids.has(_b(e))}saveEventToCache(e){this.cachedEventUids.add(_b(e)),this.lastProcessedEventTime=Date.now()}};function _b(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join(`-`)}function vb({type:e,error:t}){return e===`unknown`&&t?.code===`auth/no-auth-event`}function yb(e){switch(e.type){case`signInViaRedirect`:case`linkViaRedirect`:case`reauthViaRedirect`:return!0;case`unknown`:return vb(e);default:return!1}}async function bb(e,t={}){return i_(e,`GET`,`/v1/projects`,t)}var xb=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Sb=/^https?/;async function Cb(e){if(e.config.emulator)return;let{authorizedDomains:t}=await bb(e);for(let e of t)try{if(wb(e))return}catch{}Rg(e,`unauthorized-domain`)}function wb(e){let t=Kg(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith(`chrome-extension://`)){let i=new URL(e);return i.hostname===``&&r===``?n===`chrome-extension:`&&e.replace(`chrome-extension://`,``)===t.replace(`chrome-extension://`,``):n===`chrome-extension:`&&i.hostname===r}if(!Sb.test(n))return!1;if(xb.test(e))return r===e;let i=e.replace(/\./g,`\\.`);return RegExp(`^(.+\\.`+i+`|`+i+`)$`,`i`).test(r)}var Tb=new Zg(3e4,6e4);function Eb(){let e=jy().___jsl;if(e?.H){for(let t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t<e.CP.length;t++)e.CP[t]=null}}function Db(e){return new Promise((t,n)=>{function r(){Eb(),gapi.load(`gapi.iframes`,{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{Eb(),n(zg(e,`network-request-failed`))},timeout:Tb.get()})}if(jy().gapi?.iframes?.Iframe)t(gapi.iframes.getContext());else if(jy().gapi?.load)r();else{let t=dv(`iframefcb`);return jy()[t]=()=>{gapi.load?r():n(zg(e,`network-request-failed`))},cv(`${uv()}?onload=${t}`).catch(e=>n(e))}}).catch(e=>{throw Ob=null,e})}var Ob=null;function kb(e){return Ob||=Db(e),Ob}var Ab=new Zg(5e3,15e3),jb=`__/auth/iframe`,Mb=`emulator/auth/iframe`,Nb={style:{position:`absolute`,top:`-100px`,width:`1px`,height:`1px`},"aria-hidden":`true`,tabindex:`-1`},Pb=new Map([[`identitytoolkit.googleapis.com`,`p`],[`staging-identitytoolkit.sandbox.googleapis.com`,`s`],[`test-identitytoolkit.sandbox.googleapis.com`,`t`]]);function Fb(e){let t=e.config;$(t.authDomain,e,`auth-domain-config-required`);let n=t.emulator?Qg(t,Mb):`https://${e.config.authDomain}/${jb}`,r={apiKey:t.apiKey,appName:e.name,v:Xt},i=Pb.get(e.config.apiHost);i&&(r.eid=i);let a=e._getFrameworks();return a.length&&(r.fw=a.join(`,`)),`${n}?${ve(r).slice(1)}`}async function Ib(e){let t=await kb(e),n=jy().gapi;return $(n,e,`internal-error`),t.open({where:document.body,url:Fb(e),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Nb,dontclear:!0},t=>new Promise(async(n,r)=>{await t.restyle({setHideOnLeave:!1});let i=zg(e,`network-request-failed`),a=jy().setTimeout(()=>{r(i)},Ab.get());function o(){jy().clearTimeout(a),n(t)}t.ping(o).then(o,()=>{r(i)})}))}var Lb={location:`yes`,resizable:`yes`,statusbar:`yes`,toolbar:`no`},Rb=500,zb=600,Bb=`_blank`,Vb=`http://localhost`,Hb=class{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}};function Ub(e,t,n,r=Rb,i=zb){let a=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString(),s=``,c={...Lb,width:r.toString(),height:i.toString(),top:a,left:o},l=_().toLowerCase();n&&(s=U_(l)?Bb:n),V_(l)&&(t||=Vb,c.scrollbars=`yes`);let u=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,``);if(Y_(l)&&s!==`_self`)return Wb(t||``,s),new Hb(null);let d=window.open(t||``,s,u);$(d,e,`popup-blocked`);try{d.focus()}catch{}return new Hb(d)}function Wb(e,t){let n=document.createElement(`a`);n.href=e,n.target=t;let r=document.createEvent(`MouseEvent`);r.initMouseEvent(`click`,!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}var Gb=`__/auth/handler`,Kb=`emulator/auth/handler`,qb=`fac`;async function Jb(e,t,n,r,i,a){$(e.config.authDomain,e,`auth-domain-config-required`),$(e.config.apiKey,e,`invalid-api-key`);let o={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Xt,eventId:i};if(t instanceof Uv){t.setDefaultLanguage(e.languageCode),o.providerId=t.providerId||``,he(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(let[e,t]of Object.entries(a||{}))o[e]=t}if(t instanceof Wv){let e=t.getScopes().filter(e=>e!==``);e.length>0&&(o.scopes=e.join(`,`))}e.tenantId&&(o.tid=e.tenantId);let s=o;for(let e of Object.keys(s))s[e]===void 0&&delete s[e];let c=await e._getAppCheckToken(),l=c?`#${qb}=${encodeURIComponent(c)}`:``;return`${Yb(e)}?${ve(s).slice(1)}${l}`}function Yb({config:e}){return e.emulator?Qg(e,Kb):`https://${e.authDomain}/${Gb}`}var Xb=`webStorageSupport`,Zb=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Ey,this._completeRedirectFn=mb,this._overrideRedirectResult=db}async _openPopup(e,t,n,r){return Gg(this.eventManagers[e._key()]?.manager,`_initialize() not called before _openPopup()`),Ub(e,await Jb(e,t,n,Kg(),r),ky())}async _openRedirect(e,t,n,r){return await this._originValidation(e),My(await Jb(e,t,n,Kg(),r)),new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){let{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(Gg(n,`If manager is not set, promise should be`),n)}let n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(e){let t=await Ib(e),n=new gb(e);return t.register(`authEvent`,t=>($(t?.authEvent,e,`invalid-auth-event`),{status:n.onEvent(t.authEvent)?`ACK`:`ERROR`}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:n},this.iframes[e._key()]=t,n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Xb,{type:Xb},n=>{let r=n?.[0]?.[Xb];r!==void 0&&t(!!r),Rg(e,`internal-error`)},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Cb(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Z_()||H_()||J_()}},Qb=`@firebase/auth`,$b=`1.13.5`,ex=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(t=>{e(t?.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(){$(this.auth._initializationPromise,`dependent-sdk-initialized-before-auth`)}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}};function tx(e){switch(e){case`Node`:return`node`;case`ReactNative`:return`rn`;case`Worker`:return`webworker`;case`Cordova`:return`cordova`;case`WebExtension`:return`web-extension`;default:return}}function nx(e){Kt(new De(`auth`,(t,{options:n})=>{let r=t.getProvider(`app`).getImmediate(),i=t.getProvider(`heartbeat`),a=t.getProvider(`app-check-internal`),{apiKey:o,authDomain:s}=r.options;$(o&&!o.includes(`:`),`invalid-api-key`,{appName:r.name});let c=new rv(r,i,a,{apiKey:o,authDomain:s,clientPlatform:e,apiHost:`identitytoolkit.googleapis.com`,tokenApiHost:`securetoken.googleapis.com`,apiScheme:`https`,sdkClientVersion:Q_(e)});return xv(c,n),c},`PUBLIC`).setInstantiationMode(`EXPLICIT`).setInstanceCreatedCallback((e,t,n)=>{e.getProvider(`auth-internal`).initialize()})),Kt(new De(`auth-internal`,e=>(e=>new ex(e))(iv(e.getProvider(`auth`).getImmediate())),`PRIVATE`).setInstantiationMode(`EXPLICIT`)),en(Qb,$b,tx(e)),en(Qb,$b,`esm2020`)}var rx=g(`authIdTokenMaxAge`)||300,ix=null,ax=e=>async t=>{let n=t&&await t.getIdTokenResult(),r=n&&(new Date().getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>rx)return;let i=n?.token;ix!==i&&(ix=i,await fetch(e,{method:i?`POST`:`DELETE`,headers:i?{Authorization:`Bearer ${i}`}:{}}))};function ox(e=Qt()){let t=qt(e,`auth`);if(t.isInitialized())return t.getImmediate();let n=bv(e,{popupRedirectResolver:Zb,persistence:[Zy,wy,Ey]}),r=g(`authTokenSyncURL`);if(r&&typeof isSecureContext==`boolean`&&isSecureContext){let e=new URL(r,location.origin);if(location.origin===e.origin){let t=ax(e.toString());gy(n,t,()=>t(n.currentUser)),hy(n,e=>t(e))}}let i=p(`auth`);return i&&Sv(n,`http://${i}`),n}function sx(){return document.getElementsByTagName(`head`)?.[0]??document}sv({loadJS(e){return new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=t,r.onerror=e=>{let t=zg(`internal-error`);t.customData=e,n(t)},r.type=`text/javascript`,r.charset=`UTF-8`,sx().appendChild(r)})},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=`}),nx(`Browser`);export{ag as C,Zt as E,$l as S,$t as T,Tg as _,ly as a,yg as b,ay as c,ab as d,vy as f,wg as g,Dg as h,Gv as i,cy as l,fy as m,Jv as n,ox as o,py as p,qv as r,_y as s,Hv as t,uy as u,_g as v,Qt as w,Ql as x,Eg as y};
package/dist/index.html CHANGED
@@ -35,14 +35,14 @@
35
35
  } catch(e) {}
36
36
  })();
37
37
  </script>
38
- <script type="module" crossorigin src="/assets/index-DP1fe-Ay.js"></script>
38
+ <script type="module" crossorigin src="/assets/index-CkVsrMas.js"></script>
39
39
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-W7wSyTde.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/vendor-icons-M_KBtuE-.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BTEcvIpc.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/vendor-utils-3OgY5Lif.js">
43
- <link rel="modulepreload" crossorigin href="/assets/vendor-firebase-DHYCsgNh.js">
44
- <link rel="modulepreload" crossorigin href="/assets/themes-CNabH9CH.js">
45
- <link rel="stylesheet" crossorigin href="/assets/index-Ci4Kj5Ez.css">
43
+ <link rel="modulepreload" crossorigin href="/assets/vendor-firebase-DNMzpOGz.js">
44
+ <link rel="modulepreload" crossorigin href="/assets/themes-Cn_1tMt7.js">
45
+ <link rel="stylesheet" crossorigin href="/assets/index-COkFr0Rf.css">
46
46
  </head>
47
47
  <body class="h-full overflow-hidden text-[#1d1d1f] dark:text-[#f5f5f7] font-sans selection:bg-[#0071e3]/15 selection:text-[#0071e3]">
48
48
  <div id="root" class="h-full flex flex-col"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyrus-studio",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "AI Visual Canvas Studio & Live Code Generator for React, Flutter, SwiftUI, and HTML",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",