File: //opt/LC/node_modules/firebase/firebase-compat.js
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).firebase=t()}(this,function(){"use strict";const t={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},f=function(e,t){if(!e)throw u(t)},u=function(e){return new Error("Firebase Database ("+t.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},n=function(t){const n=[];let r=0;for(let i=0;i<t.length;i++){let e=t.charCodeAt(i);e<128?n[r++]=e:(e<2048?n[r++]=e>>6|192:(55296==(64512&e)&&i+1<t.length&&56320==(64512&t.charCodeAt(i+1))?(e=65536+((1023&e)<<10)+(1023&t.charCodeAt(++i)),n[r++]=e>>18|240,n[r++]=e>>12&63|128):n[r++]=e>>12|224,n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n},r={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();var r=e?this.byteToCharMapWebSafe_:this.byteToCharMap_;const i=[];for(let u=0;u<n.length;u+=3){var s=n[u],a=u+1<n.length,o=a?n[u+1]:0,c=u+2<n.length,l=c?n[u+2]:0;let e=(15&o)<<2|l>>6,t=63&l;c||(t=64,a||(e=64)),i.push(r[s>>2],r[(3&s)<<4|o>>4],r[e],r[t])}return i.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(n(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n<e.length;){var i,s,a=e[n++];a<128?t[r++]=String.fromCharCode(a):191<a&&a<224?(i=e[n++],t[r++]=String.fromCharCode((31&a)<<6|63&i)):239<a&&a<365?(s=((7&a)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))):(i=e[n++],s=e[n++],t[r++]=String.fromCharCode((15&a)<<12|(63&i)<<6|63&s))}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();var n=t?this.charToByteMapWebSafe_:this.charToByteMap_;const r=[];for(let c=0;c<e.length;){var i=n[e.charAt(c++)],s=c<e.length?n[e.charAt(c)]:0;++c;var a=c<e.length?n[e.charAt(c)]:64;++c;var o=c<e.length?n[e.charAt(c)]:64;if(++c,null==i||null==s||null==a||null==o)throw new l;r.push(i<<2|s>>4),64!==a&&(r.push(s<<4&240|a>>2),64!==o&&r.push(a<<6&192|o))}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class l extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}function i(e){var t=n(e);return r.encodeByteArray(t,!0)}const s=function(e){return i(e).replace(/\./g,"")},a=function(e){try{return r.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function c(e,t){if(!(t instanceof Object))return t;switch(t.constructor){case Date:const n=t;return new Date(n.getTime());case Object:void 0===e&&(e={});break;case Array:e=[];break;default:return t}for(const r in t)t.hasOwnProperty(r)&&"__proto__"!==r&&(e[r]=c(e[r],t[r]));return e}function o(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("Unable to locate global object.")}const e=()=>o().__FIREBASE_DEFAULTS__,h=()=>{if("undefined"!=typeof process&&void 0!==process.env){var e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0}},d=()=>{if("undefined"!=typeof document){let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}var t=e&&a(e[1]);return t&&JSON.parse(t)}},p=()=>{try{return e()||h()||d()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},g=()=>{var e;return null===(e=p())||void 0===e?void 0:e.config};var m,v,_;class y{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch(()=>{}),1===n.length?n(e):n(e,t))}}}function w(e,t){if(e.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');var n=t||"demo-project",r=e.iat||0,i=e.sub||e.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:r,exp:r+3600,auth_time:r,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},e);return[s(JSON.stringify({alg:"none",type:"JWT"})),s(JSON.stringify(i)),""].join(".")}function b(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function I(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(b())}function T(){var e=null===(e=p())||void 0===e?void 0:e.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(global.process)}catch(e){return!1}}function E(){return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}function C(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function S(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function k(){const e=b();return 0<=e.indexOf("MSIE ")||0<=e.indexOf("Trident/")}function A(){return!0===t.NODE_ADMIN}function N(){return!T()&&navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")}function R(){try{return"object"==typeof indexedDB}catch(e){return!1}}function P(){return new Promise((t,n)=>{try{let e=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),e||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{e=!1},i.onerror=()=>{var e;n((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){n(e)}})}function D(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class x extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,x.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,O.prototype.create)}}class O{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){var r,n=t[0]||{},i=`${this.service}/${e}`,s=this.errors[e],s=s?(r=n,s.replace(L,(e,t)=>{var n=r[t];return null!=n?String(n):`<${t}?>`})):"Error",s=`${this.serviceName}: ${s} (${i}).`;return new x(i,s,n)}}const L=/\{\$([^}]+)}/g;function M(e){return JSON.parse(e)}function F(e){return JSON.stringify(e)}function U(e){let t={},n={},r={},i="";try{var s=e.split(".");t=M(a(s[0])||""),n=M(a(s[1])||""),i=s[2],r=n.d||{},delete n.d}catch(e){}return{header:t,claims:n,data:r,signature:i}}function V(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function q(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]}function B(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function j(e,t,n){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=t.call(n,e[i],i,e));return r}function z(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const a of n){if(!r.includes(a))return!1;var i=e[a],s=t[a];if($(i)&&$(s)){if(!z(i,s))return!1}else if(i!==s)return!1}for(const o of r)if(!n.includes(o))return!1;return!0}function $(e){return null!==e&&"object"==typeof e}function K(e){const t=[];for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return t.length?"&"+t.join("&"):""}function W(e){const r={},t=e.replace(/^\?/,"").split("&");return t.forEach(e=>{var t,n;e&&([t,n]=e.split("="),r[decodeURIComponent(t)]=decodeURIComponent(n))}),r}function G(e){var t=e.indexOf("?");if(!t)return"";var n=e.indexOf("#",t);return e.substring(t,0<n?n:void 0)}class H{constructor(){this.chain_=[],this.buf_=[],this.W_=[],this.pad_=[],this.inbuf_=0,this.total_=0,this.blockSize=64,this.pad_[0]=128;for(let e=1;e<this.blockSize;++e)this.pad_[e]=0;this.reset()}reset(){this.chain_[0]=1732584193,this.chain_[1]=4023233417,this.chain_[2]=2562383102,this.chain_[3]=271733878,this.chain_[4]=3285377520,this.inbuf_=0,this.total_=0}compress_(n,r){r=r||0;const i=this.W_;if("string"==typeof n)for(let e=0;e<16;e++)i[e]=n.charCodeAt(r)<<24|n.charCodeAt(r+1)<<16|n.charCodeAt(r+2)<<8|n.charCodeAt(r+3),r+=4;else for(let t=0;t<16;t++)i[t]=n[r]<<24|n[r+1]<<16|n[r+2]<<8|n[r+3],r+=4;for(let d=16;d<80;d++){var e=i[d-3]^i[d-8]^i[d-14]^i[d-16];i[d]=4294967295&(e<<1|e>>>31)}let t=this.chain_[0],s=this.chain_[1],a=this.chain_[2],o=this.chain_[3],c=this.chain_[4],l,u;for(let p=0;p<80;p++){u=p<40?p<20?(l=o^s&(a^o),1518500249):(l=s^a^o,1859775393):p<60?(l=s&a|o&(s|a),2400959708):(l=s^a^o,3395469782);var h=(t<<5|t>>>27)+l+c+u+i[p]&4294967295;c=o,o=a,a=4294967295&(s<<30|s>>>2),s=t,t=h}this.chain_[0]=this.chain_[0]+t&4294967295,this.chain_[1]=this.chain_[1]+s&4294967295,this.chain_[2]=this.chain_[2]+a&4294967295,this.chain_[3]=this.chain_[3]+o&4294967295,this.chain_[4]=this.chain_[4]+c&4294967295}update(n,r){if(null!=n){var i=(r=void 0===r?n.length:r)-this.blockSize;let e=0;const s=this.buf_;let t=this.inbuf_;for(;e<r;){if(0===t)for(;e<=i;)this.compress_(n,e),e+=this.blockSize;if("string"==typeof n){for(;e<r;)if(s[t]=n.charCodeAt(e),++t,++e,t===this.blockSize){this.compress_(s),t=0;break}}else for(;e<r;)if(s[t]=n[e],++t,++e,t===this.blockSize){this.compress_(s),t=0;break}}this.inbuf_=t,this.total_+=r}}digest(){const t=[];let e=8*this.total_;this.inbuf_<56?this.update(this.pad_,56-this.inbuf_):this.update(this.pad_,this.blockSize-(this.inbuf_-56));for(let r=this.blockSize-1;56<=r;r--)this.buf_[r]=255&e,e/=256;this.compress_(this.buf_);let n=0;for(let i=0;i<5;i++)for(let e=24;0<=e;e-=8)t[n]=this.chain_[i]>>e&255,++n;return t}}function Q(e,t){const n=new J(e,t);return n.subscribe.bind(n)}class J{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(()=>{e(this)}).catch(e=>{this.error(e)})}next(t){this.forEachObserver(e=>{e.next(t)})}error(t){this.forEachObserver(e=>{e.error(t)}),this.close(t)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,n){let r;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");r=function(e,t){if("object"!=typeof e||null===e)return!1;for(const n of t)if(n in e&&"function"==typeof e[n])return!0;return!1}(e,["next","error","complete"])?e:{next:e,error:t,complete:n},void 0===r.next&&(r.next=Y),void 0===r.error&&(r.error=Y),void 0===r.complete&&(r.complete=Y);var i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch(e){}}),this.observers.push(r),i}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],--this.observerCount,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(t){if(!this.finalized)for(let e=0;e<this.observers.length;e++)this.sendOne(e,t)}sendOne(e,t){this.task.then(()=>{if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}})}close(e){this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function Y(){}function X(e,t,n,r){let i;if(r<t?i="at least "+t:n<r&&(i=0===n?"none":"no more than "+n),i){var s=e+" failed: Was called with "+r+(1===r?" argument.":" arguments.")+" Expects "+i+".";throw new Error(s)}}function Z(e,t){return`${e} failed: ${t} argument `}function ee(e,t,n,r){if((!r||n)&&"function"!=typeof n)throw new Error(Z(e,t)+"must be a valid function.")}function te(e,t,n,r){if((!r||n)&&("object"!=typeof n||null===n))throw new Error(Z(e,t)+"must be a valid context object.")}function ne(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0,n="x"===e?t:3&t|8;return n.toString(16)})}const re=function(e){let t=0;for(let r=0;r<e.length;r++){var n=e.charCodeAt(r);n<128?t++:n<2048?t+=2:55296<=n&&n<=56319?(t+=4,r++):t+=3}return t},ie=1e3,se=2,ae=144e5,oe=.5;function ce(e,t=ie,n=se){var r=t*Math.pow(n,e),i=Math.round(oe*r*(Math.random()-.5)*2);return Math.min(ae,r+i)}function le(e){return e&&e._delegate?e._delegate:e}class ue{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const he="[DEFAULT]";class de{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){var t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const r=new y;if(this.instancesDeferred.set(t,r),this.isInitialized(t)||this.shouldAutoInitialize())try{var n=this.getOrInitializeService({instanceIdentifier:t});n&&r.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),n=null!==(n=null==e?void 0:e.optional)&&void 0!==n&&n;if(!this.isInitialized(t)&&!this.shouldAutoInitialize()){if(n)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:t})}catch(e){if(n)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if("EAGER"===e.instantiationMode)try{this.getOrInitializeService({instanceIdentifier:he})}catch(e){}for(var[t,n]of this.instancesDeferred.entries()){t=this.normalizeInstanceIdentifier(t);try{var r=this.getOrInitializeService({instanceIdentifier:t});n.resolve(r)}catch(e){}}}}clearInstance(e=he){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(e=>"INTERNAL"in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>"_delete"in e).map(e=>e._delete())])}isComponentSet(){return null!=this.component}isInitialized(e=he){return this.instances.has(e)}getOptions(e=he){return this.instancesOptions.get(e)||{}}initialize(e={}){var{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);var r,i,s=this.getOrInitializeService({instanceIdentifier:n,options:t});for([r,i]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(r)&&i.resolve(s);return s}onInit(e,t){var n=this.normalizeInstanceIdentifier(t);const r=null!==(i=this.onInitCallbacks.get(n))&&void 0!==i?i:new Set;r.add(e),this.onInitCallbacks.set(n,r);var i=this.instances.get(n);return i&&e(i,n),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){var n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e)===he?void 0:r,options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=he){return!this.component||this.component.multipleInstances?e:he}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class pe{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){const t=this.getProvider(e.name);t.isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);var t=new de(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const fe=[];(v=m=m||{})[v.DEBUG=0]="DEBUG",v[v.VERBOSE=1]="VERBOSE",v[v.INFO=2]="INFO",v[v.WARN=3]="WARN",v[v.ERROR=4]="ERROR",v[v.SILENT=5]="SILENT";const ge={debug:m.DEBUG,verbose:m.VERBOSE,info:m.INFO,warn:m.WARN,error:m.ERROR,silent:m.SILENT},me=m.INFO,ve={[m.DEBUG]:"log",[m.VERBOSE]:"log",[m.INFO]:"info",[m.WARN]:"warn",[m.ERROR]:"error"},_e=(e,t,...n)=>{if(!(t<e.logLevel)){var r=(new Date).toISOString(),i=ve[t];if(!i)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[i](`[${r}] ${e.name}:`,...n)}};class ye{constructor(e){this.name=e,this._logLevel=me,this._logHandler=_e,this._userLogHandler=null,fe.push(this)}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in m))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?ge[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,m.DEBUG,...e),this._logHandler(this,m.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,m.VERBOSE,...e),this._logHandler(this,m.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,m.INFO,...e),this._logHandler(this,m.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,m.WARN,...e),this._logHandler(this,m.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,m.ERROR,...e),this._logHandler(this,m.ERROR,...e)}}const we=(t,e)=>e.some(e=>t instanceof e);let be,Ie;const Te=new WeakMap,Ee=new WeakMap,Ce=new WeakMap,Se=new WeakMap,ke=new WeakMap;let Ae={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return Ee.get(e);if("objectStoreNames"===t)return e.objectStoreNames||Ce.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Pe(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function Ne(r){return r!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(Ie=Ie||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(r)?function(...e){return r.apply(De(this),e),Pe(Te.get(this))}:function(...e){return Pe(r.apply(De(this),e))}:function(e,...t){var n=r.call(De(this),e,...t);return Ce.set(n,e.sort?e.sort():[e]),Pe(n)}}function Re(e){return"function"==typeof e?Ne(e):(e instanceof IDBTransaction&&(s=e,Ee.has(s)||(t=new Promise((e,t)=>{const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",i),s.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{t(s.error||new DOMException("AbortError","AbortError")),n()};s.addEventListener("complete",r),s.addEventListener("error",i),s.addEventListener("abort",i)}),Ee.set(s,t))),we(e,be=be||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,Ae):e);var s,t}function Pe(e){if(e instanceof IDBRequest)return function(s){const e=new Promise((e,t)=>{const n=()=>{s.removeEventListener("success",r),s.removeEventListener("error",i)},r=()=>{e(Pe(s.result)),n()},i=()=>{t(s.error),n()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&Te.set(e,s)}).catch(()=>{}),ke.set(e,s),e}(e);if(Se.has(e))return Se.get(e);var t=Re(e);return t!==e&&(Se.set(e,t),ke.set(t,e)),t}const De=e=>ke.get(e);function xe(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const a=indexedDB.open(e,t),o=Pe(a);return r&&a.addEventListener("upgradeneeded",e=>{r(Pe(a.result),e.oldVersion,e.newVersion,Pe(a.transaction),e)}),n&&a.addEventListener("blocked",e=>n(e.oldVersion,e.newVersion,e)),o.then(e=>{s&&e.addEventListener("close",()=>s()),i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}function Oe(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",e=>t(e.oldVersion,e)),Pe(n).then(()=>{})}const Le=["get","getKey","getAll","getAllKeys","count"],Me=["put","add","delete","clear"],Fe=new Map;function Ue(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(Fe.get(t))return Fe.get(t);const i=t.replace(/FromIndex$/,""),s=t!==i,a=Me.includes(i);if(i in(s?IDBIndex:IDBObjectStore).prototype&&(a||Le.includes(i))){var n=async function(e,...t){var n=this.transaction(e,a?"readwrite":"readonly");let r=n.store;return s&&(r=r.index(t.shift())),(await Promise.all([r[i](...t),a&&n.done]))[0]};return Fe.set(t,n),n}}}Ae={..._=Ae,get:(e,t,n)=>Ue(e,t)||_.get(e,t,n),has:(e,t)=>!!Ue(e,t)||_.has(e,t)};class Ve{constructor(e){this.container=e}getPlatformInfoString(){const e=this.container.getProviders();return e.map(e=>{if("VERSION"!==(null==(t=e.getComponent())?void 0:t.type))return null;var t,t=e.getImmediate();return`${t.library}/${t.version}`}).filter(e=>e).join(" ")}}const qe="@firebase/app",Be="0.10.16",je=new ye("@firebase/app");var ze;const $e="[DEFAULT]",Ke={"@firebase/app":"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/data-connect":"fire-data-connect","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","@firebase/vertexai":"fire-vertex","fire-js":"fire-js",firebase:"fire-js-all"},We=new Map,Ge=new Map,He=new Map;function Qe(t,n){try{t.container.addComponent(n)}catch(e){je.debug(`Component ${n.name} failed to register with FirebaseApp ${t.name}`,e)}}function Je(e,t){e.container.addOrOverwriteComponent(t)}function Ye(e){var t=e.name;if(He.has(t))return je.debug(`There were multiple attempts to register component ${t}.`),!1;He.set(t,e);for(const n of We.values())Qe(n,e);for(const r of Ge.values())Qe(r,e);return!0}function Xe(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}function Ze(e){return void 0!==e.options}function et(e){return void 0!==e.settings}const tt=new O("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class nt{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new ue("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw tt.create("app-deleted",{appName:this._name})}}class rt extends nt{constructor(e,t,n,r){var i=void 0!==t.automaticDataCollectionEnabled&&t.automaticDataCollectionEnabled,s={name:n,automaticDataCollectionEnabled:i};void 0!==e.apiKey?super(e,s,r):super(e.options,s,r),this._serverConfig=Object.assign({automaticDataCollectionEnabled:i},t),this._finalizationRegistry=null,"undefined"!=typeof FinalizationRegistry&&(this._finalizationRegistry=new FinalizationRegistry(()=>{this.automaticCleanup()})),this._refCount=0,this.incRefCount(this._serverConfig.releaseOnDeref),this._serverConfig.releaseOnDeref=void 0,t.releaseOnDeref=void 0,ct(qe,Be,"serverapp")}toJSON(){}get refCount(){return this._refCount}incRefCount(e){this.isDeleted||(this._refCount++,void 0!==e&&null!==this._finalizationRegistry&&this._finalizationRegistry.register(e,this))}decRefCount(){return this.isDeleted?0:--this._refCount}automaticCleanup(){ot(this)}get settings(){return this.checkDestroyed(),this._serverConfig}checkDestroyed(){if(this.isDeleted)throw tt.create("server-app-deleted")}}const it="11.0.2";function st(e,t={}){let n=e;if("object"!=typeof t){const i=t;t={name:i}}var r=Object.assign({name:$e,automaticDataCollectionEnabled:!1},t);const i=r.name;if("string"!=typeof i||!i)throw tt.create("bad-app-name",{appName:String(i)});if(n=n||g(),!n)throw tt.create("no-options");var s=We.get(i);if(s){if(z(n,s.options)&&z(r,s.config))return s;throw tt.create("duplicate-app",{appName:i})}const a=new pe(i);for(const o of He.values())a.addComponent(o);r=new nt(n,r,a);return We.set(i,r),r}function at(e=$e){var t=We.get(e);if(!t&&e===$e&&g())return st();if(!t)throw tt.create("no-app",{appName:e});return t}async function ot(e){let t=!1;var n=e.name;if(We.has(n))t=!0,We.delete(n);else if(Ge.has(n)){const r=e;r.decRefCount()<=0&&(Ge.delete(n),t=!0)}t&&(await Promise.all(e.container.getProviders().map(e=>e.delete())),e.isDeleted=!0)}function ct(e,t,n){let r=null!==(s=Ke[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);var i=r.match(/\s|\//),s=t.match(/\s|\//);if(i||s){const a=[`Unable to register library "${r}" with version "${t}":`];return i&&a.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&s&&a.push("and"),s&&a.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void je.warn(a.join(" "))}Ye(new ue(`${r}-version`,()=>({library:r,version:t}),"VERSION"))}function lt(e,t){if(null!==e&&"function"!=typeof e)throw tt.create("invalid-log-argument");!function(s,e){for(const t of fe){let i=null;e&&e.level&&(i=ge[e.level]),t.userLogHandler=null===s?null:(e,t,...n)=>{var r=n.map(e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}}).filter(e=>e).join(" ");t>=(null!==i&&void 0!==i?i:e.logLevel)&&s({level:m[t].toLowerCase(),message:r,args:n,type:e.name})}}}(e,t)}function ut(e){var t;t=e,fe.forEach(e=>{e.setLogLevel(t)})}const ht="firebase-heartbeat-database",dt=1,pt="firebase-heartbeat-store";let ft=null;function gt(){return ft=ft||xe(ht,dt,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(pt)}catch(e){console.warn(e)}}}).catch(e=>{throw tt.create("idb-open",{originalErrorMessage:e.message})}),ft}async function mt(e,t){try{const r=await gt(),i=r.transaction(pt,"readwrite"),s=i.objectStore(pt);await s.put(t,vt(e)),await i.done}catch(e){var n;e instanceof x?je.warn(e.message):(n=tt.create("idb-set",{originalErrorMessage:null==e?void 0:e.message}),je.warn(n.message))}}function vt(e){return`${e.name}!${e.options.appId}`}class _t{constructor(e){this.container=e,this._heartbeatsCache=null;var t=this.container.getProvider("app").getImmediate();this._storage=new wt(t),this._heartbeatsCachePromise=this._storage.read().then(e=>this._heartbeatsCache=e)}async triggerHeartbeat(){var e,t;try{const r=this.container.getProvider("platform-logger").getImmediate();var n=r.getPlatformInfoString();const i=yt();return null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)&&(this._heartbeatsCache=await this._heartbeatsCachePromise,null==(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats))?void 0:this._heartbeatsCache.lastSentHeartbeatDate===i||this._heartbeatsCache.heartbeats.some(e=>e.date===i)?void 0:(this._heartbeatsCache.heartbeats.push({date:i,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(e=>{var t=new Date(e.date).valueOf();return Date.now()-t<=2592e6}),this._storage.overwrite(this._heartbeatsCache))}catch(e){je.warn(e)}}async getHeartbeatsHeader(){var e;try{if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";var t=yt(),{heartbeatsToSend:n,unsentEntries:r}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const s=n.find(e=>e.agent===i.agent);if(s){if(s.dates.push(i.date),bt(n)>t){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),bt(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),i=s(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,0<r.length?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}catch(e){return je.warn(e),""}}}function yt(){const e=new Date;return e.toISOString().substring(0,10)}class wt{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!R()&&P().then(()=>!0).catch(()=>!1)}async read(){if(await this._canUseIndexedDBPromise){var e=await async function(e){try{const n=await gt(),r=n.transaction(pt);var t=await r.objectStore(pt).get(vt(e));return await r.done,t}catch(e){e instanceof x?je.warn(e.message):(t=tt.create("idb-get",{originalErrorMessage:null==e?void 0:e.message}),je.warn(t.message))}}(this.app);return null!=e&&e.heartbeats?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return mt(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return mt(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function bt(e){return s(JSON.stringify({version:2,heartbeats:e})).length}ze="",Ye(new ue("platform-logger",e=>new Ve(e),"PRIVATE")),Ye(new ue("heartbeat",e=>new _t(e),"PRIVATE")),ct(qe,Be,ze),ct(qe,Be,"esm2017"),ct("fire-js","");var It=Object.freeze({__proto__:null,SDK_VERSION:it,_DEFAULT_ENTRY_NAME:$e,_addComponent:Qe,_addOrOverwriteComponent:Je,_apps:We,_clearComponents:function(){He.clear()},_components:He,_getProvider:Xe,_isFirebaseApp:Ze,_isFirebaseServerApp:et,_registerComponent:Ye,_removeServiceInstance:function(e,t,n=$e){Xe(e,t).clearInstance(n)},_serverApps:Ge,deleteApp:ot,getApp:at,getApps:function(){return Array.from(We.values())},initializeApp:st,initializeServerApp:function(e,t){if(("undefined"!=typeof window||E())&&!E())throw tt.create("invalid-server-app-environment");void 0===t.automaticDataCollectionEnabled&&(t.automaticDataCollectionEnabled=!1);let n;n=Ze(e)?e.options:e;const r=Object.assign(Object.assign({},t),n);if(void 0!==r.releaseOnDeref&&delete r.releaseOnDeref,void 0!==t.releaseOnDeref&&"undefined"==typeof FinalizationRegistry)throw tt.create("finalization-registry-not-supported",{});var i=""+[...JSON.stringify(r)].reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);const s=Ge.get(i);if(s)return s.incRefCount(t.releaseOnDeref),s;const a=new pe(i);for(const c of He.values())a.addComponent(c);var o=new rt(n,t,i,a);return Ge.set(i,o),o},onLog:lt,registerVersion:ct,setLogLevel:ut,FirebaseError:x});class Tt{constructor(e,t){this._delegate=e,this.firebase=t,Qe(e,new ue("app-compat",()=>this,"PUBLIC")),this.container=e.container}get automaticDataCollectionEnabled(){return this._delegate.automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this._delegate.automaticDataCollectionEnabled=e}get name(){return this._delegate.name}get options(){return this._delegate.options}delete(){return new Promise(e=>{this._delegate.checkDestroyed(),e()}).then(()=>(this.firebase.INTERNAL.removeApp(this.name),ot(this._delegate)))}_getService(e,t=$e){var n;this._delegate.checkDestroyed();const r=this._delegate.container.getProvider(e);return r.isInitialized()||"EXPLICIT"!==(null===(n=r.getComponent())||void 0===n?void 0:n.instantiationMode)||r.initialize(),r.getImmediate({identifier:t})}_removeServiceInstance(e,t=$e){this._delegate.container.getProvider(e).clearInstance(t)}_addComponent(e){Qe(this._delegate,e)}_addOrOverwriteComponent(e){Je(this._delegate,e)}toJSON(){return{name:this.name,automaticDataCollectionEnabled:this.automaticDataCollectionEnabled,options:this.options}}}const Et=new O("app-compat","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance."});function Ct(i){const s={},a={__esModule:!0,initializeApp:function(e,t={}){var n=st(e,t);if(V(s,n.name))return s[n.name];var r=new i(n,a);return s[n.name]=r},app:o,registerVersion:ct,setLogLevel:ut,onLog:lt,apps:null,SDK_VERSION:it,INTERNAL:{registerComponent:function(n){const r=n.name,t=r.replace("-compat","");{var e;Ye(n)&&"PUBLIC"===n.type&&(e=(e=o())=>{if("function"!=typeof e[t])throw Et.create("invalid-app-argument",{appName:r});return e[t]()},void 0!==n.serviceProps&&c(e,n.serviceProps),a[t]=e,i.prototype[t]=function(...e){const t=this._getService.bind(this,r);return t.apply(this,n.multipleInstances?e:[])})}return"PUBLIC"===n.type?a[t]:null},removeApp:function(e){delete s[e]},useAsService:function(e,t){if("serverAuth"===t)return null;var n=t;return n},modularAPIs:It}};function o(e){if(e=e||$e,!V(s,e))throw Et.create("no-app",{appName:e});return s[e]}return a.default=a,Object.defineProperty(a,"apps",{get:function(){return Object.keys(s).map(e=>s[e])}}),o.App=i,a}var St=function e(){const t=Ct(Tt);return t.INTERNAL=Object.assign(Object.assign({},t.INTERNAL),{createFirebaseNamespace:e,extendNamespace:function(e){c(t,e)},createSubscribe:Q,ErrorFactory:O,deepExtend:c}),t}();const kt=new ye("@firebase/app-compat");try{var At=o();if(void 0!==At.firebase){kt.warn(`
Warning: Firebase is already defined in the global scope. Please make sure
Firebase library is only loaded once.
`);const qP=At.firebase.SDK_VERSION;qP&&0<=qP.indexOf("LITE")&&kt.warn(`
Warning: You are trying to load Firebase while using Firebase Performance standalone script.
You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.
`)}}catch(e){}const Nt=St;ct("@firebase/app-compat","0.2.46",void 0);Nt.registerVersion("firebase","11.0.2","app-compat");var Rt="@firebase/installations",Pt="0.6.11";const Dt=1e4,xt=`w:${Pt}`,Ot="FIS_v2",Lt="https://firebaseinstallations.googleapis.com/v1",Mt=36e5;const Ft=new O("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Ut(e){return e instanceof x&&e.code.includes("request-failed")}function Vt({projectId:e}){return`${Lt}/projects/${e}/installations`}function qt(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function Bt(e,t){var n=(await t.json()).error;return Ft.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function jt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function zt(e,{refreshToken:t}){const n=jt(e);return n.append("Authorization",(t=t,`${Ot} ${t}`)),n}async function $t(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function Kt(t){return new Promise(e=>{setTimeout(e,t)})}const Wt=/^[cdef][\w-]{21}$/,Gt="";function Ht(){try{const t=new Uint8Array(17),n=self.crypto||self.msCrypto;n.getRandomValues(t),t[0]=112+t[0]%16;var e=function(e){const t=function(e){const t=btoa(String.fromCharCode(...e));return t.replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(t);return Wt.test(e)?e:Gt}catch(e){return Gt}}function Qt(e){return`${e.appName}!${e.appId}`}const Jt=new Map;function Yt(e,t){var n=Qt(e);Xt(n,t),function(e,t){const n=function(){!Zt&&"BroadcastChannel"in self&&(Zt=new BroadcastChannel("[Firebase] FID Change"),Zt.onmessage=e=>{Xt(e.data.key,e.data.fid)});return Zt}();n&&n.postMessage({key:e,fid:t});0===Jt.size&&Zt&&(Zt.close(),Zt=null)}(n,t)}function Xt(e,t){var n=Jt.get(e);if(n)for(const r of n)r(t)}let Zt=null;const en="firebase-installations-store";let tn=null;function nn(){return tn=tn||xe("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(en)}}),tn}async function rn(e,t){var n=Qt(e);const r=await nn(),i=r.transaction(en,"readwrite"),s=i.objectStore(en);var a=await s.get(n);return await s.put(t,n),await i.done,a&&a.fid===t.fid||Yt(e,t.fid),t}async function sn(e){var t=Qt(e);const n=await nn(),r=n.transaction(en,"readwrite");await r.objectStore(en).delete(t),await r.done}async function an(e,t){var n=Qt(e);const r=await nn(),i=r.transaction(en,"readwrite"),s=i.objectStore(en);var a=await s.get(n),o=t(a);return void 0===o?await s.delete(n):await s.put(o,n),await i.done,!o||a&&a.fid===o.fid||Yt(e,o.fid),o}async function on(n){let r;var e=await an(n.appConfig,e=>{var t=ln(e||{fid:Ht(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await cn(e.appConfig);for(;1===t.registrationStatus;)await Kt(100),t=await cn(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:r}=await on(e);return r||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject(Ft.create("app-offline"));return{installationEntry:t,registrationPromise:n}}var r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=async function(t,n){try{var e=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Vt(e),i=jt(e),s=t.getImmediate({optional:!0});!s||(a=await s.getHeartbeatsHeader())&&i.append("x-firebase-client",a);var a={fid:n,authVersion:Ot,appId:e.appId,sdkVersion:xt};const o={method:"POST",headers:i,body:JSON.stringify(a)},c=await $t(()=>fetch(r,o));if(c.ok){a=await c.json();return{fid:a.fid||n,registrationStatus:2,refreshToken:a.refreshToken,authToken:qt(a.authToken)}}throw await Bt("Create Installation",c)}(t,n);return rn(t.appConfig,e)}catch(e){throw Ut(e)&&409===e.customData.serverCode?await sn(t.appConfig):await rn(t.appConfig,{fid:n.fid,registrationStatus:0}),e}}(e,r);return{installationEntry:r,registrationPromise:n}}}(n,t);return r=t.registrationPromise,t.installationEntry});return e.fid===Gt?{installationEntry:await r}:{installationEntry:e,registrationPromise:r}}function cn(e){return an(e,e=>{if(!e)throw Ft.create("installation-not-found");return ln(e)})}function ln(e){return 1===(t=e).registrationStatus&&t.registrationTime+Dt<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function un({appConfig:e,heartbeatServiceProvider:t},n){const r=([i,s]=[e,n["fid"]],`${Vt(i)}/${s}/authTokens:generate`);var i,s;const a=zt(e,n),o=t.getImmediate({optional:!0});!o||(c=await o.getHeartbeatsHeader())&&a.append("x-firebase-client",c);var c={installation:{sdkVersion:xt,appId:e.appId}};const l={method:"POST",headers:a,body:JSON.stringify(c)},u=await $t(()=>fetch(r,l));if(u.ok)return qt(await u.json());throw await Bt("Generate Auth Token",u)}async function hn(r,i=!1){let s;var e=await an(r.appConfig,e=>{if(!pn(e))throw Ft.create("not-registered");var t,n=e.authToken;if(i||2!==(t=n).requestStatus||function(e){var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+Mt}(t)){if(1===n.requestStatus)return s=async function(e,t){let n=await dn(e.appConfig);for(;1===n.authToken.requestStatus;)await Kt(100),n=await dn(e.appConfig);var r=n.authToken;return 0===r.requestStatus?hn(e,t):r}(r,i),e;if(!navigator.onLine)throw Ft.create("app-offline");n=(t=e,n={requestStatus:1,requestTime:Date.now()},Object.assign(Object.assign({},t),{authToken:n}));return s=async function(t,n){try{var r=await un(t,n),e=Object.assign(Object.assign({},n),{authToken:r});return await rn(t.appConfig,e),r}catch(e){throw!Ut(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(r=Object.assign(Object.assign({},n),{authToken:{requestStatus:0}}),await rn(t.appConfig,r)):await sn(t.appConfig),e}}(r,n),n}return e});return s?await s:e.authToken}function dn(e){return an(e,e=>{if(!pn(e))throw Ft.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+Dt<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}function pn(e){return void 0!==e&&2===e.registrationStatus}async function fn(e,t=!1){var n,r=e;return await((n=(await on(r)).registrationPromise)&&await n),(await hn(r,t)).token}function gn(e){return Ft.create("missing-app-config-values",{valueName:e})}const mn="installations",vn=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw gn("App Configuration");if(!e.name)throw gn("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw gn(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:Xe(t,"heartbeat"),_delete:()=>Promise.resolve()}},_n=e=>{const t=Xe(e.getProvider("app").getImmediate(),mn).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:r}=await on(t);return(r||hn(t)).catch(console.error),n.fid}(t),getToken:e=>fn(t,e)}};Ye(new ue(mn,vn,"PUBLIC")),Ye(new ue("installations-internal",_n,"PRIVATE")),ct(Rt,Pt),ct(Rt,Pt,"esm2017");const yn="analytics",wn="firebase_id",bn="origin",In="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Tn="https://www.googletagmanager.com/gtag/js",En=new ye("@firebase/analytics"),Cn=new O("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-initialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function Sn(e){if(e.startsWith(Tn))return e;var t=Cn.create("invalid-gtag-resource",{gtagURL:e});return En.warn(t.message),""}function kn(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function An(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}("firebase-js-sdk-policy",{createScriptURL:Sn}),r=document.createElement("script");var i=`${Tn}?l=${e}&id=${t}`;r.src=n?null===n||void 0===n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function Nn(d,p,f,g){return async function(e,...t){try{var n,r,i,s,a,o,c,l,u,h;"event"===e?([n,r]=t,await async function(e,n,r,i,s){try{let t=[];if(s&&s.send_to){let e=s.send_to;Array.isArray(e)||(e=[e]);const c=await kn(r);for(const l of e){var a=c.find(e=>e.measurementId===l),o=a&&n[a.appId];if(!o){t=[];break}t.push(o)}}0===t.length&&(t=Object.values(n)),await Promise.all(t),e("event",i,s||{})}catch(e){En.error(e)}}(d,p,f,n,r)):"config"===e?([i,s]=t,await async function(e,t,n,r,i,s){var a=r[i];try{if(a)await t[a];else{const c=await kn(n);var o=c.find(e=>e.measurementId===i);o&&await t[o.appId]}}catch(e){En.error(e)}e("config",i,s)}(d,p,f,g,i,s)):"consent"===e?([a,o]=t,d("consent",a,o)):"get"===e?([c,l,u]=t,d("get",c,l,u)):"set"===e?([h]=t,d("set",h)):d(e,...t)}catch(e){En.error(e)}}}const Rn=30;const Pn=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};async function Dn(e){var t,{appId:n,apiKey:r}=e,r={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":r})},n=In.replace("{app-id}",n);const i=await fetch(n,r);if(200===i.status||304===i.status)return i.json();{let e="";try{var s=await i.json();null!==(t=s.error)&&void 0!==t&&t.message&&(e=s.error.message)}catch(e){}throw Cn.create("config-fetch-failed",{httpStatus:i.status,responseMessage:e})}}async function xn(e,t=Pn,n){var{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw Cn.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw Cn.create("no-api-key")}var a=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const o=new Mn;return setTimeout(async()=>{o.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:r},i,s=Pn){var a;const{appId:o,measurementId:c}=n;try{await On(i,e)}catch(e){if(c)return En.warn("Timed out fetching this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:c};throw e}try{const l=await Dn(n);return s.deleteThrottleMetadata(o),l}catch(e){const u=e;if(!Ln(u)){if(s.deleteThrottleMetadata(o),c)return En.warn("Failed to fetch this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null===u||void 0===u?void 0:u.message}]`),{appId:o,measurementId:c};throw e}const h=503===Number(null===(a=null===u||void 0===u?void 0:u.customData)||void 0===a?void 0:a.httpStatus)?ce(r,s.intervalMillis,Rn):ce(r,s.intervalMillis),d={throttleEndTimeMillis:Date.now()+h,backoffCount:r+1};return s.setThrottleMetadata(o,d),En.debug(`Calling attemptFetch again in ${h} millis`),t(n,d,i,s)}}({appId:r,apiKey:i,measurementId:s},a,o,t)}function On(i,s){return new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(Cn.create("fetch-throttle",{throttleEndTimeMillis:s}))})})}function Ln(e){if(!(e instanceof x&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class Mn{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function Fn(t,e,n,r,i,s,a){const o=xn(t);o.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&En.warn(`The measurement ID in the local Firebase config (${t.options.measurementId})`+` does not match the measurement ID fetched from the server (${e.measurementId}).`+" To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.")}).catch(e=>En.error(e)),e.push(o);var c=async function(){if(!R())return En.warn(Cn.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await P()}catch(e){return En.warn(Cn.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then(e=>{if(e)return r.getId()}),[l,u]=await Promise.all([o,c]);!function(e){var t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(Tn)&&n.src.includes(e))return n}(s)&&An(s,l.measurementId),i("js",new Date);const h=null!==(c=null==a?void 0:a.config)&&void 0!==c?c:{};return h[bn]="firebase",h.update=!0,null!=u&&(h[wn]=u),i("config",l.measurementId,h),l.measurementId}class Un{constructor(e){this.app=e}_delete(){return delete Vn[this.app.options.appId],Promise.resolve()}}let Vn={},qn=[];const Bn={};let jn="dataLayer",zn="gtag",$n,Kn,Wn=!1;function Gn(e){if(Wn)throw Cn.create("already-initialized");e.dataLayerName&&(jn=e.dataLayerName),e.gtagName&&(zn=e.gtagName)}function Hn(e,t,n){!function(){const e=[];var t;C()&&e.push("This is a browser extension environment."),D()||e.push("Cookies are not available."),0<e.length&&(t=e.map((e,t)=>`(${t+1}) ${e}`).join(" "),t=Cn.create("invalid-analytics-context",{errorInfo:t}),En.warn(t.message))}();var r,i,s=e.options.appId;if(!s)throw Cn.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw Cn.create("no-api-key");En.warn('The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest'+` measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId}`+' provided in the "measurementId" field in the local Firebase config.')}if(null!=Vn[s])throw Cn.create("already-exists",{id:s});return Wn||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(jn),{wrappedGtag:r,gtagCore:i}=function(e,t,n,r,i){let s=function(){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=Nn(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Vn,qn,Bn,jn,zn),Kn=r,$n=i,Wn=!0),Vn[s]=Fn(e,qn,Bn,t,$n,jn,n),new Un(e)}async function Qn(){if(C())return!1;if(!D())return!1;if(!R())return!1;try{return await P()}catch(e){return!1}}function Jn(e,t,n){e=le(e),async function(e,t,n,r){if(r&&r.global)return e("set",{screen_name:n}),Promise.resolve();e("config",await t,{update:!0,screen_name:n})}(Kn,Vn[e.app.options.appId],t,n).catch(e=>En.error(e))}function Yn(e,t,n){e=le(e),async function(e,t,n,r){if(r&&r.global)return e("set",{user_id:n}),Promise.resolve();e("config",await t,{update:!0,user_id:n})}(Kn,Vn[e.app.options.appId],t,n).catch(e=>En.error(e))}function Xn(e,t,n){e=le(e),async function(e,t,n,r){if(r&&r.global){const i={};for(const s of Object.keys(n))i[`user_properties.${s}`]=n[s];return e("set",i),Promise.resolve()}e("config",await t,{update:!0,user_properties:n})}(Kn,Vn[e.app.options.appId],t,n).catch(e=>En.error(e))}function Zn(e,t){e=le(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(Vn[e.app.options.appId],t).catch(e=>En.error(e))}function er(e,t,n,r){e=le(e),async function(e,t,n,r,i){var s;i&&i.global?e("event",n,r):(s=await t,e("event",n,Object.assign(Object.assign({},r),{send_to:s})))}(Kn,Vn[e.app.options.appId],t,n,r).catch(e=>En.error(e))}const tr="@firebase/analytics",nr="0.10.10";Ye(new ue(yn,(e,{options:t})=>{return Hn(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),Ye(new ue("analytics-internal",function(e){try{const r=e.getProvider(yn).getImmediate();return{logEvent:(e,t,n)=>er(r,e,t,n)}}catch(e){throw Cn.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),ct(tr,nr),ct(tr,nr,"esm2017");var rr,ir;class sr{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){er(this._delegate,e,t,n)}setCurrentScreen(e,t){Jn(this._delegate,e,t)}setUserId(e,t){Yn(this._delegate,e,t)}setUserProperties(e,t){Xn(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){Zn(this._delegate,e)}}(St=rr=rr||{}).ADD_SHIPPING_INFO="add_shipping_info",St.ADD_PAYMENT_INFO="add_payment_info",St.ADD_TO_CART="add_to_cart",St.ADD_TO_WISHLIST="add_to_wishlist",St.BEGIN_CHECKOUT="begin_checkout",St.CHECKOUT_PROGRESS="checkout_progress",St.EXCEPTION="exception",St.GENERATE_LEAD="generate_lead",St.LOGIN="login",St.PAGE_VIEW="page_view",St.PURCHASE="purchase",St.REFUND="refund",St.REMOVE_FROM_CART="remove_from_cart",St.SCREEN_VIEW="screen_view",St.SEARCH="search",St.SELECT_CONTENT="select_content",St.SELECT_ITEM="select_item",St.SELECT_PROMOTION="select_promotion",St.SET_CHECKOUT_OPTION="set_checkout_option",St.SHARE="share",St.SIGN_UP="sign_up",St.TIMING_COMPLETE="timing_complete",St.VIEW_CART="view_cart",St.VIEW_ITEM="view_item",St.VIEW_ITEM_LIST="view_item_list",St.VIEW_PROMOTION="view_promotion",St.VIEW_SEARCH_RESULTS="view_search_results";const ar=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new sr(t,n)};ir={Analytics:sr,settings:Gn,isSupported:Qn,EventName:rr},Nt.INTERNAL.registerComponent(new ue("analytics-compat",ar,"PUBLIC").setServiceProps(ir).setMultipleInstances(!0)),Nt.registerVersion("@firebase/analytics-compat","0.2.16");const or=new Map,cr={activated:!1,tokenObservers:[]},lr={initialized:!1,enabled:!1};function ur(e){return or.get(e)||Object.assign({},cr)}const hr="https://content-firebaseappcheck.googleapis.com/v1",dr="exchangeDebugToken",pr={OFFSET_DURATION:3e5,RETRIAL_MIN_WAIT:3e4,RETRIAL_MAX_WAIT:96e4};class fr{constructor(e,t,n,r,i){if(this.operation=e,this.retryPolicy=t,this.getWaitDuration=n,this.lowerBound=r,this.upperBound=i,this.pending=null,i<(this.nextErrorWaitInterval=r))throw new Error("Proactive refresh lower bound greater than upper bound!")}start(){this.nextErrorWaitInterval=this.lowerBound,this.process(!0).catch(()=>{})}stop(){this.pending&&(this.pending.reject("cancelled"),this.pending=null)}isRunning(){return!!this.pending}async process(e){this.stop();try{this.pending=new y,this.pending.promise.catch(e=>{}),t=this.getNextRun(e),await new Promise(e=>{setTimeout(e,t)}),this.pending.resolve(),await this.pending.promise,this.pending=new y,this.pending.promise.catch(e=>{}),await this.operation(),this.pending.resolve(),await this.pending.promise,this.process(!0).catch(()=>{})}catch(e){this.retryPolicy(e)?this.process(!1).catch(()=>{}):this.stop()}var t}getNextRun(e){if(e)return this.nextErrorWaitInterval=this.lowerBound,this.getWaitDuration();var t=this.nextErrorWaitInterval;return this.nextErrorWaitInterval*=2,this.nextErrorWaitInterval>this.upperBound&&(this.nextErrorWaitInterval=this.upperBound),t}}const gr=new O("appCheck","AppCheck",{"already-initialized":"You have already called initializeAppCheck() for FirebaseApp {$appName} with different options. To avoid this error, call initializeAppCheck() with the same options as when it was originally called. This will return the already initialized instance.","use-before-activation":"App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. Call initializeAppCheck() before instantiating other Firebase services.","fetch-network-error":"Fetch failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-parse-error":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status-error":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","recaptcha-error":"ReCAPTCHA error.",throttled:"Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}"});function mr(e=!1){var t;return e?null===(t=self.grecaptcha)||void 0===t?void 0:t.enterprise:self.grecaptcha}function vr(e){if(!ur(e).activated)throw gr.create("use-before-activation",{appName:e.name})}function _r(e){var t=Math.round(e/1e3),n=Math.floor(t/86400),r=Math.floor((t-3600*n*24)/3600),i=Math.floor((t-3600*n*24-3600*r)/60),t=t-3600*n*24-3600*r-60*i;let s="";return n&&(s+=yr(n)+"d:"),r&&(s+=yr(r)+"h:"),s+=yr(i)+"m:"+yr(t)+"s",s}function yr(e){return 0===e?"00":10<=e?e.toString():"0"+e}async function wr({url:e,body:t},n){const r={"Content-Type":"application/json"},i=n.getImmediate({optional:!0});!i||(c=await i.getHeartbeatsHeader())&&(r["X-Firebase-Client"]=c);var s={method:"POST",body:JSON.stringify(t),headers:r};let a;try{a=await fetch(e,s)}catch(e){throw gr.create("fetch-network-error",{originalErrorMessage:null==e?void 0:e.message})}if(200!==a.status)throw gr.create("fetch-status-error",{httpStatus:a.status});let o;try{o=await a.json()}catch(e){throw gr.create("fetch-parse-error",{originalErrorMessage:null==e?void 0:e.message})}var c=o.ttl.match(/^([\d.]+)(s)$/);if(!c||!c[2]||isNaN(Number(c[1])))throw gr.create("fetch-parse-error",{originalErrorMessage:"ttl field (timeToLive) is not in standard Protobuf Duration "+`format: ${o.ttl}`});s=1e3*Number(c[1]),c=Date.now();return{token:o.token,expireTimeMillis:c+s,issuedAtTimeMillis:c}}function br(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${hr}/projects/${n}/apps/${r}:${dr}?key=${i}`,body:{debug_token:t}}}const Ir="firebase-app-check-database",Tr=1,Er="firebase-app-check-store",Cr="debug-token";let Sr=null;function kr(){return Sr||(Sr=new Promise((t,n)=>{try{const e=indexedDB.open(Ir,Tr);e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(gr.create("storage-open",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(Er,{keyPath:"compositeKey"})}}catch(e){n(gr.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}}),Sr)}async function Ar(e,t){const n=await kr(),r=n.transaction(Er,"readwrite"),i=r.objectStore(Er),s=i.put({compositeKey:e,value:t});return new Promise((t,n)=>{s.onsuccess=e=>{t()},r.onerror=e=>{var t;n(gr.create("storage-set",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}async function Nr(e){const t=await kr(),i=t.transaction(Er,"readonly"),n=i.objectStore(Er),s=n.get(e);return new Promise((n,r)=>{s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)},i.onerror=e=>{var t;r(gr.create("storage-get",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}function Rr(e){return`${e.options.appId}-${e.name}`}const Pr=new ye("@firebase/app-check");async function Dr(t){if(R()){let e=void 0;try{e=await Nr(Rr(t))}catch(e){Pr.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return e}}function xr(e,t){return R()?Ar(Rr(e),t).catch(e=>{Pr.warn(`Failed to write token to IndexedDB. Error: ${e}`)}):Promise.resolve()}async function Or(){let e=void 0;try{e=await Nr(Cr)}catch(e){}if(e)return e;var t,n=ne();return t=n,Ar(Cr,t).catch(e=>Pr.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),n}function Lr(){return lr.enabled}async function Mr(){var e=lr;if(e.enabled&&e.token)return e.token.promise;throw Error(`
Can't get debug token in production mode.
`)}const Fr={error:"UNKNOWN_ERROR"};async function Ur(e,t=!1){var n=e.app;vr(n);const r=ur(n);let i=r.token,s=void 0;if(i&&!zr(i)&&(r.token=void 0,i=void 0),i||(o=await r.cachedTokenPromise)&&(zr(o)?i=o:await xr(n,void 0)),!t&&i&&zr(i))return{token:i.token};let a=!1;if(Lr()){r.exchangeTokenPromise||(r.exchangeTokenPromise=wr(br(n,await Mr()),e.heartbeatServiceProvider).finally(()=>{r.exchangeTokenPromise=void 0}),a=!0);var o=await r.exchangeTokenPromise;return await xr(n,o),{token:(r.token=o).token}}try{r.exchangeTokenPromise||(r.exchangeTokenPromise=r.provider.getToken().finally(()=>{r.exchangeTokenPromise=void 0}),a=!0),i=await ur(n).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code?Pr.warn(e.message):Pr.error(e),s=e}let c;return i?s?c=zr(i)?{token:i.token,internalError:s}:$r(s):(c={token:i.token},r.token=i,await xr(n,i)):c=$r(s),a&&jr(n,c),c}function Vr(e,t,n,r){var i=e["app"];const s=ur(i);i={next:n,error:r,type:t};if(s.tokenObservers=[...s.tokenObservers,i],s.token&&zr(s.token)){const a=s.token;Promise.resolve().then(()=>{n({token:a.token}),Br(e)}).catch(()=>{})}s.cachedTokenPromise.then(()=>Br(e))}function qr(e,t){const n=ur(e);var r=n.tokenObservers.filter(e=>e.next!==t);0===r.length&&n.tokenRefresher&&n.tokenRefresher.isRunning()&&n.tokenRefresher.stop(),n.tokenObservers=r}function Br(e){var t=e["app"];const n=ur(t);let r=n.tokenRefresher;r||(r=function(n){const r=n["app"];return new fr(async()=>{var e=ur(r);let t;if(t=e.token?await Ur(n,!0):await Ur(n),t.error)throw t.error;if(t.internalError)throw t.internalError},()=>!0,()=>{var e=ur(r);if(e.token){var t=e.token.issuedAtTimeMillis+.5*(e.token.expireTimeMillis-e.token.issuedAtTimeMillis)+3e5,e=e.token.expireTimeMillis-3e5,t=Math.min(t,e);return Math.max(0,t-Date.now())}return 0},pr.RETRIAL_MIN_WAIT,pr.RETRIAL_MAX_WAIT)}(e),n.tokenRefresher=r),!r.isRunning()&&n.isTokenAutoRefreshEnabled&&r.start()}function jr(e,t){for(const n of ur(e).tokenObservers)try{"EXTERNAL"===n.type&&null!=t.error?n.error(t.error):n.next(t)}catch(e){}}function zr(e){return 0<e.expireTimeMillis-Date.now()}function $r(e){return{token:(t=Fr,r.encodeString(JSON.stringify(t),!1)),error:e};var t}class Kr{constructor(e,t){this.app=e,this.heartbeatServiceProvider=t}_delete(){var e=ur(this.app)["tokenObservers"];for(const t of e)qr(this.app,t.next);return Promise.resolve()}}function Wr(t){return{getToken:e=>Ur(t,e),getLimitedUseToken:()=>async function(e){var t=e.app;vr(t);const n=ur(t)["provider"];if(Lr()){var r=(await wr(br(t,await Mr()),e.heartbeatServiceProvider))["token"];return{token:r}}return{token:r=(await n.getToken())["token"]}}(t),addTokenListener:e=>Vr(t,"INTERNAL",e),removeTokenListener:e=>qr(t.app,e)}}const Gr="https://www.google.com/recaptcha/api.js",Hr="https://www.google.com/recaptcha/enterprise.js";function Qr(t,n){const r=new y,e=ur(t);e.reCAPTCHAState={initialized:r};const i=Xr(t);var s=mr(!1);return s?Yr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Gr,t.onload=e,document.head.appendChild(t)}(()=>{var e=mr(!1);if(!e)throw new Error("no recaptcha");Yr(t,n,e,i,r)}),r.promise}function Jr(t,n){const r=new y,e=ur(t);e.reCAPTCHAState={initialized:r};const i=Xr(t);var s=mr(!0);return s?Yr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Hr,t.onload=e,document.head.appendChild(t)}(()=>{var e=mr(!0);if(!e)throw new Error("no recaptcha");Yr(t,n,e,i,r)}),r.promise}function Yr(e,t,n,r,i){n.ready(()=>{!function(e,t,n,r){const i=n.render(r,{sitekey:t,size:"invisible",callback:()=>{ur(e).reCAPTCHAState.succeeded=!0},"error-callback":()=>{ur(e).reCAPTCHAState.succeeded=!1}}),s=ur(e);s.reCAPTCHAState=Object.assign(Object.assign({},s.reCAPTCHAState),{widgetId:i})}(e,t,n,r),i.resolve(n)})}function Xr(e){var t=`fire_app_check_${e.name}`;const n=document.createElement("div");return n.id=t,n.style.display="none",document.body.appendChild(n),t}async function Zr(r){vr(r);const i=await ur(r).reCAPTCHAState.initialized.promise;return new Promise((e,t)=>{const n=ur(r).reCAPTCHAState;i.ready(()=>{e(i.execute(n.widgetId,{action:"fire_app_check"}))})})}class ei{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;ii(this._throttleData);var t=await Zr(this._app).catch(e=>{throw gr.create("recaptcha-error")});if(null===(e=ur(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw gr.create("recaptcha-error");let n;try{n=await wr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${hr}/projects/${n}/apps/${r}:exchangeRecaptchaV3Token?key=${i}`,body:{recaptcha_v3_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=ri(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),gr.create("throttled",{time:_r(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Xe(e,"heartbeat"),Qr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof ei&&this._siteKey===e._siteKey}}class ti{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;ii(this._throttleData);var t=await Zr(this._app).catch(e=>{throw gr.create("recaptcha-error")});if(null===(e=ur(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw gr.create("recaptcha-error");let n;try{n=await wr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${hr}/projects/${n}/apps/${r}:exchangeRecaptchaEnterpriseToken?key=${i}`,body:{recaptcha_enterprise_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=ri(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),gr.create("throttled",{time:_r(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Xe(e,"heartbeat"),Jr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof ti&&this._siteKey===e._siteKey}}class ni{constructor(e){this._customProviderOptions=e}async getToken(){var e=await this._customProviderOptions.getToken(),t=function(e){const t=U(e).claims;return"object"==typeof t&&t.hasOwnProperty("iat")?t.iat:null}(e.token),t=null!==t&&t<Date.now()&&0<t?1e3*t:Date.now();return Object.assign(Object.assign({},e),{issuedAtTimeMillis:t})}initialize(e){this._app=e}isEqual(e){return e instanceof ni&&this._customProviderOptions.getToken.toString()===e._customProviderOptions.getToken.toString()}}function ri(e,t){if(404===e||403===e)return{backoffCount:1,allowRequestsAfter:Date.now()+864e5,httpStatus:e};var n=t?t.backoffCount:0,r=ce(n,1e3,2);return{backoffCount:n+1,allowRequestsAfter:Date.now()+r,httpStatus:e}}function ii(e){if(e&&Date.now()-e.allowRequestsAfter<=0)throw gr.create("throttled",{time:_r(e.allowRequestsAfter-Date.now()),httpStatus:e.httpStatus})}function si(e=at(),t){const n=Xe(e=le(e),"app-check");if(lr.initialized||function(){var e=o();const t=lr;if(t.initialized=!0,"string"==typeof e.FIREBASE_APPCHECK_DEBUG_TOKEN||!0===e.FIREBASE_APPCHECK_DEBUG_TOKEN){t.enabled=!0;const n=new y;t.token=n,"string"==typeof e.FIREBASE_APPCHECK_DEBUG_TOKEN?n.resolve(e.FIREBASE_APPCHECK_DEBUG_TOKEN):n.resolve(Or())}}(),Lr()&&Mr().then(e=>console.log(`App Check debug token: ${e}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`)),n.isInitialized()){var r=n.getImmediate();const i=n.getOptions();if(i.isTokenAutoRefreshEnabled===t.isTokenAutoRefreshEnabled&&i.provider.isEqual(t.provider))return r;throw gr.create("already-initialized",{appName:e.name})}r=n.initialize({options:t});return function(t,e,n){const r=function(e,t){return or.set(e,t),or.get(e)}(t,Object.assign({},cr));r.activated=!0,r.provider=e,r.cachedTokenPromise=Dr(t).then(e=>(e&&zr(e)&&(r.token=e,jr(t,{token:e.token})),e)),r.isTokenAutoRefreshEnabled=void 0===n?t.automaticDataCollectionEnabled:n,r.provider.initialize(t)}(e,t.provider,t.isTokenAutoRefreshEnabled),ur(e).isTokenAutoRefreshEnabled&&Vr(r,"INTERNAL",()=>{}),r}const ai="app-check-internal";Ye(new ue("app-check",e=>{var t,n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat");return t=n,e=r,new Kr(t,e)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider(ai).initialize()})),Ye(new ue(ai,e=>{return Wr(e.getProvider("app-check").getImmediate())},"PUBLIC").setInstantiationMode("EXPLICIT")),ct("@firebase/app-check","0.8.10");const oi=new O("appCheck","AppCheck",{"use-before-activation":"App Check is being used before activate() is called for FirebaseApp {$appName}. Call activate() before instantiating other Firebase services."});class ci{constructor(e){this.app=e}activate(e,t){let n;n="string"==typeof e?new ei(e):e instanceof ti||e instanceof ei||e instanceof ni?e:new ni({getToken:e.getToken}),this._delegate=si(this.app,{provider:n,isTokenAutoRefreshEnabled:t})}setTokenAutoRefreshEnabled(e){if(!this._delegate)throw oi.create("use-before-activation",{appName:this.app.name});!function(e,t){const n=ur(e.app);n.tokenRefresher&&(!0===t?n.tokenRefresher.start():n.tokenRefresher.stop()),n.isTokenAutoRefreshEnabled=t}(this._delegate,e)}getToken(e){if(!this._delegate)throw oi.create("use-before-activation",{appName:this.app.name});return async function(e,t){var n=await Ur(e,t);if(n.error)throw n.error;return{token:n.token}}(this._delegate,e)}onTokenChanged(e,t,n){if(!this._delegate)throw oi.create("use-before-activation",{appName:this.app.name});return function(e,t,n){let r=()=>{},i=()=>{};return r=null!=t.next?t.next.bind(t):t,null!=t.error?i=t.error.bind(t):n&&(i=n),Vr(e,"EXTERNAL",r,i),()=>qr(e.app,r)}(this._delegate,e,t)}}const li=e=>{var t=e.getProvider("app-compat").getImmediate();return new ci(t)};function ui(e,t){var n={};for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]]);return n}Nt.INTERNAL.registerComponent(new ue("appCheck-compat",li,"PUBLIC").setServiceProps({ReCaptchaEnterpriseProvider:ti,ReCaptchaV3Provider:ei,CustomProvider:ni})),Nt.registerVersion("@firebase/app-check-compat","0.3.17");const hi={FACEBOOK:"facebook.com",GITHUB:"github.com",GOOGLE:"google.com",PASSWORD:"password",PHONE:"phone",TWITTER:"twitter.com"},di={EMAIL_SIGNIN:"EMAIL_SIGNIN",PASSWORD_RESET:"PASSWORD_RESET",RECOVER_EMAIL:"RECOVER_EMAIL",REVERT_SECOND_FACTOR_ADDITION:"REVERT_SECOND_FACTOR_ADDITION",VERIFY_AND_CHANGE_EMAIL:"VERIFY_AND_CHANGE_EMAIL",VERIFY_EMAIL:"VERIFY_EMAIL"};function pi(){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."}}function fi(){return{"admin-restricted-operation":"This operation is restricted to administrators only.","argument-error":"","app-not-authorized":"This app, identified by the domain where it's hosted, is not authorized to use Firebase Authentication with the provided API key. Review your key configuration in the Google API console.","app-not-installed":"The requested mobile application corresponding to the identifier (Android package name or iOS bundle ID) provided is not installed on this device.","captcha-check-failed":"The reCAPTCHA response token provided is either invalid, expired, already used or the domain associated with it does not match the list of whitelisted domains.","code-expired":"The SMS code has expired. Please re-send the verification code to try again.","cordova-not-ready":"Cordova framework is not ready.","cors-unsupported":"This browser is not supported.","credential-already-in-use":"This credential is already associated with a different user account.","custom-token-mismatch":"The custom token corresponds to a different audience.","requires-recent-login":"This operation is sensitive and requires recent authentication. Log in again before retrying this request.","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.","dynamic-link-not-activated":"Please activate Dynamic Links in the Firebase Console and agree to the terms and conditions.","email-change-needs-verification":"Multi-factor users must always have a verified email.","email-already-in-use":"The email address is already in use by another account.","emulator-config-failed":'Auth instance has already been used to make a network call. Auth can no longer be configured to use the emulator. Try calling "connectAuthEmulator()" sooner.',"expired-action-code":"The action code has expired.","cancelled-popup-request":"This operation has been cancelled due to another conflicting popup being opened.","internal-error":"An internal AuthError has occurred.","invalid-app-credential":"The phone verification request contains an invalid application verifier. The reCAPTCHA token response is either invalid or expired.","invalid-app-id":"The mobile app identifier is not registered for the current project.","invalid-user-token":"This user's credential isn't valid for this project. This can happen if the user's token has been tampered with, or if the user isn't for the project associated with this API key.","invalid-auth-event":"An internal AuthError has occurred.","invalid-verification-code":"The SMS verification code used to create the phone auth credential is invalid. Please resend the verification code sms and be sure to use the verification code provided by the user.","invalid-continue-uri":"The continue URL provided in the request is invalid.","invalid-cordova-configuration":"The following Cordova plugins must be installed to enable OAuth sign-in: cordova-plugin-buildinfo, cordova-universal-links-plugin, cordova-plugin-browsertab, cordova-plugin-inappbrowser and cordova-plugin-customurlscheme.","invalid-custom-token":"The custom token format is incorrect. Please check the documentation.","invalid-dynamic-link-domain":"The provided dynamic link domain is not configured or authorized for the current project.","invalid-email":"The email address is badly formatted.","invalid-emulator-scheme":"Emulator URL must start with a valid scheme (http:// or https://).","invalid-api-key":"Your API key is invalid, please check you have copied it correctly.","invalid-cert-hash":"The SHA-1 certificate hash provided is invalid.","invalid-credential":"The supplied auth credential is incorrect, malformed or has expired.","invalid-message-payload":"The email template corresponding to this action contains invalid characters in its message. Please fix by going to the Auth email templates section in the Firebase Console.","invalid-multi-factor-session":"The request does not contain a valid proof of first factor successful sign-in.","invalid-oauth-provider":"EmailAuthProvider is not supported for this operation. This operation only supports OAuth providers.","invalid-oauth-client-id":"The OAuth client ID provided is either invalid or does not match the specified API key.","unauthorized-domain":"This domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.","invalid-action-code":"The action code is invalid. This can happen if the code is malformed, expired, or has already been used.","wrong-password":"The password is invalid or the user does not have a password.","invalid-persistence-type":"The specified persistence type is invalid. It can only be local, session or none.","invalid-phone-number":"The format of the phone number provided is incorrect. Please enter the phone number in a format that can be parsed into E.164 format. E.164 phone numbers are written in the format [+][country code][subscriber number including area code].","invalid-provider-id":"The specified provider ID is invalid.","invalid-recipient-email":"The email corresponding to this action failed to send as the provided recipient email address is invalid.","invalid-sender":"The email template corresponding to this action contains an invalid sender email or name. Please fix by going to the Auth email templates section in the Firebase Console.","invalid-verification-id":"The verification ID used to create the phone auth credential is invalid.","invalid-tenant-id":"The Auth instance's tenant ID is invalid.","login-blocked":"Login blocked by user-provided method: {$originalMessage}","missing-android-pkg-name":"An Android Package Name must be provided if the Android App is required to be installed.","auth-domain-config-required":"Be sure to include authDomain when calling firebase.initializeApp(), by following the instructions in the Firebase console.","missing-app-credential":"The phone verification request is missing an application verifier assertion. A reCAPTCHA response token needs to be provided.","missing-verification-code":"The phone auth credential was created with an empty SMS verification code.","missing-continue-uri":"A continue URL must be provided in the request.","missing-iframe-start":"An internal AuthError has occurred.","missing-ios-bundle-id":"An iOS Bundle ID must be provided if an App Store ID is provided.","missing-or-invalid-nonce":"The request does not contain a valid nonce. This can occur if the SHA-256 hash of the provided raw nonce does not match the hashed nonce in the ID token payload.","missing-password":"A non-empty password must be provided","missing-multi-factor-info":"No second factor identifier is provided.","missing-multi-factor-session":"The request is missing proof of first factor successful sign-in.","missing-phone-number":"To send verification codes, provide a phone number for the recipient.","missing-verification-id":"The phone auth credential was created with an empty verification ID.","app-deleted":"This instance of FirebaseApp has been deleted.","multi-factor-info-not-found":"The user does not have a second factor matching the identifier provided.","multi-factor-auth-required":"Proof of ownership of a second factor is required to complete sign-in.","account-exists-with-different-credential":"An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.","network-request-failed":"A network AuthError (such as timeout, interrupted connection or unreachable host) has occurred.","no-auth-event":"An internal AuthError has occurred.","no-such-provider":"User was not linked to an account with the given provider.","null-user":"A null user object was provided as the argument for an operation which requires a non-null user object.","operation-not-allowed":"The given sign-in provider is disabled for this Firebase project. Enable it in the Firebase console, under the sign-in method tab of the Auth section.","operation-not-supported-in-this-environment":'This operation is not supported in the environment this application is running on. "location.protocol" must be http, https or chrome-extension and web storage must be enabled.',"popup-blocked":"Unable to establish a connection with the popup. It may have been blocked by the browser.","popup-closed-by-user":"The popup has been closed by the user before finalizing the operation.","provider-already-linked":"User can only be linked to one identity for the given provider.","quota-exceeded":"The project's quota for this operation has been exceeded.","redirect-cancelled-by-user":"The redirect operation has been cancelled by the user before finalizing.","redirect-operation-pending":"A redirect sign-in operation is already pending.","rejected-credential":"The request contains malformed or mismatching credentials.","second-factor-already-in-use":"The second factor is already enrolled on this account.","maximum-second-factor-count-exceeded":"The maximum allowed number of second factors on a user has been exceeded.","tenant-id-mismatch":"The provided tenant ID does not match the Auth instance's tenant ID",timeout:"The operation has timed out.","user-token-expired":"The user's credential is no longer valid. The user must sign in again.","too-many-requests":"We have blocked all requests from this device due to unusual activity. Try again later.","unauthorized-continue-uri":"The domain of the continue URL is not whitelisted. Please whitelist the domain in the Firebase console.","unsupported-first-factor":"Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.","unsupported-persistence-type":"The current environment does not support the specified persistence type.","unsupported-tenant-operation":"This operation is not supported in a multi-tenant context.","unverified-email":"The operation requires a verified email.","user-cancelled":"The user did not grant your application the permissions it requested.","user-not-found":"There is no user record corresponding to this identifier. The user may have been deleted.","user-disabled":"The user account has been disabled by an administrator.","user-mismatch":"The supplied credentials do not correspond to the previously signed in user.","user-signed-out":"","weak-password":"The password must be 6 characters long or more.","web-storage-unsupported":"This browser is not supported or 3rd party cookies and data may be disabled.","already-initialized":"initializeAuth() has already been called with different options. To avoid this error, call initializeAuth() with the same options as when it was originally called, or call getAuth() to return the already initialized instance.","missing-recaptcha-token":"The reCAPTCHA token is missing when sending request to the backend.","invalid-recaptcha-token":"The reCAPTCHA token is invalid when sending request to the backend.","invalid-recaptcha-action":"The reCAPTCHA action is invalid when sending request to the backend.","recaptcha-not-enabled":"reCAPTCHA Enterprise integration is not enabled for this project.","missing-client-type":"The reCAPTCHA client type is missing when sending request to the backend.","missing-recaptcha-version":"The reCAPTCHA version is missing when sending request to the backend.","invalid-req-type":"Invalid request parameters.","invalid-recaptcha-version":"The reCAPTCHA version is invalid when sending request to the backend.","unsupported-password-policy-schema-version":"The password policy received from the backend uses a schema version that is not supported by this version of the Firebase SDK.","password-does-not-meet-requirements":"The password does not meet the requirements."}}const gi=pi,mi=new O("auth","Firebase",pi()),vi=new ye("@firebase/auth");function _i(e,...t){vi.logLevel<=m.ERROR&&vi.error(`Auth (${it}): ${e}`,...t)}function yi(e,...t){throw Ei(e,...t)}function wi(e,...t){return Ei(e,...t)}function bi(e,t,n){var r=Object.assign(Object.assign({},gi()),{[t]:n});const i=new O("auth","Firebase",r);return i.create(t,{appName:e.name})}function Ii(e){return bi(e,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function Ti(e,t,n){if(!(t instanceof n))throw n.name!==t.constructor.name&&yi(e,"argument-error"),bi(e,"argument-error",`Type of ${t.constructor.name} does not match expected instance.`+"Did you pass a reference from a different Auth SDK?")}function Ei(e,...t){if("string"==typeof e)return mi.create(e,...t);{var n=t[0];const r=[...t.slice(1)];return r[0]&&(r[0].appName=e.name),e._errorFactory.create(n,...r)}}function Ci(e,t,...n){if(!e)throw Ei(t,...n)}function Si(e){var t="INTERNAL ASSERTION FAILED: "+e;throw _i(t),new Error(t)}function ki(e,t){e||Si(t)}function Ai(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.href)||""}function Ni(){return"http:"===Ri()||"https:"===Ri()}function Ri(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.protocol)||null}class Pi{constructor(e,t){ki((this.shortDelay=e)<(this.longDelay=t),"Short delay should be less than long delay!"),this.isMobile=I()||S()}get(){return"undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&(Ni()||C()||"connection"in navigator)&&!navigator.onLine?Math.min(5e3,this.shortDelay):this.isMobile?this.longDelay:this.shortDelay}}function Di(e,t){ki(e.emulator,"Emulator should always be set here");var n=e.emulator["url"];return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class xi{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}static fetch(){return this.fetchImpl||("undefined"!=typeof self&&"fetch"in self?self.fetch:"undefined"!=typeof globalThis&&globalThis.fetch?globalThis.fetch:"undefined"!=typeof fetch?fetch:void Si("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}static headers(){return this.headersImpl||("undefined"!=typeof self&&"Headers"in self?self.Headers:"undefined"!=typeof globalThis&&globalThis.Headers?globalThis.Headers:"undefined"!=typeof Headers?Headers:void Si("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}static response(){return this.responseImpl||("undefined"!=typeof self&&"Response"in self?self.Response:"undefined"!=typeof globalThis&&globalThis.Response?globalThis.Response:"undefined"!=typeof Response?Response:void Si("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}}const Oi={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"},Li=new Pi(3e4,6e4);function Mi(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function Fi(s,a,o,c,e={}){return Ui(s,e,async()=>{let e={},t={};c&&("GET"===a?t=c:e={body:JSON.stringify(c)});var n=K(Object.assign({key:s.config.apiKey},t)).slice(1);const r=await s._getAdditionalHeaders();r["Content-Type"]="application/json",s.languageCode&&(r["X-Firebase-Locale"]=s.languageCode);const i=Object.assign({method:a,headers:r},e);return"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||(i.referrerPolicy="no-referrer"),xi.fetch()(qi(s,s.config.apiHost,o,n),i)})}async function Ui(t,e,n){t._canInitEmulator=!1;var r=Object.assign(Object.assign({},Oi),e);try{const a=new Bi(t),o=await Promise.race([n(),a.promise]);a.clearNetworkTimeout();var i=await o.json();if("needConfirmation"in i)throw ji(t,"account-exists-with-different-credential",i);if(o.ok&&!("errorMessage"in i))return i;{const c=o.ok?i.errorMessage:i.error.message,[l,u]=c.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===l)throw ji(t,"credential-already-in-use",i);if("EMAIL_EXISTS"===l)throw ji(t,"email-already-in-use",i);if("USER_DISABLED"===l)throw ji(t,"user-disabled",i);var s=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw bi(t,s,u);yi(t,s)}}catch(e){if(e instanceof x)throw e;yi(t,"network-request-failed",{message:String(e)})}}async function Vi(e,t,n,r,i={}){var s=await Fi(e,t,n,r,i);return"mfaPendingCredential"in s&&yi(e,"multi-factor-auth-required",{_serverResponse:s}),s}function qi(e,t,n,r){var i=`${t}${n}?${r}`;return e.config.emulator?Di(e.config,i):`${e.config.apiScheme}://${i}`}class Bi{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(wi(this.auth,"network-request-failed")),Li.get())})}}function ji(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=wi(e,t,r);return i.customData._tokenResponse=n,i}function zi(e){return void 0!==e&&void 0!==e.getResponse}function $i(e){return void 0!==e&&void 0!==e.enterprise}class Ki{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],void 0===e.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||0===this.recaptchaEnforcementState.length)return null;for(const t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return function(e){switch(e){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}(t.enforcementState);return null}isProviderEnabled(e){return"ENFORCE"===this.getProviderEnforcementState(e)||"AUDIT"===this.getProviderEnforcementState(e)}isAnyProviderEnabled(){return this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")||this.isProviderEnabled("PHONE_PROVIDER")}}async function Wi(e,t){return Fi(e,"GET","/v2/recaptchaConfig",Mi(e,t))}async function Gi(e,t){return Fi(e,"POST","/v1/accounts:lookup",t)}function Hi(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Qi(e){return 1e3*Number(e)}function Ji(e){var[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r)return _i("JWT malformed, contained fewer than 3 sections"),null;try{var i=a(n);return i?JSON.parse(i):(_i("Failed to decode base64 JWT payload"),null)}catch(e){return _i("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}function Yi(e){var t=Ji(e);return Ci(t,"internal-error"),Ci(void 0!==t.exp,"internal-error"),Ci(void 0!==t.iat,"internal-error"),Number(t.exp)-Number(t.iat)}async function Xi(t,n,e=!1){if(e)return n;try{return n}catch(e){throw e instanceof x&&(n=[e["code"]][0],"auth/user-disabled"===n||"auth/user-token-expired"===n)&&t.auth.currentUser===t&&await t.auth.signOut(),e}}class Zi{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,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(e){if(e){var t=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),t}this.errorBackoff=3e4;t=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,t)}schedule(e=!1){var t;this.isRunning&&(t=this.getInterval(e),this.timerId=setTimeout(async()=>{await this.iteration()},t))}async iteration(){try{await this.user.getIdToken(!0)}catch(e){return void("auth/network-request-failed"===(null==e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class es{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Hi(this.lastLoginAt),this.creationTime=Hi(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function ts(e){var t=e.auth,n=await e.getIdToken(),r=await Xi(e,Gi(t,{idToken:n}));Ci(null==r?void 0:r.users.length,t,"internal-error");var i=r.users[0];e._notifyReloadListener(i);var s,a,t=null!==(n=i.providerUserInfo)&&void 0!==n&&n.length?ns(i.providerUserInfo):[],r=(s=e.providerData,a=t,[...s.filter(t=>!a.some(e=>e.providerId===t.providerId)),...a]),n=e.isAnonymous,t=!(e.email&&i.passwordHash||null!==r&&r.length),t=!!n&&t,t={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:r,metadata:new es(i.createdAt,i.lastLoginAt),isAnonymous:t};Object.assign(e,t)}function ns(e){return e.map(e=>{var t=e["providerId"],n=ui(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}})}class rs{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){Ci(e.idToken,"internal-error"),Ci(void 0!==e.idToken,"internal-error"),Ci(void 0!==e.refreshToken,"internal-error");var t="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):Yi(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){Ci(0!==e.length,"internal-error");var t=Yi(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return t||!this.accessToken||this.isExpired?(Ci(this.refreshToken,e,"user-token-expired"),this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null):this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){var i,s,{accessToken:n,refreshToken:r,expiresIn:a}=(s=t,await{accessToken:(a=await Ui(i=e,{},async()=>{var e=K({grant_type:"refresh_token",refresh_token:s}).slice(1),{tokenApiHost:t,apiKey:n}=i.config,n=qi(i,t,"/v1/token",`key=${n}`);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/x-www-form-urlencoded",xi.fetch()(n,{method:"POST",headers:r,body:e})})).access_token,expiresIn:a.expires_in,refreshToken:a.refresh_token});this.updateTokensAndExpiration(n,r,Number(a))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){var{refreshToken:n,accessToken:r,expirationTime:i}=t;const s=new rs;return n&&(Ci("string"==typeof n,"internal-error",{appName:e}),s.refreshToken=n),r&&(Ci("string"==typeof r,"internal-error",{appName:e}),s.accessToken=r),i&&(Ci("number"==typeof i,"internal-error",{appName:e}),s.expirationTime=i),s}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 rs,this.toJSON())}_performRefresh(){return Si("not implemented")}}function is(e,t){Ci("string"==typeof e||void 0===e,"internal-error",{appName:t})}class ss{constructor(e){var{uid:t,auth:n,stsTokenManager:r}=e,i=ui(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Zi(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=r,this.accessToken=r.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new es(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){var t=await Xi(this,this.stsTokenManager.getToken(this.auth,e));return Ci(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return async function(e,t=!1){const n=le(e);var r=await n.getIdToken(t),i=Ji(r);Ci(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");var s="object"==typeof i.firebase?i.firebase:void 0,a=null==s?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:Hi(Qi(i.auth_time)),issuedAtTime:Hi(Qi(i.iat)),expirationTime:Hi(Qi(i.exp)),signInProvider:a||null,signInSecondFactor:(null==s?void 0:s.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=le(e);await ts(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(Ci(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=>Object.assign({},e)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const t=new ss(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){Ci(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await ts(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(et(this.auth.app))return Promise.reject(Ii(this.auth));var e=await this.getIdToken();return await Xi(this,async function(e,t){return Fi(e,"POST","/v1/accounts:delete",t)}(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({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=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var n=null!==(a=t.displayName)&&void 0!==a?a:void 0,r=null!==(g=t.email)&&void 0!==g?g:void 0,i=null!==(o=t.phoneNumber)&&void 0!==o?o:void 0,s=null!==(l=t.photoURL)&&void 0!==l?l:void 0,a=null!==(c=t.tenantId)&&void 0!==c?c:void 0,o=null!==(g=t._redirectEventId)&&void 0!==g?g:void 0,c=null!==(l=t.createdAt)&&void 0!==l?l:void 0,l=null!==(g=t.lastLoginAt)&&void 0!==g?g:void 0;const{uid:u,emailVerified:h,isAnonymous:d,providerData:p,stsTokenManager:f}=t;Ci(u&&f,e,"internal-error");var g=rs.fromJSON(this.name,f);Ci("string"==typeof u,e,"internal-error"),is(n,e.name),is(r,e.name),Ci("boolean"==typeof h,e,"internal-error"),Ci("boolean"==typeof d,e,"internal-error"),is(i,e.name),is(s,e.name),is(a,e.name),is(o,e.name),is(c,e.name),is(l,e.name);const m=new ss({uid:u,auth:e,email:r,emailVerified:h,displayName:n,isAnonymous:d,photoURL:s,phoneNumber:i,tenantId:a,stsTokenManager:g,createdAt:c,lastLoginAt:l});return p&&Array.isArray(p)&&(m.providerData=p.map(e=>Object.assign({},e))),o&&(m._redirectEventId=o),m}static async _fromIdTokenResponse(e,t,n=!1){const r=new rs;r.updateFromServerResponse(t);var i=new ss({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n});return await ts(i),i}static async _fromGetAccountInfoResponse(e,t,n){var r=t.users[0];Ci(void 0!==r.localId,"internal-error");var i=void 0!==r.providerUserInfo?ns(r.providerUserInfo):[],s=!(r.email&&r.passwordHash||null!=i&&i.length);const a=new rs;a.updateFromIdToken(n);s=new ss({uid:r.localId,auth:e,stsTokenManager:a,isAnonymous:s}),i={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:i,metadata:new es(r.createdAt,r.lastLoginAt),isAnonymous:!(r.email&&r.passwordHash||null!=i&&i.length)};return Object.assign(s,i),s}}const as=new Map;function os(e){ki(e instanceof Function,"Expected a class definition");let t=as.get(e);return t?ki(t instanceof e,"Instance stored in cache mismatched with class"):(t=new e,as.set(e,t)),t}class cs{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){var t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}cs.type="NONE";const ls=cs;function us(e,t,n){return`firebase:${e}:${t}:${n}`}class hs{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;var{config:r,name:i}=this.auth;this.fullUserKey=us(this.userKey,r.apiKey,i),this.fullPersistenceKey=us("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(){var e=await this.persistence._get(this.fullUserKey);return e?ss._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence!==e){var t=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=e,t?this.setCurrentUser(t):void 0}}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new hs(os(ls),e,n);const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||os(ls);const s=us(n,e.config.apiKey,e.name);let a=null;for(const u of t)try{var o=await u._get(s);if(o){var c=ss._fromJSON(e,o);u!==i&&(a=c),i=u;break}}catch(e){}var l=r.filter(e=>e._shouldAllowMigration);return i._shouldAllowMigration&&l.length&&(i=l[0],a&&await i._set(s,a.toJSON()),await Promise.all(t.map(async e=>{if(e!==i)try{await e._remove(s)}catch(e){}}))),new hs(i,e,n)}}function ds(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(ms(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(ps(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(_s(t))return"Blackberry";if(ys(t))return"Webos";if(fs(t))return"Safari";if((t.includes("chrome/")||gs(t))&&!t.includes("edge/"))return"Chrome";if(vs(t))return"Android";var n=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);return 2===(null==n?void 0:n.length)?n[1]:"Other"}function ps(e=b()){return/firefox\//i.test(e)}function fs(e=b()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function gs(e=b()){return/crios\//i.test(e)}function ms(e=b()){return/iemobile/i.test(e)}function vs(e=b()){return/android/i.test(e)}function _s(e=b()){return/blackberry/i.test(e)}function ys(e=b()){return/webos/i.test(e)}function ws(e=b()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function bs(e=b()){return ws(e)||vs(e)||ys(e)||_s(e)||/windows phone/i.test(e)||ms(e)}function Is(e,t=[]){let n;switch(e){case"Browser":n=ds(b());break;case"Worker":n=`${ds(b())}-${e}`;break;default:n=e}var r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${it}/${r}`}class Ts{constructor(e){this.auth=e,this.queue=[]}pushCallback(r,e){var t=n=>new Promise((e,t)=>{try{e(r(n))}catch(e){t(e)}});t.onAbort=e,this.queue.push(t);const n=this.queue.length-1;return()=>{this.queue[n]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser!==e){const t=[];try{for(const n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(const r of t)try{r()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==e?void 0:e.message})}}}}class Es{constructor(e){var t,n=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=null!==(t=n.minPasswordLength)&&void 0!==t?t:6,n.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=n.maxPasswordLength),void 0!==n.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=n.containsLowercaseCharacter),void 0!==n.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=n.containsUppercaseCharacter),void 0!==n.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=n.containsNumericCharacter),void 0!==n.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=n.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=null!==(n=null===(n=e.allowedNonAlphanumericCharacters)||void 0===n?void 0:n.join(""))&&void 0!==n?n:"",this.forceUpgradeOnSignin=null!==(n=e.forceUpgradeOnSignin)&&void 0!==n&&n,this.schemaVersion=e.schemaVersion}validatePassword(e){var t,n,r;const i={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,i),this.validatePasswordCharacterOptions(e,i),i.isValid&&(i.isValid=null===(t=i.meetsMinPasswordLength)||void 0===t||t),i.isValid&&(i.isValid=null===(t=i.meetsMaxPasswordLength)||void 0===t||t),i.isValid&&(i.isValid=null===(n=i.containsLowercaseLetter)||void 0===n||n),i.isValid&&(i.isValid=null===(n=i.containsUppercaseLetter)||void 0===n||n),i.isValid&&(i.isValid=null===(r=i.containsNumericCharacter)||void 0===r||r),i.isValid&&(i.isValid=null===(r=i.containsNonAlphanumericCharacter)||void 0===r||r),i}validatePasswordLengthOptions(e,t){var n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){var n;this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);for(let r=0;r<e.length;r++)n=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,"a"<=n&&n<="z","A"<=n&&n<="Z","0"<=n&&n<="9",this.allowedNonAlphanumericCharacters.includes(n))}updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=n)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=i))}}class Cs{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 ks(this),this.idTokenSubscription=new ks(this),this.beforeStateQueue=new Ts(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=mi,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion}_initializeWithPersistence(t,n){return n&&(this._popupRedirectResolver=os(n)),this._initializationPromise=this.queue(async()=>{var e;if(!this._deleted&&(this.persistenceManager=await hs.create(this,t),!this._deleted)){if(null!==(e=this._popupRedirectResolver)&&void 0!==e&&e._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(n),this.lastNotifiedUid=(null===(e=this.currentUser)||void 0===e?void 0:e.uid)||null,this._deleted||(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(!this._deleted){var e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e)return this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{var t=await Gi(this,{idToken:e}),n=await ss._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(et(this.app)){const o=this.app.settings.authIdToken;return o?new Promise(e=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(o).then(e,e))}):this.directlySetCurrentUser(null)}var t,n,r,i=await this.assertedPersistence.getCurrentUser();let s=i,a=!1;if(e&&this.config.authDomain&&(await this.getOrInitRedirectPersistenceManager(),t=null===(r=this.redirectUser)||void 0===r?void 0:r._redirectEventId,n=null===s||void 0===s?void 0:s._redirectEventId,r=await this.tryRedirectSignIn(e),t&&t!==n||null==r||!r.user||(s=r.user,a=!0)),!s)return this.directlySetCurrentUser(null);if(s._redirectEventId)return Ci(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s);if(a)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=i,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await ts(e)}catch(e){if("auth/network-request-failed"!==(null==e?void 0:e.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;var e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(et(this.app))return Promise.reject(Ii(this));const t=e?le(e):null;return t&&Ci(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&&Ci(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 et(this.app)?Promise.reject(Ii(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return et(this.app)?Promise.reject(Ii(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(os(e))})}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){var e,t=await Fi(e=this,"GET","/v2/passwordPolicy",Mi(e,{})),t=new Es(t);null===this.tenantId?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new O("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{const n=this.onAuthStateChanged(()=>{n(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){const n={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(n.tenantId=this.tenantId),t=this,e=n,await Fi(t,"POST","/v2/accounts:revokeToken",Mi(t,e))}var t}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(e=this._currentUser)||void 0===e?void 0:e.toJSON()}}async _setRedirectUser(e,t){const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){var t;return this.redirectPersistenceManager||(Ci(t=e&&os(e)||this._popupRedirectResolver,this,"argument-error"),this.redirectPersistenceManager=await hs.create(this,[os(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()),this.redirectPersistenceManager}async _redirectUserForId(e){var t;return this._isInitialized&&await this.queue(async()=>{}),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._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(){var e;this._isInitialized&&(this.idTokenSubscription.next(this.currentUser),e=null!==(e=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==e?e:null,this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser)))}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};const i="function"==typeof t?t:t.next.bind(t);let s=!1;const a=this._isInitialized?Promise.resolve():this._initializationPromise;if(Ci(a,this,"internal-error"),a.then(()=>{s||i(this.currentUser)}),"function"==typeof t){const o=e.addObserver(t,n,r);return()=>{s=!0,o()}}{const c=e.addObserver(t);return()=>{s=!0,c()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),(this.currentUser=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 Ci(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Is(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);var t=await(null===(t=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===t?void 0:t.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t);t=await this._getAppCheckToken();return t&&(e["X-Firebase-AppCheck"]=t),e}async _getAppCheckToken(){var e,t,n=await(null===(n=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getToken());return null!=n&&n.error&&(e=`Error while retrieving App Check token: ${n.error}`,t=[],vi.logLevel<=m.WARN&&vi.warn(`Auth (${it}): ${e}`,...t)),null==n?void 0:n.token}}function Ss(e){return le(e)}class ks{constructor(e){this.auth=e,this.observer=null,this.addObserver=Q(e=>this.observer=e)}get next(){return Ci(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}let As={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function Ns(e){return As.loadJS(e)}function Rs(e){return`__${e}${Math.floor(1e6*Math.random())}`}class Ps{constructor(e){this.auth=e,this.counter=1e12,this._widgets=new Map}render(e,t){var n=this.counter;return this._widgets.set(n,new Os(e,this.auth.name,t||{})),this.counter++,n}reset(e){var t,n=e||1e12;null===(t=this._widgets.get(n))||void 0===t||t.delete(),this._widgets.delete(n)}getResponse(e){var t;return(null===(t=this._widgets.get(e||1e12))||void 0===t?void 0:t.getResponse())||""}async execute(e){var t;return null===(t=this._widgets.get(e||1e12))||void 0===t||t.execute(),""}}class Ds{constructor(){this.enterprise=new xs}ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}}class xs{ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}}class Os{constructor(e,t,n){this.params=n,this.timerId=null,this.deleted=!1,this.responseToken=null,this.clickHandler=()=>{this.execute()};var r="string"==typeof e?document.getElementById(e):e;Ci(r,"argument-error",{appName:t}),this.container=r,this.isVisible="invisible"!==this.params.size,this.isVisible?this.execute():this.container.addEventListener("click",this.clickHandler)}getResponse(){return this.checkIfDeleted(),this.responseToken}delete(){this.checkIfDeleted(),this.deleted=!0,this.timerId&&(clearTimeout(this.timerId),this.timerId=null),this.container.removeEventListener("click",this.clickHandler)}execute(){this.checkIfDeleted(),this.timerId||(this.timerId=window.setTimeout(()=>{this.responseToken=function(e){const t=[],n="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r<e;r++)t.push(n.charAt(Math.floor(Math.random()*n.length)));return t.join("")}(50);const{callback:e,"expired-callback":t}=this.params;if(e)try{e(this.responseToken)}catch(e){}this.timerId=window.setTimeout(()=>{if(this.timerId=null,this.responseToken=null,t)try{t()}catch(e){}this.isVisible&&this.execute()},6e4)},500))}checkIfDeleted(){if(this.deleted)throw new Error("reCAPTCHA mock was already deleted!")}}const Ls="NO_RECAPTCHA";class Ms{constructor(e){this.type="recaptcha-enterprise",this.auth=Ss(e)}async verify(i="verify",e=!1){function s(e,t,n){const r=window.grecaptcha;$i(r)?r.enterprise.ready(()=>{r.enterprise.execute(e,{action:i}).then(e=>{t(e)}).catch(()=>{t(Ls)})}):n(Error("No reCAPTCHA enterprise script loaded."))}if(this.auth.settings.appVerificationDisabledForTesting){const t=new Ds;return t.execute("siteKey",{action:"verify"})}return new Promise((n,r)=>{!async function(i){if(!e){if(null==i.tenantId&&null!=i._agentRecaptchaConfig)return i._agentRecaptchaConfig.siteKey;if(null!=i.tenantId&&void 0!==i._tenantRecaptchaConfigs[i.tenantId])return i._tenantRecaptchaConfigs[i.tenantId].siteKey}return new Promise(async(n,r)=>{Wi(i,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(e=>{if(void 0!==e.recaptchaKey){var t=new Ki(e);return null==i.tenantId?i._agentRecaptchaConfig=t:i._tenantRecaptchaConfigs[i.tenantId]=t,n(t.siteKey)}r(new Error("recaptcha Enterprise site key undefined"))}).catch(e=>{r(e)})})}(this.auth).then(t=>{if(!e&&$i(window.grecaptcha))s(t,n,r);else if("undefined"!=typeof window){let e=As.recaptchaEnterpriseScript;0!==e.length&&(e+=t),Ns(e).then(()=>{s(t,n,r)}).catch(e=>{r(e)})}else r(new Error("RecaptchaVerifier is only supported in browser"))}).catch(e=>{r(e)})})}}async function Fs(e,t,n,r=!1,i=!1){const s=new Ms(e);let a;if(i)a=Ls;else try{a=await s.verify(n)}catch(e){a=await s.verify(n,!0)}var o,c,l=Object.assign({},t);return"mfaSmsEnrollment"===n||"mfaSmsSignIn"===n?"phoneEnrollmentInfo"in l?(o=l.phoneEnrollmentInfo.phoneNumber,c=l.phoneEnrollmentInfo.recaptchaToken,Object.assign(l,{phoneEnrollmentInfo:{phoneNumber:o,recaptchaToken:c,captchaResponse:a,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})):"phoneSignInInfo"in l&&(c=l.phoneSignInInfo.recaptchaToken,Object.assign(l,{phoneSignInInfo:{recaptchaToken:c,captchaResponse:a,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})):(r?Object.assign(l,{captchaResp:a}):Object.assign(l,{captchaResponse:a}),Object.assign(l,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(l,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"})),l}async function Us(n,r,i,s,e){var t;if("EMAIL_PASSWORD_PROVIDER"===e){if(null!==(t=n._getRecaptchaConfig())&&void 0!==t&&t.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){var a=await Fs(n,r,i,"getOobCode"===i);return s(n,a)}return s(n,r).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log(`${i} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);var t=await Fs(n,r,i,"getOobCode"===i);return s(n,t)})}if("PHONE_PROVIDER"!==e)return Promise.reject(e+" provider is not supported.");if(null!==(a=n._getRecaptchaConfig())&&void 0!==a&&a.isProviderEnabled("PHONE_PROVIDER")){var o=await Fs(n,r,i);return s(n,o).catch(async e=>{if("AUDIT"!==(null===(t=n._getRecaptchaConfig())||void 0===t?void 0:t.getProviderEnforcementState("PHONE_PROVIDER"))||"auth/missing-recaptcha-token"!==e.code&&"auth/invalid-app-credential"!==e.code)return Promise.reject(e);console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${i} flow.`);var t=await Fs(n,r,i,!1,!0);return s(n,t)})}o=await Fs(n,r,i,!1,!0);return s(n,o)}function Vs(e,t,n){const r=Ss(e);Ci(r._canInitEmulator,r,"emulator-config-failed"),Ci(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");var i=!(null==n||!n.disableWarnings);const s=qs(t);var{host:a,port:o}=function(e){const t=qs(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);{if(i){var s=i[1];return{host:s,port:Bs(r.substr(s.length+1))}}var[a,s]=r.split(":");return{host:a,port:Bs(s)}}}(t);r.config.emulator={url:`${s}//${a}${null===o?"":`:${o}`}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:a,port:o,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||function(){function e(){const 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)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials.");"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}()}function qs(e){var t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function Bs(e){if(!e)return null;var t=Number(e);return isNaN(t)?null:t}class js{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return Si("not implemented")}_getIdTokenResponse(e){return Si("not implemented")}_linkToIdToken(e,t){return Si("not implemented")}_getReauthenticationResolver(e){return Si("not implemented")}}async function zs(e,t){return Fi(e,"POST","/v1/accounts:resetPassword",Mi(e,t))}async function $s(e,t){return Fi(e,"POST","/v1/accounts:signUp",t)}async function Ks(e,t){return Vi(e,"POST","/v1/accounts:signInWithPassword",Mi(e,t))}async function Ws(e,t){return Fi(e,"POST","/v1/accounts:sendOobCode",Mi(e,t))}async function Gs(e,t){return Ws(e,t)}async function Hs(e,t){return Ws(e,t)}class Qs extends js{constructor(e,t,n,r=null){super("password",n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new Qs(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new Qs(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e;if(null!=t&&t.email&&null!=t&&t.password){if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password);if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":return Us(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signInWithPassword",Ks,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return async function(e,t){return Vi(e,"POST","/v1/accounts:signInWithEmailLink",Mi(e,t))}(e,{email:this._email,oobCode:this._password});default:yi(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return Us(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",$s,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return async function(e,t){return Vi(e,"POST","/v1/accounts:signInWithEmailLink",Mi(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:yi(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function Js(e,t){return Vi(e,"POST","/v1/accounts:signInWithIdp",Mi(e,t))}class Ys extends js{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new Ys(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):yi("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:r}=t,t=ui(t,["providerId","signInMethod"]);if(!n||!r)return null;const i=new Ys(n,r);return i.idToken=t.idToken||void 0,i.accessToken=t.accessToken||void 0,i.secret=t.secret,i.nonce=t.nonce,i.pendingToken=t.pendingToken||null,i}_getIdTokenResponse(e){return Js(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Js(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Js(e,t)}buildRequest(){const e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const 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=K(t)}return e}}async function Xs(e,t){return Fi(e,"POST","/v1/accounts:sendVerificationCode",Mi(e,t))}const Zs={USER_NOT_FOUND:"user-not-found"};class ea extends js{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new ea({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new ea({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Vi(e,"POST","/v1/accounts:signInWithPhoneNumber",Mi(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){var n=await Vi(e,"POST","/v1/accounts:signInWithPhoneNumber",Mi(e,t));if(n.temporaryProof)throw ji(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Vi(e,"POST","/v1/accounts:signInWithPhoneNumber",Mi(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),Zs)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){var{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:r}}toJSON(){const e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){var{verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}=e="string"==typeof e?JSON.parse(e):e;return n||t||r||i?new ea({verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}):null}}class ta{constructor(e){var t=W(G(e)),n=null!==(r=t.apiKey)&&void 0!==r?r:null,r=null!==(i=t.oobCode)&&void 0!==i?i:null,i=function(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}}(null!==(i=t.mode)&&void 0!==i?i:null);Ci(n&&r&&i,"argument-error"),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=null!==(r=t.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(r=t.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(t=t.tenantId)&&void 0!==t?t:null}static parseLink(e){var t,n,r,t=(t=W(G(e=e)).link,n=t?W(G(t)).deep_link_id:null,((r=W(G(e)).deep_link_id)?W(G(r)).link:null)||r||n||t||e);try{return new ta(t)}catch(e){return null}}}class na{constructor(){this.providerId=na.PROVIDER_ID}static credential(e,t){return Qs._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){var n=ta.parseLink(t);return Ci(n,"argument-error"),Qs._fromEmailAndCode(e,n.code,n.tenantId)}}na.PROVIDER_ID="password",na.EMAIL_PASSWORD_SIGN_IN_METHOD="password",na.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class ra{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}}class ia extends ra{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class sa extends ia{static credentialFromJSON(e){var t="string"==typeof e?JSON.parse(e):e;return Ci("providerId"in t&&"signInMethod"in t,"argument-error"),Ys._fromParams(t)}credential(e){return this._credential(Object.assign(Object.assign({},e),{nonce:e.rawNonce}))}_credential(e){return Ci(e.idToken||e.accessToken,"argument-error"),Ys._fromParams(Object.assign(Object.assign({},e),{providerId:this.providerId,signInMethod:this.providerId}))}static credentialFromResult(e){return sa.oauthCredentialFromTaggedObject(e)}static credentialFromError(e){return sa.oauthCredentialFromTaggedObject(e.customData||{})}static oauthCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n,oauthTokenSecret:r,pendingToken:i,nonce:s,providerId:a}=e;if(!(n||r||t||i))return null;if(!a)return null;try{return new sa(a)._credential({idToken:t,accessToken:n,nonce:s,pendingToken:i})}catch(e){return null}}}class aa extends ia{constructor(){super("facebook.com")}static credential(e){return Ys._fromParams({providerId:aa.PROVIDER_ID,signInMethod:aa.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return aa.credentialFromTaggedObject(e)}static credentialFromError(e){return aa.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return aa.credential(e.oauthAccessToken)}catch(e){return null}}}aa.FACEBOOK_SIGN_IN_METHOD="facebook.com",aa.PROVIDER_ID="facebook.com";class oa extends ia{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return Ys._fromParams({providerId:oa.PROVIDER_ID,signInMethod:oa.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return oa.credentialFromTaggedObject(e)}static credentialFromError(e){return oa.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return oa.credential(t,n)}catch(e){return null}}}oa.GOOGLE_SIGN_IN_METHOD="google.com",oa.PROVIDER_ID="google.com";class ca extends ia{constructor(){super("github.com")}static credential(e){return Ys._fromParams({providerId:ca.PROVIDER_ID,signInMethod:ca.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return ca.credentialFromTaggedObject(e)}static credentialFromError(e){return ca.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return ca.credential(e.oauthAccessToken)}catch(e){return null}}}ca.GITHUB_SIGN_IN_METHOD="github.com",ca.PROVIDER_ID="github.com";class la extends js{constructor(e,t){super(e,e),this.pendingToken=t}_getIdTokenResponse(e){return Js(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Js(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Js(e,t)}toJSON(){return{signInMethod:this.signInMethod,providerId:this.providerId,pendingToken:this.pendingToken}}static fromJSON(e){var{providerId:t,signInMethod:n,pendingToken:r}="string"==typeof e?JSON.parse(e):e;return t&&n&&r&&t===n?new la(t,r):null}static _create(e,t){return new la(e,t)}buildRequest(){return{requestUri:"http://localhost",returnSecureToken:!0,pendingToken:this.pendingToken}}}class ua extends ra{constructor(e){Ci(e.startsWith("saml."),"argument-error"),super(e)}static credentialFromResult(e){return ua.samlCredentialFromTaggedObject(e)}static credentialFromError(e){return ua.samlCredentialFromTaggedObject(e.customData||{})}static credentialFromJSON(e){var t=la.fromJSON(e);return Ci(t,"argument-error"),t}static samlCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{pendingToken:t,providerId:n}=e;if(!t||!n)return null;try{return la._create(n,t)}catch(e){return null}}}class ha extends ia{constructor(){super("twitter.com")}static credential(e,t){return Ys._fromParams({providerId:ha.PROVIDER_ID,signInMethod:ha.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return ha.credentialFromTaggedObject(e)}static credentialFromError(e){return ha.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return ha.credential(t,n)}catch(e){return null}}}async function da(e,t){return Vi(e,"POST","/v1/accounts:signUp",Mi(e,t))}ha.TWITTER_SIGN_IN_METHOD="twitter.com",ha.PROVIDER_ID="twitter.com";class pa{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,r=!1){var i=await ss._fromIdTokenResponse(e,n,r),s=fa(n);return new pa({user:i,providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);var r=fa(n);return new pa({user:e,providerId:r,_tokenResponse:n,operationType:t})}}function fa(e){return e.providerId||("phoneNumber"in e?"phone":null)}class ga extends x{constructor(e,t,n,r){var i;super(t.code,t.message),this.operationType=n,this.user=r,Object.setPrototypeOf(this,ga.prototype),this.customData={appName:e.name,tenantId:null!==(i=e.tenantId)&&void 0!==i?i:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,r){return new ga(e,t,n,r)}}function ma(t,n,e,r){const i="reauthenticate"===n?e._getReauthenticationResolver(t):e._getIdTokenResponse(t);return i.catch(e=>{if("auth/multi-factor-auth-required"===e.code)throw ga._fromErrorAndOperation(t,e,n,r);throw e})}function va(e){return new Set(e.map(({providerId:e})=>e).filter(e=>!!e))}async function _a(e,t){const n=le(e);await wa(!0,n,t);var r=(e=n.auth,t={idToken:await n.getIdToken(),deleteProvider:[t]},await Fi(e,"POST","/v1/accounts:update",t))["providerUserInfo"];const i=va(r||[]);return n.providerData=n.providerData.filter(e=>i.has(e.providerId)),i.has("phone")||(n.phoneNumber=null),await n.auth._persistUserIfCurrent(n),n}async function ya(e,t,n=!1){var r=await Xi(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return pa._forOperation(e,"link",r)}async function wa(e,t,n){await ts(t);const r=va(t.providerData);var i=!1===e?"provider-already-linked":"no-such-provider";Ci(r.has(n)===e,t.auth,i)}async function ba(e,t,n=!1){var r=e["auth"];if(et(r.app))return Promise.reject(Ii(r));var i="reauthenticate";try{var s=await Xi(e,ma(r,i,t,e),n);Ci(s.idToken,r,"internal-error");var a=Ji(s.idToken);Ci(a,r,"internal-error");var o=a["sub"];return Ci(e.uid===o,r,"user-mismatch"),pa._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null==e?void 0:e.code)&&yi(r,"user-mismatch"),e}}async function Ia(e,t,n=!1){if(et(e.app))return Promise.reject(Ii(e));var r=await ma(e,"signIn",t),r=await pa._fromIdTokenResponse(e,"signIn",r);return n||await e._updateCurrentUser(r.user),r}async function Ta(e,t){return Ia(Ss(e),t)}async function Ea(e,t){var n=le(e);return await wa(!1,n,t.providerId),ya(n,t)}async function Ca(e,t){return ba(le(e),t)}async function Sa(e,t){if(et(e.app))return Promise.reject(Ii(e));const n=Ss(e);var r=await Vi(n,"POST","/v1/accounts:signInWithCustomToken",Mi(n,{token:t,returnSecureToken:!0})),r=await pa._fromIdTokenResponse(n,"signIn",r);return await n._updateCurrentUser(r.user),r}class ka{constructor(e,t){this.factorId=e,this.uid=t.mfaEnrollmentId,this.enrollmentTime=new Date(t.enrolledAt).toUTCString(),this.displayName=t.displayName}static _fromServerResponse(e,t){return"phoneInfo"in t?Aa._fromServerResponse(e,t):"totpInfo"in t?Na._fromServerResponse(e,t):yi(e,"internal-error")}}class Aa extends ka{constructor(e){super("phone",e),this.phoneNumber=e.phoneInfo}static _fromServerResponse(e,t){return new Aa(t)}}class Na extends ka{constructor(e){super("totp",e)}static _fromServerResponse(e,t){return new Na(t)}}function Ra(e,t,n){var r;Ci(0<(null===(r=n.url)||void 0===r?void 0:r.length),e,"invalid-continue-uri"),Ci(void 0===n.dynamicLinkDomain||0<n.dynamicLinkDomain.length,e,"invalid-dynamic-link-domain"),t.continueUrl=n.url,t.dynamicLinkDomain=n.dynamicLinkDomain,t.canHandleCodeInApp=n.handleCodeInApp,n.iOS&&(Ci(0<n.iOS.bundleId.length,e,"missing-ios-bundle-id"),t.iOSBundleId=n.iOS.bundleId),n.android&&(Ci(0<n.android.packageName.length,e,"missing-android-pkg-name"),t.androidInstallApp=n.android.installApp,t.androidMinimumVersionCode=n.android.minimumVersion,t.androidPackageName=n.android.packageName)}async function Pa(e){const t=Ss(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}async function Da(e,t){await Fi(e=le(e),"POST","/v1/accounts:update",Mi(e,{oobCode:t}))}async function xa(e,t){var n=le(e),r=await zs(n,{oobCode:t}),i=r.requestType;switch(Ci(i,n,"internal-error"),i){case"EMAIL_SIGNIN":break;case"VERIFY_AND_CHANGE_EMAIL":Ci(r.newEmail,n,"internal-error");break;case"REVERT_SECOND_FACTOR_ADDITION":Ci(r.mfaInfo,n,"internal-error");default:Ci(r.email,n,"internal-error")}let s=null;return r.mfaInfo&&(s=ka._fromServerResponse(Ss(n),r.mfaInfo)),{data:{email:("VERIFY_AND_CHANGE_EMAIL"===r.requestType?r.newEmail:r.email)||null,previousEmail:("VERIFY_AND_CHANGE_EMAIL"===r.requestType?r.email:r.newEmail)||null,multiFactorInfo:s},operation:i}}async function Oa(e,t){var n=Ni()?Ai():"http://localhost",n=(await Fi(e=le(e),"POST","/v1/accounts:createAuthUri",Mi(e,{identifier:t,continueUri:n})))["signinMethods"];return n||[]}async function La(e,t){var n=le(e),r={requestType:"VERIFY_EMAIL",idToken:await e.getIdToken()};t&&Ra(n.auth,r,t);var r=(await Ws(n.auth,r))["email"];r!==e.email&&await e.reload()}async function Ma(e,t,n){var r=le(e),i={requestType:"VERIFY_AND_CHANGE_EMAIL",idToken:await e.getIdToken(),newEmail:t};n&&Ra(r.auth,i,n);var i=(await Ws(r.auth,i))["email"];i!==e.email&&await e.reload()}async function Fa(e,{displayName:t,photoURL:n}){if(void 0!==t||void 0!==n){const i=le(e);var r=await i.getIdToken(),r=await Xi(i,async function(e,t){return Fi(e,"POST","/v1/accounts:update",t)}(i.auth,{idToken:r,displayName:t,photoUrl:n,returnSecureToken:!0}));i.displayName=r.displayName||null,i.photoURL=r.photoUrl||null;const s=i.providerData.find(({providerId:e})=>"password"===e);s&&(s.displayName=i.displayName,s.photoURL=i.photoURL),await i._updateTokensIfNecessary(r)}}async function Ua(e,t,n){var r=e["auth"];const i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);r=await Xi(e,async function(e,t){return Fi(e,"POST","/v1/accounts:update",t)}(r,i));await e._updateTokensIfNecessary(r,!0)}class Va{constructor(e,t,n={}){this.isNewUser=e,this.providerId=t,this.profile=n}}class qa extends Va{constructor(e,t,n,r){super(e,t,n),this.username=r}}class Ba extends Va{constructor(e,t){super(e,"facebook.com",t)}}class ja extends qa{constructor(e,t){super(e,"github.com",t,"string"==typeof(null==t?void 0:t.login)?null==t?void 0:t.login:null)}}class za extends Va{constructor(e,t){super(e,"google.com",t)}}class $a extends qa{constructor(e,t,n){super(e,"twitter.com",t,n)}}function Ka(e){var{user:t,_tokenResponse:n}=e;return t.isAnonymous&&!n?{providerId:null,isNewUser:!1,profile:null}:function(e){if(!e)return null;var t=e["providerId"],n=e.rawUserInfo?JSON.parse(e.rawUserInfo):{},r=e.isNewUser||"identitytoolkit#SignupNewUserResponse"===e.kind;if(!t&&null!=e&&e.idToken){var i=null===(i=null===(i=Ji(e.idToken))||void 0===i?void 0:i.firebase)||void 0===i?void 0:i.sign_in_provider;if(i){i="anonymous"!==i&&"custom"!==i?i:null;return new Va(r,i)}}if(!t)return null;switch(t){case"facebook.com":return new Ba(r,n);case"github.com":return new ja(r,n);case"google.com":return new za(r,n);case"twitter.com":return new $a(r,n,e.screenName||null);case"custom":case"anonymous":return new Va(r,null);default:return new Va(r,t,n)}}(n)}class Wa{constructor(e,t,n){this.type=e,this.credential=t,this.user=n}static _fromIdtoken(e,t){return new Wa("enroll",e,t)}static _fromMfaPendingCredential(e){return new Wa("signin",e)}toJSON(){return{multiFactorSession:{["enroll"===this.type?"idToken":"pendingCredential"]:this.credential}}}static fromJSON(e){var t;if(null!=e&&e.multiFactorSession){if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.pendingCredential)return Wa._fromMfaPendingCredential(e.multiFactorSession.pendingCredential);if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.idToken)return Wa._fromIdtoken(e.multiFactorSession.idToken)}return null}}class Ga{constructor(e,t,n){this.session=e,this.hints=t,this.signInResolver=n}static _fromError(e,i){const s=Ss(e),a=i.customData._serverResponse;var t=(a.mfaInfo||[]).map(e=>ka._fromServerResponse(s,e));Ci(a.mfaPendingCredential,s,"internal-error");const o=Wa._fromMfaPendingCredential(a.mfaPendingCredential);return new Ga(o,t,async e=>{var t=await e._process(s,o);delete a.mfaInfo,delete a.mfaPendingCredential;var n=Object.assign(Object.assign({},a),{idToken:t.idToken,refreshToken:t.refreshToken});switch(i.operationType){case"signIn":var r=await pa._fromIdTokenResponse(s,i.operationType,n);return await s._updateCurrentUser(r.user),r;case"reauthenticate":return Ci(i.user,s,"internal-error"),pa._forOperation(i.user,i.operationType,n);default:yi(s,"internal-error")}})}async resolveSignIn(e){return this.signInResolver(e)}}function Ha(e,t){return Fi(e,"POST","/v2/accounts/mfaEnrollment:start",Mi(e,t))}class Qa{constructor(t){this.user=t,this.enrolledFactors=[],t._onReload(e=>{e.mfaInfo&&(this.enrolledFactors=e.mfaInfo.map(e=>ka._fromServerResponse(t.auth,e)))})}static _fromUser(e){return new Qa(e)}async getSession(){return Wa._fromIdtoken(await this.user.getIdToken(),this.user)}async enroll(e,t){const n=e;var r=await this.getSession(),r=await Xi(this.user,n._process(this.user.auth,r,t));return await this.user._updateTokensIfNecessary(r),this.user.reload()}async unenroll(e){const t="string"==typeof e?e:e.uid;var n,r,i=await this.user.getIdToken();try{var s=await Xi(this.user,(n=this.user.auth,r={idToken:i,mfaEnrollmentId:t},Fi(n,"POST","/v2/accounts/mfaEnrollment:withdraw",Mi(n,r))));this.enrolledFactors=this.enrolledFactors.filter(({uid:e})=>e!==t),await this.user._updateTokensIfNecessary(s),await this.user.reload()}catch(e){throw e}}}const Ja=new WeakMap;const Ya="__sak";class Xa{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Ya,"1"),this.storage.removeItem(Ya),Promise.resolve(!0)):Promise.resolve(!1)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){var 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()}}class Za extends Xa{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=bs(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const r of Object.keys(this.listeners)){var t=this.storage.getItem(r),n=this.localCache[r];t!==n&&e(r,n,t)}}onStorageEvent(e,t=!1){if(e.key){const i=e.key;t?this.detachListener():this.stopPolling();var n=()=>{var e=this.storage.getItem(i);!t&&this.localCache[i]===e||this.notifyListeners(i,e)},r=this.storage.getItem(i);k()&&10===document.documentMode&&r!==e.newValue&&e.newValue!==e.oldValue?setTimeout(n,10):n()}else this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)})}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(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)})},1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){0===Object.keys(this.listeners).length&&(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),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){var t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}Za.type="LOCAL";const eo=Za;class to extends Xa{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}to.type="SESSION";const no=to;class ro{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){var e=this.receivers.find(e=>e.isListeningto(t));if(e)return e;e=new ro(t);return this.receivers.push(e),e}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:r,data:i}=t.data;var s=this.handlersMap[r];null!=s&&s.size&&(t.ports[0].postMessage({status:"ack",eventId:n,eventType:r}),s=Array.from(s).map(async e=>e(t.origin,i)),s=await Promise.all(s.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})),t.ports[0].postMessage({status:"done",eventId:n,eventType:r,response:s}))}_subscribe(e,t){0===Object.keys(this.handlersMap).length&&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&&0!==this.handlersMap[e].size||delete this.handlersMap[e],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function io(e="",t=10){let n="";for(let r=0;r<t;r++)n+=Math.floor(10*Math.random());return e+n}ro.receivers=[];class so{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,a=50){const o="undefined"!=typeof MessageChannel?new MessageChannel:null;if(!o)throw new Error("connection_unavailable");let c,l;return new Promise((n,r)=>{const i=io("",20);o.port1.start();const s=setTimeout(()=>{r(new Error("unsupported_event"))},a);l={messageChannel:o,onMessage(e){var t=e;if(t.data.eventId===i)switch(t.data.status){case"ack":clearTimeout(s),c=setTimeout(()=>{r(new Error("timeout"))},3e3);break;case"done":clearTimeout(c),n(t.data.response);break;default:clearTimeout(s),clearTimeout(c),r(new Error("invalid_response"))}}},this.handlers.add(l),o.port1.addEventListener("message",l.onMessage),this.target.postMessage({eventType:e,eventId:i,data:t},[o.port2])}).finally(()=>{l&&this.removeMessageHandler(l)})}}function ao(){return window}function oo(){return void 0!==ao().WorkerGlobalScope&&"function"==typeof ao().importScripts}const co="firebaseLocalStorageDb",lo="firebaseLocalStorage",uo="fbase_key";class ho{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 po(e,t){return e.transaction([lo],t?"readwrite":"readonly").objectStore(lo)}function fo(){const r=indexedDB.open(co,1);return new Promise((n,t)=>{r.addEventListener("error",()=>{t(r.error)}),r.addEventListener("upgradeneeded",()=>{const e=r.result;try{e.createObjectStore(lo,{keyPath:uo})}catch(e){t(e)}}),r.addEventListener("success",async()=>{const e=r.result;var t;e.objectStoreNames.contains(lo)?n(e):(e.close(),t=indexedDB.deleteDatabase(co),await new ho(t).toPromise(),n(await fo()))})})}async function go(e,t,n){var r=po(e,!0).put({fbase_key:t,value:n});return new ho(r).toPromise()}function mo(e,t){var n=po(e,!0).delete(t);return new ho(n).toPromise()}class vo{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db||(this.db=await fo(),this.db)}async _withRetries(e){let t=0;for(;;)try{return e(await this._openDb())}catch(e){if(3<t++)throw e;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return oo()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=ro._getInstance(oo()?self:null),this.receiver._subscribe("keyChanged",async(e,t)=>{const n=await this._poll();return{keyProcessed:n.includes(t.key)}}),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t,n;this.activeServiceWorker=await async function(){if(null===navigator||void 0===navigator||!navigator.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),this.activeServiceWorker&&(this.sender=new so(this.activeServiceWorker),(n=await this.sender._send("ping",{},800))&&null!==(e=n[0])&&void 0!==e&&e.fulfilled&&null!==(t=n[0])&&void 0!==t&&t.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0))}async notifyServiceWorker(e){var t;if(this.sender&&this.activeServiceWorker&&((null===(t=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===t?void 0:t.controller)||null)===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;var e=await fo();return await go(e,Ya,"1"),await mo(e,Ya),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(t,n){return this._withPendingWrite(async()=>(await this._withRetries(e=>go(e,t,n)),this.localCache[t]=n,this.notifyServiceWorker(t)))}async _get(t){var e=await this._withRetries(e=>async function(e,t){var n=po(e,!1).get(t);return void 0===(n=await new ho(n).toPromise())?null:n.value}(e,t));return this.localCache[t]=e}async _remove(t){return this._withPendingWrite(async()=>(await this._withRetries(e=>mo(e,t)),delete this.localCache[t],this.notifyServiceWorker(t)))}async _poll(){var e=await this._withRetries(e=>{var t=po(e,!1).getAll();return new ho(t).toPromise()});if(!e)return[];if(0!==this.pendingWrites)return[];const t=[],n=new Set;if(0!==e.length)for(var{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(const s of Object.keys(this.localCache))this.localCache[s]&&!n.has(s)&&(this.notifyListeners(s,null),t.push(s));return t}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&this.stopPolling()}}vo.type="LOCAL";const _o=vo;function yo(e,t){return Fi(e,"POST","/v2/accounts/mfaSignIn:start",Mi(e,t))}const wo=Rs("rcb"),bo=new Pi(3e4,6e4);class Io{constructor(){var e;this.hostLanguage="",this.counter=0,this.librarySeparatelyLoaded=!(null===(e=ao().grecaptcha)||void 0===e||!e.render)}load(s,a=""){var e;return Ci((e=a).length<=6&&/^\s*[a-zA-Z0-9\-]*\s*$/.test(e),s,"argument-error"),this.shouldResolveImmediately(a)&&zi(ao().grecaptcha)?Promise.resolve(ao().grecaptcha):new Promise((t,n)=>{const i=ao().setTimeout(()=>{n(wi(s,"network-request-failed"))},bo.get());ao()[wo]=()=>{ao().clearTimeout(i),delete ao()[wo];const e=ao().grecaptcha;if(e&&zi(e)){const r=e.render;e.render=(e,t)=>{var n=r(e,t);return this.counter++,n},this.hostLanguage=a,t(e)}else n(wi(s,"internal-error"))},Ns(`${As.recaptchaV2Script}?${K({onload:wo,render:"explicit",hl:a})}`).catch(()=>{clearTimeout(i),n(wi(s,"internal-error"))})})}clearedOneInstance(){this.counter--}shouldResolveImmediately(e){var t;return!(null===(t=ao().grecaptcha)||void 0===t||!t.render)&&(e===this.hostLanguage||0<this.counter||this.librarySeparatelyLoaded)}}class To{async load(e){return new Ps(e)}clearedOneInstance(){}}const Eo="recaptcha",Co={theme:"light",type:"image"};class So{constructor(e,t,n=Object.assign({},Co)){this.parameters=n,this.type=Eo,this.destroyed=!1,this.widgetId=null,this.tokenChangeListeners=new Set,this.renderPromise=null,this.recaptcha=null,this.auth=Ss(e),this.isInvisible="invisible"===this.parameters.size,Ci("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment");var r="string"==typeof t?document.getElementById(t):t;Ci(r,this.auth,"argument-error"),this.container=r,this.parameters.callback=this.makeTokenCallback(this.parameters.callback),this._recaptchaLoader=new(this.auth.settings.appVerificationDisabledForTesting?To:Io),this.validateStartingState()}async verify(){this.assertNotDestroyed();const e=await this.render(),r=this.getAssertedRecaptcha();var t=r.getResponse(e);return t||new Promise(t=>{const n=e=>{e&&(this.tokenChangeListeners.delete(n),t(e))};this.tokenChangeListeners.add(n),this.isInvisible&&r.execute(e)})}render(){try{this.assertNotDestroyed()}catch(e){return Promise.reject(e)}return this.renderPromise||(this.renderPromise=this.makeRenderPromise().catch(e=>{throw this.renderPromise=null,e}),this.renderPromise)}_reset(){this.assertNotDestroyed(),null!==this.widgetId&&this.getAssertedRecaptcha().reset(this.widgetId)}clear(){this.assertNotDestroyed(),this.destroyed=!0,this._recaptchaLoader.clearedOneInstance(),this.isInvisible||this.container.childNodes.forEach(e=>{this.container.removeChild(e)})}validateStartingState(){Ci(!this.parameters.sitekey,this.auth,"argument-error"),Ci(this.isInvisible||!this.container.hasChildNodes(),this.auth,"argument-error"),Ci("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment")}makeTokenCallback(n){return t=>{if(this.tokenChangeListeners.forEach(e=>e(t)),"function"==typeof n)n(t);else if("string"==typeof n){const e=ao()[n];"function"==typeof e&&e(t)}}}assertNotDestroyed(){Ci(!this.destroyed,this.auth,"internal-error")}async makeRenderPromise(){if(await this.init(),!this.widgetId){let e=this.container;var t;this.isInvisible||(t=document.createElement("div"),e.appendChild(t),e=t),this.widgetId=this.getAssertedRecaptcha().render(e,this.parameters)}return this.widgetId}async init(){Ci(Ni()&&!oo(),this.auth,"internal-error"),await function(){let t=null;return new Promise(e=>{"complete"!==document.readyState?(t=()=>e(),window.addEventListener("load",t)):e()}).catch(e=>{throw t&&window.removeEventListener("load",t),e})}(),this.recaptcha=await this._recaptchaLoader.load(this.auth,this.auth.languageCode||void 0);var e=await((await Fi(this.auth,"GET","/v1/recaptchaParams")).recaptchaSiteKey||"");Ci(e,this.auth,"internal-error"),this.parameters.sitekey=e}getAssertedRecaptcha(){return Ci(this.recaptcha,this.auth,"internal-error"),this.recaptcha}}class ko{constructor(e,t){this.verificationId=e,this.onConfirmation=t}confirm(e){var t=ea._fromVerification(this.verificationId,e);return this.onConfirmation(t)}}async function Ao(t,n,r){var i;if(!t._getRecaptchaConfig())try{await async function(e){const t=Ss(e);var n=await Wi(t,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"});const r=new Ki(n);if(null==t.tenantId?t._agentRecaptchaConfig=r:t._tenantRecaptchaConfigs[t.tenantId]=r,r.isAnyProviderEnabled()){const i=new Ms(t);i.verify()}}(t)}catch(e){console.log("Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.")}try{let e;if(e="string"==typeof n?{phoneNumber:n}:n,"session"in e){var s=e.session;if("phoneNumber"in e){Ci("enroll"===s.type,t,"internal-error");var a={idToken:s.credential,phoneEnrollmentInfo:{phoneNumber:e.phoneNumber,clientType:"CLIENT_TYPE_WEB"}};const u=Us(t,a,"mfaSmsEnrollment",async(e,t)=>{return t.phoneEnrollmentInfo.captchaResponse!==Ls?Ha(e,t):(Ci((null==r?void 0:r.type)===Eo,e,"argument-error"),Ha(e,await No(e,t,r)))},"PHONE_PROVIDER");return(await u.catch(e=>Promise.reject(e))).phoneSessionInfo.sessionInfo}{Ci("signin"===s.type,t,"internal-error");var o=(null===(i=e.multiFactorHint)||void 0===i?void 0:i.uid)||e.multiFactorUid;Ci(o,t,"missing-multi-factor-info");var c={mfaPendingCredential:s.credential,mfaEnrollmentId:o,phoneSignInInfo:{clientType:"CLIENT_TYPE_WEB"}};const h=Us(t,c,"mfaSmsSignIn",async(e,t)=>{return t.phoneSignInInfo.captchaResponse!==Ls?yo(e,t):(Ci((null==r?void 0:r.type)===Eo,e,"argument-error"),yo(e,await No(e,t,r)))},"PHONE_PROVIDER");return(await h.catch(e=>Promise.reject(e))).phoneResponseInfo.sessionInfo}}{var l={phoneNumber:e.phoneNumber,clientType:"CLIENT_TYPE_WEB"};const d=Us(t,l,"sendVerificationCode",async(e,t)=>{return t.captchaResponse!==Ls?Xs(e,t):(Ci((null==r?void 0:r.type)===Eo,e,"argument-error"),Xs(e,await No(e,t,r)))},"PHONE_PROVIDER");return(await d.catch(e=>Promise.reject(e))).sessionInfo}}finally{null!=r&&r._reset()}}async function No(e,t,n){Ci(n.type===Eo,e,"argument-error");var r=await n.verify();Ci("string"==typeof r,e,"argument-error");var i=Object.assign({},t);if("phoneEnrollmentInfo"in i){var s=i.phoneEnrollmentInfo.phoneNumber,a=i.phoneEnrollmentInfo.captchaResponse,o=i.phoneEnrollmentInfo.clientType,c=i.phoneEnrollmentInfo.recaptchaVersion;return Object.assign(i,{phoneEnrollmentInfo:{phoneNumber:s,recaptchaToken:r,captchaResponse:a,clientType:o,recaptchaVersion:c}}),i}if("phoneSignInInfo"in i){a=i.phoneSignInInfo.captchaResponse,o=i.phoneSignInInfo.clientType,c=i.phoneSignInInfo.recaptchaVersion;return Object.assign(i,{phoneSignInInfo:{recaptchaToken:r,captchaResponse:a,clientType:o,recaptchaVersion:c}}),i}return Object.assign(i,{recaptchaToken:r}),i}class Ro{constructor(e){this.providerId=Ro.PROVIDER_ID,this.auth=Ss(e)}verifyPhoneNumber(e,t){return Ao(this.auth,e,le(t))}static credential(e,t){return ea._fromVerification(e,t)}static credentialFromResult(e){var t=e;return Ro.credentialFromTaggedObject(t)}static credentialFromError(e){return Ro.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{phoneNumber:t,temporaryProof:n}=e;return t&&n?ea._fromTokenResponse(t,n):null}}function Po(e,t){return t?os(t):(Ci(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}Ro.PROVIDER_ID="phone",Ro.PHONE_SIGN_IN_METHOD="phone";class Do extends js{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Js(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Js(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Js(e,this._buildIdpRequest())}_buildIdpRequest(e){const 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 xo(e){return Ia(e.auth,new Do(e),e.bypassAuthState)}function Oo(e){var{auth:t,user:n}=e;return Ci(n,t,"internal-error"),ba(n,new Do(e),e.bypassAuthState)}async function Lo(e){var{auth:t,user:n}=e;return Ci(n,t,"internal-error"),ya(n,new Do(e),e.bypassAuthState)}class Mo{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){var{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:s,type:a}=e;if(s)this.reject(s);else{r={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(a)(r))}catch(e){this.reject(e)}}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return xo;case"linkViaPopup":case"linkViaRedirect":return Lo;case"reauthViaPopup":case"reauthViaRedirect":return Oo;default:yi(this.auth,"internal-error")}}resolve(e){ki(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){ki(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()}}const Fo=new Pi(2e3,1e4);class Uo extends Mo{constructor(e,t,n,r,i){super(e,t,r,i),this.provider=n,this.authWindow=null,this.pollId=null,Uo.currentPopupAction&&Uo.currentPopupAction.cancel(),Uo.currentPopupAction=this}async executeNotNull(){var e=await this.execute();return Ci(e,this.auth,"internal-error"),e}async onExecution(){ki(1===this.filter.length,"Popup operations only handle one event");var e=io();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(wi(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return(null===(e=this.authWindow)||void 0===e?void 0:e.associatedEvent)||null}cancel(){this.reject(wi(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,Uo.currentPopupAction=null}pollUserCancellation(){const t=()=>{var e;null!==(e=null===(e=this.authWindow)||void 0===e?void 0:e.window)&&void 0!==e&&e.closed?this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(wi(this.auth,"popup-closed-by-user"))},8e3):this.pollId=window.setTimeout(t,Fo.get())};t()}}Uo.currentPopupAction=null;const Vo="pendingRedirect",qo=new Map;class Bo extends Mo{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let t=qo.get(this.auth._key());if(!t){try{const e=await async function(e,t){const n=Ko(t),r=$o(e);if(!await r._isAvailable())return!1;var i="true"===await r._get(n);return await r._remove(n),i}(this.resolver,this.auth)?await super.execute():null;t=()=>Promise.resolve(e)}catch(e){t=()=>Promise.reject(e)}qo.set(this.auth._key(),t)}return this.bypassAuthState||qo.set(this.auth._key(),()=>Promise.resolve(null)),t()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){var t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}async function jo(e,t){return $o(e)._set(Ko(t),"true")}function zo(e,t){qo.set(e._key(),t)}function $o(e){return os(e._redirectPersistence)}function Ko(e){return us(Vo,e.config.apiKey,e.name)}function Wo(e,t,n){return async function(e,t,n){if(et(e.app))return Promise.reject(Ii(e));var r=Ss(e);Ti(e,t,ra),await r._initializationPromise;const i=Po(r,n);return await jo(i,r),i._openRedirect(r,t,"signInViaRedirect")}(e,t,n)}function Go(e,t,n){return async function(e,t,n){var r=le(e);if(Ti(r.auth,t,ra),et(r.auth.app))return Promise.reject(Ii(r.auth));await r.auth._initializationPromise;const i=Po(r.auth,n);await jo(i,r.auth);var s=await Jo(r);return i._openRedirect(r.auth,t,"reauthViaRedirect",s)}(e,t,n)}function Ho(e,t,n){return async function(e,t,n){var r=le(e);Ti(r.auth,t,ra),await r.auth._initializationPromise;const i=Po(r.auth,n);await wa(!1,r,t.providerId),await jo(i,r.auth);var s=await Jo(r);return i._openRedirect(r.auth,t,"linkViaRedirect",s)}(e,t,n)}async function Qo(e,t,n=!1){if(et(e.app))return Promise.reject(Ii(e));const r=Ss(e);var i=Po(r,t);const s=new Bo(r,i,n),a=await s.execute();return a&&!n&&(delete a.user._redirectEventId,await r._persistUserIfCurrent(a.user),await r._setRedirectUser(null,t)),a}async function Jo(e){var t=io(`${e.uid}:::`);return e._redirectEventId=t,await e.auth._setRedirectUser(e),await e.auth._persistUserIfCurrent(e),t}class Yo{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(t){if(this.hasEventBeenHandled(t))return!1;let n=!1;return this.consumers.forEach(e=>{this.isEventForConsumer(t,e)&&(n=!0,this.sendToConsumer(t,e),this.saveEventToCache(t))}),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return Zo(e);default:return!1}}(t)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=t,n=!0)),n}sendToConsumer(e,t){var n;e.error&&!Zo(e)?(n=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error",t.onError(wi(this.auth,n))):t.onAuthEvent(e)}isEventForConsumer(e,t){var n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return 6e5<=Date.now()-this.lastProcessedEventTime&&this.cachedEventUids.clear(),this.cachedEventUids.has(Xo(e))}saveEventToCache(e){this.cachedEventUids.add(Xo(e)),this.lastProcessedEventTime=Date.now()}}function Xo(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function Zo({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}async function ec(e,t={}){return Fi(e,"GET","/v1/projects",t)}const tc=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,nc=/^https?/;async function rc(e){if(!e.config.emulator){var t=(await ec(e))["authorizedDomains"];for(const n of t)try{if(function(e){const t=Ai(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith("chrome-extension://")){var i=new URL(e);return""===i.hostname&&""===r?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&i.hostname===r}if(!nc.test(n))return!1;if(tc.test(e))return r===e;const s=e.replace(/\./g,"\\."),a=new RegExp("^(.+\\."+s+"|"+s+")$","i");return a.test(r)}(n))return}catch(e){}yi(e,"unauthorized-domain")}}const ic=new Pi(3e4,6e4);function sc(){const t=ao().___jsl;if(null!==t&&void 0!==t&&t.H)for(const n of Object.keys(t.H))if(t.H[n].r=t.H[n].r||[],t.H[n].L=t.H[n].L||[],t.H[n].r=[...t.H[n].L],t.CP)for(let e=0;e<t.CP.length;e++)t.CP[e]=null}function ac(i){return new Promise((e,t)=>{function n(){sc(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{sc(),t(wi(i,"network-request-failed"))},timeout:ic.get()})}if(null!==(r=null===(r=ao().gapi)||void 0===r?void 0:r.iframes)&&void 0!==r&&r.Iframe)e(gapi.iframes.getContext());else{if(null===(r=ao().gapi)||void 0===r||!r.load){var r=Rs("iframefcb");return ao()[r]=()=>{gapi.load?n():t(wi(i,"network-request-failed"))},Ns(`${As.gapiScript}?onload=${r}`).catch(e=>t(e))}n()}}).catch(e=>{throw oc=null,e})}let oc=null;const cc=new Pi(5e3,15e3),lc="__/auth/iframe",uc="emulator/auth/iframe",hc={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},dc=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function pc(a){const e=(t=a,oc=oc||ac(t),await oc);var t,n=ao().gapi;return Ci(n,a,"internal-error"),e.open({where:document.body,url:function(e){var t=e.config;Ci(t.authDomain,e,"auth-domain-config-required");var n=t.emulator?Di(t,uc):`https://${e.config.authDomain}/${lc}`;const r={apiKey:t.apiKey,appName:e.name,v:it};(t=dc.get(e.config.apiHost))&&(r.eid=t);const i=e._getFrameworks();return i.length&&(r.fw=i.join(",")),`${n}?${K(r).slice(1)}`}(a),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:hc,dontclear:!0},s=>new Promise(async(e,t)=>{await s.restyle({setHideOnLeave:!1});const n=wi(a,"network-request-failed"),r=ao().setTimeout(()=>{t(n)},cc.get());function i(){ao().clearTimeout(r),e(s)}s.ping(i).then(i,()=>{t(n)})}))}const fc={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class gc{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function mc(e,t,n,r=500,i=600){var s=Math.max((window.screen.availHeight-i)/2,0).toString(),a=Math.max((window.screen.availWidth-r)/2,0).toString();let o="";const c=Object.assign(Object.assign({},fc),{width:r.toString(),height:i.toString(),top:s,left:a});s=b().toLowerCase();n&&(o=gs(s)?"_blank":n),ps(s)&&(t=t||"http://localhost",c.scrollbars="yes");var l,a=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if([n=b()]=[s],ws(n)&&null!==(l=window.navigator)&&void 0!==l&&l.standalone&&"_self"!==o)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}(t||"",o),new gc(null);const u=window.open(t||"",o,a);Ci(u,e,"popup-blocked");try{u.focus()}catch(e){}return new gc(u)}const vc="__/auth/handler",_c="emulator/auth/handler",yc=encodeURIComponent("fac");async function wc(e,t,n,r,i,s){Ci(e.config.authDomain,e,"auth-domain-config-required"),Ci(e.config.apiKey,e,"invalid-api-key");const a={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:it,eventId:i};if(t instanceof ra){t.setDefaultLanguage(e.languageCode),a.providerId=t.providerId||"",B(t.getCustomParameters())||(a.customParameters=JSON.stringify(t.getCustomParameters()));for(var[o,c]of Object.entries(s||{}))a[o]=c}if(t instanceof ia){const h=t.getScopes().filter(e=>""!==e);0<h.length&&(a.scopes=h.join(","))}e.tenantId&&(a.tid=e.tenantId);const l=a;for(const d of Object.keys(l))void 0===l[d]&&delete l[d];var u=await e._getAppCheckToken(),u=u?`#${yc}=${encodeURIComponent(u)}`:"";return`${e=[e["config"]][0],e.emulator?Di(e,_c):`https://${e.authDomain}/${vc}`}?${K(l).slice(1)}${u}`}const bc="webStorageSupport";const Ic=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=no,this._completeRedirectFn=Qo,this._overrideRedirectResult=zo}async _openPopup(e,t,n,r){var i;return ki(null===(i=this.eventManagers[e._key()])||void 0===i?void 0:i.manager,"_initialize() not called before _openPopup()"),mc(e,await wc(e,t,n,Ai(),r),io())}async _openRedirect(e,t,n,r){await this._originValidation(e);var i=await wc(e,t,n,Ai(),r);return ao().location.href=i,new Promise(()=>{})}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:r,promise:n}=this.eventManagers[t];return r?Promise.resolve(r):(ki(n,"If manager is not set, promise should be"),n)}const n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(t){const e=await pc(t),n=new Yo(t);return e.register("authEvent",e=>{return Ci(null==e?void 0:e.authEvent,t,"invalid-auth-event"),{status:n.onEvent(e.authEvent)?"ACK":"ERROR"}},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[t._key()]={manager:n},this.iframes[t._key()]=e,n}_isIframeWebStorageSupported(n,r){const e=this.iframes[n._key()];e.send(bc,{type:bc},e=>{var t=null===(t=null==e?void 0:e[0])||void 0===t?void 0:t[bc];void 0!==t&&r(!!t),yi(n,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=rc(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return bs()||fs()||ws()}};class Tc extends class{constructor(e){this.factorId=e}_process(e,t,n){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,n);case"signin":return this._finalizeSignIn(e,t.credential);default:return Si("unexpected MultiFactorSessionType")}}}{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new Tc(e)}_finalizeEnroll(e,t,n){return e=e,n={idToken:t,displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()},Fi(e,"POST","/v2/accounts/mfaEnrollment:finalize",Mi(e,n))}_finalizeSignIn(e,t){return e=e,t={mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()},Fi(e,"POST","/v2/accounts/mfaSignIn:finalize",Mi(e,t))}}class Ec{constructor(){}static assertion(e){return Tc._fromCredential(e)}}Ec.FACTOR_ID="phone";var Cc="@firebase/auth";class Sc{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),(null===(e=this.auth.currentUser)||void 0===e?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(t){var e;this.assertAuthConfigured(),this.internalListeners.has(t)||(e=this.auth.onIdTokenChanged(e=>{t((null==e?void 0:e.stsTokenManager.accessToken)||null)}),this.internalListeners.set(t,e),this.updateProactiveRefresh())}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){Ci(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){0<this.internalListeners.size?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}var kc,Ac,Nc;function Rc(){return window}kc="authIdTokenMaxAge",null===(Ac=p())||void 0===Ac||Ac[`_${kc}`],As={loadJS(i){return new Promise((e,n)=>{const t=document.createElement("script");var r;t.setAttribute("src",i),t.onload=e,t.onerror=e=>{const t=wi("internal-error");t.customData=e,n(t)},t.type="text/javascript",t.charset="UTF-8",(null!==(r=null===(r=document.getElementsByTagName("head"))||void 0===r?void 0:r[0])&&void 0!==r?r:document).appendChild(t)})},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="},Nc="Browser",Ye(new ue("auth",(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),i=e.getProvider("app-check-internal");const{apiKey:s,authDomain:a}=n.options;Ci(s&&!s.includes(":"),"invalid-api-key",{appName:n.name});var o={apiKey:s,authDomain:a,clientPlatform:Nc,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Is(Nc)},o=new Cs(n,r,i,o);return function(e,t){const n=(null==t?void 0:t.persistence)||[];var r=(Array.isArray(n)?n:[n]).map(os);null!=t&&t.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,null==t?void 0:t.popupRedirectResolver)}(o,t),o},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{const r=e.getProvider("auth-internal");r.initialize()})),Ye(new ue("auth-internal",e=>{var t=Ss(e.getProvider("auth").getImmediate());return e=t,new Sc(e)},"PRIVATE").setInstantiationMode("EXPLICIT")),ct(Cc,"1.8.1",function(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}}(Nc)),ct(Cc,"1.8.1","esm2017");async function Pc(e,t,n){var r=Rc()["BuildInfo"];ki(t.sessionId,"AuthEvent did not contain a session ID");var i=await async function(e){const t=function(e){if(ki(/[0-9a-zA-Z]+/.test(e),"Can only convert alpha-numeric strings"),"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);const t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}(e),n=await crypto.subtle.digest("SHA-256",t),r=Array.from(new Uint8Array(n));return r.map(e=>e.toString(16).padStart(2,"0")).join("")}(t.sessionId);const s={};return ws()?s.ibi=r.packageName:vs()?s.apn=r.packageName:yi(e,"operation-not-supported-in-this-environment"),r.displayName&&(s.appDisplayName=r.displayName),s.sessionId=i,wc(e,n,t.type,void 0,null!==(i=t.eventId)&&void 0!==i?i:void 0,s)}function Dc(r){const i=Rc()["cordova"];return new Promise(n=>{i.plugins.browsertab.isAvailable(e=>{let t=null;e?i.plugins.browsertab.openUrl(r):t=i.InAppBrowser.open(r,(e=b(),/(iPad|iPhone|iPod).*OS 7_\d/i.test(e)||/(iPad|iPhone|iPod).*OS 8_\d/i.test(e)?"_blank":"_system"),"location=yes"),n(t)})})}const xc=20;class Oc extends Yo{constructor(){super(...arguments),this.passiveListeners=new Set,this.initPromise=new Promise(e=>{this.resolveInitialized=e})}addPassiveListener(e){this.passiveListeners.add(e)}removePassiveListener(e){this.passiveListeners.delete(e)}resetRedirect(){this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1}onEvent(t){return this.resolveInitialized(),this.passiveListeners.forEach(e=>e(t)),super.onEvent(t)}async initialized(){await this.initPromise}}function Lc(e,t,n=null){return{type:t,eventId:n,urlResponse:null,sessionId:function(){const e=[],t="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r<xc;r++){var n=Math.floor(Math.random()*t.length);e.push(t.charAt(n))}return e.join("")}(),postBody:null,tenantId:e.tenantId,error:wi(e,"no-auth-event")}}async function Mc(e){var t=await Uc()._get(Vc(e));return t&&await Uc()._remove(Vc(e)),t}function Fc(e,t){var n,r,i;const s=(n=qc(t=t),a=n.link?decodeURIComponent(n.link):void 0,r=qc(a).link,i=n.deep_link_id?decodeURIComponent(n.deep_link_id):void 0,(n=qc(i).link)||i||r||a||t);if(s.includes("/__/auth/callback")){var a=qc(s),a=a.firebaseError?function(e){try{return JSON.parse(e)}catch(e){return null}}(decodeURIComponent(a.firebaseError)):null,a=null===(a=null===(a=null==a?void 0:a.code)||void 0===a?void 0:a.split("auth/"))||void 0===a?void 0:a[1],a=a?wi(a):null;return a?{type:e.type,eventId:e.eventId,tenantId:e.tenantId,error:a,urlResponse:null,sessionId:null,postBody:null}:{type:e.type,eventId:e.eventId,tenantId:e.tenantId,sessionId:e.sessionId,urlResponse:s,postBody:null}}return null}function Uc(){return os(eo)}function Vc(e){return us("authEvent",e.config.apiKey,e.name)}function qc(e){if(null==e||!e.includes("?"))return{};const[,...t]=e.split("?");return W(t.join("?"))}const Bc=class{constructor(){this._redirectPersistence=no,this._shouldInitProactively=!0,this.eventManagers=new Map,this.originValidationPromises={},this._completeRedirectFn=Qo,this._overrideRedirectResult=zo}async _initialize(e){var t=e._key();let n=this.eventManagers.get(t);return n||(n=new Oc(e),this.eventManagers.set(t,n),this.attachCallbackListeners(e,n)),n}_openPopup(e){yi(e,"operation-not-supported-in-this-environment")}async _openRedirect(e,t,n,r){var i,s;i=e,o=Rc(),Ci("function"==typeof(null===(s=null==o?void 0:o.universalLinks)||void 0===s?void 0:s.subscribe),i,"invalid-cordova-configuration",{missingPlugin:"cordova-universal-links-plugin-fix"}),Ci(void 0!==(null===(s=null==o?void 0:o.BuildInfo)||void 0===s?void 0:s.packageName),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-buildInfo"}),Ci("function"==typeof(null===(s=null===(s=null===(s=null==o?void 0:o.cordova)||void 0===s?void 0:s.plugins)||void 0===s?void 0:s.browsertab)||void 0===s?void 0:s.openUrl),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-browsertab"}),Ci("function"==typeof(null===(s=null===(s=null===(s=null==o?void 0:o.cordova)||void 0===s?void 0:s.plugins)||void 0===s?void 0:s.browsertab)||void 0===s?void 0:s.isAvailable),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-browsertab"}),Ci("function"==typeof(null===(o=null===(o=null==o?void 0:o.cordova)||void 0===o?void 0:o.InAppBrowser)||void 0===o?void 0:o.open),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-inappbrowser"});const a=await this._initialize(e);await a.initialized(),a.resetRedirect(),qo.clear(),await this._originValidation(e);var o=Lc(e,n,r);n=e,r=o,await Uc()._set(Vc(n),r);o=await Dc(await Pc(e,o,t));return async function(a,o,c){const l=Rc()["cordova"];let u=()=>{};try{await new Promise((n,e)=>{let t=null;function r(){var e;n();const t=null===(e=l.plugins.browsertab)||void 0===e?void 0:e.close;"function"==typeof t&&t(),"function"==typeof(null==c?void 0:c.close)&&c.close()}function i(){t=t||window.setTimeout(()=>{e(wi(a,"redirect-cancelled-by-user"))},2e3)}function s(){"visible"===(null===document||void 0===document?void 0:document.visibilityState)&&i()}o.addPassiveListener(r),document.addEventListener("resume",i,!1),vs()&&document.addEventListener("visibilitychange",s,!1),u=()=>{o.removePassiveListener(r),document.removeEventListener("resume",i,!1),document.removeEventListener("visibilitychange",s,!1),t&&window.clearTimeout(t)}})}finally{u()}}(e,a,o)}_isIframeWebStorageSupported(e,t){throw new Error("Method not implemented.")}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){var t=Rc()["BuildInfo"];const n={};ws()?n.iosBundleId=t.packageName:vs()?n.androidPackageName=t.packageName:yi(e,"operation-not-supported-in-this-environment"),await ec(e,n)}(e)),this.originValidationPromises[t]}attachCallbackListeners(r,i){const{universalLinks:e,handleOpenURL:t,BuildInfo:n}=Rc(),s=setTimeout(async()=>{await Mc(r),i.onEvent(jc())},500),a=async e=>{clearTimeout(s);var t=await Mc(r);let n=null;t&&null!=e&&e.url&&(n=Fc(t,e.url)),i.onEvent(n||jc())};void 0!==e&&"function"==typeof e.subscribe&&e.subscribe(null,a);const o=t,c=`${n.packageName.toLowerCase()}://`;Rc().handleOpenURL=async e=>{if(e.toLowerCase().startsWith(c)&&a({url:e}),"function"==typeof o)try{o(e)}catch(e){console.error(e)}}}};function jc(){return{type:"unknown",eventId:null,sessionId:null,urlResponse:null,postBody:null,tenantId:null,error:wi("no-auth-event")}}var zc;function $c(){var e;return(null===(e=null===self||void 0===self?void 0:self.location)||void 0===e?void 0:e.protocol)||null}function Kc(e=b()){return!("file:"!==$c()&&"ionic:"!==$c()&&"capacitor:"!==$c()||!e.toLowerCase().match(/iphone|ipad|ipod|android/))}function Wc(e=b()){return k()&&11===(null===document||void 0===document?void 0:document.documentMode)||([e=b()]=[e],/Edge\/\d+/.test(e))}function Gc(){try{const t=self.localStorage;var e=io();if(t)return t.setItem(e,"1"),t.removeItem(e),!Wc()||R()}catch(e){return Hc()&&R()}return!1}function Hc(){return"undefined"!=typeof global&&"WorkerGlobalScope"in global&&"importScripts"in global}function Qc(){return("http:"===$c()||"https:"===$c()||C()||Kc())&&!(S()||T())&&Gc()&&!Hc()}function Jc(){return Kc()&&"undefined"!=typeof document}const Yc={LOCAL:"local",NONE:"none",SESSION:"session"},Xc=Ci,Zc="persistence";async function el(e){await e._initializationPromise;const t=tl();var n=us(Zc,e.config.apiKey,e.name);t&&t.setItem(n,e._getPersistence())}function tl(){var e;try{return(null===(e="undefined"!=typeof window?window:null)?void 0:e.sessionStorage)||null}catch(e){return null}}const nl=Ci;class rl{constructor(){this.browserResolver=os(Ic),this.cordovaResolver=os(Bc),this.underlyingResolver=null,this._redirectPersistence=no,this._completeRedirectFn=Qo,this._overrideRedirectResult=zo}async _initialize(e){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._initialize(e)}async _openPopup(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openPopup(e,t,n,r)}async _openRedirect(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openRedirect(e,t,n,r)}_isIframeWebStorageSupported(e,t){this.assertedUnderlyingResolver._isIframeWebStorageSupported(e,t)}_originValidation(e){return this.assertedUnderlyingResolver._originValidation(e)}get _shouldInitProactively(){return Jc()||this.browserResolver._shouldInitProactively}get assertedUnderlyingResolver(){return nl(this.underlyingResolver,"internal-error"),this.underlyingResolver}async selectUnderlyingResolver(){var e;this.underlyingResolver||(e=await(!!Jc()&&new Promise(e=>{const t=setTimeout(()=>{e(!1)},1e3);document.addEventListener("deviceready",()=>{clearTimeout(t),e(!0)})})),this.underlyingResolver=e?this.cordovaResolver:this.browserResolver)}}function il(e){return e.unwrap()}function sl(e,t){var n,r,i,s=null===(r=t.customData)||void 0===r?void 0:r._tokenResponse;if("auth/multi-factor-auth-required"===(null==t?void 0:t.code)){const o=t;o.resolver=new ll(e,(n=t,i=le(e),Ci((a=n).customData.operationType,i,"argument-error"),Ci(null===(r=a.customData._serverResponse)||void 0===r?void 0:r.mfaPendingCredential,i,"argument-error"),Ga._fromError(i,a)))}else if(s){var a=al(t);const c=t;a&&(c.credential=a,c.tenantId=s.tenantId||void 0,c.email=s.email||void 0,c.phoneNumber=s.phoneNumber||void 0)}}function al(e){var t=(e instanceof x?e.customData:e)["_tokenResponse"];if(!t)return null;if(!(e instanceof x)&&"temporaryProof"in t&&"phoneNumber"in t)return Ro.credentialFromResult(e);const n=t.providerId;if(!n||n===hi.PASSWORD)return null;let r;switch(n){case hi.GOOGLE:r=oa;break;case hi.FACEBOOK:r=aa;break;case hi.GITHUB:r=ca;break;case hi.TWITTER:r=ha;break;default:var{oauthIdToken:i,oauthAccessToken:s,oauthTokenSecret:a,pendingToken:o,nonce:c}=t;return s||a||i||o?o?n.startsWith("saml.")?la._create(n,o):Ys._fromParams({providerId:n,signInMethod:n,pendingToken:o,idToken:i,accessToken:s}):new sa(n).credential({idToken:i,accessToken:s,rawNonce:c}):null}return e instanceof x?r.credentialFromError(e):r.credentialFromResult(e)}function ol(t,e){return e.catch(e=>{throw e instanceof x&&sl(t,e),e}).then(e=>{var t=e.operationType,n=e.user;return{operationType:t,credential:al(e),additionalUserInfo:Ka(e),user:ul.getOrCreate(n)}})}async function cl(t,e){const n=await e;return{verificationId:n.verificationId,confirm:e=>ol(t,n.confirm(e))}}class ll{constructor(e,t){this.resolver=t,this.auth=e.wrapped()}get session(){return this.resolver.session}get hints(){return this.resolver.hints}resolveSignIn(e){return ol(il(this.auth),this.resolver.resolveSignIn(e))}}class ul{constructor(e){var t;this._delegate=e,this.multiFactor=(t=le(e),Ja.has(t)||Ja.set(t,Qa._fromUser(t)),Ja.get(t))}static getOrCreate(e){return ul.USER_MAP.has(e)||ul.USER_MAP.set(e,new ul(e)),ul.USER_MAP.get(e)}delete(){return this._delegate.delete()}reload(){return this._delegate.reload()}toJSON(){return this._delegate.toJSON()}getIdTokenResult(e){return this._delegate.getIdTokenResult(e)}getIdToken(e){return this._delegate.getIdToken(e)}linkAndRetrieveDataWithCredential(e){return this.linkWithCredential(e)}async linkWithCredential(e){return ol(this.auth,Ea(this._delegate,e))}async linkWithPhoneNumber(e,t){return cl(this.auth,async function(e,t,n){const r=le(e);await wa(!1,r,"phone");var i=await Ao(r.auth,t,le(n));return new ko(i,e=>Ea(r,e))}(this._delegate,e,t))}async linkWithPopup(e){return ol(this.auth,async function(e,t,n){var r=le(e);Ti(r.auth,t,ra);var i=Po(r.auth,n);const s=new Uo(r.auth,"linkViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,rl))}async linkWithRedirect(e){return await el(Ss(this.auth)),Ho(this._delegate,e,rl)}reauthenticateAndRetrieveDataWithCredential(e){return this.reauthenticateWithCredential(e)}async reauthenticateWithCredential(e){return ol(this.auth,Ca(this._delegate,e))}reauthenticateWithPhoneNumber(e,t){return cl(this.auth,async function(e,t,n){const r=le(e);if(et(r.auth.app))return Promise.reject(Ii(r.auth));var i=await Ao(r.auth,t,le(n));return new ko(i,e=>Ca(r,e))}(this._delegate,e,t))}reauthenticateWithPopup(e){return ol(this.auth,async function(e,t,n){var r=le(e);if(et(r.auth.app))return Promise.reject(wi(r.auth,"operation-not-supported-in-this-environment"));Ti(r.auth,t,ra);var i=Po(r.auth,n);const s=new Uo(r.auth,"reauthViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,rl))}async reauthenticateWithRedirect(e){return await el(Ss(this.auth)),Go(this._delegate,e,rl)}sendEmailVerification(e){return La(this._delegate,e)}async unlink(e){return await _a(this._delegate,e),this}updateEmail(e){return t=this._delegate,e=e,et((n=le(t)).auth.app)?Promise.reject(Ii(n.auth)):Ua(n,e,null);var t,n}updatePassword(e){return Ua(le(this._delegate),null,e)}updatePhoneNumber(e){return async function(e,t){var n=le(e);if(et(n.auth.app))return Promise.reject(Ii(n.auth));await ya(n,t)}(this._delegate,e)}updateProfile(e){return Fa(this._delegate,e)}verifyBeforeUpdateEmail(e,t){return Ma(this._delegate,e,t)}get emailVerified(){return this._delegate.emailVerified}get isAnonymous(){return this._delegate.isAnonymous}get metadata(){return this._delegate.metadata}get phoneNumber(){return this._delegate.phoneNumber}get providerData(){return this._delegate.providerData}get refreshToken(){return this._delegate.refreshToken}get tenantId(){return this._delegate.tenantId}get displayName(){return this._delegate.displayName}get email(){return this._delegate.email}get photoURL(){return this._delegate.photoURL}get providerId(){return this._delegate.providerId}get uid(){return this._delegate.uid}get auth(){return this._delegate.auth}}ul.USER_MAP=new WeakMap;const hl=Ci;class dl{constructor(e,t){if(this.app=e,t.isInitialized())return this._delegate=t.getImmediate(),void this.linkUnderlyingAuth();var n=e.options["apiKey"];hl(n,"invalid-api-key",{appName:e.name}),hl(n,"invalid-api-key",{appName:e.name});var r="undefined"!=typeof window?rl:void 0;this._delegate=t.initialize({options:{persistence:function(e,t){const n=function(e,t){const n=tl();if(!n)return[];var r=us(Zc,e,t);switch(n.getItem(r)){case Yc.NONE:return[ls];case Yc.LOCAL:return[_o,no];case Yc.SESSION:return[no];default:return[]}}(e,t);"undefined"==typeof self||n.includes(_o)||n.push(_o);if("undefined"!=typeof window)for(const r of[eo,no])n.includes(r)||n.push(r);n.includes(ls)||n.push(ls);return n}(n,e.name),popupRedirectResolver:r}}),this._delegate._updateErrorMap(fi),this.linkUnderlyingAuth()}get emulatorConfig(){return this._delegate.emulatorConfig}get currentUser(){return this._delegate.currentUser?ul.getOrCreate(this._delegate.currentUser):null}get languageCode(){return this._delegate.languageCode}set languageCode(e){this._delegate.languageCode=e}get settings(){return this._delegate.settings}get tenantId(){return this._delegate.tenantId}set tenantId(e){this._delegate.tenantId=e}useDeviceLanguage(){this._delegate.useDeviceLanguage()}signOut(){return this._delegate.signOut()}useEmulator(e,t){Vs(this._delegate,e,t)}applyActionCode(e){return Da(this._delegate,e)}checkActionCode(e){return xa(this._delegate,e)}confirmPasswordReset(e,t){return async function(t,e,n){await zs(le(t),{oobCode:e,newPassword:n}).catch(async e=>{throw"auth/password-does-not-meet-requirements"===e.code&&Pa(t),e})}(this._delegate,e,t)}async createUserWithEmailAndPassword(e,t){return ol(this._delegate,async function(t,e,n){if(et(t.app))return Promise.reject(Ii(t));const r=Ss(t),i=Us(r,{returnSecureToken:!0,email:e,password:n,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",da,"EMAIL_PASSWORD_PROVIDER");var s=await i.catch(e=>{throw"auth/password-does-not-meet-requirements"===e.code&&Pa(t),e}),s=await pa._fromIdTokenResponse(r,"signIn",s);return await r._updateCurrentUser(s.user),s}(this._delegate,e,t))}fetchProvidersForEmail(e){return this.fetchSignInMethodsForEmail(e)}fetchSignInMethodsForEmail(e){return Oa(this._delegate,e)}isSignInWithEmailLink(e){return this._delegate,e=e,"EMAIL_SIGNIN"===(null==(t=ta.parseLink(e))?void 0:t.operation);var t}async getRedirectResult(){hl(Qc(),this._delegate,"operation-not-supported-in-this-environment");var e,t,n=(e=this._delegate,t=rl,await Ss(e)._initializationPromise,await Qo(e,t,!1));return n?ol(this._delegate,Promise.resolve(n)):{credential:null,user:null}}addFrameworkForLogging(e){Ss(this._delegate)._logFramework(e)}onAuthStateChanged(e,t,n){var{next:r,error:i,complete:s}=pl(e,t,n);return this._delegate.onAuthStateChanged(r,i,s)}onIdTokenChanged(e,t,n){var{next:r,error:i,complete:s}=pl(e,t,n);return this._delegate.onIdTokenChanged(r,i,s)}sendSignInLinkToEmail(e,t){return async function(e,t,n){const r=Ss(e);var i={requestType:"EMAIL_SIGNIN",email:t,clientType:"CLIENT_TYPE_WEB"};t=i,Ci((n=n).handleCodeInApp,r,"argument-error"),n&&Ra(r,t,n),await Us(r,i,"getOobCode",Hs,"EMAIL_PASSWORD_PROVIDER")}(this._delegate,e,t)}sendPasswordResetEmail(e,t){return async function(e,t,n){var r=Ss(e),i={requestType:"PASSWORD_RESET",email:t,clientType:"CLIENT_TYPE_WEB"};n&&Ra(r,i,n),await Us(r,i,"getOobCode",Gs,"EMAIL_PASSWORD_PROVIDER")}(this._delegate,e,t||void 0)}async setPersistence(e){var t,n;t=this._delegate,n=e,Xc(Object.values(Yc).includes(n),t,"invalid-persistence-type"),S()?Xc(n!==Yc.SESSION,t,"unsupported-persistence-type"):T()?Xc(n===Yc.NONE,t,"unsupported-persistence-type"):Hc()?Xc(n===Yc.NONE||n===Yc.LOCAL&&R(),t,"unsupported-persistence-type"):Xc(n===Yc.NONE||Gc(),t,"unsupported-persistence-type");let r;switch(e){case Yc.SESSION:r=no;break;case Yc.LOCAL:var i=await os(_o)._isAvailable();r=i?_o:eo;break;case Yc.NONE:r=ls;break;default:return yi("argument-error",{appName:this._delegate.name})}return this._delegate.setPersistence(r)}signInAndRetrieveDataWithCredential(e){return this.signInWithCredential(e)}signInAnonymously(){return ol(this._delegate,async function(e){if(et(e.app))return Promise.reject(Ii(e));const t=Ss(e);if(await t._initializationPromise,null!==(n=t.currentUser)&&void 0!==n&&n.isAnonymous)return new pa({user:t.currentUser,providerId:null,operationType:"signIn"});var n=await da(t,{returnSecureToken:!0}),n=await pa._fromIdTokenResponse(t,"signIn",n,!0);return await t._updateCurrentUser(n.user),n}(this._delegate))}signInWithCredential(e){return ol(this._delegate,Ta(this._delegate,e))}signInWithCustomToken(e){return ol(this._delegate,Sa(this._delegate,e))}signInWithEmailAndPassword(e,t){return ol(this._delegate,(n=this._delegate,e=e,t=t,et(n.app)?Promise.reject(Ii(n)):Ta(le(n),na.credential(e,t)).catch(async e=>{throw"auth/password-does-not-meet-requirements"===e.code&&Pa(n),e})));var n}signInWithEmailLink(e,t){return ol(this._delegate,async function(e,t,n){if(et(e.app))return Promise.reject(Ii(e));var r=le(e),i=na.credentialWithLink(t,n||Ai());return Ci(i._tenantId===(r.tenantId||null),r,"tenant-id-mismatch"),Ta(r,i)}(this._delegate,e,t))}signInWithPhoneNumber(e,t){return cl(this._delegate,async function(e,t,n){if(et(e.app))return Promise.reject(Ii(e));const r=Ss(e);var i=await Ao(r,t,le(n));return new ko(i,e=>Ta(r,e))}(this._delegate,e,t))}async signInWithPopup(e){return hl(Qc(),this._delegate,"operation-not-supported-in-this-environment"),ol(this._delegate,async function(e,t,n){if(et(e.app))return Promise.reject(wi(e,"operation-not-supported-in-this-environment"));var r=Ss(e);Ti(e,t,ra);var i=Po(r,n);const s=new Uo(r,"signInViaPopup",t,i);return s.executeNotNull()}(this._delegate,e,rl))}async signInWithRedirect(e){return hl(Qc(),this._delegate,"operation-not-supported-in-this-environment"),await el(this._delegate),Wo(this._delegate,e,rl)}updateCurrentUser(e){return this._delegate.updateCurrentUser(e)}verifyPasswordResetCode(e){return async function(e,t){var n=(await xa(le(e),t))["data"];return n.email}(this._delegate,e)}unwrap(){return this._delegate}_delete(){return this._delegate._delete()}linkUnderlyingAuth(){this._delegate.wrapped=()=>this}}function pl(e,t,n){let r=e;"function"!=typeof e&&({next:r,error:t,complete:n}=e);const i=r;return{next:e=>i(e&&ul.getOrCreate(e)),error:t,complete:n}}dl.Persistence=Yc;class fl{static credential(e,t){return Ro.credential(e,t)}constructor(){this.providerId="phone",this._delegate=new Ro(il(Nt.auth()))}verifyPhoneNumber(e,t){return this._delegate.verifyPhoneNumber(e,t)}unwrap(){return this._delegate}}fl.PHONE_SIGN_IN_METHOD=Ro.PHONE_SIGN_IN_METHOD,fl.PROVIDER_ID=Ro.PROVIDER_ID;const gl=Ci;class ml{constructor(e,t,n=Nt.app()){var r;gl(null===(r=n.options)||void 0===r?void 0:r.apiKey,"invalid-api-key",{appName:n.name}),this._delegate=new So(n.auth(),e,t),this.type=this._delegate.type}clear(){this._delegate.clear()}render(){return this._delegate.render()}verify(){return this._delegate.verify()}}(zc=Nt).INTERNAL.registerComponent(new ue("auth-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("auth");return new dl(t,n)},"PUBLIC").setServiceProps({ActionCodeInfo:{Operation:{EMAIL_SIGNIN:di.EMAIL_SIGNIN,PASSWORD_RESET:di.PASSWORD_RESET,RECOVER_EMAIL:di.RECOVER_EMAIL,REVERT_SECOND_FACTOR_ADDITION:di.REVERT_SECOND_FACTOR_ADDITION,VERIFY_AND_CHANGE_EMAIL:di.VERIFY_AND_CHANGE_EMAIL,VERIFY_EMAIL:di.VERIFY_EMAIL}},EmailAuthProvider:na,FacebookAuthProvider:aa,GithubAuthProvider:ca,GoogleAuthProvider:oa,OAuthProvider:sa,SAMLAuthProvider:ua,PhoneAuthProvider:fl,PhoneMultiFactorGenerator:Ec,RecaptchaVerifier:ml,TwitterAuthProvider:ha,Auth:dl,AuthCredential:js,Error:x}).setInstantiationMode("LAZY").setMultipleInstances(!1)),zc.registerVersion("@firebase/auth-compat","0.5.16");const vl="@firebase/database";let _l="";function yl(e){_l=e}class wl{constructor(e){this.domStorage_=e,this.prefix_="firebase:"}set(e,t){null==t?this.domStorage_.removeItem(this.prefixedName_(e)):this.domStorage_.setItem(this.prefixedName_(e),F(t))}get(e){var t=this.domStorage_.getItem(this.prefixedName_(e));return null==t?null:M(t)}remove(e){this.domStorage_.removeItem(this.prefixedName_(e))}prefixedName_(e){return this.prefix_+e}toString(){return this.domStorage_.toString()}}class bl{constructor(){this.cache_={},this.isInMemoryStorage=!0}set(e,t){null==t?delete this.cache_[e]:this.cache_[e]=t}get(e){return V(this.cache_,e)?this.cache_[e]:null}remove(e){delete this.cache_[e]}}var Il,Tl,El,Cl,Sl,kl,Rt=function(e){try{if("undefined"!=typeof window&&void 0!==window[e]){const t=window[e];return t.setItem("firebase:sentinel","cache"),t.removeItem("firebase:sentinel"),new wl(t)}}catch(e){}return new bl};function Al(e){var t=function(t){const n=[];let r=0;for(let a=0;a<t.length;a++){let e=t.charCodeAt(a);var i,s;55296<=e&&e<=56319&&(i=e-55296,a++,f(a<t.length,"Surrogate pair missing trail surrogate."),s=t.charCodeAt(a)-56320,e=65536+(i<<10)+s),e<128?n[r++]=e:(e<2048?n[r++]=e>>6|192:(e<65536?n[r++]=e>>12|224:(n[r++]=e>>18|240,n[r++]=e>>12&63|128),n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n}(e);const n=new H;return n.update(t),t=n.digest(),r.encodeByteArray(t)}const Nl=Rt("localStorage"),Rl=Rt("sessionStorage"),Pl=new ye("@firebase/database"),Dl=function(){let e=1;return function(){return e++}}(),xl=function(...e){let t="";for(let r=0;r<e.length;r++){var n=e[r];Array.isArray(n)||n&&"object"==typeof n&&"number"==typeof n.length?t+=xl.apply(null,n):t+="object"==typeof n?F(n):n,t+=" "}return t};let Ol=null,Ll=!0;function Ml(t){return function(...e){zl(t,...e)}}function Fl(...e){var t="FIREBASE INTERNAL ERROR: "+xl(...e);Pl.error(t)}function Ul(e,t){return e===t?0:e<t?-1:1}function Vl(e,t){if(t&&e in t)return t[e];throw new Error("Missing required key ("+e+") in object: "+F(t))}function ql(e){if("object"!=typeof e||null===e)return F(e);const t=[];for(const r in e)t.push(r);t.sort();let n="{";for(let i=0;i<t.length;i++)0!==i&&(n+=","),n+=F(t[i]),n+=":",n+=ql(e[t[i]]);return n+="}",n}function Bl(e,t){var n=e.length;if(n<=t)return[e];const r=[];for(let i=0;i<n;i+=t)i+t>n?r.push(e.substring(i,n)):r.push(e.substring(i,i+t));return r}const jl=function(e,t){f(!t||!0===e||!1===e,"Can't turn on custom loggers persistently."),!0===e?(Pl.logLevel=m.VERBOSE,Ol=Pl.log.bind(Pl),t&&Rl.set("logging_enabled",!0)):"function"==typeof e?Ol=e:(Ol=null,Rl.remove("logging_enabled"))},zl=function(...e){var t;!0===Ll&&(Ll=!1,null===Ol&&!0===Rl.get("logging_enabled")&&jl(!0)),Ol&&(t=xl.apply(null,e),Ol(t))},$l=function(...e){var t=`FIREBASE FATAL ERROR: ${xl(...e)}`;throw Pl.error(t),new Error(t)},Kl=function(...e){var t="FIREBASE WARNING: "+xl(...e);Pl.warn(t)},Wl=function(){"undefined"!=typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&Kl("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().")},Gl=function(e){return"number"==typeof e&&(e!=e||e===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY)},Hl="[MIN_NAME]",Ql="[MAX_NAME]",Jl=function(e,t){if(e===t)return 0;if(e===Hl||t===Ql)return-1;if(t===Hl||e===Ql)return 1;var n=Zl(e),r=Zl(t);return null!==n?null!==r?n-r==0?e.length-t.length:n-r:-1:null===r&&e<t?-1:1};function Yl(e,t){for(const n in e)e.hasOwnProperty(n)&&t(n,e[n])}function Xl(e){f(!Gl(e),"Invalid JSON number");let t,n,r,i,s;0===e?(n=0,r=0,t=1/e==-1/0?1:0):(t=e<0,e=Math.abs(e),r=e>=Math.pow(2,-1022)?(i=Math.min(Math.floor(Math.log(e)/Math.LN2),1023),n=i+1023,Math.round(e*Math.pow(2,52-i)-Math.pow(2,52))):(n=0,Math.round(e/Math.pow(2,-1074))));const a=[];for(s=52;s;--s)a.push(r%2?1:0),r=Math.floor(r/2);for(s=11;s;--s)a.push(n%2?1:0),n=Math.floor(n/2);a.push(t?1:0),a.reverse();const o=a.join("");let c="";for(s=0;s<64;s+=8){let e=parseInt(o.substr(s,8),2).toString(16);1===e.length&&(e="0"+e),c+=e}return c.toLowerCase()}function Zl(e){if(tu.test(e)){var t=Number(e);if(t>=nu&&t<=ru)return t}return null}function eu(e,t){const n=setTimeout(e,t);return"number"==typeof n&&"undefined"!=typeof Deno&&Deno.unrefTimer?Deno.unrefTimer(n):"object"==typeof n&&n.unref&&n.unref(),n}const tu=new RegExp("^-?(0*)\\d{1,10}$"),nu=-2147483648,ru=2147483647,iu=function(e){try{e()}catch(t){setTimeout(()=>{var e=t.stack||"";throw Kl("Exception was thrown by user callback.",e),t},Math.floor(0))}};class su{constructor(e,t){this.appName_=e,this.appCheckProvider=t,this.appCheck=null==t?void 0:t.getImmediate({optional:!0}),this.appCheck||null!=t&&t.get().then(e=>this.appCheck=e)}getToken(n){return this.appCheck?this.appCheck.getToken(n):new Promise((e,t)=>{setTimeout(()=>{this.appCheck?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){var e;null!==(e=this.appCheckProvider)&&void 0!==e&&e.get().then(e=>e.addTokenListener(t))}notifyForInvalidToken(){Kl(`Provided AppCheck credentials for the app named "${this.appName_}" `+"are invalid. This usually indicates your app was not initialized correctly.")}}class au{constructor(e,t,n){this.appName_=e,this.firebaseOptions_=t,this.authProvider_=n,this.auth_=null,this.auth_=n.getImmediate({optional:!0}),this.auth_||n.onInit(e=>this.auth_=e)}getToken(n){return this.auth_?this.auth_.getToken(n).catch(e=>e&&"auth/token-not-initialized"===e.code?(zl("Got auth/token-not-initialized error. Treating as null token."),null):Promise.reject(e)):new Promise((e,t)=>{setTimeout(()=>{this.auth_?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){this.auth_?this.auth_.addAuthTokenListener(t):this.authProvider_.get().then(e=>e.addAuthTokenListener(t))}removeTokenChangeListener(t){this.authProvider_.get().then(e=>e.removeAuthTokenListener(t))}notifyForInvalidToken(){let e='Provided authentication credentials for the app named "'+this.appName_+'" are invalid. This usually indicates your app was not initialized correctly. ';"credential"in this.firebaseOptions_?e+='Make sure the "credential" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':"serviceAccount"in this.firebaseOptions_?e+='Make sure the "serviceAccount" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':e+='Make sure the "apiKey" and "databaseURL" properties provided to initializeApp() match the values provided for your app at https://console.firebase.google.com/.',Kl(e)}}class ou{constructor(e){this.accessToken=e}getToken(e){return Promise.resolve({accessToken:this.accessToken})}addTokenChangeListener(e){e(this.accessToken)}removeTokenChangeListener(e){}notifyForInvalidToken(){}}ou.OWNER="owner";const cu=/(console\.firebase|firebase-console-\w+\.corp|firebase\.corp)\.google\.com/,lu="websocket",uu="long_polling";class hu{constructor(e,t,n,r,i=!1,s="",a=!1,o=!1){this.secure=t,this.namespace=n,this.webSocketOnly=r,this.nodeAdmin=i,this.persistenceKey=s,this.includeNamespaceInQueryParams=a,this.isUsingEmulator=o,this._host=e.toLowerCase(),this._domain=this._host.substr(this._host.indexOf(".")+1),this.internalHost=Nl.get("host:"+e)||this._host}isCacheableHost(){return"s-"===this.internalHost.substr(0,2)}isCustomHost(){return"firebaseio.com"!==this._domain&&"firebaseio-demo.com"!==this._domain}get host(){return this._host}set host(e){e!==this.internalHost&&(this.internalHost=e,this.isCacheableHost()&&Nl.set("host:"+this._host,this.internalHost))}toString(){let e=this.toURLString();return this.persistenceKey&&(e+="<"+this.persistenceKey+">"),e}toURLString(){var e=this.secure?"https://":"http://",t=this.includeNamespaceInQueryParams?`?ns=${this.namespace}`:"";return`${e}${this.host}/${t}`}}function du(e,t,n){f("string"==typeof t,"typeof type must == string"),f("object"==typeof n,"typeof params must == object");let r;if(t===lu)r=(e.secure?"wss://":"ws://")+e.internalHost+"/.ws?";else{if(t!==uu)throw new Error("Unknown connection type: "+t);r=(e.secure?"https://":"http://")+e.internalHost+"/.lp?"}((t=e).host!==t.internalHost||t.isCustomHost()||t.includeNamespaceInQueryParams)&&(n.ns=e.namespace);const i=[];return Yl(n,(e,t)=>{i.push(e+"="+t)}),r+i.join("&")}class pu{constructor(){this.counters_={}}incrementCounter(e,t=1){V(this.counters_,e)||(this.counters_[e]=0),this.counters_[e]+=t}get(){return c(void 0,this.counters_)}}const fu={},gu={};function mu(e){var t=e.toString();return fu[t]||(fu[t]=new pu),fu[t]}class vu{constructor(e){this.onMessage_=e,this.pendingResponses=[],this.currentResponseNum=0,this.closeAfterResponse=-1,this.onClose=null}closeAfter(e,t){this.closeAfterResponse=e,this.onClose=t,this.closeAfterResponse<this.currentResponseNum&&(this.onClose(),this.onClose=null)}handleResponse(e,t){for(this.pendingResponses[e]=t;this.pendingResponses[this.currentResponseNum];){const n=this.pendingResponses[this.currentResponseNum];delete this.pendingResponses[this.currentResponseNum];for(let e=0;e<n.length;++e)n[e]&&iu(()=>{this.onMessage_(n[e])});if(this.currentResponseNum===this.closeAfterResponse){this.onClose&&(this.onClose(),this.onClose=null);break}this.currentResponseNum++}}}class _u{constructor(e,t,n,r,i,s,a){this.connId=e,this.repoInfo=t,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.transportSessionId=s,this.lastSessionId=a,this.bytesSent=0,this.bytesReceived=0,this.everConnected_=!1,this.log_=Ml(e),this.stats_=mu(t),this.urlFn=e=>(this.appCheckToken&&(e.ac=this.appCheckToken),du(t,uu,e))}open(e,t){this.curSegmentNum=0,this.onDisconnect_=t,this.myPacketOrderer=new vu(e),this.isClosed_=!1,this.connectTimeoutTimer_=setTimeout(()=>{this.log_("Timed out trying to connect."),this.onClosed_(),this.connectTimeoutTimer_=null},Math.floor(3e4)),function(t){if("complete"===document.readyState)t();else{let e=!1;const n=function(){document.body?e||(e=!0,t()):setTimeout(n,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",n,!1),window.addEventListener("load",n,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",()=>{"complete"===document.readyState&&n()}),window.attachEvent("onload",n))}}(()=>{if(!this.isClosed_){this.scriptTagHolder=new yu((...e)=>{var[t,n,r]=e;if(this.incrementIncomingBytes_(e),this.scriptTagHolder)if(this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null),this.everConnected_=!0,"start"===t)this.id=n,this.password=r;else{if("close"!==t)throw new Error("Unrecognized command received: "+t);n?(this.scriptTagHolder.sendNewPolls=!1,this.myPacketOrderer.closeAfter(n,()=>{this.onClosed_()})):this.onClosed_()}},(...e)=>{var[t,n]=e;this.incrementIncomingBytes_(e),this.myPacketOrderer.handleResponse(t,n)},()=>{this.onClosed_()},this.urlFn);const t={start:"t"};t.ser=Math.floor(1e8*Math.random()),this.scriptTagHolder.uniqueCallbackIdentifier&&(t.cb=this.scriptTagHolder.uniqueCallbackIdentifier),t.v="5",this.transportSessionId&&(t.s=this.transportSessionId),this.lastSessionId&&(t.ls=this.lastSessionId),this.applicationId&&(t.p=this.applicationId),this.appCheckToken&&(t.ac=this.appCheckToken),"undefined"!=typeof location&&location.hostname&&cu.test(location.hostname)&&(t.r="f");var e=this.urlFn(t);this.log_("Connecting via long-poll to "+e),this.scriptTagHolder.addTag(e,()=>{})}})}start(){this.scriptTagHolder.startLongPoll(this.id,this.password),this.addDisconnectPingFrame(this.id,this.password)}static forceAllow(){_u.forceAllow_=!0}static forceDisallow(){_u.forceDisallow_=!0}static isAvailable(){return!!_u.forceAllow_||!(_u.forceDisallow_||"undefined"==typeof document||null==document.createElement||"object"==typeof window&&window.chrome&&window.chrome.extension&&!/^chrome/.test(window.location.href)||"object"==typeof Windows&&"object"==typeof Windows.UI)}markConnectionHealthy(){}shutdown_(){this.isClosed_=!0,this.scriptTagHolder&&(this.scriptTagHolder.close(),this.scriptTagHolder=null),this.myDisconnFrame&&(document.body.removeChild(this.myDisconnFrame),this.myDisconnFrame=null),this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null)}onClosed_(){this.isClosed_||(this.log_("Longpoll is closing itself"),this.shutdown_(),this.onDisconnect_&&(this.onDisconnect_(this.everConnected_),this.onDisconnect_=null))}close(){this.isClosed_||(this.log_("Longpoll is being closed."),this.shutdown_())}send(e){var t=F(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var t=i(t),n=Bl(t,1840);for(let r=0;r<n.length;r++)this.scriptTagHolder.enqueueSegment(this.curSegmentNum,n.length,n[r]),this.curSegmentNum++}addDisconnectPingFrame(e,t){this.myDisconnFrame=document.createElement("iframe");const n={dframe:"t"};n.id=e,n.pw=t,this.myDisconnFrame.src=this.urlFn(n),this.myDisconnFrame.style.display="none",document.body.appendChild(this.myDisconnFrame)}incrementIncomingBytes_(e){var t=F(e).length;this.bytesReceived+=t,this.stats_.incrementCounter("bytes_received",t)}}class yu{constructor(t,n,e,r){this.onDisconnect=e,this.urlFn=r,this.outstandingRequests=new Set,this.pendingSegs=[],this.currentSerial=Math.floor(1e8*Math.random()),this.sendNewPolls=!0;{this.uniqueCallbackIdentifier=Dl(),window["pLPCommand"+this.uniqueCallbackIdentifier]=t,window["pRTLPCB"+this.uniqueCallbackIdentifier]=n,this.myIFrame=yu.createIFrame_();let e="";this.myIFrame.src&&"javascript:"===this.myIFrame.src.substr(0,"javascript:".length)&&(i=document.domain,e='<script>document.domain="'+i+'";<\/script>');var i="<html><body>"+e+"</body></html>";try{this.myIFrame.doc.open(),this.myIFrame.doc.write(i),this.myIFrame.doc.close()}catch(e){zl("frame writing exception"),e.stack&&zl(e.stack),zl(e)}}}static createIFrame_(){const t=document.createElement("iframe");if(t.style.display="none",!document.body)throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";document.body.appendChild(t);try{t.contentWindow.document||zl("No IE domain setting required")}catch(e){var n=document.domain;t.src="javascript:void((function(){document.open();document.domain='"+n+"';document.close();})())"}return t.contentDocument?t.doc=t.contentDocument:t.contentWindow?t.doc=t.contentWindow.document:t.document&&(t.doc=t.document),t}close(){this.alive=!1,this.myIFrame&&(this.myIFrame.doc.body.textContent="",setTimeout(()=>{null!==this.myIFrame&&(document.body.removeChild(this.myIFrame),this.myIFrame=null)},Math.floor(0)));const e=this.onDisconnect;e&&(this.onDisconnect=null,e())}startLongPoll(e,t){for(this.myID=e,this.myPW=t,this.alive=!0;this.newRequest_(););}newRequest_(){if(this.alive&&this.sendNewPolls&&this.outstandingRequests.size<(0<this.pendingSegs.length?2:1)){this.currentSerial++;const i={};i.id=this.myID,i.pw=this.myPW,i.ser=this.currentSerial;var n=this.urlFn(i);let e="",t=0;for(;0<this.pendingSegs.length;){if(!(this.pendingSegs[0].d.length+30+e.length<=1870))break;var r=this.pendingSegs.shift();e=e+"&seg"+t+"="+r.seg+"&ts"+t+"="+r.ts+"&d"+t+"="+r.d,t++}return n+=e,this.addLongPollTag_(n,this.currentSerial),!0}return!1}enqueueSegment(e,t,n){this.pendingSegs.push({seg:e,ts:t,d:n}),this.alive&&this.newRequest_()}addLongPollTag_(e,t){this.outstandingRequests.add(t);const n=()=>{this.outstandingRequests.delete(t),this.newRequest_()},r=setTimeout(n,Math.floor(25e3));this.addTag(e,()=>{clearTimeout(r),n()})}addTag(e,n){setTimeout(()=>{try{if(!this.sendNewPolls)return;const t=this.myIFrame.doc.createElement("script");t.type="text/javascript",t.async=!0,t.src=e,t.onload=t.onreadystatechange=function(){var e=t.readyState;e&&"loaded"!==e&&"complete"!==e||(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),n())},t.onerror=()=>{zl("Long-poll script failed to load: "+e),this.sendNewPolls=!1,this.close()},this.myIFrame.doc.body.appendChild(t)}catch(e){}},Math.floor(1))}}let wu=null;"undefined"!=typeof MozWebSocket?wu=MozWebSocket:"undefined"!=typeof WebSocket&&(wu=WebSocket);class bu{constructor(e,t,n,r,i,s,a){this.connId=e,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.keepaliveTimer=null,this.frames=null,this.totalFrames=0,this.bytesSent=0,this.bytesReceived=0,this.log_=Ml(this.connId),this.stats_=mu(t),this.connURL=bu.connectionURL_(t,s,a,r,n),this.nodeAdmin=t.nodeAdmin}static connectionURL_(e,t,n,r,i){const s={v:"5"};return"undefined"!=typeof location&&location.hostname&&cu.test(location.hostname)&&(s.r="f"),t&&(s.s=t),n&&(s.ls=n),r&&(s.ac=r),i&&(s.p=i),du(e,lu,s)}open(e,t){this.onDisconnect=t,this.onMessage=e,this.log_("Websocket connecting to "+this.connURL),this.everConnected_=!1,Nl.set("previous_websocket_failure",!0);try{A(),this.mySock=new wu(this.connURL,[],void 0)}catch(e){this.log_("Error instantiating WebSocket.");var n=e.message||e.data;return n&&this.log_(n),void this.onClosed_()}this.mySock.onopen=()=>{this.log_("Websocket connected."),this.everConnected_=!0},this.mySock.onclose=()=>{this.log_("Websocket connection was disconnected."),this.mySock=null,this.onClosed_()},this.mySock.onmessage=e=>{this.handleIncomingFrame(e)},this.mySock.onerror=e=>{this.log_("WebSocket error. Closing connection.");var t=e.message||e.data;t&&this.log_(t),this.onClosed_()}}start(){}static forceDisallow(){bu.forceDisallow_=!0}static isAvailable(){let e=!1;var t;return"undefined"==typeof navigator||!navigator.userAgent||(t=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/))&&1<t.length&&parseFloat(t[1])<4.4&&(e=!0),!e&&null!==wu&&!bu.forceDisallow_}static previouslyFailed(){return Nl.isInMemoryStorage||!0===Nl.get("previous_websocket_failure")}markConnectionHealthy(){Nl.remove("previous_websocket_failure")}appendFrame_(e){var t;this.frames.push(e),this.frames.length===this.totalFrames&&(t=this.frames.join(""),this.frames=null,t=M(t),this.onMessage(t))}handleNewFrameCount_(e){this.totalFrames=e,this.frames=[]}extractFrameCount_(e){if(f(null===this.frames,"We already have a frame buffer"),e.length<=6){var t=Number(e);if(!isNaN(t))return this.handleNewFrameCount_(t),null}return this.handleNewFrameCount_(1),e}handleIncomingFrame(e){var t;null!==this.mySock&&(t=e.data,this.bytesReceived+=t.length,this.stats_.incrementCounter("bytes_received",t.length),this.resetKeepAlive(),null!==this.frames?this.appendFrame_(t):null!==(t=this.extractFrameCount_(t))&&this.appendFrame_(t))}send(e){this.resetKeepAlive();var t=F(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var n=Bl(t,16384);1<n.length&&this.sendString_(String(n.length));for(let r=0;r<n.length;r++)this.sendString_(n[r])}shutdown_(){this.isClosed_=!0,this.keepaliveTimer&&(clearInterval(this.keepaliveTimer),this.keepaliveTimer=null),this.mySock&&(this.mySock.close(),this.mySock=null)}onClosed_(){this.isClosed_||(this.log_("WebSocket is closing itself"),this.shutdown_(),this.onDisconnect&&(this.onDisconnect(this.everConnected_),this.onDisconnect=null))}close(){this.isClosed_||(this.log_("WebSocket is being closed"),this.shutdown_())}resetKeepAlive(){clearInterval(this.keepaliveTimer),this.keepaliveTimer=setInterval(()=>{this.mySock&&this.sendString_("0"),this.resetKeepAlive()},Math.floor(45e3))}sendString_(e){try{this.mySock.send(e)}catch(e){this.log_("Exception thrown from WebSocket.send():",e.message||e.data,"Closing connection."),setTimeout(this.onClosed_.bind(this),0)}}}bu.responsesRequiredToBeHealthy=2,bu.healthyTimeout=3e4;class Iu{static get ALL_TRANSPORTS(){return[_u,bu]}static get IS_TRANSPORT_INITIALIZED(){return this.globalTransportInitialized_}constructor(e){this.initTransports_(e)}initTransports_(e){var t=bu&&bu.isAvailable();let n=t&&!bu.previouslyFailed();if(e.webSocketOnly&&(t||Kl("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),n=!0),n)this.transports_=[bu];else{const r=this.transports_=[];for(const i of Iu.ALL_TRANSPORTS)i&&i.isAvailable()&&r.push(i);Iu.globalTransportInitialized_=!0}}initialTransport(){if(0<this.transports_.length)return this.transports_[0];throw new Error("No transports available")}upgradeTransport(){return 1<this.transports_.length?this.transports_[1]:null}}Iu.globalTransportInitialized_=!1;class Tu{constructor(e,t,n,r,i,s,a,o,c,l){this.id=e,this.repoInfo_=t,this.applicationId_=n,this.appCheckToken_=r,this.authToken_=i,this.onMessage_=s,this.onReady_=a,this.onDisconnect_=o,this.onKill_=c,this.lastSessionId=l,this.connectionCount=0,this.pendingDataMessages=[],this.state_=0,this.log_=Ml("c:"+this.id+":"),this.transportManager_=new Iu(t),this.log_("Connection created"),this.start_()}start_(){const e=this.transportManager_.initialTransport();this.conn_=new e(this.nextTransportId_(),this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,null,this.lastSessionId),this.primaryResponsesRequired_=e.responsesRequiredToBeHealthy||0;const t=this.connReceiver_(this.conn_),n=this.disconnReceiver_(this.conn_);this.tx_=this.conn_,this.rx_=this.conn_,this.secondaryConn_=null,this.isHealthy_=!1,setTimeout(()=>{this.conn_&&this.conn_.open(t,n)},Math.floor(0));var r=e.healthyTimeout||0;0<r&&(this.healthyTimeout_=eu(()=>{this.healthyTimeout_=null,this.isHealthy_||(this.conn_&&102400<this.conn_.bytesReceived?(this.log_("Connection exceeded healthy timeout but has received "+this.conn_.bytesReceived+" bytes. Marking connection healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()):this.conn_&&10240<this.conn_.bytesSent?this.log_("Connection exceeded healthy timeout but has sent "+this.conn_.bytesSent+" bytes. Leaving connection alive."):(this.log_("Closing unhealthy connection after timeout."),this.close()))},Math.floor(r)))}nextTransportId_(){return"c:"+this.id+":"+this.connectionCount++}disconnReceiver_(t){return e=>{t===this.conn_?this.onConnectionLost_(e):t===this.secondaryConn_?(this.log_("Secondary connection lost."),this.onSecondaryConnectionLost_()):this.log_("closing an old connection")}}connReceiver_(t){return e=>{2!==this.state_&&(t===this.rx_?this.onPrimaryMessageReceived_(e):t===this.secondaryConn_?this.onSecondaryMessageReceived_(e):this.log_("message on old connection"))}}sendRequest(e){this.sendData_({t:"d",d:e})}tryCleanupConnection(){this.tx_===this.secondaryConn_&&this.rx_===this.secondaryConn_&&(this.log_("cleaning up and promoting a connection: "+this.secondaryConn_.connId),this.conn_=this.secondaryConn_,this.secondaryConn_=null)}onSecondaryControl_(e){var t;"t"in e&&("a"===(t=e.t)?this.upgradeIfSecondaryHealthy_():"r"===t?(this.log_("Got a reset on secondary, closing it"),this.secondaryConn_.close(),this.tx_!==this.secondaryConn_&&this.rx_!==this.secondaryConn_||this.close()):"o"===t&&(this.log_("got pong on secondary."),this.secondaryResponsesRequired_--,this.upgradeIfSecondaryHealthy_()))}onSecondaryMessageReceived_(e){var t=Vl("t",e),n=Vl("d",e);if("c"===t)this.onSecondaryControl_(n);else{if("d"!==t)throw new Error("Unknown protocol layer: "+t);this.pendingDataMessages.push(n)}}upgradeIfSecondaryHealthy_(){this.secondaryResponsesRequired_<=0?(this.log_("Secondary connection is healthy."),this.isHealthy_=!0,this.secondaryConn_.markConnectionHealthy(),this.proceedWithUpgrade_()):(this.log_("sending ping on secondary."),this.secondaryConn_.send({t:"c",d:{t:"p",d:{}}}))}proceedWithUpgrade_(){this.secondaryConn_.start(),this.log_("sending client ack on secondary"),this.secondaryConn_.send({t:"c",d:{t:"a",d:{}}}),this.log_("Ending transmission on primary"),this.conn_.send({t:"c",d:{t:"n",d:{}}}),this.tx_=this.secondaryConn_,this.tryCleanupConnection()}onPrimaryMessageReceived_(e){var t=Vl("t",e),n=Vl("d",e);"c"===t?this.onControl_(n):"d"===t&&this.onDataMessage_(n)}onDataMessage_(e){this.onPrimaryResponse_(),this.onMessage_(e)}onPrimaryResponse_(){this.isHealthy_||(this.primaryResponsesRequired_--,this.primaryResponsesRequired_<=0&&(this.log_("Primary connection is healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()))}onControl_(e){var t=Vl("t",e);if("d"in e){var n=e.d;if("h"===t){const r=Object.assign({},n);this.repoInfo_.isUsingEmulator&&(r.h=this.repoInfo_.host),this.onHandshake_(r)}else if("n"===t){this.log_("recvd end transmission on primary"),this.rx_=this.secondaryConn_;for(let e=0;e<this.pendingDataMessages.length;++e)this.onDataMessage_(this.pendingDataMessages[e]);this.pendingDataMessages=[],this.tryCleanupConnection()}else"s"===t?this.onConnectionShutdown_(n):"r"===t?this.onReset_(n):"e"===t?Fl("Server Error: "+n):"o"===t?(this.log_("got pong on primary."),this.onPrimaryResponse_(),this.sendPingOnPrimaryIfNecessary_()):Fl("Unknown control packet command: "+t)}}onHandshake_(e){var t=e.ts,n=e.v,r=e.h;this.sessionId=e.s,this.repoInfo_.host=r,0===this.state_&&(this.conn_.start(),this.onConnectionEstablished_(this.conn_,t),"5"!==n&&Kl("Protocol version mismatch detected"),this.tryStartUpgrade_())}tryStartUpgrade_(){var e=this.transportManager_.upgradeTransport();e&&this.startUpgrade_(e)}startUpgrade_(e){this.secondaryConn_=new e(this.nextTransportId_(),this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,this.sessionId),this.secondaryResponsesRequired_=e.responsesRequiredToBeHealthy||0;var t=this.connReceiver_(this.secondaryConn_),n=this.disconnReceiver_(this.secondaryConn_);this.secondaryConn_.open(t,n),eu(()=>{this.secondaryConn_&&(this.log_("Timed out trying to upgrade."),this.secondaryConn_.close())},Math.floor(6e4))}onReset_(e){this.log_("Reset packet received. New host: "+e),this.repoInfo_.host=e,1===this.state_?this.close():(this.closeConnections_(),this.start_())}onConnectionEstablished_(e,t){this.log_("Realtime connection established."),this.conn_=e,this.state_=1,this.onReady_&&(this.onReady_(t,this.sessionId),this.onReady_=null),0===this.primaryResponsesRequired_?(this.log_("Primary connection is healthy."),this.isHealthy_=!0):eu(()=>{this.sendPingOnPrimaryIfNecessary_()},Math.floor(5e3))}sendPingOnPrimaryIfNecessary_(){this.isHealthy_||1!==this.state_||(this.log_("sending ping on primary."),this.sendData_({t:"c",d:{t:"p",d:{}}}))}onSecondaryConnectionLost_(){var e=this.secondaryConn_;this.secondaryConn_=null,this.tx_!==e&&this.rx_!==e||this.close()}onConnectionLost_(e){this.conn_=null,e||0!==this.state_?1===this.state_&&this.log_("Realtime connection lost."):(this.log_("Realtime connection failed."),this.repoInfo_.isCacheableHost()&&(Nl.remove("host:"+this.repoInfo_.host),this.repoInfo_.internalHost=this.repoInfo_.host)),this.close()}onConnectionShutdown_(e){this.log_("Connection shutdown command received. Shutting down..."),this.onKill_&&(this.onKill_(e),this.onKill_=null),this.onDisconnect_=null,this.close()}sendData_(e){if(1!==this.state_)throw"Connection is not connected";this.tx_.send(e)}close(){2!==this.state_&&(this.log_("Closing realtime connection."),this.state_=2,this.closeConnections_(),this.onDisconnect_&&(this.onDisconnect_(),this.onDisconnect_=null))}closeConnections_(){this.log_("Shutting down all connections"),this.conn_&&(this.conn_.close(),this.conn_=null),this.secondaryConn_&&(this.secondaryConn_.close(),this.secondaryConn_=null),this.healthyTimeout_&&(clearTimeout(this.healthyTimeout_),this.healthyTimeout_=null)}}class Eu{put(e,t,n,r){}merge(e,t,n,r){}refreshAuthToken(e){}refreshAppCheckToken(e){}onDisconnectPut(e,t,n){}onDisconnectMerge(e,t,n){}onDisconnectCancel(e,t){}reportStats(e){}}class Cu{constructor(e){this.allowedEvents_=e,this.listeners_={},f(Array.isArray(e)&&0<e.length,"Requires a non-empty array")}trigger(t,...n){if(Array.isArray(this.listeners_[t])){const r=[...this.listeners_[t]];for(let e=0;e<r.length;e++)r[e].callback.apply(r[e].context,n)}}on(e,t,n){this.validateEventType_(e),this.listeners_[e]=this.listeners_[e]||[],this.listeners_[e].push({callback:t,context:n});var r=this.getInitialEvent(e);r&&t.apply(n,r)}off(e,t,n){this.validateEventType_(e);const r=this.listeners_[e]||[];for(let i=0;i<r.length;i++)if(r[i].callback===t&&(!n||n===r[i].context))return void r.splice(i,1)}validateEventType_(t){f(this.allowedEvents_.find(e=>e===t),"Unknown event: "+t)}}class Su extends Cu{static getInstance(){return new Su}constructor(){super(["online"]),this.online_=!0,"undefined"==typeof window||void 0===window.addEventListener||I()||(window.addEventListener("online",()=>{this.online_||(this.online_=!0,this.trigger("online",!0))},!1),window.addEventListener("offline",()=>{this.online_&&(this.online_=!1,this.trigger("online",!1))},!1))}getInitialEvent(e){return f("online"===e,"Unknown event type: "+e),[this.online_]}currentlyOnline(){return this.online_}}class ku{constructor(n,e){if(void 0===e){this.pieces_=n.split("/");let e=0;for(let t=0;t<this.pieces_.length;t++)0<this.pieces_[t].length&&(this.pieces_[e]=this.pieces_[t],e++);this.pieces_.length=e,this.pieceNum_=0}else this.pieces_=n,this.pieceNum_=e}toString(){let e="";for(let t=this.pieceNum_;t<this.pieces_.length;t++)""!==this.pieces_[t]&&(e+="/"+this.pieces_[t]);return e||"/"}}function Au(){return new ku("")}function Nu(e){return e.pieceNum_>=e.pieces_.length?null:e.pieces_[e.pieceNum_]}function Ru(e){return e.pieces_.length-e.pieceNum_}function Pu(e){let t=e.pieceNum_;return t<e.pieces_.length&&t++,new ku(e.pieces_,t)}function Du(e){return e.pieceNum_<e.pieces_.length?e.pieces_[e.pieces_.length-1]:null}function xu(e,t=0){return e.pieces_.slice(e.pieceNum_+t)}function Ou(e){if(e.pieceNum_>=e.pieces_.length)return null;const t=[];for(let n=e.pieceNum_;n<e.pieces_.length-1;n++)t.push(e.pieces_[n]);return new ku(t,0)}function Lu(e,t){const n=[];for(let i=e.pieceNum_;i<e.pieces_.length;i++)n.push(e.pieces_[i]);if(t instanceof ku)for(let e=t.pieceNum_;e<t.pieces_.length;e++)n.push(t.pieces_[e]);else{var r=t.split("/");for(let e=0;e<r.length;e++)0<r[e].length&&n.push(r[e])}return new ku(n,0)}function Mu(e){return e.pieceNum_>=e.pieces_.length}function Fu(e,t){var n=Nu(e),r=Nu(t);if(null===n)return t;if(n===r)return Fu(Pu(e),Pu(t));throw new Error("INTERNAL ERROR: innerPath ("+t+") is not within outerPath ("+e+")")}function Uu(e,t){var n=xu(e,0),r=xu(t,0);for(let s=0;s<n.length&&s<r.length;s++){var i=Jl(n[s],r[s]);if(0!==i)return i}return n.length===r.length?0:n.length<r.length?-1:1}function Vu(e,t){if(Ru(e)!==Ru(t))return!1;for(let n=e.pieceNum_,r=t.pieceNum_;n<=e.pieces_.length;n++,r++)if(e.pieces_[n]!==t.pieces_[r])return!1;return!0}function qu(e,t){let n=e.pieceNum_,r=t.pieceNum_;if(Ru(e)>Ru(t))return!1;for(;n<e.pieces_.length;){if(e.pieces_[n]!==t.pieces_[r])return!1;++n,++r}return!0}class Bu{constructor(e,t){this.errorPrefix_=t,this.parts_=xu(e,0),this.byteLength_=Math.max(1,this.parts_.length);for(let n=0;n<this.parts_.length;n++)this.byteLength_+=re(this.parts_[n]);ju(this)}}function ju(e){if(768<e.byteLength_)throw new Error(e.errorPrefix_+"has a key path longer than 768 bytes ("+e.byteLength_+").");if(32<e.parts_.length)throw new Error(e.errorPrefix_+"path specified exceeds the maximum depth that can be written (32) or object contains a cycle "+zu(e))}function zu(e){return 0===e.parts_.length?"":"in property '"+e.parts_.join(".")+"'"}class $u extends Cu{static getInstance(){return new $u}constructor(){super(["visible"]);let t,e;"undefined"!=typeof document&&void 0!==document.addEventListener&&(void 0!==document.hidden?(e="visibilitychange",t="hidden"):void 0!==document.mozHidden?(e="mozvisibilitychange",t="mozHidden"):void 0!==document.msHidden?(e="msvisibilitychange",t="msHidden"):void 0!==document.webkitHidden&&(e="webkitvisibilitychange",t="webkitHidden")),this.visible_=!0,e&&document.addEventListener(e,()=>{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}getInitialEvent(e){return f("visible"===e,"Unknown event type: "+e),[this.visible_]}}class Ku extends Eu{constructor(e,t,n,r,i,s,a,o){if(super(),this.repoInfo_=e,this.applicationId_=t,this.onDataUpdate_=n,this.onConnectStatus_=r,this.onServerInfoUpdate_=i,this.authTokenProvider_=s,this.appCheckTokenProvider_=a,this.authOverride_=o,this.id=Ku.nextPersistentConnectionId_++,this.log_=Ml("p:"+this.id+":"),this.interruptReasons_={},this.listens=new Map,this.outstandingPuts_=[],this.outstandingGets_=[],this.outstandingPutCount_=0,this.outstandingGetCount_=0,this.onDisconnectRequestQueue_=[],this.connected_=!1,this.reconnectDelay_=1e3,this.maxReconnectDelay_=3e5,this.securityDebugCallback_=null,this.lastSessionId=null,this.establishConnectionTimer_=null,this.visible_=!1,this.requestCBHash_={},this.requestNumber_=0,this.realtime_=null,this.authToken_=null,this.appCheckToken_=null,this.forceTokenRefresh_=!1,this.invalidAuthTokenCount_=0,this.invalidAppCheckTokenCount_=0,this.firstConnection_=!0,this.lastConnectionAttemptTime_=null,this.lastConnectionEstablishedTime_=null,o&&!A())throw new Error("Auth override specified in options, but not supported on non Node.js platforms");$u.getInstance().on("visible",this.onVisible_,this),-1===e.host.indexOf("fblocal")&&Su.getInstance().on("online",this.onOnline_,this)}sendRequest(e,t,n){var r=++this.requestNumber_,i={r:r,a:e,b:t};this.log_(F(i)),f(this.connected_,"sendRequest call when we're not connected not allowed."),this.realtime_.sendRequest(i),n&&(this.requestCBHash_[r]=n)}get(e){this.initConnection_();const n=new y;var t={p:e._path.toString(),q:e._queryObject};this.outstandingGets_.push({action:"g",request:t,onComplete:e=>{var t=e.d;"ok"===e.s?n.resolve(t):n.reject(t)}}),this.outstandingGetCount_++;t=this.outstandingGets_.length-1;return this.connected_&&this.sendGet_(t),n.promise}listen(e,t,n,r){this.initConnection_();var i=e._queryIdentifier,s=e._path.toString();this.log_("Listen called for "+s+" "+i),this.listens.has(s)||this.listens.set(s,new Map),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"listen() called for non-default but complete query"),f(!this.listens.get(s).has(i),"listen() called twice for same path/queryId.");var a={onComplete:r,hashFn:t,query:e,tag:n};this.listens.get(s).set(i,a),this.connected_&&this.sendListen_(a)}sendGet_(t){const n=this.outstandingGets_[t];this.sendRequest("g",n.request,e=>{delete this.outstandingGets_[t],this.outstandingGetCount_--,0===this.outstandingGetCount_&&(this.outstandingGets_=[]),n.onComplete&&n.onComplete(e)})}sendListen_(r){const i=r.query,s=i._path.toString(),a=i._queryIdentifier;this.log_("Listen on "+s+" for "+a);const e={p:s};r.tag&&(e.q=i._queryObject,e.t=r.tag),e.h=r.hashFn(),this.sendRequest("q",e,e=>{var t=e.d,n=e.s;Ku.warnOnListenWarnings_(t,i),(this.listens.get(s)&&this.listens.get(s).get(a))===r&&(this.log_("listen response",e),"ok"!==n&&this.removeListen_(s,a),r.onComplete&&r.onComplete(n,t))})}static warnOnListenWarnings_(e,t){if(e&&"object"==typeof e&&V(e,"w")){const i=q(e,"w");var n,r;Array.isArray(i)&&~i.indexOf("no_index")&&(n='".indexOn": "'+t._queryParams.getIndex().toString()+'"',r=t._path.toString(),Kl("Using an unspecified index. Your data will be downloaded and "+`filtered on the client. Consider adding ${n} at `+`${r} to your security rules for better performance.`))}}refreshAuthToken(e){this.authToken_=e,this.log_("Auth token refreshed"),this.authToken_?this.tryAuth():this.connected_&&this.sendRequest("unauth",{},()=>{}),this.reduceReconnectDelayIfAdminCredential_(e)}reduceReconnectDelayIfAdminCredential_(e){var t;(e&&40===e.length||(e=e,"object"==typeof(t=U(e).claims)&&!0===t.admin))&&(this.log_("Admin auth credential detected. Reducing max reconnect time."),this.maxReconnectDelay_=3e4)}refreshAppCheckToken(e){this.appCheckToken_=e,this.log_("App check token refreshed"),this.appCheckToken_?this.tryAppCheck():this.connected_&&this.sendRequest("unappeck",{},()=>{})}tryAuth(){if(this.connected_&&this.authToken_){const r=this.authToken_;var e=function(e){const t=U(e),n=t.claims;return!!n&&"object"==typeof n&&n.hasOwnProperty("iat")}(r)?"auth":"gauth";const t={cred:r};null===this.authOverride_?t.noauth=!0:"object"==typeof this.authOverride_&&(t.authvar=this.authOverride_),this.sendRequest(e,t,e=>{var t=e.s,n=e.d||"error";this.authToken_===r&&("ok"===t?this.invalidAuthTokenCount_=0:this.onAuthRevoked_(t,n))})}}tryAppCheck(){this.connected_&&this.appCheckToken_&&this.sendRequest("appcheck",{token:this.appCheckToken_},e=>{var t=e.s,n=e.d||"error";"ok"===t?this.invalidAppCheckTokenCount_=0:this.onAppCheckRevoked_(t,n)})}unlisten(e,t){var n=e._path.toString(),r=e._queryIdentifier;this.log_("Unlisten called for "+n+" "+r),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"unlisten() called for non-default but complete query"),this.removeListen_(n,r)&&this.connected_&&this.sendUnlisten_(n,r,e._queryObject,t)}sendUnlisten_(e,t,n,r){this.log_("Unlisten on "+e+" for "+t);const i={p:e};r&&(i.q=n,i.t=r),this.sendRequest("n",i)}onDisconnectPut(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("o",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"o",data:t,onComplete:n})}onDisconnectMerge(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("om",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"om",data:t,onComplete:n})}onDisconnectCancel(e,t){this.initConnection_(),this.connected_?this.sendOnDisconnect_("oc",e,null,t):this.onDisconnectRequestQueue_.push({pathString:e,action:"oc",data:null,onComplete:t})}sendOnDisconnect_(e,t,n,r){var i={p:t,d:n};this.log_("onDisconnect "+e,i),this.sendRequest(e,i,e=>{r&&setTimeout(()=>{r(e.s,e.d)},Math.floor(0))})}put(e,t,n,r){this.putInternal("p",e,t,n,r)}merge(e,t,n,r){this.putInternal("m",e,t,n,r)}putInternal(e,t,n,r,i){this.initConnection_();const s={p:t,d:n};void 0!==i&&(s.h=i),this.outstandingPuts_.push({action:e,request:s,onComplete:r}),this.outstandingPutCount_++;var a=this.outstandingPuts_.length-1;this.connected_?this.sendPut_(a):this.log_("Buffering put: "+t)}sendPut_(t){const n=this.outstandingPuts_[t].action;var e=this.outstandingPuts_[t].request;const r=this.outstandingPuts_[t].onComplete;this.outstandingPuts_[t].queued=this.connected_,this.sendRequest(n,e,e=>{this.log_(n+" response",e),delete this.outstandingPuts_[t],this.outstandingPutCount_--,0===this.outstandingPutCount_&&(this.outstandingPuts_=[]),r&&r(e.s,e.d)})}reportStats(e){var t;this.connected_&&(this.log_("reportStats",t={c:e}),this.sendRequest("s",t,e=>{var t;"ok"!==e.s&&(t=e.d,this.log_("reportStats","Error sending stats: "+t))}))}onDataMessage_(e){if("r"in e){this.log_("from server: "+F(e));var t=e.r;const n=this.requestCBHash_[t];n&&(delete this.requestCBHash_[t],n(e.b))}else{if("error"in e)throw"A server-side error has occurred: "+e.error;"a"in e&&this.onDataPush_(e.a,e.b)}}onDataPush_(e,t){this.log_("handleServerMessage",e,t),"d"===e?this.onDataUpdate_(t.p,t.d,!1,t.t):"m"===e?this.onDataUpdate_(t.p,t.d,!0,t.t):"c"===e?this.onListenRevoked_(t.p,t.q):"ac"===e?this.onAuthRevoked_(t.s,t.d):"apc"===e?this.onAppCheckRevoked_(t.s,t.d):"sd"===e?this.onSecurityDebugPacket_(t):Fl("Unrecognized action received from server: "+F(e)+"\nAre you using the latest client?")}onReady_(e,t){this.log_("connection ready"),this.connected_=!0,this.lastConnectionEstablishedTime_=(new Date).getTime(),this.handleTimestamp_(e),this.lastSessionId=t,this.firstConnection_&&this.sendConnectStats_(),this.restoreState_(),this.firstConnection_=!1,this.onConnectStatus_(!0)}scheduleConnect_(e){f(!this.realtime_,"Scheduling a connect when we're already connected/ing?"),this.establishConnectionTimer_&&clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=setTimeout(()=>{this.establishConnectionTimer_=null,this.establishConnection_()},Math.floor(e))}initConnection_(){!this.realtime_&&this.firstConnection_&&this.scheduleConnect_(0)}onVisible_(e){e&&!this.visible_&&this.reconnectDelay_===this.maxReconnectDelay_&&(this.log_("Window became visible. Reducing delay."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)),this.visible_=e}onOnline_(e){e?(this.log_("Browser went online."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)):(this.log_("Browser went offline. Killing connection."),this.realtime_&&this.realtime_.close())}onRealtimeDisconnect_(){var e;this.log_("data client disconnected"),this.connected_=!1,this.realtime_=null,this.cancelSentTransactions_(),this.requestCBHash_={},this.shouldReconnect_()&&(this.visible_?this.lastConnectionEstablishedTime_&&(3e4<(new Date).getTime()-this.lastConnectionEstablishedTime_&&(this.reconnectDelay_=1e3),this.lastConnectionEstablishedTime_=null):(this.log_("Window isn't visible. Delaying reconnect."),this.reconnectDelay_=this.maxReconnectDelay_,this.lastConnectionAttemptTime_=(new Date).getTime()),e=(new Date).getTime()-this.lastConnectionAttemptTime_,e=Math.max(0,this.reconnectDelay_-e),e=Math.random()*e,this.log_("Trying to reconnect in "+e+"ms"),this.scheduleConnect_(e),this.reconnectDelay_=Math.min(this.maxReconnectDelay_,1.3*this.reconnectDelay_)),this.onConnectStatus_(!1)}async establishConnection_(){if(this.shouldReconnect_()){this.log_("Making a connection attempt"),this.lastConnectionAttemptTime_=(new Date).getTime(),this.lastConnectionEstablishedTime_=null;var e=this.onDataMessage_.bind(this),r=this.onReady_.bind(this);const u=this.onRealtimeDisconnect_.bind(this);var i=this.id+":"+Ku.nextConnectionId_++,s=this.lastSessionId;let t=!1,n=null;var a=function(){n?n.close():(t=!0,u())};this.realtime_={close:a,sendRequest:function(e){f(n,"sendRequest call when we're not connected not allowed."),n.sendRequest(e)}};var o=this.forceTokenRefresh_;this.forceTokenRefresh_=!1;try{var[c,l]=await Promise.all([this.authTokenProvider_.getToken(o),this.appCheckTokenProvider_.getToken(o)]);t?zl("getToken() completed but was canceled"):(zl("getToken() completed. Creating connection."),this.authToken_=c&&c.accessToken,this.appCheckToken_=l&&l.token,n=new Tu(i,this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,e,r,u,e=>{Kl(e+" ("+this.repoInfo_.toString()+")"),this.interrupt("server_kill")},s))}catch(e){this.log_("Failed to get token: "+e),t||(this.repoInfo_.nodeAdmin&&Kl(e),a())}}}interrupt(e){zl("Interrupting connection for reason: "+e),this.interruptReasons_[e]=!0,this.realtime_?this.realtime_.close():(this.establishConnectionTimer_&&(clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=null),this.connected_&&this.onRealtimeDisconnect_())}resume(e){zl("Resuming connection for reason: "+e),delete this.interruptReasons_[e],B(this.interruptReasons_)&&(this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0))}handleTimestamp_(e){var t=e-(new Date).getTime();this.onServerInfoUpdate_({serverTimeOffset:t})}cancelSentTransactions_(){for(let e=0;e<this.outstandingPuts_.length;e++){const t=this.outstandingPuts_[e];t&&"h"in t.request&&t.queued&&(t.onComplete&&t.onComplete("disconnect"),delete this.outstandingPuts_[e],this.outstandingPutCount_--)}0===this.outstandingPutCount_&&(this.outstandingPuts_=[])}onListenRevoked_(e,t){let n;n=t?t.map(e=>ql(e)).join("$"):"default";const r=this.removeListen_(e,n);r&&r.onComplete&&r.onComplete("permission_denied")}removeListen_(e,t){var n=new ku(e).toString();let r;if(this.listens.has(n)){const i=this.listens.get(n);r=i.get(t),i.delete(t),0===i.size&&this.listens.delete(n)}else r=void 0;return r}onAuthRevoked_(e,t){zl("Auth token revoked: "+e+"/"+t),this.authToken_=null,this.forceTokenRefresh_=!0,this.realtime_.close(),"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAuthTokenCount_++,3<=this.invalidAuthTokenCount_&&(this.reconnectDelay_=3e4,this.authTokenProvider_.notifyForInvalidToken()))}onAppCheckRevoked_(e,t){zl("App check token revoked: "+e+"/"+t),this.appCheckToken_=null,this.forceTokenRefresh_=!0,"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAppCheckTokenCount_++,3<=this.invalidAppCheckTokenCount_&&this.appCheckTokenProvider_.notifyForInvalidToken())}onSecurityDebugPacket_(e){this.securityDebugCallback_?this.securityDebugCallback_(e):"msg"in e&&console.log("FIREBASE: "+e.msg.replace("\n","\nFIREBASE: "))}restoreState_(){this.tryAuth(),this.tryAppCheck();for(const t of this.listens.values())for(const n of t.values())this.sendListen_(n);for(let r=0;r<this.outstandingPuts_.length;r++)this.outstandingPuts_[r]&&this.sendPut_(r);for(;this.onDisconnectRequestQueue_.length;){var e=this.onDisconnectRequestQueue_.shift();this.sendOnDisconnect_(e.action,e.pathString,e.data,e.onComplete)}for(let i=0;i<this.outstandingGets_.length;i++)this.outstandingGets_[i]&&this.sendGet_(i)}sendConnectStats_(){const e={};e["sdk.js."+_l.replace(/\./g,"-")]=1,I()?e["framework.cordova"]=1:S()&&(e["framework.reactnative"]=1),this.reportStats(e)}shouldReconnect_(){var e=Su.getInstance().currentlyOnline();return B(this.interruptReasons_)&&e}}Ku.nextPersistentConnectionId_=0,Ku.nextConnectionId_=0;class Wu{constructor(e,t){this.name=e,this.node=t}static Wrap(e,t){return new Wu(e,t)}}class Gu{getCompare(){return this.compare.bind(this)}indexedValueChanged(e,t){var n=new Wu(Hl,e),r=new Wu(Hl,t);return 0!==this.compare(n,r)}minPost(){return Wu.MIN}}let Hu;class Qu extends Gu{static get __EMPTY_NODE(){return Hu}static set __EMPTY_NODE(e){Hu=e}compare(e,t){return Jl(e.name,t.name)}isDefinedOn(e){throw u("KeyIndex.isDefinedOn not expected to be called.")}indexedValueChanged(e,t){return!1}minPost(){return Wu.MIN}maxPost(){return new Wu(Ql,Hu)}makePost(e,t){return f("string"==typeof e,"KeyIndex indexValue must always be a string."),new Wu(e,Hu)}toString(){return".key"}}const Ju=new Qu;class Yu{constructor(e,t,n,r,i=null){this.isReverse_=r,this.resultGenerator_=i,this.nodeStack_=[];let s=1;for(;!e.isEmpty();)if(s=t?n(e.key,t):1,r&&(s*=-1),s<0)e=this.isReverse_?e.left:e.right;else{if(0===s){this.nodeStack_.push(e);break}this.nodeStack_.push(e),e=this.isReverse_?e.right:e.left}}getNext(){if(0===this.nodeStack_.length)return null;let e=this.nodeStack_.pop(),t;if(t=this.resultGenerator_?this.resultGenerator_(e.key,e.value):{key:e.key,value:e.value},this.isReverse_)for(e=e.left;!e.isEmpty();)this.nodeStack_.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack_.push(e),e=e.left;return t}hasNext(){return 0<this.nodeStack_.length}peek(){if(0===this.nodeStack_.length)return null;var e=this.nodeStack_[this.nodeStack_.length-1];return this.resultGenerator_?this.resultGenerator_(e.key,e.value):{key:e.key,value:e.value}}}class Xu{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:Xu.RED,this.left=null!=r?r:eh.EMPTY_NODE,this.right=null!=i?i:eh.EMPTY_NODE}copy(e,t,n,r,i){return new Xu(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=r?r:this.left,null!=i?i:this.right)}count(){return this.left.count()+1+this.right.count()}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||!!e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min_(){return this.left.isEmpty()?this:this.left.min_()}minKey(){return this.min_().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let r=this;var i=n(e,r.key);return r=i<0?r.copy(null,null,null,r.left.insert(e,t,n),null):0===i?r.copy(null,t,null,null,null):r.copy(null,null,null,null,r.right.insert(e,t,n)),r.fixUp_()}removeMin_(){if(this.left.isEmpty())return eh.EMPTY_NODE;let e=this;return e.left.isRed_()||e.left.left.isRed_()||(e=e.moveRedLeft_()),e=e.copy(null,null,null,e.left.removeMin_(),null),e.fixUp_()}remove(e,t){let n,r;if(n=this,t(e,n.key)<0)n.left.isEmpty()||n.left.isRed_()||n.left.left.isRed_()||(n=n.moveRedLeft_()),n=n.copy(null,null,null,n.left.remove(e,t),null);else{if(n.left.isRed_()&&(n=n.rotateRight_()),n.right.isEmpty()||n.right.isRed_()||n.right.left.isRed_()||(n=n.moveRedRight_()),0===t(e,n.key)){if(n.right.isEmpty())return eh.EMPTY_NODE;r=n.right.min_(),n=n.copy(r.key,r.value,null,null,n.right.removeMin_())}n=n.copy(null,null,null,null,n.right.remove(e,t))}return n.fixUp_()}isRed_(){return this.color}fixUp_(){let e=this;return e.right.isRed_()&&!e.left.isRed_()&&(e=e.rotateLeft_()),e.left.isRed_()&&e.left.left.isRed_()&&(e=e.rotateRight_()),e.left.isRed_()&&e.right.isRed_()&&(e=e.colorFlip_()),e}moveRedLeft_(){let e=this.colorFlip_();return e.right.left.isRed_()&&(e=e.copy(null,null,null,null,e.right.rotateRight_()),e=e.rotateLeft_(),e=e.colorFlip_()),e}moveRedRight_(){let e=this.colorFlip_();return e.left.left.isRed_()&&(e=e.rotateRight_(),e=e.colorFlip_()),e}rotateLeft_(){var e=this.copy(null,null,Xu.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight_(){var e=this.copy(null,null,Xu.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip_(){var e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth_(){var e=this.check_();return Math.pow(2,e)<=this.count()+1}check_(){if(this.isRed_()&&this.left.isRed_())throw new Error("Red node has red child("+this.key+","+this.value+")");if(this.right.isRed_())throw new Error("Right child of ("+this.key+","+this.value+") is red");var e=this.left.check_();if(e!==this.right.check_())throw new Error("Black depths differ");return e+(this.isRed_()?0:1)}}Xu.RED=!0,Xu.BLACK=!1;class Zu{copy(e,t,n,r,i){return this}insert(e,t,n){return new Xu(e,t,null)}remove(e,t){return this}count(){return 0}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}check_(){return 0}isRed_(){return!1}}class eh{constructor(e,t=eh.EMPTY_NODE){this.comparator_=e,this.root_=t}insert(e,t){return new eh(this.comparator_,this.root_.insert(e,t,this.comparator_).copy(null,null,Xu.BLACK,null,null))}remove(e){return new eh(this.comparator_,this.root_.remove(e,this.comparator_).copy(null,null,Xu.BLACK,null,null))}get(e){var t;let n=this.root_;for(;!n.isEmpty();){if(0===(t=this.comparator_(e,n.key)))return n.value;t<0?n=n.left:0<t&&(n=n.right)}return null}getPredecessorKey(e){let t,n=this.root_,r=null;for(;!n.isEmpty();){if(0===(t=this.comparator_(e,n.key))){if(n.left.isEmpty())return r?r.key:null;for(n=n.left;!n.right.isEmpty();)n=n.right;return n.key}t<0?n=n.left:0<t&&(r=n,n=n.right)}throw new Error("Attempted to find predecessor key for a nonexistent key. What gives?")}isEmpty(){return this.root_.isEmpty()}count(){return this.root_.count()}minKey(){return this.root_.minKey()}maxKey(){return this.root_.maxKey()}inorderTraversal(e){return this.root_.inorderTraversal(e)}reverseTraversal(e){return this.root_.reverseTraversal(e)}getIterator(e){return new Yu(this.root_,null,this.comparator_,!1,e)}getIteratorFrom(e,t){return new Yu(this.root_,e,this.comparator_,!1,t)}getReverseIteratorFrom(e,t){return new Yu(this.root_,e,this.comparator_,!0,t)}getReverseIterator(e){return new Yu(this.root_,null,this.comparator_,!0,e)}}function th(e,t){return Jl(e.name,t.name)}function nh(e,t){return Jl(e,t)}eh.EMPTY_NODE=new Zu;let rh;function ih(e){return"number"==typeof e?"number:"+Xl(e):"string:"+e}function sh(e){var t;e.isLeafNode()?(t=e.val(),f("string"==typeof t||"number"==typeof t||"object"==typeof t&&V(t,".sv"),"Priority must be a string or number.")):f(e===rh||e.isEmpty(),"priority of unexpected type."),f(e===rh||e.getPriority().isEmpty(),"Priority nodes can't have a priority of their own.")}let ah;class oh{static set __childrenNodeConstructor(e){ah=e}static get __childrenNodeConstructor(){return ah}constructor(e,t=oh.__childrenNodeConstructor.EMPTY_NODE){this.value_=e,this.priorityNode_=t,this.lazyHash_=null,f(void 0!==this.value_&&null!==this.value_,"LeafNode shouldn't be created with null/undefined value."),sh(this.priorityNode_)}isLeafNode(){return!0}getPriority(){return this.priorityNode_}updatePriority(e){return new oh(this.value_,e)}getImmediateChild(e){return".priority"===e?this.priorityNode_:oh.__childrenNodeConstructor.EMPTY_NODE}getChild(e){return Mu(e)?this:".priority"===Nu(e)?this.priorityNode_:oh.__childrenNodeConstructor.EMPTY_NODE}hasChild(){return!1}getPredecessorChildName(e,t){return null}updateImmediateChild(e,t){return".priority"===e?this.updatePriority(t):t.isEmpty()&&".priority"!==e?this:oh.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(e,t).updatePriority(this.priorityNode_)}updateChild(e,t){var n=Nu(e);return null===n?t:t.isEmpty()&&".priority"!==n?this:(f(".priority"!==n||1===Ru(e),".priority must be the last token in a path"),this.updateImmediateChild(n,oh.__childrenNodeConstructor.EMPTY_NODE.updateChild(Pu(e),t)))}isEmpty(){return!1}numChildren(){return 0}forEachChild(e,t){return!1}val(e){return e&&!this.getPriority().isEmpty()?{".value":this.getValue(),".priority":this.getPriority().val()}:this.getValue()}hash(){if(null===this.lazyHash_){let e="";this.priorityNode_.isEmpty()||(e+="priority:"+ih(this.priorityNode_.val())+":");var t=typeof this.value_;e+=t+":",e+="number"==t?Xl(this.value_):this.value_,this.lazyHash_=Al(e)}return this.lazyHash_}getValue(){return this.value_}compareTo(e){return e===oh.__childrenNodeConstructor.EMPTY_NODE?1:e instanceof oh.__childrenNodeConstructor?-1:(f(e.isLeafNode(),"Unknown node type"),this.compareToLeafNode_(e))}compareToLeafNode_(e){var t=typeof e.value_,n=typeof this.value_,r=oh.VALUE_TYPE_ORDER.indexOf(t),i=oh.VALUE_TYPE_ORDER.indexOf(n);return f(0<=r,"Unknown leaf type: "+t),f(0<=i,"Unknown leaf type: "+n),r===i?"object"==n?0:this.value_<e.value_?-1:this.value_===e.value_?0:1:i-r}withIndex(){return this}isIndexed(){return!0}equals(e){return e===this||!!e.isLeafNode()&&(this.value_===e.value_&&this.priorityNode_.equals(e.priorityNode_))}}oh.VALUE_TYPE_ORDER=["object","boolean","number","string"];let ch,lh;const uh=new class extends Gu{compare(e,t){const n=e.node.getPriority();var r=t.node.getPriority(),r=n.compareTo(r);return 0===r?Jl(e.name,t.name):r}isDefinedOn(e){return!e.getPriority().isEmpty()}indexedValueChanged(e,t){return!e.getPriority().equals(t.getPriority())}minPost(){return Wu.MIN}maxPost(){return new Wu(Ql,new oh("[PRIORITY-POST]",lh))}makePost(e,t){var n=ch(e);return new Wu(t,new oh("[PRIORITY-POST]",n))}toString(){return".priority"}},hh=Math.log(2);class dh{constructor(e){var t;this.count=(t=e+1,parseInt(Math.log(t)/hh,10)),this.current_=this.count-1;var n,r=(n=this.count,parseInt(Array(n+1).join("1"),2));this.bits_=e+1&r}nextBitIsOne(){var e=!(this.bits_&1<<this.current_);return this.current_--,e}}function ph(c,e,l,t){c.sort(e);const u=function(e,t){var n=t-e;let r,i;if(0==n)return null;if(1==n)return r=c[e],i=l?l(r):r,new Xu(i,r.node,Xu.BLACK,null,null);var s=parseInt(n/2,10)+e,a=u(e,s),n=u(s+1,t);return r=c[s],i=l?l(r):r,new Xu(i,r.node,Xu.BLACK,a,n)};var n=function(e){let s=null,a=null,o=c.length;function t(e,t){var n=o-e,r=o;o-=e;var i=u(1+n,r),r=c[n],n=l?l(r):r;!function(e){if(s){s.left=e;s=e}else{a=e;s=e}}(new Xu(n,r.node,t,null,i))}for(let i=0;i<e.count;++i){var n=e.nextBitIsOne(),r=Math.pow(2,e.count-(i+1));n?t(r,Xu.BLACK):(t(r,Xu.BLACK),t(r,Xu.RED))}return a}(new dh(c.length));return new eh(t||e,n)}let fh;const gh={};class mh{static get Default(){return f((gh,uh),"ChildrenNode.ts has not been loaded"),fh=fh||new mh({".priority":gh},{".priority":uh}),fh}constructor(e,t){this.indexes_=e,this.indexSet_=t}get(e){var t=q(this.indexes_,e);if(!t)throw new Error("No index defined for "+e);return t instanceof eh?t:null}hasIndex(e){return V(this.indexSet_,e.toString())}addIndex(e,t){f(e!==Ju,"KeyIndex always exists and isn't meant to be added to the IndexMap.");const n=[];let r=!1;const i=t.getIterator(Wu.Wrap);let s=i.getNext();for(;s;)r=r||e.isDefinedOn(s.node),n.push(s),s=i.getNext();let a;a=r?ph(n,e.getCompare()):gh;var o=e.toString();const c=Object.assign({},this.indexSet_);c[o]=e;const l=Object.assign({},this.indexes_);return l[o]=a,new mh(l,c)}addToIndexes(a,o){var e=j(this.indexes_,(t,e)=>{const n=q(this.indexSet_,e);if(f(n,"Missing index implementation for "+e),t===gh){if(n.isDefinedOn(a.node)){const i=[],s=o.getIterator(Wu.Wrap);let e=s.getNext();for(;e;)e.name!==a.name&&i.push(e),e=s.getNext();return i.push(a),ph(i,n.getCompare())}return gh}{var r=o.get(a.name);let e=t;return r&&(e=e.remove(new Wu(a.name,r))),e.insert(a,a.node)}});return new mh(e,this.indexSet_)}removeFromIndexes(n,r){var e=j(this.indexes_,e=>{if(e===gh)return e;var t=r.get(n.name);return t?e.remove(new Wu(n.name,t)):e});return new mh(e,this.indexSet_)}}let vh;class _h{static get EMPTY_NODE(){return vh=vh||new _h(new eh(nh),null,mh.Default)}constructor(e,t,n){this.children_=e,this.priorityNode_=t,this.indexMap_=n,this.lazyHash_=null,this.priorityNode_&&sh(this.priorityNode_),this.children_.isEmpty()&&f(!this.priorityNode_||this.priorityNode_.isEmpty(),"An empty node cannot have a priority")}isLeafNode(){return!1}getPriority(){return this.priorityNode_||vh}updatePriority(e){return this.children_.isEmpty()?this:new _h(this.children_,e,this.indexMap_)}getImmediateChild(e){if(".priority"===e)return this.getPriority();var t=this.children_.get(e);return null===t?vh:t}getChild(e){var t=Nu(e);return null===t?this:this.getImmediateChild(t).getChild(Pu(e))}hasChild(e){return null!==this.children_.get(e)}updateImmediateChild(n,r){if(f(r,"We should always be passing snapshot nodes"),".priority"===n)return this.updatePriority(r);{var i=new Wu(n,r);let e,t;t=r.isEmpty()?(e=this.children_.remove(n),this.indexMap_.removeFromIndexes(i,this.children_)):(e=this.children_.insert(n,r),this.indexMap_.addToIndexes(i,this.children_));i=e.isEmpty()?vh:this.priorityNode_;return new _h(e,i,t)}}updateChild(e,t){var n=Nu(e);if(null===n)return t;f(".priority"!==Nu(e)||1===Ru(e),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(Pu(e),t);return this.updateImmediateChild(n,r)}isEmpty(){return this.children_.isEmpty()}numChildren(){return this.children_.count()}val(n){if(this.isEmpty())return null;const r={};let i=0,s=0,a=!0;if(this.forEachChild(uh,(e,t)=>{r[e]=t.val(n),i++,a&&_h.INTEGER_REGEXP_.test(e)?s=Math.max(s,Number(e)):a=!1}),!n&&a&&s<2*i){const e=[];for(const t in r)e[t]=r[t];return e}return n&&!this.getPriority().isEmpty()&&(r[".priority"]=this.getPriority().val()),r}hash(){if(null===this.lazyHash_){let r="";this.getPriority().isEmpty()||(r+="priority:"+ih(this.getPriority().val())+":"),this.forEachChild(uh,(e,t)=>{var n=t.hash();""!==n&&(r+=":"+e+":"+n)}),this.lazyHash_=""===r?"":Al(r)}return this.lazyHash_}getPredecessorChildName(e,t,n){const r=this.resolveIndex_(n);if(r){var i=r.getPredecessorKey(new Wu(e,t));return i?i.name:null}return this.children_.getPredecessorKey(e)}getFirstChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.minKey();return n&&n.name}return this.children_.minKey()}getFirstChild(e){var t=this.getFirstChildName(e);return t?new Wu(t,this.children_.get(t)):null}getLastChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.maxKey();return n&&n.name}return this.children_.maxKey()}getLastChild(e){var t=this.getLastChildName(e);return t?new Wu(t,this.children_.get(t)):null}forEachChild(e,t){const n=this.resolveIndex_(e);return n?n.inorderTraversal(e=>t(e.name,e.node)):this.children_.inorderTraversal(t)}getIterator(e){return this.getIteratorFrom(e.minPost(),e)}getIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getIteratorFrom(t,e=>e);{const r=this.children_.getIteratorFrom(t.name,Wu.Wrap);let e=r.peek();for(;null!=e&&n.compare(e,t)<0;)r.getNext(),e=r.peek();return r}}getReverseIterator(e){return this.getReverseIteratorFrom(e.maxPost(),e)}getReverseIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getReverseIteratorFrom(t,e=>e);{const r=this.children_.getReverseIteratorFrom(t.name,Wu.Wrap);let e=r.peek();for(;null!=e&&0<n.compare(e,t);)r.getNext(),e=r.peek();return r}}compareTo(e){return this.isEmpty()?e.isEmpty()?0:-1:e.isLeafNode()||e.isEmpty()?1:e===wh?-1:0}withIndex(e){if(e===Ju||this.indexMap_.hasIndex(e))return this;var t=this.indexMap_.addIndex(e,this.children_);return new _h(this.children_,this.priorityNode_,t)}isIndexed(e){return e===Ju||this.indexMap_.hasIndex(e)}equals(e){if(e===this)return!0;if(e.isLeafNode())return!1;{const n=e;if(this.getPriority().equals(n.getPriority())){if(this.children_.count()!==n.children_.count())return!1;{const r=this.getIterator(uh),i=n.getIterator(uh);let e=r.getNext(),t=i.getNext();for(;e&&t;){if(e.name!==t.name||!e.node.equals(t.node))return!1;e=r.getNext(),t=i.getNext()}return null===e&&null===t}}return!1}}resolveIndex_(e){return e===Ju?null:this.indexMap_.get(e.toString())}}_h.INTEGER_REGEXP_=/^(0|[1-9]\d*)$/;class yh extends _h{constructor(){super(new eh(nh),_h.EMPTY_NODE,mh.Default)}compareTo(e){return e===this?0:1}equals(e){return e===this}getPriority(){return this}getImmediateChild(e){return _h.EMPTY_NODE}isEmpty(){return!1}}const wh=new yh;Object.defineProperties(Wu,{MIN:{value:new Wu(Hl,_h.EMPTY_NODE)},MAX:{value:new Wu(Ql,wh)}}),Qu.__EMPTY_NODE=_h.EMPTY_NODE,oh.__childrenNodeConstructor=_h,Il=wh,rh=Il,Tl=wh,lh=Tl;const bh=!0;function Ih(i,e=null){if(null===i)return _h.EMPTY_NODE;if("object"==typeof i&&".priority"in i&&(e=i[".priority"]),f(null===e||"string"==typeof e||"number"==typeof e||"object"==typeof e&&".sv"in e,"Invalid priority type found: "+typeof e),"object"!=typeof(i="object"==typeof i&&".value"in i&&null!==i[".value"]?i[".value"]:i)||".sv"in i){var t=i;return new oh(t,Ih(e))}if(i instanceof Array||!bh){let r=_h.EMPTY_NODE;return Yl(i,(e,t)=>{if(V(i,e)&&"."!==e.substring(0,1)){const n=Ih(t);!n.isLeafNode()&&n.isEmpty()||(r=r.updateImmediateChild(e,n))}}),r.updatePriority(Ih(e))}{const s=[];let r=!1;if(Yl(i,(e,t)=>{if("."!==e.substring(0,1)){const n=Ih(t);n.isEmpty()||(r=r||!n.getPriority().isEmpty(),s.push(new Wu(e,n)))}}),0===s.length)return _h.EMPTY_NODE;var n=ph(s,th,e=>e.name,nh);if(r){t=ph(s,uh.getCompare());return new _h(n,Ih(e),new mh({".priority":t},{".priority":uh}))}return new _h(n,Ih(e),mh.Default)}}ch=Ih;class Th extends Gu{constructor(e){super(),this.indexPath_=e,f(!Mu(e)&&".priority"!==Nu(e),"Can't create PathIndex with empty path or .priority key")}extractChild(e){return e.getChild(this.indexPath_)}isDefinedOn(e){return!e.getChild(this.indexPath_).isEmpty()}compare(e,t){const n=this.extractChild(e.node);var r=this.extractChild(t.node),r=n.compareTo(r);return 0===r?Jl(e.name,t.name):r}makePost(e,t){var n=Ih(e),n=_h.EMPTY_NODE.updateChild(this.indexPath_,n);return new Wu(t,n)}maxPost(){var e=_h.EMPTY_NODE.updateChild(this.indexPath_,wh);return new Wu(Ql,e)}toString(){return xu(this.indexPath_,0).join("/")}}const Eh=new class extends Gu{compare(e,t){var n=e.node.compareTo(t.node);return 0===n?Jl(e.name,t.name):n}isDefinedOn(e){return!0}indexedValueChanged(e,t){return!e.equals(t)}minPost(){return Wu.MIN}maxPost(){return Wu.MAX}makePost(e,t){var n=Ih(e);return new Wu(t,n)}toString(){return".value"}};function Ch(e){return{type:"value",snapshotNode:e}}function Sh(e,t){return{type:"child_added",snapshotNode:t,childName:e}}function kh(e,t){return{type:"child_removed",snapshotNode:t,childName:e}}function Ah(e,t,n){return{type:"child_changed",snapshotNode:t,childName:e,oldSnap:n}}class Nh{constructor(e){this.index_=e}updateChild(e,t,n,r,i,s){f(e.isIndexed(this.index_),"A node must be indexed if only a child is updated");const a=e.getImmediateChild(t);return a.getChild(r).equals(n.getChild(r))&&a.isEmpty()===n.isEmpty()?e:(null!=s&&(n.isEmpty()?e.hasChild(t)?s.trackChildChange(kh(t,a)):f(e.isLeafNode(),"A child remove without an old child only makes sense on a leaf node"):a.isEmpty()?s.trackChildChange(Sh(t,n)):s.trackChildChange(Ah(t,n,a))),e.isLeafNode()&&n.isEmpty()?e:e.updateImmediateChild(t,n).withIndex(this.index_))}updateFullNode(r,n,i){return null!=i&&(r.isLeafNode()||r.forEachChild(uh,(e,t)=>{n.hasChild(e)||i.trackChildChange(kh(e,t))}),n.isLeafNode()||n.forEachChild(uh,(e,t)=>{if(r.hasChild(e)){const n=r.getImmediateChild(e);n.equals(t)||i.trackChildChange(Ah(e,t,n))}else i.trackChildChange(Sh(e,t))})),n.withIndex(this.index_)}updatePriority(e,t){return e.isEmpty()?_h.EMPTY_NODE:e.updatePriority(t)}filtersNodes(){return!1}getIndexedFilter(){return this}getIndex(){return this.index_}}class Rh{constructor(e){this.indexedFilter_=new Nh(e.getIndex()),this.index_=e.getIndex(),this.startPost_=Rh.getStartPost_(e),this.endPost_=Rh.getEndPost_(e),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}getStartPost(){return this.startPost_}getEndPost(){return this.endPost_}matches(e){var t=this.startIsInclusive_?this.index_.compare(this.getStartPost(),e)<=0:this.index_.compare(this.getStartPost(),e)<0,n=this.endIsInclusive_?this.index_.compare(e,this.getEndPost())<=0:this.index_.compare(e,this.getEndPost())<0;return t&&n}updateChild(e,t,n,r,i,s){return this.matches(new Wu(t,n))||(n=_h.EMPTY_NODE),this.indexedFilter_.updateChild(e,t,n,r,i,s)}updateFullNode(e,t,n){let r=(t=t.isLeafNode()?_h.EMPTY_NODE:t).withIndex(this.index_);r=r.updatePriority(_h.EMPTY_NODE);const i=this;return t.forEachChild(uh,(e,t)=>{i.matches(new Wu(e,t))||(r=r.updateImmediateChild(e,_h.EMPTY_NODE))}),this.indexedFilter_.updateFullNode(e,r,n)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.indexedFilter_}getIndex(){return this.index_}static getStartPost_(e){if(e.hasStart()){var t=e.getIndexStartName();return e.getIndex().makePost(e.getIndexStartValue(),t)}return e.getIndex().minPost()}static getEndPost_(e){if(e.hasEnd()){var t=e.getIndexEndName();return e.getIndex().makePost(e.getIndexEndValue(),t)}return e.getIndex().maxPost()}}class Ph{constructor(e){this.withinDirectionalStart=e=>this.reverse_?this.withinEndPost(e):this.withinStartPost(e),this.withinDirectionalEnd=e=>this.reverse_?this.withinStartPost(e):this.withinEndPost(e),this.withinStartPost=e=>{var t=this.index_.compare(this.rangedFilter_.getStartPost(),e);return this.startIsInclusive_?t<=0:t<0},this.withinEndPost=e=>{var t=this.index_.compare(e,this.rangedFilter_.getEndPost());return this.endIsInclusive_?t<=0:t<0},this.rangedFilter_=new Rh(e),this.index_=e.getIndex(),this.limit_=e.getLimit(),this.reverse_=!e.isViewFromLeft(),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}updateChild(e,t,n,r,i,s){return this.rangedFilter_.matches(new Wu(t,n))||(n=_h.EMPTY_NODE),e.getImmediateChild(t).equals(n)?e:e.numChildren()<this.limit_?this.rangedFilter_.getIndexedFilter().updateChild(e,t,n,r,i,s):this.fullLimitUpdateChild_(e,t,n,i,s)}updateFullNode(e,n,t){let r;if(n.isLeafNode()||n.isEmpty())r=_h.EMPTY_NODE.withIndex(this.index_);else if(2*this.limit_<n.numChildren()&&n.isIndexed(this.index_)){r=_h.EMPTY_NODE.withIndex(this.index_);let e;e=this.reverse_?n.getReverseIteratorFrom(this.rangedFilter_.getEndPost(),this.index_):n.getIteratorFrom(this.rangedFilter_.getStartPost(),this.index_);let t=0;for(;e.hasNext()&&t<this.limit_;){var i=e.getNext();if(this.withinDirectionalStart(i)){if(!this.withinDirectionalEnd(i))break;r=r.updateImmediateChild(i.name,i.node),t++}}}else{r=n.withIndex(this.index_),r=r.updatePriority(_h.EMPTY_NODE);let e;e=this.reverse_?r.getReverseIterator(this.index_):r.getIterator(this.index_);let t=0;for(;e.hasNext();){var s=e.getNext();t<this.limit_&&this.withinDirectionalStart(s)&&this.withinDirectionalEnd(s)?t++:r=r.updateImmediateChild(s.name,_h.EMPTY_NODE)}}return this.rangedFilter_.getIndexedFilter().updateFullNode(e,r,t)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.rangedFilter_.getIndexedFilter()}getIndex(){return this.index_}fullLimitUpdateChild_(e,t,n,r,i){let s;if(this.reverse_){const d=this.index_.getCompare();s=(e,t)=>d(t,e)}else s=this.index_.getCompare();const a=e;f(a.numChildren()===this.limit_,"");var o=new Wu(t,n),c=this.reverse_?a.getFirstChild(this.index_):a.getLastChild(this.index_),l=this.rangedFilter_.matches(o);if(a.hasChild(t)){var u=a.getImmediateChild(t);let e=r.getChildAfterChild(this.index_,c,this.reverse_);for(;null!=e&&(e.name===t||a.hasChild(e.name));)e=r.getChildAfterChild(this.index_,e,this.reverse_);var h=null==e?1:s(e,o);if(l&&!n.isEmpty()&&0<=h)return null!=i&&i.trackChildChange(Ah(t,n,u)),a.updateImmediateChild(t,n);{null!=i&&i.trackChildChange(kh(t,u));const p=a.updateImmediateChild(t,_h.EMPTY_NODE);return null!=e&&this.rangedFilter_.matches(e)?(null!=i&&i.trackChildChange(Sh(e.name,e.node)),p.updateImmediateChild(e.name,e.node)):p}}return!n.isEmpty()&&l&&0<=s(c,o)?(null!=i&&(i.trackChildChange(kh(c.name,c.node)),i.trackChildChange(Sh(t,n))),a.updateImmediateChild(t,n).updateImmediateChild(c.name,_h.EMPTY_NODE)):e}}class Dh{constructor(){this.limitSet_=!1,this.startSet_=!1,this.startNameSet_=!1,this.startAfterSet_=!1,this.endSet_=!1,this.endNameSet_=!1,this.endBeforeSet_=!1,this.limit_=0,this.viewFrom_="",this.indexStartValue_=null,this.indexStartName_="",this.indexEndValue_=null,this.indexEndName_="",this.index_=uh}hasStart(){return this.startSet_}isViewFromLeft(){return""===this.viewFrom_?this.startSet_:"l"===this.viewFrom_}getIndexStartValue(){return f(this.startSet_,"Only valid if start has been set"),this.indexStartValue_}getIndexStartName(){return f(this.startSet_,"Only valid if start has been set"),this.startNameSet_?this.indexStartName_:Hl}hasEnd(){return this.endSet_}getIndexEndValue(){return f(this.endSet_,"Only valid if end has been set"),this.indexEndValue_}getIndexEndName(){return f(this.endSet_,"Only valid if end has been set"),this.endNameSet_?this.indexEndName_:Ql}hasLimit(){return this.limitSet_}hasAnchoredLimit(){return this.limitSet_&&""!==this.viewFrom_}getLimit(){return f(this.limitSet_,"Only valid if limit has been set"),this.limit_}getIndex(){return this.index_}loadsAllData(){return!(this.startSet_||this.endSet_||this.limitSet_)}isDefault(){return this.loadsAllData()&&this.index_===uh}copy(){const e=new Dh;return e.limitSet_=this.limitSet_,e.limit_=this.limit_,e.startSet_=this.startSet_,e.startAfterSet_=this.startAfterSet_,e.indexStartValue_=this.indexStartValue_,e.startNameSet_=this.startNameSet_,e.indexStartName_=this.indexStartName_,e.endSet_=this.endSet_,e.endBeforeSet_=this.endBeforeSet_,e.indexEndValue_=this.indexEndValue_,e.endNameSet_=this.endNameSet_,e.indexEndName_=this.indexEndName_,e.index_=this.index_,e.viewFrom_=this.viewFrom_,e}}function xh(e,t,n){const r=e.copy();return r.startSet_=!0,void 0===t&&(t=null),r.indexStartValue_=t,null!=n?(r.startNameSet_=!0,r.indexStartName_=n):(r.startNameSet_=!1,r.indexStartName_=""),r}function Oh(e,t,n){const r=e.copy();return r.endSet_=!0,void 0===t&&(t=null),r.indexEndValue_=t,void 0!==n?(r.endNameSet_=!0,r.indexEndName_=n):(r.endNameSet_=!1,r.indexEndName_=""),r}function Lh(e,t){const n=e.copy();return n.index_=t,n}function Mh(e){const t={};if(e.isDefault())return t;let n;var r;return n=e.index_===uh?"$priority":e.index_===Eh?"$value":e.index_===Ju?"$key":(f(e.index_ instanceof Th,"Unrecognized index type!"),e.index_.toString()),t.orderBy=F(n),e.startSet_&&(r=e.startAfterSet_?"startAfter":"startAt",t[r]=F(e.indexStartValue_),e.startNameSet_&&(t[r]+=","+F(e.indexStartName_))),e.endSet_&&(r=e.endBeforeSet_?"endBefore":"endAt",t[r]=F(e.indexEndValue_),e.endNameSet_&&(t[r]+=","+F(e.indexEndName_))),e.limitSet_&&(e.isViewFromLeft()?t.limitToFirst=e.limit_:t.limitToLast=e.limit_),t}function Fh(t){const n={};if(t.startSet_&&(n.sp=t.indexStartValue_,t.startNameSet_&&(n.sn=t.indexStartName_),n.sin=!t.startAfterSet_),t.endSet_&&(n.ep=t.indexEndValue_,t.endNameSet_&&(n.en=t.indexEndName_),n.ein=!t.endBeforeSet_),t.limitSet_){n.l=t.limit_;let e=t.viewFrom_;""===e&&(e=t.isViewFromLeft()?"l":"r"),n.vf=e}return t.index_!==uh&&(n.i=t.index_.toString()),n}class Uh extends Eu{reportStats(e){throw new Error("Method not implemented.")}static getListenId_(e,t){return void 0!==t?"tag$"+t:(f(e._queryParams.isDefault(),"should have a tag if it's not a default query."),e._path.toString())}constructor(e,t,n,r){super(),this.repoInfo_=e,this.onDataUpdate_=t,this.authTokenProvider_=n,this.appCheckTokenProvider_=r,this.log_=Ml("p:rest:"),this.listens_={}}listen(e,t,r,i){const s=e._path.toString();this.log_("Listen called for "+s+" "+e._queryIdentifier);const a=Uh.getListenId_(e,r),o={};this.listens_[a]=o;var n=Mh(e._queryParams);this.restRequest_(s+".json",n,(t,e)=>{let n=e;if(null===(t=404===t?n=null:t)&&this.onDataUpdate_(s,n,!1,r),q(this.listens_,a)===o){let e;e=t?401===t?"permission_denied":"rest_error:"+t:"ok",i(e,null)}})}unlisten(e,t){var n=Uh.getListenId_(e,t);delete this.listens_[n]}get(e){var t=Mh(e._queryParams);const r=e._path.toString(),i=new y;return this.restRequest_(r+".json",t,(e,t)=>{let n=t;null===(e=404===e?n=null:e)?(this.onDataUpdate_(r,n,!1,null),i.resolve(n)):i.reject(new Error(n))}),i.promise}refreshAuthToken(e){}restRequest_(i,s={},a){return s.format="export",Promise.all([this.authTokenProvider_.getToken(!1),this.appCheckTokenProvider_.getToken(!1)]).then(([e,t])=>{e&&e.accessToken&&(s.auth=e.accessToken),t&&t.token&&(s.ac=t.token);const n=(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host+i+"?ns="+this.repoInfo_.namespace+K(s);this.log_("Sending REST request for "+n);const r=new XMLHttpRequest;r.onreadystatechange=()=>{if(a&&4===r.readyState){this.log_("REST Response for "+n+" received. status:",r.status,"response:",r.responseText);let e=null;if(200<=r.status&&r.status<300){try{e=M(r.responseText)}catch(e){Kl("Failed to parse JSON response for "+n+": "+r.responseText)}a(null,e)}else 401!==r.status&&404!==r.status&&Kl("Got unsuccessful REST response for "+n+" Status: "+r.status),a(r.status);a=null}},r.open("GET",n,!0),r.send()})}}class Vh{constructor(){this.rootNode_=_h.EMPTY_NODE}getNode(e){return this.rootNode_.getChild(e)}updateSnapshot(e,t){this.rootNode_=this.rootNode_.updateChild(e,t)}}function qh(){return{value:null,children:new Map}}function Bh(e,t,n){var r;Mu(t)?(e.value=n,e.children.clear()):null!==e.value?e.value=e.value.updateChild(t,n):(r=Nu(t),e.children.has(r)||e.children.set(r,qh()),Bh(e.children.get(r),t=Pu(t),n))}function jh(e,n,r){var i;null!==e.value?r(n,e.value):(i=(e,t)=>{jh(t,new ku(n.toString()+"/"+e),r)},e.children.forEach((e,t)=>{i(t,e)}))}class zh{constructor(e){this.collection_=e,this.last_=null}get(){var e=this.collection_.get();const n=Object.assign({},e);return this.last_&&Yl(this.last_,(e,t)=>{n[e]=n[e]-t}),this.last_=e,n}}class $h{constructor(e,t){this.server_=t,this.statsToReport_={},this.statsListener_=new zh(e);var n=1e4+2e4*Math.random();eu(this.reportStats_.bind(this),Math.floor(n))}reportStats_(){var e=this.statsListener_.get();const n={};let r=!1;Yl(e,(e,t)=>{0<t&&V(this.statsToReport_,e)&&(n[e]=t,r=!0)}),r&&this.server_.reportStats(n),eu(this.reportStats_.bind(this),Math.floor(2*Math.random()*3e5))}}function Kh(){return{fromUser:!0,fromServer:!1,queryId:null,tagged:!1}}function Wh(){return{fromUser:!1,fromServer:!0,queryId:null,tagged:!1}}function Gh(e){return{fromUser:!1,fromServer:!0,queryId:e,tagged:!0}}(St=El=El||{})[St.OVERWRITE=0]="OVERWRITE",St[St.MERGE=1]="MERGE",St[St.ACK_USER_WRITE=2]="ACK_USER_WRITE",St[St.LISTEN_COMPLETE=3]="LISTEN_COMPLETE";class Hh{constructor(e,t,n){this.path=e,this.affectedTree=t,this.revert=n,this.type=El.ACK_USER_WRITE,this.source=Kh()}operationForChild(e){if(Mu(this.path)){if(null!=this.affectedTree.value)return f(this.affectedTree.children.isEmpty(),"affectedTree should not have overlapping affected paths."),this;var t=this.affectedTree.subtree(new ku(e));return new Hh(Au(),t,this.revert)}return f(Nu(this.path)===e,"operationForChild called for unrelated child."),new Hh(Pu(this.path),this.affectedTree,this.revert)}}class Qh{constructor(e,t){this.source=e,this.path=t,this.type=El.LISTEN_COMPLETE}operationForChild(e){return Mu(this.path)?new Qh(this.source,Au()):new Qh(this.source,Pu(this.path))}}class Jh{constructor(e,t,n){this.source=e,this.path=t,this.snap=n,this.type=El.OVERWRITE}operationForChild(e){return Mu(this.path)?new Jh(this.source,Au(),this.snap.getImmediateChild(e)):new Jh(this.source,Pu(this.path),this.snap)}}class Yh{constructor(e,t,n){this.source=e,this.path=t,this.children=n,this.type=El.MERGE}operationForChild(e){if(Mu(this.path)){const t=this.children.subtree(new ku(e));return t.isEmpty()?null:t.value?new Jh(this.source,Au(),t.value):new Yh(this.source,Au(),t)}return f(Nu(this.path)===e,"Can't get a merge for a child not on the path of the operation"),new Yh(this.source,Pu(this.path),this.children)}toString(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"}}class Xh{constructor(e,t,n){this.node_=e,this.fullyInitialized_=t,this.filtered_=n}isFullyInitialized(){return this.fullyInitialized_}isFiltered(){return this.filtered_}isCompleteForPath(e){if(Mu(e))return this.isFullyInitialized()&&!this.filtered_;var t=Nu(e);return this.isCompleteForChild(t)}isCompleteForChild(e){return this.isFullyInitialized()&&!this.filtered_||this.node_.hasChild(e)}getNode(){return this.node_}}class Zh{constructor(e){this.query_=e,this.index_=this.query_._queryParams.getIndex()}}function ed(n,e,t,r){var i=[];const s=[];return e.forEach(e=>{var t;"child_changed"===e.type&&n.index_.indexedValueChanged(e.oldSnap,e.snapshotNode)&&s.push((t=e.childName,{type:"child_moved",snapshotNode:e.snapshotNode,childName:t}))}),td(n,i,"child_removed",e,r,t),td(n,i,"child_added",e,r,t),td(n,i,"child_moved",s,r,t),td(n,i,"child_changed",e,r,t),td(n,i,"value",e,r,t),i}function td(s,a,t,e,o,c){const n=e.filter(e=>e.type===t);n.sort((e,t)=>function(e,t,n){if(null==t.childName||null==n.childName)throw u("Should only compare child_ events.");var r=new Wu(t.childName,t.snapshotNode),i=new Wu(n.childName,n.snapshotNode);return e.index_.compare(r,i)}(s,e,t)),n.forEach(t=>{const n=(e=s,i=c,"value"===(r=t).type||"child_removed"===r.type||(r.prevName=i.getPredecessorChildName(r.childName,r.snapshotNode,e.index_)),r);var e,r,i;o.forEach(e=>{e.respondsTo(t.type)&&a.push(e.createEvent(n,s.query_))})})}function nd(e,t){return{eventCache:e,serverCache:t}}function rd(e,t,n,r){return nd(new Xh(t,n,r),e.serverCache)}function id(e,t,n,r){return nd(e.eventCache,new Xh(t,n,r))}function sd(e){return e.eventCache.isFullyInitialized()?e.eventCache.getNode():null}function ad(e){return e.serverCache.isFullyInitialized()?e.serverCache.getNode():null}let od;class cd{static fromObject(e){let n=new cd(null);return Yl(e,(e,t)=>{n=n.set(new ku(e),t)}),n}constructor(e,t=(od=od||new eh(Ul),od)){this.value=e,this.children=t}isEmpty(){return null===this.value&&this.children.isEmpty()}findRootMostMatchingPathAndValue(e,t){if(null!=this.value&&t(this.value))return{path:Au(),value:this.value};if(Mu(e))return null;{var n=Nu(e);const i=this.children.get(n);if(null===i)return null;var r=i.findRootMostMatchingPathAndValue(Pu(e),t);return null==r?null:{path:Lu(new ku(n),r.path),value:r.value}}}findRootMostValueAndPath(e){return this.findRootMostMatchingPathAndValue(e,()=>!0)}subtree(e){if(Mu(e))return this;{var t=Nu(e);const n=this.children.get(t);return null!==n?n.subtree(Pu(e)):new cd(null)}}set(e,t){if(Mu(e))return new cd(t,this.children);{var n=Nu(e);const i=this.children.get(n)||new cd(null);var r=i.set(Pu(e),t),r=this.children.insert(n,r);return new cd(this.value,r)}}remove(t){if(Mu(t))return this.children.isEmpty()?new cd(null):new cd(null,this.children);{var n=Nu(t);const r=this.children.get(n);if(r){const i=r.remove(Pu(t));let e;return e=i.isEmpty()?this.children.remove(n):this.children.insert(n,i),null===this.value&&e.isEmpty()?new cd(null):new cd(this.value,e)}return this}}get(e){if(Mu(e))return this.value;{var t=Nu(e);const n=this.children.get(t);return n?n.get(Pu(e)):null}}setTree(t,n){if(Mu(t))return n;{var r=Nu(t);const i=this.children.get(r)||new cd(null),s=i.setTree(Pu(t),n);let e;return e=s.isEmpty()?this.children.remove(r):this.children.insert(r,s),new cd(this.value,e)}}fold(e){return this.fold_(Au(),e)}fold_(n,r){const i={};return this.children.inorderTraversal((e,t)=>{i[e]=t.fold_(Lu(n,e),r)}),r(n,this.value,i)}findOnPath(e,t){return this.findOnPath_(e,Au(),t)}findOnPath_(e,t,n){var r=!!this.value&&n(t,this.value);if(r)return r;if(Mu(e))return null;{r=Nu(e);const i=this.children.get(r);return i?i.findOnPath_(Pu(e),Lu(t,r),n):null}}foreachOnPath(e,t){return this.foreachOnPath_(e,Au(),t)}foreachOnPath_(e,t,n){if(Mu(e))return this;{this.value&&n(t,this.value);var r=Nu(e);const i=this.children.get(r);return i?i.foreachOnPath_(Pu(e),Lu(t,r),n):new cd(null)}}foreach(e){this.foreach_(Au(),e)}foreach_(n,r){this.children.inorderTraversal((e,t)=>{t.foreach_(Lu(n,e),r)}),this.value&&r(n,this.value)}foreachChild(n){this.children.inorderTraversal((e,t)=>{t.value&&n(e,t.value)})}}class ld{constructor(e){this.writeTree_=e}static empty(){return new ld(new cd(null))}}function ud(t,n,r){if(Mu(n))return new ld(new cd(r));var i=t.writeTree_.findRootMostValueAndPath(n);if(null!=i){var s=i.path;let e=i.value;i=Fu(s,n);return e=e.updateChild(i,r),new ld(t.writeTree_.set(s,e))}s=new cd(r),s=t.writeTree_.setTree(n,s);return new ld(s)}function hd(e,n,t){let r=e;return Yl(t,(e,t)=>{r=ud(r,Lu(n,e),t)}),r}function dd(e,t){if(Mu(t))return ld.empty();var n=e.writeTree_.setTree(t,new cd(null));return new ld(n)}function pd(e,t){return null!=fd(e,t)}function fd(e,t){var n=e.writeTree_.findRootMostValueAndPath(t);return null!=n?e.writeTree_.get(n.path).getChild(Fu(n.path,t)):null}function gd(e){const n=[],t=e.writeTree_.value;return null!=t?t.isLeafNode()||t.forEachChild(uh,(e,t)=>{n.push(new Wu(e,t))}):e.writeTree_.children.inorderTraversal((e,t)=>{null!=t.value&&n.push(new Wu(e,t.value))}),n}function md(e,t){if(Mu(t))return e;var n=fd(e,t);return null!=n?new ld(new cd(n)):new ld(e.writeTree_.subtree(t))}function vd(e){return e.writeTree_.isEmpty()}function _d(e,t){return function r(i,e,s){{if(null!=e.value)return s.updateChild(i,e.value);{let n=null;return e.children.inorderTraversal((e,t)=>{".priority"===e?(f(null!==t.value,"Priority writes must always be leaf nodes"),n=t.value):s=r(Lu(i,e),t,s)}),s=!s.getChild(i).isEmpty()&&null!==n?s.updateChild(Lu(i,".priority"),n):s}}}(Au(),e.writeTree_,t)}function yd(e,t){return Pd(t,e)}function wd(t,n){var e,r=t.allWrites.findIndex(e=>e.writeId===n);f(0<=r,"removeWrite called with nonexistent writeId.");const i=t.allWrites[r];t.allWrites.splice(r,1);let s=i.visible,a=!1,o=t.allWrites.length-1;for(;s&&0<=o;){var c=t.allWrites[o];c.visible&&(o>=r&&function(e,t){{if(e.snap)return qu(e.path,t);for(const n in e.children)if(e.children.hasOwnProperty(n)&&qu(Lu(e.path,n),t))return!0;return!1}}(c,i.path)?s=!1:qu(i.path,c.path)&&(a=!0)),o--}return!!s&&(a?((e=t).visibleWrites=Id(e.allWrites,bd,Au()),0<e.allWrites.length?e.lastWriteId=e.allWrites[e.allWrites.length-1].writeId:e.lastWriteId=-1):i.snap?t.visibleWrites=dd(t.visibleWrites,i.path):Yl(i.children,e=>{t.visibleWrites=dd(t.visibleWrites,Lu(i.path,e))}),!0)}function bd(e){return e.visible}function Id(e,t,n){let r=ld.empty();for(let s=0;s<e.length;++s){const a=e[s];if(t(a)){var i=a.path;let e;if(a.snap)qu(n,i)?(e=Fu(n,i),r=ud(r,e,a.snap)):qu(i,n)&&(e=Fu(i,n),r=ud(r,Au(),a.snap.getChild(e)));else{if(!a.children)throw u("WriteRecord should have .snap or .children");if(qu(n,i))e=Fu(n,i),r=hd(r,e,a.children);else if(qu(i,n))if(e=Fu(i,n),Mu(e))r=hd(r,Au(),a.children);else{const o=q(a.children,Nu(e));o&&(i=o.getChild(Pu(e)),r=ud(r,Au(),i))}}}}return r}function Td(e,t,n,r,i){if(r||i){var s=md(e.visibleWrites,t);if(!i&&vd(s))return n;if(i||null!=n||pd(s,Au()))return _d(Id(e.allWrites,function(e){return(e.visible||i)&&(!r||!~r.indexOf(e.writeId))&&(qu(e.path,t)||qu(t,e.path))},t),n||_h.EMPTY_NODE);return null}s=fd(e.visibleWrites,t);if(null!=s)return s;s=md(e.visibleWrites,t);return vd(s)?n:null!=n||pd(s,Au())?_d(s,n||_h.EMPTY_NODE):null}function Ed(e,t,n,r){return Td(e.writeTree,e.treePath,t,n,r)}function Cd(e,t){return function(e,t,n){let r=_h.EMPTY_NODE;const i=fd(e.visibleWrites,t);if(i)return i.isLeafNode()||i.forEachChild(uh,(e,t)=>{r=r.updateImmediateChild(e,t)}),r;if(n){const s=md(e.visibleWrites,t);return n.forEachChild(uh,(e,t)=>{var n=_d(md(s,new ku(e)),t);r=r.updateImmediateChild(e,n)}),gd(s).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}return gd(md(e.visibleWrites,t)).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}(e.writeTree,e.treePath,t)}function Sd(e,t,n,r){return function(e,t,n,r,i){f(r||i,"Either existingEventSnap or existingServerSnap must exist");var s=Lu(t,n);return pd(e.visibleWrites,s)?null:vd(s=md(e.visibleWrites,s))?i.getChild(n):_d(s,i.getChild(n))}(e.writeTree,e.treePath,t,n,r)}function kd(e,t){return n=e.writeTree,t=Lu(e.treePath,t),fd(n.visibleWrites,t);var n}function Ad(e,t,n,r,i,s){return function(e,t,n,r,i,s,a){let o;var c=md(e.visibleWrites,t),l=fd(c,Au());if(null!=l)o=l;else{if(null==n)return[];o=_d(c,n)}if(o=o.withIndex(a),o.isEmpty()||o.isLeafNode())return[];{const u=[],h=a.getCompare(),d=s?o.getReverseIteratorFrom(r,a):o.getIteratorFrom(r,a);let e=d.getNext();for(;e&&u.length<i;)0!==h(e,r)&&u.push(e),e=d.getNext();return u}}(e.writeTree,e.treePath,t,n,r,i,s)}function Nd(e,t,n){return r=e.writeTree,e=e.treePath,n=n,i=Lu(e,t=t),null!=(s=fd(r.visibleWrites,i))?s:n.isCompleteForChild(t)?_d(md(r.visibleWrites,i),n.getNode().getImmediateChild(t)):null;var r,i,s}function Rd(e,t){return Pd(Lu(e.treePath,t),e.writeTree)}function Pd(e,t){return{treePath:e,writeTree:t}}class Dd{constructor(){this.changeMap=new Map}trackChildChange(e){var t=e.type,n=e.childName;f("child_added"===t||"child_changed"===t||"child_removed"===t,"Only child changes supported for tracking"),f(".priority"!==n,"Only non-priority child changes can be tracked.");var r=this.changeMap.get(n);if(r){var i=r.type;if("child_added"===t&&"child_removed"===i)this.changeMap.set(n,Ah(n,e.snapshotNode,r.snapshotNode));else if("child_removed"===t&&"child_added"===i)this.changeMap.delete(n);else if("child_removed"===t&&"child_changed"===i)this.changeMap.set(n,kh(n,r.oldSnap));else if("child_changed"===t&&"child_added"===i)this.changeMap.set(n,Sh(n,e.snapshotNode));else{if("child_changed"!==t||"child_changed"!==i)throw u("Illegal combination of changes: "+e+" occurred after "+r);this.changeMap.set(n,Ah(n,e.snapshotNode,r.oldSnap))}}else this.changeMap.set(n,e)}getChanges(){return Array.from(this.changeMap.values())}}const xd=new class{getCompleteChild(e){return null}getChildAfterChild(e,t,n){return null}};class Od{constructor(e,t,n=null){this.writes_=e,this.viewCache_=t,this.optCompleteServerCache_=n}getCompleteChild(e){const t=this.viewCache_.eventCache;if(t.isCompleteForChild(e))return t.getNode().getImmediateChild(e);var n=null!=this.optCompleteServerCache_?new Xh(this.optCompleteServerCache_,!0,!1):this.viewCache_.serverCache;return Nd(this.writes_,e,n)}getChildAfterChild(e,t,n){var r=null!=this.optCompleteServerCache_?this.optCompleteServerCache_:ad(this.viewCache_),r=Ad(this.writes_,r,t,1,n,e);return 0===r.length?null:r[0]}}function Ld(e,t,n,r,i){const s=new Dd;let a,o;if(n.type===El.OVERWRITE){var c=n;a=c.source.fromUser?Ud(e,t,c.path,c.snap,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered()&&!Mu(c.path),Fd(e,t,c.path,c.snap,r,i,o,s))}else if(n.type===El.MERGE){c=n;a=c.source.fromUser?function(r,i,s,e,a,o,c){let l=i;return e.foreach((e,t)=>{var n=Lu(s,e);Vd(i,Nu(n))&&(l=Ud(r,l,n,t,a,o,c))}),e.foreach((e,t)=>{var n=Lu(s,e);Vd(i,Nu(n))||(l=Ud(r,l,n,t,a,o,c))}),l}(e,t,c.path,c.children,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered(),Bd(e,t,c.path,c.children,r,i,o,s))}else if(n.type===El.ACK_USER_WRITE){var l=n;a=l.revert?function(n,r,i,s,e,a){let o;{if(null!=kd(s,i))return r;{var c=new Od(s,r,e);const u=r.eventCache.getNode();let t;if(Mu(i)||".priority"===Nu(i)){let e;e=r.serverCache.isFullyInitialized()?Ed(s,ad(r)):(l=r.serverCache.getNode(),f(l instanceof _h,"serverChildren would be complete if leaf node"),Cd(s,l)),e=e,t=n.filter.updateFullNode(u,e,a)}else{var l=Nu(i);let e=Nd(s,l,r.serverCache);null==e&&r.serverCache.isCompleteForChild(l)&&(e=u.getImmediateChild(l)),t=null!=e?n.filter.updateChild(u,l,e,Pu(i),c,a):r.eventCache.getNode().hasChild(l)?n.filter.updateChild(u,l,_h.EMPTY_NODE,Pu(i),c,a):u,t.isEmpty()&&r.serverCache.isFullyInitialized()&&(o=Ed(s,ad(r)),o.isLeafNode()&&(t=n.filter.updateFullNode(t,o,a)))}return o=r.serverCache.isFullyInitialized()||null!=kd(s,Au()),rd(r,t,o,n.filter.filtersNodes())}}}(e,t,l.path,r,i,s):function(e,t,i,n,s,a,o){if(null!=kd(s,i))return t;const c=t.serverCache.isFiltered(),l=t.serverCache;{if(null!=n.value){if(Mu(i)&&l.isFullyInitialized()||l.isCompleteForPath(i))return Fd(e,t,i,l.getNode().getChild(i),s,a,c,o);if(Mu(i)){let n=new cd(null);return l.getNode().forEachChild(Ju,(e,t)=>{n=n.set(new ku(e),t)}),Bd(e,t,i,n,s,a,c,o)}return t}{let r=new cd(null);return n.foreach((e,t)=>{var n=Lu(i,e);l.isCompleteForPath(n)&&(r=r.set(e,l.getNode().getChild(n)))}),Bd(e,t,i,r,s,a,c,o)}}}(e,t,l.path,l.affectedTree,r,i,s)}else{if(n.type!==El.LISTEN_COMPLETE)throw u("Unknown operation type: "+n.type);a=function(e,t,n,r,i){const s=t.serverCache,a=id(t,s.getNode(),s.isFullyInitialized()||Mu(n),s.isFiltered());return Md(e,a,n,r,xd,i)}(e,t,n.path,r,s)}l=s.getChanges();return function(e,t,n){const r=t.eventCache;if(r.isFullyInitialized()){var i=r.getNode().isLeafNode()||r.getNode().isEmpty();const s=sd(e);(0<n.length||!e.eventCache.isFullyInitialized()||i&&!r.getNode().equals(s)||!r.getNode().getPriority().equals(s.getPriority()))&&n.push(Ch(sd(t)))}}(t,a,l),{viewCache:a,changes:l}}function Md(r,i,s,a,o,c){const l=i.eventCache;if(null!=kd(a,s))return i;{let t,n;if(Mu(s)){var e;f(i.serverCache.isFullyInitialized(),"If change path is empty, we must have complete server data"),t=i.serverCache.isFiltered()?(e=Cd(a,(e=ad(i))instanceof _h?e:_h.EMPTY_NODE),r.filter.updateFullNode(i.eventCache.getNode(),e,c)):(u=Ed(a,ad(i)),r.filter.updateFullNode(i.eventCache.getNode(),u,c))}else{var u=Nu(s);if(".priority"===u){f(1===Ru(s),"Can't have a priority with additional path components");var h=l.getNode();n=i.serverCache.getNode();var d=Sd(a,s,h,n);t=null!=d?r.filter.updatePriority(h,d):l.getNode()}else{h=Pu(s);let e;e=l.isCompleteForChild(u)?(n=i.serverCache.getNode(),null!=(d=Sd(a,s,l.getNode(),n))?l.getNode().getImmediateChild(u).updateChild(h,d):l.getNode().getImmediateChild(u)):Nd(a,u,i.serverCache),t=null!=e?r.filter.updateChild(l.getNode(),u,e,h,o,c):l.getNode()}}return rd(i,t,l.isFullyInitialized()||Mu(s),r.filter.filtersNodes())}}function Fd(e,t,n,r,i,s,a,o){const c=t.serverCache;let l;const u=a?e.filter:e.filter.getIndexedFilter();if(Mu(n))l=u.updateFullNode(c.getNode(),r,null);else if(u.filtersNodes()&&!c.isFiltered()){var h=c.getNode().updateChild(n,r);l=u.updateFullNode(c.getNode(),h,null)}else{var d=Nu(n);if(!c.isCompleteForPath(n)&&1<Ru(n))return t;var p=Pu(n);const f=c.getNode().getImmediateChild(d);h=f.updateChild(p,r);l=".priority"===d?u.updatePriority(c.getNode(),h):u.updateChild(c.getNode(),d,h,p,xd,null)}p=id(t,l,c.isFullyInitialized()||Mu(n),u.filtersNodes());return Md(e,p,n,i,new Od(i,p,s),o)}function Ud(t,n,r,i,e,s,a){const o=n.eventCache;let c,l;const u=new Od(e,n,s);if(Mu(r))l=t.filter.updateFullNode(n.eventCache.getNode(),i,a),c=rd(n,l,!0,t.filter.filtersNodes());else{var h=Nu(r);if(".priority"===h)l=t.filter.updatePriority(n.eventCache.getNode(),i),c=rd(n,l,o.isFullyInitialized(),o.isFiltered());else{var d=Pu(r);const p=o.getNode().getImmediateChild(h);let e;if(Mu(d))e=i;else{const f=u.getCompleteChild(h);e=null!=f?".priority"===Du(d)&&f.getChild(Ou(d)).isEmpty()?f:f.updateChild(d,i):_h.EMPTY_NODE}c=p.equals(e)?n:rd(n,t.filter.updateChild(o.getNode(),h,e,d,u,a),o.isFullyInitialized(),t.filter.filtersNodes())}}return c}function Vd(e,t){return e.eventCache.isCompleteForChild(t)}function qd(e,n,t){return t.foreach((e,t)=>{n=n.updateChild(e,t)}),n}function Bd(r,i,e,t,s,a,o,c){if(i.serverCache.getNode().isEmpty()&&!i.serverCache.isFullyInitialized())return i;let l=i,n;n=Mu(e)?t:new cd(null).setTree(e,t);const u=i.serverCache.getNode();return n.children.inorderTraversal((e,t)=>{var n;u.hasChild(e)&&(n=qd(0,i.serverCache.getNode().getImmediateChild(e),t),l=Fd(r,l,new ku(e),n,s,a,o,c))}),n.children.inorderTraversal((e,t)=>{var n=!i.serverCache.isCompleteForChild(e)&&null===t.value;u.hasChild(e)||n||(n=qd(0,i.serverCache.getNode().getImmediateChild(e),t),l=Fd(r,l,new ku(e),n,s,a,o,c))}),l}class jd{constructor(e,t){this.query_=e,this.eventRegistrations_=[];const n=this.query_._queryParams,r=new Nh(n.getIndex()),i=(e=n).loadsAllData()?new Nh(e.getIndex()):new(e.hasLimit()?Ph:Rh)(e);this.processor_={filter:i};const s=t.serverCache,a=t.eventCache;var o=r.updateFullNode(_h.EMPTY_NODE,s.getNode(),null),c=i.updateFullNode(_h.EMPTY_NODE,a.getNode(),null),o=new Xh(o,s.isFullyInitialized(),r.filtersNodes()),c=new Xh(c,a.isFullyInitialized(),i.filtersNodes());this.viewCache_=nd(c,o),this.eventGenerator_=new Zh(this.query_)}get query(){return this.query_}}function zd(e){return 0===e.eventRegistrations_.length}function $d(n,r,i){const s=[];if(i){f(null==r,"A cancel should cancel all event registrations.");const a=n.query._path;n.eventRegistrations_.forEach(e=>{var t=e.createCancelEvent(i,a);t&&s.push(t)})}if(r){let e=[];for(let t=0;t<n.eventRegistrations_.length;++t){const o=n.eventRegistrations_[t];if(o.matches(r)){if(r.hasAnyCallback()){e=e.concat(n.eventRegistrations_.slice(t+1));break}}else e.push(o)}n.eventRegistrations_=e}else n.eventRegistrations_=[];return s}function Kd(e,t,n,r){t.type===El.MERGE&&null!==t.source.queryId&&(f(ad(e.viewCache_),"We should always have a full cache before handling merges"),f(sd(e.viewCache_),"Missing event cache, even though we have a server cache"));const i=e.viewCache_,s=Ld(e.processor_,i,t,n,r);return n=e.processor_,r=s.viewCache,f(r.eventCache.getNode().isIndexed(n.filter.getIndex()),"Event snap not indexed"),f(r.serverCache.getNode().isIndexed(n.filter.getIndex()),"Server snap not indexed"),f(s.viewCache.serverCache.isFullyInitialized()||!i.serverCache.isFullyInitialized(),"Once a server snap is complete, it should never go back"),e.viewCache_=s.viewCache,Wd(e,s.changes,s.viewCache.eventCache.getNode(),null)}function Wd(e,t,n,r){var i=r?[r]:e.eventRegistrations_;return ed(e.eventGenerator_,t,n,i)}let Gd;class Hd{constructor(){this.views=new Map}}function Qd(t,n,r,i){var e=n.source.queryId;if(null!==e){e=t.views.get(e);return f(null!=e,"SyncTree gave us an op for an invalid query."),Kd(e,n,r,i)}{let e=[];for(const s of t.views.values())e=e.concat(Kd(s,n,r,i));return e}}function Jd(e,n,r,i,s){var a=n._queryIdentifier,a=e.views.get(a);if(a)return a;{let e=Ed(r,s?i:null),t=!1;t=!!e||(e=i instanceof _h?Cd(r,i):_h.EMPTY_NODE,!1);a=nd(new Xh(e,t,!1),new Xh(i,s,!1));return new jd(n,a)}}function Yd(e,t,n,r,i,s){var a=Jd(e,t,r,i,s);return e.views.has(t._queryIdentifier)||e.views.set(t._queryIdentifier,a),a.eventRegistrations_.push(n),function(e,t){const n=e.viewCache_.eventCache,r=[];if(!n.getNode().isLeafNode()){const i=n.getNode();i.forEachChild(uh,(e,t)=>{r.push(Sh(e,t))})}return n.isFullyInitialized()&&r.push(Ch(n.getNode())),Wd(e,r,n.getNode(),t)}(a,n)}function Xd(e,t,n,r){var i=t._queryIdentifier;const s=[];let a=[];var o=rp(e);if("default"===i)for(var[c,l]of e.views.entries())a=a.concat($d(l,n,r)),zd(l)&&(e.views.delete(c),l.query._queryParams.loadsAllData()||s.push(l.query));else{const u=e.views.get(i);u&&(a=a.concat($d(u,n,r)),zd(u)&&(e.views.delete(i),u.query._queryParams.loadsAllData()||s.push(u.query)))}return o&&!rp(e)&&s.push((f(Gd,"Reference.ts has not been loaded"),new Gd(t._repo,t._path))),{removed:s,events:a}}function Zd(e){const t=[];for(const n of e.views.values())n.query._queryParams.loadsAllData()||t.push(n);return t}function ep(e,t){let n=null;for(const r of e.views.values())n=n||function(e,t){const n=ad(e.viewCache_);return n&&(e.query._queryParams.loadsAllData()||!Mu(t)&&!n.getImmediateChild(Nu(t)).isEmpty())?n.getChild(t):null}(r,t);return n}function tp(e,t){const n=t._queryParams;if(n.loadsAllData())return ip(e);var r=t._queryIdentifier;return e.views.get(r)}function np(e,t){return null!=tp(e,t)}function rp(e){return null!=ip(e)}function ip(e){for(const t of e.views.values())if(t.query._queryParams.loadsAllData())return t;return null}let sp;let ap=1;class op{constructor(e){this.listenProvider_=e,this.syncPointTree_=new cd(null),this.pendingWriteTree_={visibleWrites:ld.empty(),allWrites:[],lastWriteId:-1},this.tagToQueryMap=new Map,this.queryToTagMap=new Map}}function cp(e,t,n,r,i){var s,a,o,c;return s=e.pendingWriteTree_,a=t,o=n,c=r,r=i,f(c>s.lastWriteId,"Stacking an older write on top of newer ones"),s.allWrites.push({path:a,snap:o,writeId:c,visible:r=void 0===r?!0:r}),r&&(s.visibleWrites=ud(s.visibleWrites,a,o)),s.lastWriteId=c,i?vp(e,new Jh(Kh(),t,n)):[]}function lp(e,t,n,r){var i,s,a;i=e.pendingWriteTree_,s=t,a=n,r=r,f(r>i.lastWriteId,"Stacking an older merge on top of newer ones"),i.allWrites.push({path:s,children:a,writeId:r,visible:!0}),i.visibleWrites=hd(i.visibleWrites,s,a),i.lastWriteId=r;var o=cd.fromObject(n);return vp(e,new Yh(Kh(),t,o))}function up(e,t,n=!1){var r=function(e,t){for(let r=0;r<e.allWrites.length;r++){var n=e.allWrites[r];if(n.writeId===t)return n}return null}(e.pendingWriteTree_,t);if(wd(e.pendingWriteTree_,t)){let t=new cd(null);return null!=r.snap?t=t.set(Au(),!0):Yl(r.children,e=>{t=t.set(new ku(e),!0)}),vp(e,new Hh(r.path,t,n))}return[]}function hp(e,t,n){return vp(e,new Jh(Wh(),t,n))}function dp(n,e,t,r,i=!1){var s=e._path,a=n.syncPointTree_.get(s);let o=[];if(a&&("default"===e._queryIdentifier||np(a,e))){var c=Xd(a,e,t,r);0===a.views.size&&(n.syncPointTree_=n.syncPointTree_.remove(s));const d=c.removed;if(o=c.events,!i){a=-1!==d.findIndex(e=>e._queryParams.loadsAllData()),c=n.syncPointTree_.findOnPath(s,(e,t)=>rp(t));if(a&&!c){const p=n.syncPointTree_.subtree(s);if(!p.isEmpty()){var l=p.fold((e,t,r)=>{if(t&&rp(t))return[ip(t)];{let n=[];return t&&(n=Zd(t)),Yl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<l.length;++e){var u=l[e],h=u.query,u=yp(n,u);n.listenProvider_.startListening(Cp(h),wp(n,h),u.hashFn,u.onComplete)}}}!c&&0<d.length&&!r&&(a?n.listenProvider_.stopListening(Cp(e),null):d.forEach(e=>{var t=n.queryToTagMap.get(bp(e));n.listenProvider_.stopListening(Cp(e),t)}))}!function(e,t){for(let i=0;i<t.length;++i){const s=t[i];var n,r;s._queryParams.loadsAllData()||(n=bp(s),r=e.queryToTagMap.get(n),e.queryToTagMap.delete(n),e.tagToQueryMap.delete(r))}}(n,d)}return o}function pp(e,t,n,r){var i=Ip(e,r);if(null==i)return[];var s=Tp(i),a=s.path,i=s.queryId,s=Fu(a,t);return Ep(e,a,new Jh(Gh(i),s,n))}function fp(e,t,n,r=!1){const i=t._path;let s=null,a=!1;e.syncPointTree_.foreachOnPath(i,(e,t)=>{var n=Fu(e,i);s=s||ep(t,n),a=a||rp(t)});let o=e.syncPointTree_.get(i);o?(a=a||rp(o),s=s||ep(o,Au())):(o=new Hd,e.syncPointTree_=e.syncPointTree_.set(i,o));let c;if(null!=s)c=!0;else{c=!1,s=_h.EMPTY_NODE;const p=e.syncPointTree_.subtree(i);p.foreachChild((e,t)=>{var n=ep(t,Au());n&&(s=s.updateImmediateChild(e,n))})}var l,u=np(o,t);u||t._queryParams.loadsAllData()||(h=bp(t),f(!e.queryToTagMap.has(h),"View does not exist, but we have a tag"),l=ap++,e.queryToTagMap.set(h,l),e.tagToQueryMap.set(l,h));var h=yd(e.pendingWriteTree_,i);let d=Yd(o,t,n,h,s,c);return u||a||r||(u=tp(o,t),d=d.concat(function(t,e,n){const r=e._path,i=wp(t,e),s=yp(t,n),a=t.listenProvider_.startListening(Cp(e),i,s.hashFn,s.onComplete),o=t.syncPointTree_.subtree(r);if(i)f(!rp(o.value),"If we're adding a query, it shouldn't be shadowed");else{var c=o.fold((e,t,r)=>{if(!Mu(e)&&t&&rp(t))return[ip(t).query];{let n=[];return t&&(n=n.concat(Zd(t).map(e=>e.query))),Yl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<c.length;++e){var l=c[e];t.listenProvider_.stopListening(Cp(l),wp(t,l))}}return a}(e,t,u))),d}function gp(e,r,t){var n=e.pendingWriteTree_,i=e.syncPointTree_.findOnPath(r,(e,t)=>{var n=ep(t,Fu(e,r));if(n)return n});return Td(n,r,i,t,!0)}function mp(e,t){const r=t._path;let i=null;e.syncPointTree_.foreachOnPath(r,(e,t)=>{var n=Fu(e,r);i=i||ep(t,n)});let n=e.syncPointTree_.get(r);n?i=i||ep(n,Au()):(n=new Hd,e.syncPointTree_=e.syncPointTree_.set(r,n));var s=null!=i;const a=s?new Xh(i,!0,!1):null;var o=yd(e.pendingWriteTree_,t._path);return sd(Jd(n,t,o,s?a.getNode():_h.EMPTY_NODE,s).viewCache_)}function vp(e,t){return function t(n,r,i,s){{if(Mu(n.path))return _p(n,r,i,s);{const a=r.get(Au());null==i&&null!=a&&(i=ep(a,Au()));let e=[];const o=Nu(n.path),c=n.operationForChild(o),l=r.children.get(o);if(l&&c){const u=i?i.getImmediateChild(o):null,h=Rd(s,o);e=e.concat(t(c,l,u,h))}return a&&(e=e.concat(Qd(a,n,s,i))),e}}}(t,e.syncPointTree_,null,yd(e.pendingWriteTree_,Au()))}function _p(s,e,a,o){var t=e.get(Au());null==a&&null!=t&&(a=ep(t,Au()));let c=[];return e.children.inorderTraversal((e,t)=>{var n=a?a.getImmediateChild(e):null,r=Rd(o,e),i=s.operationForChild(e);i&&(c=c.concat(_p(i,t,n,r)))}),t&&(c=c.concat(Qd(t,s,o,a))),c}function yp(i,t){const s=t.query,a=wp(i,s);return{hashFn:()=>{const e=t.viewCache_.serverCache.getNode()||_h.EMPTY_NODE;return e.hash()},onComplete:e=>{if("ok"===e)return a?function(e,t,n){if(s=Ip(e,n)){var r=Tp(s),i=r.path,s=r.queryId,r=Fu(i,t);return Ep(e,i,new Qh(Gh(s),r))}return[]}(i,s._path,a):(t=i,n=s._path,vp(t,new Qh(Wh(),n)));var t,n,r=function(e,t){let n="Unknown Error";"too_big"===e?n="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"===e?n="Client doesn't have permission to access the desired data.":"unavailable"===e&&(n="The service is unavailable");const r=new Error(e+" at "+t._path.toString()+": "+n);return r.code=e.toUpperCase(),r}(e,s);return dp(i,s,null,r)}}}function wp(e,t){var n=bp(t);return e.queryToTagMap.get(n)}function bp(e){return e._path.toString()+"$"+e._queryIdentifier}function Ip(e,t){return e.tagToQueryMap.get(t)}function Tp(e){var t=e.indexOf("$");return f(-1!==t&&t<e.length-1,"Bad queryKey."),{queryId:e.substr(t+1),path:new ku(e.substr(0,t))}}function Ep(e,t,n){var r=e.syncPointTree_.get(t);return f(r,"Missing sync point for query tag that we're tracking"),Qd(r,n,yd(e.pendingWriteTree_,t),null)}function Cp(e){return e._queryParams.loadsAllData()&&!e._queryParams.isDefault()?(f(sp,"Reference.ts has not been loaded"),new sp(e._repo,e._path)):e}class Sp{constructor(e){this.node_=e}getImmediateChild(e){var t=this.node_.getImmediateChild(e);return new Sp(t)}node(){return this.node_}}class kp{constructor(e,t){this.syncTree_=e,this.path_=t}getImmediateChild(e){var t=Lu(this.path_,e);return new kp(this.syncTree_,t)}node(){return gp(this.syncTree_,this.path_)}}function Ap(e){return(e=e||{}).timestamp=e.timestamp||(new Date).getTime(),e}function Np(e,t,n){return e&&"object"==typeof e?(f(".sv"in e,"Unexpected leaf node or priority contents"),"string"==typeof e[".sv"]?Rp(e[".sv"],t,n):"object"==typeof e[".sv"]?Pp(e[".sv"],t):void f(!1,"Unexpected server value: "+JSON.stringify(e,null,2))):e}const Rp=function(e,t,n){if("timestamp"===e)return n.timestamp;f(!1,"Unexpected server value: "+e)},Pp=function(e,t,n){e.hasOwnProperty("increment")||f(!1,"Unexpected server value: "+JSON.stringify(e,null,2));var r=e.increment;"number"!=typeof r&&f(!1,"Unexpected increment value: "+r);const i=t.node();if(f(null!==i&&void 0!==i,"Expected ChildrenNode.EMPTY_NODE for nulls"),!i.isLeafNode())return r;const s=i;var a=s.getValue();return"number"!=typeof a?r:a+r},Dp=function(e,t,n,r){return Op(t,new kp(n,e),r)},xp=function(e,t,n){return Op(e,new Sp(t),n)};function Op(e,r,i){var t=e.getPriority().val(),n=Np(t,r.getImmediateChild(".priority"),i);let s;if(e.isLeafNode()){const a=e;t=Np(a.getValue(),r,i);return t!==a.getValue()||n!==a.getPriority().val()?new oh(t,Ih(n)):e}{const o=e;return s=o,n!==o.getPriority().val()&&(s=s.updatePriority(new oh(n))),o.forEachChild(uh,(e,t)=>{var n=Op(t,r.getImmediateChild(e),i);n!==t&&(s=s.updateImmediateChild(e,n))}),s}}class Lp{constructor(e="",t=null,n={children:{},childCount:0}){this.name=e,this.parent=t,this.node=n}}function Mp(e,t){let n=t instanceof ku?t:new ku(t),r=e,i=Nu(n);for(;null!==i;){var s=q(r.node.children,i)||{children:{},childCount:0};r=new Lp(i,r,s),n=Pu(n),i=Nu(n)}return r}function Fp(e){return e.node.value}function Up(e,t){e.node.value=t,jp(e)}function Vp(e){return 0<e.node.childCount}function qp(n,r){Yl(n.node.children,(e,t)=>{r(new Lp(e,n,t))})}function Bp(e){return new ku(null===e.parent?e.name:Bp(e.parent)+"/"+e.name)}function jp(e){var t,n,r,i;null!==e.parent&&(t=e.parent,n=e.name,r=function(e){return void 0===Fp(e)&&!Vp(e)}(e=e),i=V(t.node.children,n),r&&i?(delete t.node.children[n],t.node.childCount--,jp(t)):r||i||(t.node.children[n]=e.node,t.node.childCount++,jp(t)))}function zp(e,t,n,r){r&&void 0===t||nf(Z(e,"value"),t,n)}function $p(e,t,r,n){if(!n||void 0!==t){const i=Z(e,"values");if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(i+" must be an object containing the children to replace.");const s=[];Yl(t,(e,t)=>{const n=new ku(e);if(nf(i,t,Lu(r,n)),".priority"===Du(n)&&!tf(t))throw new Error(i+"contains an invalid value for '"+n.toString()+"', which must be a valid Firebase priority (a string, finite number, server value, or null).");s.push(n)}),function(t,n){let r,i;for(r=0;r<n.length;r++){i=n[r];var s=xu(i);for(let e=0;e<s.length;e++)if((".priority"!==s[e]||e!==s.length-1)&&!Xp(s[e]))throw new Error(t+"contains an invalid key ("+s[e]+") in path "+i.toString()+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"')}n.sort(Uu);let e=null;for(r=0;r<n.length;r++){if(i=n[r],null!==e&&qu(e,i))throw new Error(t+"contains a path "+e.toString()+" that is ancestor of another path "+i.toString());e=i}}(i,s)}}function Kp(e,t,n){if(!n||void 0!==t){if(Gl(t))throw new Error(Z(e,"priority")+"is "+t.toString()+", but must be a valid Firebase priority (a string, finite number, server value, or null).");if(!tf(t))throw new Error(Z(e,"priority")+"must be a valid Firebase priority (a string, finite number, server value, or null).")}}function Wp(e,t,n,r){if(!(r&&void 0===n||Xp(n)))throw new Error(Z(e,t)+'was an invalid key = "'+n+'". Firebase keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]").')}function Gp(e,t,n,r){n=n&&n.replace(/^\/*\.info(\/|$)/,"/"),rf(e,t,n,r)}function Hp(e,t){if(".info"===Nu(t))throw new Error(e+" failed = Can't modify data under /.info/")}const Qp=/[\[\].#$\/\u0000-\u001F\u007F]/,Jp=/[\[\].#$\u0000-\u001F\u007F]/,Yp=10485760,Xp=function(e){return"string"==typeof e&&0!==e.length&&!Qp.test(e)},Zp=function(e){return"string"==typeof e&&0!==e.length&&!Jp.test(e)},ef=function(e){return e=e&&e.replace(/^\/*\.info(\/|$)/,"/"),Zp(e)},tf=function(e){return null===e||"string"==typeof e||"number"==typeof e&&!Gl(e)||e&&"object"==typeof e&&V(e,".sv")},nf=function(a,e,t){const o=t instanceof ku?new Bu(t,a):t;if(void 0===e)throw new Error(a+"contains undefined "+zu(o));if("function"==typeof e)throw new Error(a+"contains a function "+zu(o)+" with contents = "+e.toString());if(Gl(e))throw new Error(a+"contains "+e.toString()+" "+zu(o));if("string"==typeof e&&e.length>Yp/3&&re(e)>Yp)throw new Error(a+"contains a string greater than "+Yp+" utf8 bytes "+zu(o)+" ('"+e.substring(0,50)+"...')");if(e&&"object"==typeof e){let i=!1,s=!1;if(Yl(e,(e,t)=>{if(".value"===e)i=!0;else if(".priority"!==e&&".sv"!==e&&(s=!0,!Xp(e)))throw new Error(a+" contains an invalid key ("+e+") "+zu(o)+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');var n,r;n=o,e=e,0<n.parts_.length&&(n.byteLength_+=1),n.parts_.push(e),n.byteLength_+=re(e),ju(n),nf(a,t,o),t=o,r=t.parts_.pop(),t.byteLength_-=re(r),0<t.parts_.length&&--t.byteLength_}),i&&s)throw new Error(a+' contains ".value" child '+zu(o)+" in addition to actual children.")}},rf=function(e,t,n,r){if(!(r&&void 0===n||Zp(n)))throw new Error(Z(e,t)+'was an invalid path = "'+n+'". Paths must be non-empty strings and can\'t contain ".", "#", "$", "[", or "]"')},sf=function(e,t){var n=t.path.toString();if("string"!=typeof t.repoInfo.host||0===t.repoInfo.host.length||!Xp(t.repoInfo.namespace)&&"localhost"!==t.repoInfo.host.split(":")[0]||0!==n.length&&!ef(n))throw new Error(Z(e,"url")+'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".')};class af{constructor(){this.eventLists_=[],this.recursionDepth_=0}}function of(e,t){let n=null;for(let i=0;i<t.length;i++){const s=t[i];var r=s.getPath();null===n||Vu(r,n.path)||(e.eventLists_.push(n),n=null),null===n&&(n={events:[],path:r}),n.events.push(s)}n&&e.eventLists_.push(n)}function cf(e,t,n){of(e,n),uf(e,e=>Vu(e,t))}function lf(e,t,n){of(e,n),uf(e,e=>qu(e,t)||qu(t,e))}function uf(e,t){e.recursionDepth_++;let n=!0;for(let i=0;i<e.eventLists_.length;i++){var r=e.eventLists_[i];r&&(t(r.path)?(function(e){for(let n=0;n<e.events.length;n++){const r=e.events[n];var t;null!==r&&(e.events[n]=null,t=r.getEventRunner(),Ol&&zl("event: "+r.toString()),iu(t))}}(e.eventLists_[i]),e.eventLists_[i]=null):n=!1)}n&&(e.eventLists_=[]),e.recursionDepth_--}const hf="repo_interrupt",df=25;class pf{constructor(e,t,n,r){this.repoInfo_=e,this.forceRestClient_=t,this.authTokenProvider_=n,this.appCheckProvider_=r,this.dataUpdateCount=0,this.statsListener_=null,this.eventQueue_=new af,this.nextWriteId_=1,this.interceptServerDataCallback_=null,this.onDisconnect_=qh(),this.transactionQueueTree_=new Lp,this.persistentConnection_=null,this.key=this.repoInfo_.toURLString()}toString(){return(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host}}function ff(a,e,t){if(a.stats_=mu(a.repoInfo_),a.forceRestClient_||function(){const e="object"==typeof window&&window.navigator&&window.navigator.userAgent||"";return 0<=e.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i)}())a.server_=new Uh(a.repoInfo_,(e,t,n,r)=>{vf(a,e,t,n,r)},a.authTokenProvider_,a.appCheckProvider_),setTimeout(()=>_f(a,!0),0);else{if(null!=t){if("object"!=typeof t)throw new Error("Only objects are supported for option databaseAuthVariableOverride");try{F(t)}catch(e){throw new Error("Invalid authOverride provided: "+e)}}a.persistentConnection_=new Ku(a.repoInfo_,e,(e,t,n,r)=>{vf(a,e,t,n,r)},e=>{_f(a,e)},e=>{var n;n=a,Yl(e,(e,t)=>{yf(n,e,t)})},a.authTokenProvider_,a.appCheckProvider_,t),a.server_=a.persistentConnection_}var n;a.authTokenProvider_.addTokenChangeListener(e=>{a.server_.refreshAuthToken(e)}),a.appCheckProvider_.addTokenChangeListener(e=>{a.server_.refreshAppCheckToken(e.token)}),a.statsReporter_=(e=a.repoInfo_,t=()=>new $h(a.stats_,a.server_),n=e.toString(),gu[n]||(gu[n]=t()),gu[n]),a.infoData_=new Vh,a.infoSyncTree_=new op({startListening:(e,t,n,r)=>{let i=[];const s=a.infoData_.getNode(e._path);return s.isEmpty()||(i=hp(a.infoSyncTree_,e._path,s),setTimeout(()=>{r("ok")},0)),i},stopListening:()=>{}}),yf(a,"connected",!1),a.serverSyncTree_=new op({startListening:(r,e,t,i)=>(a.server_.listen(r,t,e,(e,t)=>{var n=i(e,t);lf(a.eventQueue_,r._path,n)}),[]),stopListening:(e,t)=>{a.server_.unlisten(e,t)}})}function gf(e){const t=e.infoData_.getNode(new ku(".info/serverTimeOffset"));var n=t.val()||0;return(new Date).getTime()+n}function mf(e){return Ap({timestamp:gf(e)})}function vf(e,t,n,r,i){e.dataUpdateCount++;var s,a,o=new ku(t);n=e.interceptServerDataCallback_?e.interceptServerDataCallback_(t,n):n;let c=[];c=i?r?(s=j(n,e=>Ih(e)),function(e,t,n,r){if(o=Ip(e,r)){var i=Tp(o),s=i.path,a=i.queryId,o=Fu(s,t),i=cd.fromObject(n);return Ep(e,s,new Yh(Gh(a),o,i))}return[]}(e.serverSyncTree_,o,s,i)):(s=Ih(n),pp(e.serverSyncTree_,o,s,i)):r?(a=j(n,e=>Ih(e)),t=e.serverSyncTree_,i=o,r=a,a=cd.fromObject(r),vp(t,new Yh(Wh(),i,a))):(a=Ih(n),hp(e.serverSyncTree_,o,a));let l=o;0<c.length&&(l=Rf(e,o)),lf(e.eventQueue_,l,c)}function _f(e,t){yf(e,"connected",t),!1===t&&function(r){Sf(r,"onDisconnectEvents");const i=mf(r),s=qh();jh(r.onDisconnect_,Au(),(e,t)=>{var n=Dp(e,t,r.serverSyncTree_,i);Bh(s,e,n)});let a=[];jh(s,Au(),(e,t)=>{a=a.concat(hp(r.serverSyncTree_,e,t));var n=Of(r,e);Rf(r,n)}),r.onDisconnect_=qh(),lf(r.eventQueue_,Au(),a)}(e)}function yf(e,t,n){var r=new ku("/.info/"+t),i=Ih(n);e.infoData_.updateSnapshot(r,i);i=hp(e.infoSyncTree_,r,i);lf(e.eventQueue_,r,i)}function wf(e){return e.nextWriteId_++}function bf(r,i,e,t,s){Sf(r,"set",{path:i.toString(),value:e,priority:t});var n=mf(r);const a=Ih(e,t);var o=gp(r.serverSyncTree_,i),n=xp(a,o,n);const c=wf(r);n=cp(r.serverSyncTree_,i,n,c,!0);of(r.eventQueue_,n),r.server_.put(i.toString(),a.val(!0),(e,t)=>{var n="ok"===e;n||Kl("set at "+i+" failed: "+e);n=up(r.serverSyncTree_,c,!n);lf(r.eventQueue_,i,n),kf(0,s,e,t)});n=Of(r,i);Rf(r,n),lf(r.eventQueue_,n,[])}function If(n,r,i){n.server_.onDisconnectCancel(r.toString(),(e,t)=>{"ok"===e&&!function e(n,t){if(Mu(t))return n.value=null,n.children.clear(),!0;if(null!==n.value){if(n.value.isLeafNode())return!1;{const i=n.value;return n.value=null,i.forEachChild(uh,(e,t)=>{Bh(n,new ku(e),t)}),e(n,t)}}if(0<n.children.size){var r=Nu(t);return t=Pu(t),n.children.has(r)&&e(n.children.get(r),t)&&n.children.delete(r),0===n.children.size}return!0}(n.onDisconnect_,r),kf(0,i,e,t)})}function Tf(n,r,e,i){const s=Ih(e);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&Bh(n.onDisconnect_,r,s),kf(0,i,e,t)})}function Ef(e,t,n){let r;r=".info"===Nu(t._path)?dp(e.infoSyncTree_,t,n):dp(e.serverSyncTree_,t,n),cf(e.eventQueue_,t._path,r)}function Cf(e){e.persistentConnection_&&e.persistentConnection_.interrupt(hf)}function Sf(e,...t){let n="";e.persistentConnection_&&(n=e.persistentConnection_.id+":"),zl(n,...t)}function kf(e,r,i,s){r&&iu(()=>{if("ok"===i)r(null);else{var t=(i||"error").toUpperCase();let e=t;s&&(e+=": "+s);const n=new Error(e);n.code=t,r(n)}})}function Af(e,t,n){return gp(e.serverSyncTree_,t,n)||_h.EMPTY_NODE}function Nf(t,e=t.transactionQueueTree_){if(e||xf(t,e),Fp(e)){const n=Df(t,e);f(0<n.length,"Sending zero length transaction queue"),n.every(e=>0===e.status)&&function(i,s,a){const e=a.map(e=>e.currentWriteId),t=Af(i,s,e);let n=t;var r=t.hash();for(let u=0;u<a.length;u++){const h=a[u];f(0===h.status,"tryToSendTransactionQueue_: items in queue should all be run."),h.status=1,h.retryCount++;var o=Fu(s,h.path);n=n.updateChild(o,h.currentOutputSnapshotRaw)}const c=n.val(!0),l=s;i.server_.put(l.toString(),c,t=>{Sf(i,"transaction put response",{path:l.toString(),status:t});let n=[];if("ok"===t){const r=[];for(let e=0;e<a.length;e++)a[e].status=2,n=n.concat(up(i.serverSyncTree_,a[e].currentWriteId)),a[e].onComplete&&r.push(()=>a[e].onComplete(null,!0,a[e].currentOutputSnapshotResolved)),a[e].unwatcher();xf(i,Mp(i.transactionQueueTree_,s)),Nf(i,i.transactionQueueTree_),lf(i.eventQueue_,s,n);for(let t=0;t<r.length;t++)iu(r[t])}else{if("datastale"===t)for(let e=0;e<a.length;e++)3===a[e].status?a[e].status=4:a[e].status=0;else{Kl("transaction at "+l.toString()+" failed: "+t);for(let e=0;e<a.length;e++)a[e].status=4,a[e].abortReason=t}Rf(i,s)}},r)}(t,Bp(e),n)}else Vp(e)&&qp(e,e=>{Nf(t,e)})}function Rf(e,t){var n=Pf(e,t),r=Bp(n);return function(i,s,a){if(0!==s.length){const l=[];let n=[];const t=s.filter(e=>0===e.status),u=t.map(e=>e.currentWriteId);for(let r=0;r<s.length;r++){const h=s[r];var o=Fu(a,h.path);let e=!1,t;if(f(null!==o,"rerunTransactionsUnderNode_: relativePath should not be null."),4===h.status)e=!0,t=h.abortReason,n=n.concat(up(i.serverSyncTree_,h.currentWriteId,!0));else if(0===h.status)if(h.retryCount>=df)e=!0,t="maxretry",n=n.concat(up(i.serverSyncTree_,h.currentWriteId,!0));else{const d=Af(i,h.path,u);h.currentInputSnapshot=d;var c=s[r].update(d.val());if(void 0!==c){nf("transaction failed: Data returned ",c,h.path);let e=Ih(c);"object"==typeof c&&null!=c&&V(c,".priority")||(e=e.updatePriority(d.getPriority()));o=h.currentWriteId,c=mf(i),c=xp(e,d,c);h.currentOutputSnapshotRaw=e,h.currentOutputSnapshotResolved=c,h.currentWriteId=wf(i),u.splice(u.indexOf(o),1),n=n.concat(cp(i.serverSyncTree_,h.path,c,h.currentWriteId,h.applyLocally)),n=n.concat(up(i.serverSyncTree_,o,!0))}else e=!0,t="nodata",n=n.concat(up(i.serverSyncTree_,h.currentWriteId,!0))}lf(i.eventQueue_,a,n),n=[],e&&(s[r].status=2,function(e){setTimeout(e,Math.floor(0))}(s[r].unwatcher),s[r].onComplete&&("nodata"===t?l.push(()=>s[r].onComplete(null,!1,s[r].currentInputSnapshot)):l.push(()=>s[r].onComplete(new Error(t),!1,null))))}xf(i,i.transactionQueueTree_);for(let e=0;e<l.length;e++)iu(l[e]);Nf(i,i.transactionQueueTree_)}}(e,Df(e,n),r),r}function Pf(e,t){let n,r=e.transactionQueueTree_;for(n=Nu(t);null!==n&&void 0===Fp(r);)r=Mp(r,n),t=Pu(t),n=Nu(t);return r}function Df(e,t){const n=[];return function t(n,e,r){const i=Fp(e);if(i)for(let e=0;e<i.length;e++)r.push(i[e]);qp(e,e=>{t(n,e,r)})}(e,t,n),n.sort((e,t)=>e.order-t.order),n}function xf(t,n){const r=Fp(n);if(r){let e=0;for(let t=0;t<r.length;t++)2!==r[t].status&&(r[e]=r[t],e++);r.length=e,Up(n,0<r.length?r:void 0)}qp(n,e=>{xf(t,e)})}function Of(t,e){var n=Bp(Pf(t,e)),r=Mp(t.transactionQueueTree_,e);return function(e,t,n){let r=n?e:e.parent;for(;null!==r;){if(t(r))return;r=r.parent}}(r,e=>{Lf(t,e)}),Lf(t,r),function t(e,n,r,i){r&&!i&&n(e),qp(e,e=>{t(e,n,!0,i)}),r&&i&&n(e)}(r,e=>{Lf(t,e)}),n}function Lf(i,s){const a=Fp(s);if(a){const o=[];let e=[],t=-1;for(let n=0;n<a.length;n++)3===a[n].status||(1===a[n].status?(f(t===n-1,"All SENT items should be at beginning of queue."),t=n,a[n].status=3,a[n].abortReason="set"):(f(0===a[n].status,"Unexpected transaction status in abort"),a[n].unwatcher(),e=e.concat(up(i.serverSyncTree_,a[n].currentWriteId,!0)),a[n].onComplete&&o.push(a[n].onComplete.bind(null,new Error("set"),!1,null))));-1===t?Up(s,void 0):a.length=t+1,lf(i.eventQueue_,Bp(s),e);for(let r=0;r<o.length;r++)iu(o[r])}}const Mf=function(e,t){var n=Ff(e),r=n.namespace;"firebase.com"===n.domain&&$l(n.host+" is no longer supported. Please use <YOUR FIREBASE>.firebaseio.com instead"),r&&"undefined"!==r||"localhost"===n.domain||$l("Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com"),n.secure||Wl();var i="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new hu(n.host,n.secure,r,i,t,"",r!==n.subdomain),path:new ku(n.pathString)}},Ff=function(r){let i="",s="",a="",o="",c="",l=!0,u="https",h=443;if("string"==typeof r){let e=r.indexOf("//");0<=e&&(u=r.substring(0,e-1),r=r.substring(e+2));let t=r.indexOf("/");-1===t&&(t=r.length);let n=r.indexOf("?");-1===n&&(n=r.length),i=r.substring(0,Math.min(t,n)),t<n&&(o=function(e){let t="";var n=e.split("/");for(let r=0;r<n.length;r++)if(0<n[r].length){let e=n[r];try{e=decodeURIComponent(e.replace(/\+/g," "))}catch(e){}t+="/"+e}return t}(r.substring(t,n)));var d,p=function(e){const t={};for(const r of(e="?"===e.charAt(0)?e.substring(1):e).split("&")){var n;0!==r.length&&(2===(n=r.split("=")).length?t[decodeURIComponent(n[0])]=decodeURIComponent(n[1]):Kl(`Invalid query segment '${r}' in query '${e}'`))}return t}(r.substring(Math.min(r.length,n)));e=i.indexOf(":"),0<=e?(l="https"===u||"wss"===u,h=parseInt(i.substring(e+1),10)):e=i.length;const f=i.slice(0,e);"localhost"===f.toLowerCase()?s="localhost":f.split(".").length<=2?s=f:(d=i.indexOf("."),a=i.substring(0,d).toLowerCase(),s=i.substring(d+1),c=a),"ns"in p&&(c=p.ns)}return{host:i,port:h,domain:s,subdomain:a,secure:l,scheme:u,pathString:o,namespace:c}},Uf="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",Vf=function(){let s=0;const a=[];return function(e){var t=e===s;s=e;let n;const r=new Array(8);for(n=7;0<=n;n--)r[n]=Uf.charAt(e%64),e=Math.floor(e/64);f(0===e,"Cannot push at time == 0");let i=r.join("");if(t){for(n=11;0<=n&&63===a[n];n--)a[n]=0;a[n]++}else for(n=0;n<12;n++)a[n]=Math.floor(64*Math.random());for(n=0;n<12;n++)i+=Uf.charAt(a[n]);return f(20===i.length,"nextPushId: Length should be 20."),i}}();class qf{constructor(e,t,n,r){this.eventType=e,this.eventRegistration=t,this.snapshot=n,this.prevName=r}getPath(){var e=this.snapshot.ref;return("value"===this.eventType?e:e.parent)._path}getEventType(){return this.eventType}getEventRunner(){return this.eventRegistration.getEventRunner(this)}toString(){return this.getPath().toString()+":"+this.eventType+":"+F(this.snapshot.exportVal())}}class Bf{constructor(e,t,n){this.eventRegistration=e,this.error=t,this.path=n}getPath(){return this.path}getEventType(){return"cancel"}getEventRunner(){return this.eventRegistration.getEventRunner(this)}toString(){return this.path.toString()+":cancel"}}class jf{constructor(e,t){this.snapshotCallback=e,this.cancelCallback=t}onValue(e,t){this.snapshotCallback.call(null,e,t)}onCancel(e){return f(this.hasCancelCallback,"Raising a cancel event on a listener with no cancel callback"),this.cancelCallback.call(null,e)}get hasCancelCallback(){return!!this.cancelCallback}matches(e){return this.snapshotCallback===e.snapshotCallback||void 0!==this.snapshotCallback.userCallback&&this.snapshotCallback.userCallback===e.snapshotCallback.userCallback&&this.snapshotCallback.context===e.snapshotCallback.context}}class zf{constructor(e,t){this._repo=e,this._path=t}cancel(){const e=new y;return If(this._repo,this._path,e.wrapCallback(()=>{})),e.promise}remove(){Hp("OnDisconnect.remove",this._path);const e=new y;return Tf(this._repo,this._path,null,e.wrapCallback(()=>{})),e.promise}set(e){Hp("OnDisconnect.set",this._path),zp("OnDisconnect.set",e,this._path,!1);const t=new y;return Tf(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}setWithPriority(e,t){Hp("OnDisconnect.setWithPriority",this._path),zp("OnDisconnect.setWithPriority",e,this._path,!1),Kp("OnDisconnect.setWithPriority",t,!1);const n=new y;return function(n,r,e,t,i){const s=Ih(e,t);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&Bh(n.onDisconnect_,r,s),kf(0,i,e,t)})}(this._repo,this._path,e,t,n.wrapCallback(()=>{})),n.promise}update(e){Hp("OnDisconnect.update",this._path),$p("OnDisconnect.update",e,this._path,!1);const t=new y;return function(r,i,n,s){if(B(n))return zl("onDisconnect().update() called with empty data. Don't do anything."),kf(0,s,"ok",void 0);r.server_.onDisconnectMerge(i.toString(),n,(e,t)=>{"ok"===e&&Yl(n,(e,t)=>{var n=Ih(t);Bh(r.onDisconnect_,Lu(i,e),n)}),kf(0,s,e,t)})}(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}}class $f{constructor(e,t,n,r){this._repo=e,this._path=t,this._queryParams=n,this._orderByCalled=r}get key(){return Mu(this._path)?null:Du(this._path)}get ref(){return new Hf(this._repo,this._path)}get _queryIdentifier(){var e=Fh(this._queryParams),e=ql(e);return"{}"===e?"default":e}get _queryObject(){return Fh(this._queryParams)}isEqual(e){if(!((e=le(e))instanceof $f))return!1;var t=this._repo===e._repo,n=Vu(this._path,e._path),r=this._queryIdentifier===e._queryIdentifier;return t&&n&&r}toJSON(){return this.toString()}toString(){return this._repo.toString()+function(e){let t="";for(let n=e.pieceNum_;n<e.pieces_.length;n++)""!==e.pieces_[n]&&(t+="/"+encodeURIComponent(String(e.pieces_[n])));return t||"/"}(this._path)}}function Kf(e,t){if(!0===e._orderByCalled)throw new Error(t+": You can't combine multiple orderBy calls.")}function Wf(e){let t=null,n=null;if(e.hasStart()&&(t=e.getIndexStartValue()),e.hasEnd()&&(n=e.getIndexEndValue()),e.getIndex()===Ju){var r="Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().",i="Query: When ordering by key, the argument passed to startAt(), startAfter(), endAt(), endBefore(), or equalTo() must be a string.";if(e.hasStart()){if(e.getIndexStartName()!==Hl)throw new Error(r);if("string"!=typeof t)throw new Error(i)}if(e.hasEnd()){if(e.getIndexEndName()!==Ql)throw new Error(r);if("string"!=typeof n)throw new Error(i)}}else if(e.getIndex()===uh){if(null!=t&&!tf(t)||null!=n&&!tf(n))throw new Error("Query: When ordering by priority, the first argument passed to startAt(), startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value (null, a number, or a string).")}else if(f(e.getIndex()instanceof Th||e.getIndex()===Eh,"unknown index type."),null!=t&&"object"==typeof t||null!=n&&"object"==typeof n)throw new Error("Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or equalTo() cannot be an object.")}function Gf(e){if(e.hasStart()&&e.hasEnd()&&e.hasLimit()&&!e.hasAnchoredLimit())throw new Error("Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use limitToFirst() or limitToLast() instead.")}class Hf extends $f{constructor(e,t){super(e,t,new Dh,!1)}get parent(){var e=Ou(this._path);return null===e?null:new Hf(this._repo,e)}get root(){let e=this;for(;null!==e.parent;)e=e.parent;return e}}class Qf{constructor(e,t,n){this._node=e,this.ref=t,this._index=n}get priority(){return this._node.getPriority().val()}get key(){return this.ref.key}get size(){return this._node.numChildren()}child(e){var t=new ku(e),n=Xf(this.ref,e);return new Qf(this._node.getChild(t),n,uh)}exists(){return!this._node.isEmpty()}exportVal(){return this._node.val(!0)}forEach(n){if(this._node.isLeafNode())return!1;const e=this._node;return!!e.forEachChild(this._index,(e,t)=>n(new Qf(t,Xf(this.ref,e),uh)))}hasChild(e){var t=new ku(e);return!this._node.getChild(t).isEmpty()}hasChildren(){return!this._node.isLeafNode()&&!this._node.isEmpty()}toJSON(){return this.exportVal()}val(){return this._node.val()}}function Jf(e,t){return(e=le(e))._checkNotDeleted("ref"),void 0!==t?Xf(e._root,t):e._root}function Yf(e,t){(e=le(e))._checkNotDeleted("refFromURL");const n=Mf(t,e._repo.repoInfo_.nodeAdmin);sf("refFromURL",n);var r=n.repoInfo;return e._repo.repoInfo_.isCustomHost()||r.host===e._repo.repoInfo_.host||$l("refFromURL: Host name does not match the current database: (found "+r.host+" but expected "+e._repo.repoInfo_.host+")"),Jf(e,n.path.toString())}function Xf(e,t){return(null===Nu((e=le(e))._path)?Gp:rf)("child","path",t,!1),new Hf(e._repo,Lu(e._path,t))}function Zf(e,t){e=le(e),Hp("set",e._path),zp("set",t,e._path,!1);const n=new y;return bf(e._repo,e._path,t,null,n.wrapCallback(()=>{})),n.promise}function eg(e,t){$p("update",t,e._path,!1);const n=new y;return function(i,s,e,a){Sf(i,"update",{path:s.toString(),value:e});let n=!0;const r=mf(i),o={};if(Yl(e,(e,t)=>{n=!1,o[e]=Dp(Lu(s,e),Ih(t),i.serverSyncTree_,r)}),n)zl("update() called with empty data. Don't do anything."),kf(0,a,"ok",void 0);else{const c=wf(i);var t=lp(i.serverSyncTree_,s,o,c);of(i.eventQueue_,t),i.server_.merge(s.toString(),e,(e,t)=>{var n="ok"===e;n||Kl("update at "+s+" failed: "+e);var r=up(i.serverSyncTree_,c,!n),n=0<r.length?Rf(i,s):s;lf(i.eventQueue_,n,r),kf(0,a,e,t)}),Yl(e,e=>{var t=Of(i,Lu(s,e));Rf(i,t)}),lf(i.eventQueue_,s,[])}}(e._repo,e._path,t,n.wrapCallback(()=>{})),n.promise}function tg(t){t=le(t);var i,s,a,e=new jf(()=>{}),e=new ng(e);return i=t._repo,s=t,a=e,(null!=(e=mp(i.serverSyncTree_,s))?Promise.resolve(e):i.server_.get(s).then(e=>{var t,n=Ih(e).withIndex(s._queryParams.getIndex());fp(i.serverSyncTree_,s,a,!0);let r;return r=s._queryParams.loadsAllData()?hp(i.serverSyncTree_,s._path,n):(t=wp(i.serverSyncTree_,s),pp(i.serverSyncTree_,s._path,n,t)),lf(i.eventQueue_,s._path,r),dp(i.serverSyncTree_,s,a,null,!0),n},e=>(Sf(i,"get for query "+F(s)+" failed: "+e),Promise.reject(new Error(e))))).then(e=>new Qf(e,new Hf(t._repo,t._path),t._queryParams.getIndex()))}class ng{constructor(e){this.callbackContext=e}respondsTo(e){return"value"===e}createEvent(e,t){var n=t._queryParams.getIndex();return new qf("value",this,new Qf(e.snapshotNode,new Hf(t._repo,t._path),n))}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,null)}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new Bf(this,e,t):null}matches(e){return e instanceof ng&&(!e.callbackContext||!this.callbackContext||e.callbackContext.matches(this.callbackContext))}hasAnyCallback(){return null!==this.callbackContext}}class rg{constructor(e,t){this.eventType=e,this.callbackContext=t}respondsTo(e){let t="children_added"===e?"child_added":e;return t="children_removed"===t?"child_removed":t,this.eventType===t}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new Bf(this,e,t):null}createEvent(e,t){f(null!=e.childName,"Child events should have a childName.");var n=Xf(new Hf(t._repo,t._path),e.childName),r=t._queryParams.getIndex();return new qf(e.type,this,new Qf(e.snapshotNode,n,r),e.prevName)}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,e.prevName)}matches(e){return e instanceof rg&&(this.eventType===e.eventType&&(!this.callbackContext||!e.callbackContext||this.callbackContext.matches(e.callbackContext)))}hasAnyCallback(){return!!this.callbackContext}}function ig(n,e,t,r,i){let s;if("object"==typeof r&&(s=void 0,i=r),"function"==typeof r&&(s=r),i&&i.onlyOnce){const c=t;var a=(e,t)=>{Ef(n._repo,n,o),c(e,t)};a.userCallback=t.userCallback,a.context=t.context,t=a}a=new jf(t,s||void 0);const o="value"===e?new ng(a):new rg(e,a);return function(e,t,n){let r;r=".info"===Nu(t._path)?fp(e.infoSyncTree_,t,n):fp(e.serverSyncTree_,t,n),cf(e.eventQueue_,t._path,r)}(n._repo,n,o),()=>Ef(n._repo,n,o)}function sg(e,t,n,r){return ig(e,"value",t,n,r)}function ag(e,t,n,r){return ig(e,"child_added",t,n,r)}function og(e,t,n,r){return ig(e,"child_changed",t,n,r)}function cg(e,t,n,r){return ig(e,"child_moved",t,n,r)}function lg(e,t,n,r){return ig(e,"child_removed",t,n,r)}function ug(e,t,n){let r=null;var i=n?new jf(n):null;"value"===t?r=new ng(i):t&&(r=new rg(t,i)),Ef(e._repo,e,r)}class hg{}class dg extends hg{constructor(e,t){super(),this._value=e,this._key=t,this.type="endAt"}_apply(e){zp("endAt",this._value,e._path,!0);var t=Oh(e._queryParams,this._value,this._key);if(Gf(t),Wf(t),e._queryParams.hasEnd())throw new Error("endAt: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new $f(e._repo,e._path,t,e._orderByCalled)}}class pg extends hg{constructor(e,t){super(),this._value=e,this._key=t,this.type="endBefore"}_apply(e){zp("endBefore",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Ju||n?Oh(e,t,n):Oh(e,t,Hl),r.endBeforeSet_=!0,r}(e._queryParams,this._value,this._key);if(Gf(t),Wf(t),e._queryParams.hasEnd())throw new Error("endBefore: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new $f(e._repo,e._path,t,e._orderByCalled)}}class fg extends hg{constructor(e,t){super(),this._value=e,this._key=t,this.type="startAt"}_apply(e){zp("startAt",this._value,e._path,!0);var t=xh(e._queryParams,this._value,this._key);if(Gf(t),Wf(t),e._queryParams.hasStart())throw new Error("startAt: Starting point was already set (by another call to startAt, startBefore or equalTo).");return new $f(e._repo,e._path,t,e._orderByCalled)}}class gg extends hg{constructor(e,t){super(),this._value=e,this._key=t,this.type="startAfter"}_apply(e){zp("startAfter",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Ju||n?xh(e,t,n):xh(e,t,Ql),r.startAfterSet_=!0,r}(e._queryParams,this._value,this._key);if(Gf(t),Wf(t),e._queryParams.hasStart())throw new Error("startAfter: Starting point was already set (by another call to startAt, startAfter, or equalTo).");return new $f(e._repo,e._path,t,e._orderByCalled)}}class mg extends hg{constructor(e){super(),this._limit=e,this.type="limitToFirst"}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToFirst: Limit was already set (by another call to limitToFirst or limitToLast).");return new $f(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="l",n}(e._queryParams,this._limit),e._orderByCalled)}}class vg extends hg{constructor(e){super(),this._limit=e,this.type="limitToLast"}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToLast: Limit was already set (by another call to limitToFirst or limitToLast).");return new $f(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="r",n}(e._queryParams,this._limit),e._orderByCalled)}}class _g extends hg{constructor(e){super(),this._path=e,this.type="orderByChild"}_apply(e){Kf(e,"orderByChild");var t=new ku(this._path);if(Mu(t))throw new Error("orderByChild: cannot pass in empty path. Use orderByValue() instead.");t=new Th(t),t=Lh(e._queryParams,t);return Wf(t),new $f(e._repo,e._path,t,!0)}}class yg extends hg{constructor(){super(...arguments),this.type="orderByKey"}_apply(e){Kf(e,"orderByKey");var t=Lh(e._queryParams,Ju);return Wf(t),new $f(e._repo,e._path,t,!0)}}class wg extends hg{constructor(){super(...arguments),this.type="orderByPriority"}_apply(e){Kf(e,"orderByPriority");var t=Lh(e._queryParams,uh);return Wf(t),new $f(e._repo,e._path,t,!0)}}class bg extends hg{constructor(){super(...arguments),this.type="orderByValue"}_apply(e){Kf(e,"orderByValue");var t=Lh(e._queryParams,Eh);return Wf(t),new $f(e._repo,e._path,t,!0)}}class Ig extends hg{constructor(e,t){super(),this._value=e,this._key=t,this.type="equalTo"}_apply(e){if(zp("equalTo",this._value,e._path,!1),e._queryParams.hasStart())throw new Error("equalTo: Starting point was already set (by another call to startAt/startAfter or equalTo).");if(e._queryParams.hasEnd())throw new Error("equalTo: Ending point was already set (by another call to endAt/endBefore or equalTo).");return new dg(this._value,this._key)._apply(new fg(this._value,this._key)._apply(e))}}function Tg(e,...t){let n=le(e);for(const r of t)n=r._apply(n);return n}Cl=Hf,f(!Gd,"__referenceConstructor has already been defined"),Gd=Cl,Sl=Hf,f(!sp,"__referenceConstructor has already been defined"),sp=Sl;const Eg="FIREBASE_DATABASE_EMULATOR_HOST",Cg={};let Sg=!1;function kg(e,t,n,r,i){let s=r||e.options.databaseURL;void 0===s&&(e.options.projectId||$l("Can't determine Firebase Database URL. Be sure to include a Project ID when calling firebase.initializeApp()."),zl("Using default host for project ",e.options.projectId),s=`${e.options.projectId}-default-rtdb.firebaseio.com`);let a=Mf(s,i),o=a.repoInfo,c,l=void 0;"undefined"!=typeof process&&process.env&&(l=process.env[Eg]),l?(c=!0,s=`http://${l}?ns=${o.namespace}`,a=Mf(s,i),o=a.repoInfo):c=!a.repoInfo.secure;var u=i&&c?new ou(ou.OWNER):new au(e.name,e.options,t);sf("Invalid Firebase Database URL",a),Mu(a.path)||$l("Database URL must point to the root of a Firebase Database (not including a child path).");u=function(e,t,n,r){let i=Cg[t.name];i||(i={},Cg[t.name]=i);var s=i[e.toURLString()];s&&$l("Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.");return s=new pf(e,Sg,n,r),i[e.toURLString()]=s}(o,e,u,new su(e.name,n));return new Ag(u,e)}class Ag{constructor(e,t){this._repoInternal=e,this.app=t,this.type="database",this._instanceStarted=!1}get _repo(){return this._instanceStarted||(ff(this._repoInternal,this.app.options.appId,this.app.options.databaseAuthVariableOverride),this._instanceStarted=!0),this._repoInternal}get _root(){return this._rootInternal||(this._rootInternal=new Hf(this._repo,Au())),this._rootInternal}_delete(){return null!==this._rootInternal&&(function(e,t){const n=Cg[t];n&&n[e.key]===e||$l(`Database ${t}(${e.repoInfo_}) has already been deleted.`),Cf(e),delete n[e.key]}(this._repo,this.app.name),this._repoInternal=null,this._rootInternal=null),Promise.resolve()}_checkNotDeleted(e){null===this._rootInternal&&$l("Cannot call "+e+" on a deleted database.")}}function Ng(){Iu.IS_TRANSPORT_INITIALIZED&&Kl("Transport has already been initialized. Please call this function before calling ref or setting up a listener")}function Rg(){Ng(),_u.forceDisallow()}function Pg(){Ng(),bu.forceDisallow(),_u.forceAllow()}function Dg(e,t,n,r={}){(e=le(e))._checkNotDeleted("useEmulator"),e._instanceStarted&&$l("Cannot call useEmulator() after instance has already been initialized.");var i,s=e._repoInternal;let a=void 0;s.repoInfo_.nodeAdmin?(r.mockUserToken&&$l('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the "firebase" package instead of "firebase-admin".'),a=new ou(ou.OWNER)):r.mockUserToken&&(i="string"==typeof r.mockUserToken?r.mockUserToken:w(r.mockUserToken,e.app.options.projectId),a=new ou(i)),r=s,e=t,t=n,n=a,r.repoInfo_=new hu(`${e}:${t}`,!1,r.repoInfo_.namespace,r.repoInfo_.webSocketOnly,r.repoInfo_.nodeAdmin,r.repoInfo_.persistenceKey,r.repoInfo_.includeNamespaceInQueryParams,!0),n&&(r.authTokenProvider_=n)}function xg(e){(e=le(e))._checkNotDeleted("goOnline"),(e=e._repo).persistentConnection_&&e.persistentConnection_.resume(hf)}function Og(e,t){jl(e,t)}const Lg={".sv":"timestamp"};class Mg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return{committed:this.committed,snapshot:this.snapshot.toJSON()}}}function Fg(i,e,t){if(i=le(i),Hp("Reference.transaction",i._path),".length"===i.key||".keys"===i.key)throw"Reference.transaction failed: "+i.key+" is a read-only object.";var n=null===(r=null==t?void 0:t.applyLocally)||void 0===r||r;const s=new y;var r=sg(i,()=>{});return function(t,n,e,r,i,s){Sf(t,"transaction on "+n);const a={path:n,update:e,onComplete:r,status:null,order:Dl(),applyLocally:s,retryCount:0,unwatcher:i,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},o=Af(t,n,void 0);a.currentInputSnapshot=o;var c=a.update(o.val());if(void 0===c)a.unwatcher(),a.currentOutputSnapshotRaw=null,a.currentOutputSnapshotResolved=null,a.onComplete&&a.onComplete(null,!1,a.currentInputSnapshot);else{nf("transaction failed: Data returned ",c,a.path),a.status=0;var l=Mp(t.transactionQueueTree_,n);const u=Fp(l)||[];u.push(a),Up(l,u);let e;if("object"==typeof c&&null!==c&&V(c,".priority"))e=q(c,".priority"),f(tf(e),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.");else{const h=gp(t.serverSyncTree_,n)||_h.EMPTY_NODE;e=h.getPriority().val()}l=mf(t),c=Ih(c,e),l=xp(c,o,l);a.currentOutputSnapshotRaw=c,a.currentOutputSnapshotResolved=l,a.currentWriteId=wf(t);l=cp(t.serverSyncTree_,n,l,a.currentWriteId,a.applyLocally);lf(t.eventQueue_,n,l),Nf(t,t.transactionQueueTree_)}}(i._repo,i._path,e,(e,t,n)=>{var r;e?s.reject(e):(r=new Qf(n,new Hf(i._repo,i._path),uh),s.resolve(new Mg(t,r)))},r,n),s.promise}Ku.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},Ku.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},yl(it),Ye(new ue("database",(e,{instanceIdentifier:t})=>{return kg(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t)},"PUBLIC").setMultipleInstances(!0)),ct(vl,"1.0.10",kl),ct(vl,"1.0.10","esm2017");function Ug(e){var t="FIREBASE WARNING: "+e;Vg.warn(t)}const Vg=new ye("@firebase/database-compat");class qg{constructor(e){this._delegate=e}cancel(t){X("OnDisconnect.cancel",0,1,arguments.length),ee("OnDisconnect.cancel","onComplete",t,!0);const e=this._delegate.cancel();return t&&e.then(()=>t(null),e=>t(e)),e}remove(t){X("OnDisconnect.remove",0,1,arguments.length),ee("OnDisconnect.remove","onComplete",t,!0);const e=this._delegate.remove();return t&&e.then(()=>t(null),e=>t(e)),e}set(e,t){X("OnDisconnect.set",1,2,arguments.length),ee("OnDisconnect.set","onComplete",t,!0);const n=this._delegate.set(e);return t&&n.then(()=>t(null),e=>t(e)),n}setWithPriority(e,t,n){X("OnDisconnect.setWithPriority",2,3,arguments.length),ee("OnDisconnect.setWithPriority","onComplete",n,!0);const r=this._delegate.setWithPriority(e,t);return n&&r.then(()=>n(null),e=>n(e)),r}update(t,n){if(X("OnDisconnect.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;e<t.length;++e)r[""+e]=t[e];t=r,Ug("Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}ee("OnDisconnect.update","onComplete",n,!0);const e=this._delegate.update(t);return n&&e.then(()=>n(null),e=>n(e)),e}}class Bg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return X("TransactionResult.toJSON",0,1,arguments.length),{committed:this.committed,snapshot:this.snapshot.toJSON()}}}class jg{constructor(e,t){this._database=e,this._delegate=t}val(){return X("DataSnapshot.val",0,0,arguments.length),this._delegate.val()}exportVal(){return X("DataSnapshot.exportVal",0,0,arguments.length),this._delegate.exportVal()}toJSON(){return X("DataSnapshot.toJSON",0,1,arguments.length),this._delegate.toJSON()}exists(){return X("DataSnapshot.exists",0,0,arguments.length),this._delegate.exists()}child(e){return X("DataSnapshot.child",0,1,arguments.length),e=String(e),rf("DataSnapshot.child","path",e,!1),new jg(this._database,this._delegate.child(e))}hasChild(e){return X("DataSnapshot.hasChild",1,1,arguments.length),rf("DataSnapshot.hasChild","path",e,!1),this._delegate.hasChild(e)}getPriority(){return X("DataSnapshot.getPriority",0,0,arguments.length),this._delegate.priority}forEach(t){return X("DataSnapshot.forEach",1,1,arguments.length),ee("DataSnapshot.forEach","action",t,!1),this._delegate.forEach(e=>t(new jg(this._database,e)))}hasChildren(){return X("DataSnapshot.hasChildren",0,0,arguments.length),this._delegate.hasChildren()}get key(){return this._delegate.key}numChildren(){return X("DataSnapshot.numChildren",0,0,arguments.length),this._delegate.size}getRef(){return X("DataSnapshot.ref",0,0,arguments.length),new $g(this._database,this._delegate.ref)}get ref(){return this.getRef()}}class zg{constructor(e,t){this.database=e,this._delegate=t}on(e,n,t,r){var i;X("Query.on",2,4,arguments.length),ee("Query.on","callback",n,!1);const s=zg.getCancelAndContextArgs_("Query.on",t,r);var a=(e,t)=>{n.call(s.context,new jg(this.database,e),t)};a.userCallback=n,a.context=s.context;var o=null===(i=s.cancel)||void 0===i?void 0:i.bind(s.context);switch(e){case"value":return sg(this._delegate,a,o),n;case"child_added":return ag(this._delegate,a,o),n;case"child_removed":return lg(this._delegate,a,o),n;case"child_changed":return og(this._delegate,a,o),n;case"child_moved":return cg(this._delegate,a,o),n;default:throw new Error(Z("Query.on","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}off(e,t,n){var r;X("Query.off",0,3,arguments.length),function(e,t,n){if(!n||void 0!==t)switch(t){case"value":case"child_added":case"child_removed":case"child_changed":case"child_moved":break;default:throw new Error(Z(e,"eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}("Query.off",e,!0),ee("Query.off","callback",t,!0),te("Query.off","context",n,!0),t?((r=()=>{}).userCallback=t,r.context=n,ug(this._delegate,e,r)):ug(this._delegate,e)}get(){return tg(this._delegate).then(e=>new jg(this.database,e))}once(e,r,t,n){X("Query.once",1,4,arguments.length),ee("Query.once","callback",r,!0);const i=zg.getCancelAndContextArgs_("Query.once",t,n),s=new y;var a=(e,t)=>{var n=new jg(this.database,e);r&&r.call(i.context,n,t),s.resolve(n)};a.userCallback=r,a.context=i.context;var o=e=>{i.cancel&&i.cancel.call(i.context,e),s.reject(e)};switch(e){case"value":sg(this._delegate,a,o,{onlyOnce:!0});break;case"child_added":ag(this._delegate,a,o,{onlyOnce:!0});break;case"child_removed":lg(this._delegate,a,o,{onlyOnce:!0});break;case"child_changed":og(this._delegate,a,o,{onlyOnce:!0});break;case"child_moved":cg(this._delegate,a,o,{onlyOnce:!0});break;default:throw new Error(Z("Query.once","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}return s.promise}limitToFirst(e){return X("Query.limitToFirst",1,1,arguments.length),new zg(this.database,Tg(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToFirst: First argument must be a positive integer.");return new mg(e)}(e)))}limitToLast(e){return X("Query.limitToLast",1,1,arguments.length),new zg(this.database,Tg(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToLast: First argument must be a positive integer.");return new vg(e)}(e)))}orderByChild(e){return X("Query.orderByChild",1,1,arguments.length),new zg(this.database,Tg(this._delegate,function(e){if("$key"===e)throw new Error('orderByChild: "$key" is invalid. Use orderByKey() instead.');if("$priority"===e)throw new Error('orderByChild: "$priority" is invalid. Use orderByPriority() instead.');if("$value"===e)throw new Error('orderByChild: "$value" is invalid. Use orderByValue() instead.');return rf("orderByChild","path",e,!1),new _g(e)}(e)))}orderByKey(){return X("Query.orderByKey",0,0,arguments.length),new zg(this.database,Tg(this._delegate,new yg))}orderByPriority(){return X("Query.orderByPriority",0,0,arguments.length),new zg(this.database,Tg(this._delegate,new wg))}orderByValue(){return X("Query.orderByValue",0,0,arguments.length),new zg(this.database,Tg(this._delegate,new bg))}startAt(e=null,t){return X("Query.startAt",0,2,arguments.length),new zg(this.database,Tg(this._delegate,([e=null,t]=[e,t],Wp("startAt","key",t,!0),new fg(e,t))))}startAfter(e=null,t){return X("Query.startAfter",0,2,arguments.length),new zg(this.database,Tg(this._delegate,(e=e,t=t,Wp("startAfter","key",t,!0),new gg(e,t))))}endAt(e=null,t){return X("Query.endAt",0,2,arguments.length),new zg(this.database,Tg(this._delegate,(e=e,t=t,Wp("endAt","key",t,!0),new dg(e,t))))}endBefore(e=null,t){return X("Query.endBefore",0,2,arguments.length),new zg(this.database,Tg(this._delegate,(e=e,t=t,Wp("endBefore","key",t,!0),new pg(e,t))))}equalTo(e,t){return X("Query.equalTo",1,2,arguments.length),new zg(this.database,Tg(this._delegate,(e=e,t=t,Wp("equalTo","key",t,!0),new Ig(e,t))))}toString(){return X("Query.toString",0,0,arguments.length),this._delegate.toString()}toJSON(){return X("Query.toJSON",0,1,arguments.length),this._delegate.toJSON()}isEqual(e){if(X("Query.isEqual",1,1,arguments.length),e instanceof zg)return this._delegate.isEqual(e._delegate);throw new Error("Query.isEqual failed: First argument must be an instance of firebase.database.Query.")}static getCancelAndContextArgs_(e,t,n){const r={cancel:void 0,context:void 0};if(t&&n)r.cancel=t,ee(e,"cancel",r.cancel,!0),r.context=n,te(e,"context",r.context,!0);else if(t)if("object"==typeof t&&null!==t)r.context=t;else{if("function"!=typeof t)throw new Error(Z(e,"cancelOrContext")+" must either be a cancel callback or a context object.");r.cancel=t}return r}get ref(){return new $g(this.database,new Hf(this._delegate._repo,this._delegate._path))}}class $g extends zg{constructor(e,t){super(e,new $f(t._repo,t._path,new Dh,!1)),this.database=e,this._delegate=t}getKey(){return X("Reference.key",0,0,arguments.length),this._delegate.key}child(e){return X("Reference.child",1,1,arguments.length),"number"==typeof e&&(e=String(e)),new $g(this.database,Xf(this._delegate,e))}getParent(){X("Reference.parent",0,0,arguments.length);var e=this._delegate.parent;return e?new $g(this.database,e):null}getRoot(){return X("Reference.root",0,0,arguments.length),new $g(this.database,this._delegate.root)}set(e,t){X("Reference.set",1,2,arguments.length),ee("Reference.set","onComplete",t,!0);const n=Zf(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}update(t,n){if(X("Reference.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;e<t.length;++e)r[""+e]=t[e];t=r,Ug("Passing an Array to Firebase.update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}Hp("Reference.update",this._delegate._path),ee("Reference.update","onComplete",n,!0);const e=eg(this._delegate,t);return n&&e.then(()=>n(null),e=>n(e)),e}setWithPriority(e,t,n){X("Reference.setWithPriority",2,3,arguments.length),ee("Reference.setWithPriority","onComplete",n,!0);const r=function(e,t,n){if(Hp("setWithPriority",e._path),zp("setWithPriority",t,e._path,!1),Kp("setWithPriority",n,!1),".length"===e.key||".keys"===e.key)throw"setWithPriority failed: "+e.key+" is a read-only object.";const r=new y;return bf(e._repo,e._path,t,n,r.wrapCallback(()=>{})),r.promise}(this._delegate,e,t);return n&&r.then(()=>n(null),e=>n(e)),r}remove(t){X("Reference.remove",0,1,arguments.length),ee("Reference.remove","onComplete",t,!0);const e=(n=this._delegate,Hp("remove",n._path),Zf(n,null));var n;return t&&e.then(()=>t(null),e=>t(e)),e}transaction(e,t,n){X("Reference.transaction",1,3,arguments.length),ee("Reference.transaction","transactionUpdate",e,!1),ee("Reference.transaction","onComplete",t,!0),function(e,t,n,r){if((!r||void 0!==n)&&"boolean"!=typeof n)throw new Error(Z(e,t)+"must be a boolean.")}("Reference.transaction","applyLocally",n,!0);const r=Fg(this._delegate,e,{applyLocally:n}).then(e=>new Bg(e.committed,new jg(this.database,e.snapshot)));return t&&r.then(e=>t(null,e.committed,e.snapshot),e=>t(e,!1,null)),r}setPriority(e,t){X("Reference.setPriority",1,2,arguments.length),ee("Reference.setPriority","onComplete",t,!0);const n=function(e,t){e=le(e),Hp("setPriority",e._path),Kp("setPriority",t,!1);const n=new y;return bf(e._repo,Lu(e._path,".priority"),t,null,n.wrapCallback(()=>{})),n.promise}(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}push(e,t){X("Reference.push",0,2,arguments.length),ee("Reference.push","onComplete",t,!0);const n=function(e,t){e=le(e),Hp("push",e._path),zp("push",t,e._path,!0);var n=gf(e._repo),n=Vf(n);const r=Xf(e,n),i=Xf(e,n);let s;return s=null!=t?Zf(i,t).then(()=>i):Promise.resolve(i),r.then=s.then.bind(s),r.catch=s.then.bind(s,void 0),r}(this._delegate,e),r=n.then(e=>new $g(this.database,e));t&&r.then(()=>t(null),e=>t(e));const i=new $g(this.database,n);return i.then=r.then.bind(r),i.catch=r.catch.bind(r,void 0),i}onDisconnect(){return Hp("Reference.onDisconnect",this._delegate._path),new qg(new zf(this._delegate._repo,this._delegate._path))}get key(){return this.getKey()}get parent(){return this.getParent()}get root(){return this.getRoot()}}class Kg{constructor(e,t){this._delegate=e,this.app=t,this.INTERNAL={delete:()=>this._delegate._delete(),forceWebSockets:Rg,forceLongPolling:Pg}}useEmulator(e,t,n={}){Dg(this._delegate,e,t,n)}ref(e){if(X("database.ref",0,1,arguments.length),e instanceof $g){var t=Yf(this._delegate,e.toString());return new $g(this,t)}t=Jf(this._delegate,e);return new $g(this,t)}refFromURL(e){X("database.refFromURL",1,1,arguments.length);var t=Yf(this._delegate,e);return new $g(this,t)}goOffline(){var e;X("database.goOffline",0,0,arguments.length),(e=le(e=this._delegate))._checkNotDeleted("goOffline"),Cf(e._repo)}goOnline(){return X("database.goOnline",0,0,arguments.length),xg(this._delegate)}}Kg.ServerValue={TIMESTAMP:Lg,increment:e=>({".sv":{increment:e}})};var Wg,Gg=Object.freeze({__proto__:null,initStandalone:function({app:e,url:t,version:n,customAuthImpl:r,customAppCheckImpl:i,namespace:s,nodeAdmin:a=!1}){yl(n);var o=new pe("database-standalone");const c=new de("auth-internal",o);c.setComponent(new ue("auth-internal",()=>r,"PRIVATE"));let l=void 0;return i&&(l=new de("app-check-internal",o),l.setComponent(new ue("app-check-internal",()=>i,"PRIVATE"))),{instance:new Kg(kg(e,c,l,t,a),e),namespace:s}}});const Hg=Kg.ServerValue;(Wg=Nt).INTERNAL.registerComponent(new ue("database-compat",(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("database").getImmediate({identifier:t});return new Kg(r,n)},"PUBLIC").setServiceProps({Reference:$g,Query:zg,Database:Kg,DataSnapshot:jg,enableLogging:Og,INTERNAL:Gg,ServerValue:Hg}).setMultipleInstances(!0)),Wg.registerVersion("@firebase/database-compat","2.0.1");var Qg,Jg,Pt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};!(function(){var e,t,s;function n(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.B=Array(this.blockSize),this.o=this.h=0,this.s()}function r(){}function a(e,t,n){n=n||0;var r=Array(16);if("string"==typeof t)for(var i=0;i<16;++i)r[i]=t.charCodeAt(n++)|t.charCodeAt(n++)<<8|t.charCodeAt(n++)<<16|t.charCodeAt(n++)<<24;else for(i=0;i<16;++i)r[i]=t[n++]|t[n++]<<8|t[n++]<<16|t[n++]<<24;t=e.g[0],n=e.g[1];var i=e.g[2],s=e.g[3],a=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=n+((a=t+(s^n&(i^s))+r[0]+3614090360&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[1]+3905402710&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[2]+606105819&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[3]+3250441966&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[4]+4118548399&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[5]+1200080426&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[6]+2821735955&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[7]+4249261313&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[8]+1770035416&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[9]+2336552879&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[10]+4294925233&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[11]+2304563134&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[12]+1804603682&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[13]+4254626195&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[14]+2792965006&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[15]+1236535329&4294967295)<<22&4294967295|a>>>10))+((a=t+(i^s&(n^i))+r[1]+4129170786&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[6]+3225465664&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[11]+643717713&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[0]+3921069994&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[5]+3593408605&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[10]+38016083&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[15]+3634488961&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[4]+3889429448&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[9]+568446438&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[14]+3275163606&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[3]+4107603335&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[8]+1163531501&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[13]+2850285829&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[2]+4243563512&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[7]+1735328473&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[12]+2368359562&4294967295)<<20&4294967295|a>>>12))+((a=t+(n^i^s)+r[5]+4294588738&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[8]+2272392833&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[11]+1839030562&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[14]+4259657740&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[1]+2763975236&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[4]+1272893353&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[7]+4139469664&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[10]+3200236656&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[13]+681279174&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[0]+3936430074&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[3]+3572445317&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[6]+76029189&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[9]+3654602809&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[12]+3873151461&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[15]+530742520&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[2]+3299628645&4294967295)<<23&4294967295|a>>>9))+((a=t+(i^(n|~s))+r[0]+4096336452&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[7]+1126891415&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[14]+2878612391&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[5]+4237533241&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[12]+1700485571&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[3]+2399980690&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[10]+4293915773&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[1]+2240044497&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[8]+1873313359&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[15]+4264355552&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[6]+2734768916&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[13]+1309151649&4294967295)<<21&4294967295|a>>>11))+((s=(t=n+((a=t+(i^(n|~s))+r[4]+4149444226&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[11]+3174756917&4294967295)<<10&4294967295|a>>>22))^((i=s+((a=i+(t^(s|~n))+r[2]+718787259&4294967295)<<15&4294967295|a>>>17))|~t))+r[9]+3951481745&4294967295;e.g[0]=e.g[0]+t&4294967295,e.g[1]=e.g[1]+(i+(a<<21&4294967295|a>>>11))&4294967295,e.g[2]=e.g[2]+i&4294967295,e.g[3]=e.g[3]+s&4294967295}function l(e,t){this.h=t;for(var n=[],r=!0,i=e.length-1;0<=i;i--){var s=0|e[i];r&&s==t||(n[i]=s,r=!1)}this.g=n}t=n,r.prototype=(s=function(){this.blockSize=-1}).prototype,t.D=s.prototype,t.prototype=new r,(t.prototype.constructor=t).C=function(e,t,n){for(var r=Array(arguments.length-2),i=2;i<arguments.length;i++)r[i-2]=arguments[i];return s.prototype[t].apply(e,r)},n.prototype.s=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.o=this.h=0},n.prototype.u=function(e,t){for(var n=(t=void 0===t?e.length:t)-this.blockSize,r=this.B,i=this.h,s=0;s<t;){if(0==i)for(;s<=n;)a(this,e,s),s+=this.blockSize;if("string"==typeof e){for(;s<t;)if(r[i++]=e.charCodeAt(s++),i==this.blockSize){a(this,r),i=0;break}}else for(;s<t;)if(r[i++]=e[s++],i==this.blockSize){a(this,r),i=0;break}}this.h=i,this.o+=t},n.prototype.v=function(){var e=Array((this.h<56?this.blockSize:2*this.blockSize)-this.h);e[0]=128;for(var t=1;t<e.length-8;++t)e[t]=0;for(var n=8*this.o,t=e.length-8;t<e.length;++t)e[t]=255&n,n/=256;for(this.u(e),e=Array(16),t=n=0;t<4;++t)for(var r=0;r<32;r+=8)e[n++]=this.g[t]>>>r&255;return e};var i={};function o(e){return-128<=e&&e<128?(t=e,n=function(e){return new l([0|e],e<0?-1:0)},r=i,Object.prototype.hasOwnProperty.call(r,t)?r[t]:r[t]=n(t)):new l([0|e],e<0?-1:0);var t,n,r}function u(e){if(isNaN(e)||!isFinite(e))return h;if(e<0)return g(u(-e));for(var t=[],n=1,r=0;n<=e;r++)t[r]=e/n|0,n*=4294967296;return new l(t,0)}var h=o(0),c=o(1),d=o(16777216);function p(e){if(0==e.h){for(var t=0;t<e.g.length;t++)if(0!=e.g[t])return;return 1}}function f(e){return-1==e.h}function g(e){for(var t=e.g.length,n=[],r=0;r<t;r++)n[r]=~e.g[r];return new l(n,~e.h).add(c)}function m(e,t){return e.add(g(t))}function v(e,t){for(;(65535&e[t])!=e[t];)e[t+1]+=e[t]>>>16,e[t]&=65535,t++}function _(e,t){this.g=e,this.h=t}function y(e,t){if(p(t))throw Error("division by zero");if(p(e))return new _(h,h);if(f(e))return t=y(g(e),t),new _(g(t.g),g(t.h));if(f(t))return t=y(e,g(t)),new _(g(t.g),t.h);if(30<e.g.length){if(f(e)||f(t))throw Error("slowDivide_ only works with positive integers.");for(var n=c,r=t;r.l(e)<=0;)n=w(n),r=w(r);for(var i=b(n,1),s=b(r,1),r=b(r,2),n=b(n,2);!p(r);){var a=s.add(r);a.l(e)<=0&&(i=i.add(n),s=a),r=b(r,1),n=b(n,1)}return t=m(e,i.j(t)),new _(i,t)}for(i=h;0<=e.l(t);){for(n=Math.max(1,Math.floor(e.m()/t.m())),r=(r=Math.ceil(Math.log(n)/Math.LN2))<=48?1:Math.pow(2,r-48),a=(s=u(n)).j(t);f(a)||0<a.l(e);)a=(s=u(n-=r)).j(t);p(s)&&(s=c),i=i.add(s),e=m(e,a)}return new _(i,e)}function w(e){for(var t=e.g.length+1,n=[],r=0;r<t;r++)n[r]=e.i(r)<<1|e.i(r-1)>>>31;return new l(n,e.h)}function b(e,t){var n=t>>5;t%=32;for(var r=e.g.length-n,i=[],s=0;s<r;s++)i[s]=0<t?e.i(s+n)>>>t|e.i(s+n+1)<<32-t:e.i(s+n);return new l(i,e.h)}(e=l.prototype).m=function(){if(f(this))return-g(this).m();for(var e=0,t=1,n=0;n<this.g.length;n++){var r=this.i(n);e+=(0<=r?r:4294967296+r)*t,t*=4294967296}return e},e.toString=function(e){if((e=e||10)<2||36<e)throw Error("radix out of range: "+e);if(p(this))return"0";if(f(this))return"-"+g(this).toString(e);for(var t=u(Math.pow(e,6)),n=this,r="";;){var i=y(n,t).g,s=((0<(n=m(n,i.j(t))).g.length?n.g[0]:n.h)>>>0).toString(e);if(p(n=i))return s+r;for(;s.length<6;)s="0"+s;r=s+r}},e.i=function(e){return e<0?0:e<this.g.length?this.g[e]:this.h},e.l=function(e){return f(e=m(this,e))?-1:p(e)?0:1},e.abs=function(){return f(this)?g(this):this},e.add=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0,i=0;i<=t;i++){var s=r+(65535&this.i(i))+(65535&e.i(i)),a=(s>>>16)+(this.i(i)>>>16)+(e.i(i)>>>16),r=a>>>16;s&=65535,a&=65535,n[i]=a<<16|s}return new l(n,-2147483648&n[n.length-1]?-1:0)},e.j=function(e){if(p(this)||p(e))return h;if(f(this))return f(e)?g(this).j(g(e)):g(g(this).j(e));if(f(e))return g(this.j(g(e)));if(this.l(d)<0&&e.l(d)<0)return u(this.m()*e.m());for(var t=this.g.length+e.g.length,n=[],r=0;r<2*t;r++)n[r]=0;for(r=0;r<this.g.length;r++)for(var i=0;i<e.g.length;i++){var s=this.i(r)>>>16,a=65535&this.i(r),o=e.i(i)>>>16,c=65535&e.i(i);n[2*r+2*i]+=a*c,v(n,2*r+2*i),n[2*r+2*i+1]+=s*c,v(n,2*r+2*i+1),n[2*r+2*i+1]+=a*o,v(n,2*r+2*i+1),n[2*r+2*i+2]+=s*o,v(n,2*r+2*i+2)}for(r=0;r<t;r++)n[r]=n[2*r+1]<<16|n[2*r];for(r=t;r<2*t;r++)n[r]=0;return new l(n,0)},e.A=function(e){return y(this,e).h},e.and=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.i(r)&e.i(r);return new l(n,this.h&e.h)},e.or=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.i(r)|e.i(r);return new l(n,this.h|e.h)},e.xor=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.i(r)^e.i(r);return new l(n,this.h^e.h)},n.prototype.digest=n.prototype.v,n.prototype.reset=n.prototype.s,n.prototype.update=n.prototype.u,Jg=n,l.prototype.multiply=l.prototype.j,l.prototype.modulo=l.prototype.A,l.prototype.compare=l.prototype.l,l.prototype.toNumber=l.prototype.m,l.prototype.getBits=l.prototype.i,l.fromNumber=u,l.fromString=function e(t,n){if(0==t.length)throw Error("number format error: empty string");if((n=n||10)<2||36<n)throw Error("radix out of range: "+n);if("-"==t.charAt(0))return g(e(t.substring(1),n));if(0<=t.indexOf("-"))throw Error('number format error: interior "-" character');for(var r=u(Math.pow(n,8)),i=h,s=0;s<t.length;s+=8)var a=Math.min(8,t.length-s),o=parseInt(t.substring(s,s+a),n),i=a<8?(a=u(Math.pow(n,a)),i.j(a).add(u(o))):(i=i.j(r)).add(u(o));return i},Qg=l}).apply(void 0!==Pt?Pt:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});var Yg,Xg,Zg,em,tm,nm,rm,im,sm,am,om,cm="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};!(function(){var e,s="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,n){return e==Array.prototype||e==Object.prototype||(e[t]=n.value),e};var a=function(e){e=["object"==typeof globalThis&&globalThis,e,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof cm&&cm];for(var t=0;t<e.length;++t){var n=e[t];if(n&&n.Math==Math)return n}throw Error("Cannot find global object")}(this);!function(e,t){if(t)e:{var n=a;e=e.split(".");for(var r=0;r<e.length-1;r++){var i=e[r];if(!(i in n))break e;n=n[i]}(t=t(r=n[e=e[e.length-1]]))!=r&&null!=t&&s(n,e,{configurable:!0,writable:!0,value:t})}}("Array.prototype.values",function(e){return e||function(){return function(t,n){t instanceof String&&(t+="");var r=0,i=!1,e={next:function(){if(!i&&r<t.length){var e=r++;return{value:n(e,t[e]),done:!1}}return{done:i=!0,value:void 0}}};return e[Symbol.iterator]=function(){return e},e}(this,function(e,t){return t})}});var o=o||{},E=this||self;function c(e){var t=typeof e;return"array"==(t="object"!=t?t:e?Array.isArray(e)?"array":t:"null")||"object"==t&&"number"==typeof e.length}function l(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}function r(e,t,n){return e.call.apply(e.bind,arguments)}function i(t,n,e){if(!t)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(e,r),t.apply(n,e)}}return function(){return t.apply(n,arguments)}}function m(e,t,n){return(m=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?r:i).apply(null,arguments)}function u(t){var n=Array.prototype.slice.call(arguments,1);return function(){var e=n.slice();return e.push.apply(e,arguments),t.apply(this,e)}}function t(e,s){function t(){}t.prototype=s.prototype,e.aa=s.prototype,e.prototype=new t,(e.prototype.constructor=e).Qb=function(e,t,n){for(var r=Array(arguments.length-2),i=2;i<arguments.length;i++)r[i-2]=arguments[i];return s.prototype[t].apply(e,r)}}function h(t){var n=t.length;if(0<n){const r=Array(n);for(let e=0;e<n;e++)r[e]=t[e];return r}return[]}function n(t){for(let e=1;e<arguments.length;e++){var n=arguments[e];if(c(n)){var r=t.length||0,i=n.length||0;t.length=r+i;for(let e=0;e<i;e++)t[r+e]=n[e]}else t.push(n)}}function C(e){return/^[\s\xa0]*$/.test(e)}function d(){var e=E.navigator;return(e=e&&e.userAgent)?e:""}function p(e){return p[" "](e),e}p[" "]=function(){};var f=!(-1==d().indexOf("Gecko")||-1!=d().toLowerCase().indexOf("webkit")&&-1==d().indexOf("Edge")||-1!=d().indexOf("Trident")||-1!=d().indexOf("MSIE")||-1!=d().indexOf("Edge"));function g(e,t,n){for(const r in e)t.call(n,e[r],r,e)}function v(e){const t={};for(const n in e)t[n]=e[n];return t}const _="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function y(t){let n,r;for(let i=1;i<arguments.length;i++){for(n in r=arguments[i])t[n]=r[n];for(let e=0;e<_.length;e++)n=_[e],Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}}var w=new class{constructor(e,t){this.i=e,this.j=t,this.h=0,this.g=null}get(){let e;return 0<this.h?(this.h--,e=this.g,this.g=e.next,e.next=null):e=this.i(),e}}(()=>new b,e=>e.reset());class b{constructor(){this.next=this.g=this.h=null}set(e,t){this.h=e,this.g=t,this.next=null}reset(){this.next=this.g=this.h=null}}let I,T=!1,S=new class{constructor(){this.h=this.g=null}add(e,t){const n=w.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}},k=()=>{const e=E.Promise.resolve(void 0);I=()=>{e.then(A)}};var A=()=>{for(var e;e=function(){var e=S;let t=null;return e.g&&(t=e.g,e.g=e.g.next,e.g||(e.h=null),t.next=null),t}();){try{e.h.call(e.g)}catch(e){!function(e){E.setTimeout(()=>{throw e},0)}(e)}var t=w;t.j(e),t.h<100&&(t.h++,e.next=t.g,t.g=e)}T=!1};function N(){this.s=this.s,this.C=this.C}function R(e,t){this.type=e,this.g=this.target=t,this.defaultPrevented=!1}N.prototype.s=!1,N.prototype.ma=function(){this.s||(this.s=!0,this.N())},N.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()},R.prototype.h=function(){this.defaultPrevented=!0};var P=function(){if(!E.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{var n=()=>{};E.addEventListener("test",n,t),E.removeEventListener("test",n,t)}catch(e){}return e}();function D(e,t){if(R.call(this,e?e.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,e){var n=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.g=t,t=e.relatedTarget){if(f){e:{try{p(t.nodeName);var i=!0;break e}catch(e){}i=!1}i||(t=null)}}else"mouseover"==n?t=e.fromElement:"mouseout"==n&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:x[e.pointerType]||"",this.state=e.state,(this.i=e).defaultPrevented&&D.aa.h.call(this)}}t(D,R);var x={2:"touch",3:"pen",4:"mouse"};D.prototype.h=function(){D.aa.h.call(this);var e=this.i;e.preventDefault?e.preventDefault():e.returnValue=!1};var O="closure_listenable_"+(1e6*Math.random()|0),L=0;function M(e,t,n,r,i){this.listener=e,this.proxy=null,this.src=t,this.type=n,this.capture=!!r,this.ha=i,this.key=++L,this.da=this.fa=!1}function F(e){e.da=!0,e.listener=null,e.proxy=null,e.src=null,e.ha=null}function U(e){this.src=e,this.g={},this.h=0}function V(e,t){var n,r,i,s=t.type;s in e.g&&(n=e.g[s],(i=0<=(r=Array.prototype.indexOf.call(n,t,void 0)))&&Array.prototype.splice.call(n,r,1),i&&(F(t),0==e.g[s].length&&(delete e.g[s],e.h--)))}function q(e,t,n,r){for(var i=0;i<e.length;++i){var s=e[i];if(!s.da&&s.listener==t&&s.capture==!!n&&s.ha==r)return i}return-1}U.prototype.add=function(e,t,n,r,i){var s=e.toString();(e=this.g[s])||(e=this.g[s]=[],this.h++);var a=q(e,t,r,i);return-1<a?(t=e[a],n||(t.fa=!1)):((t=new M(t,this.src,s,!!r,i)).fa=n,e.push(t)),t};var B="closure_lm_"+(1e6*Math.random()|0),j={};function z(e,t,n,r,i){if(r&&r.once)return function e(t,n,r,i,s){if(Array.isArray(n)){for(var a=0;a<n.length;a++)e(t,n[a],r,i,s);return null}r=J(r);return t&&t[O]?t.L(n,r,l(i)?!!i.capture:!!i,s):$(t,n,r,!0,i,s)}(e,t,n,r,i);if(Array.isArray(t)){for(var s=0;s<t.length;s++)z(e,t[s],n,r,i);return null}return n=J(n),e&&e[O]?e.K(t,n,l(r)?!!r.capture:!!r,i):$(e,t,n,!1,r,i)}function $(e,t,n,r,i,s){if(!t)throw Error("Invalid event type");var a=l(i)?!!i.capture:!!i,o=H(e);if(o||(e[B]=o=new U(e)),(n=o.add(t,n,r,a,s)).proxy)return n;if(r=function(){const n=G;return function e(t){return n.call(e.src,e.listener,t)}}(),(n.proxy=r).src=e,r.listener=n,e.addEventListener)void 0===(i=!P?a:i)&&(i=!1),e.addEventListener(t.toString(),r,i);else if(e.attachEvent)e.attachEvent(W(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}return n}function K(e){var t,n,r;"number"!=typeof e&&e&&!e.da&&((t=e.src)&&t[O]?V(t.i,e):(n=e.type,r=e.proxy,t.removeEventListener?t.removeEventListener(n,r,e.capture):t.detachEvent?t.detachEvent(W(n),r):t.addListener&&t.removeListener&&t.removeListener(r),(n=H(t))?(V(n,e),0==n.h&&(n.src=null,t[B]=null)):F(e)))}function W(e){return e in j?j[e]:j[e]="on"+e}function G(e,t){var n,r;return e=!!e.da||(t=new D(t,this),n=e.listener,r=e.ha||e.src,e.fa&&K(e),n.call(r,t))}function H(e){return(e=e[B])instanceof U?e:null}var Q="__closure_events_fn_"+(1e9*Math.random()>>>0);function J(t){return"function"==typeof t?t:(t[Q]||(t[Q]=function(e){return t.handleEvent(e)}),t[Q])}function Y(){N.call(this),this.i=new U(this),(this.M=this).F=null}function X(e,t){var n,r=e.F;if(r)for(n=[];r;r=r.F)n.push(r);if(e=e.M,r=t.type||t,"string"==typeof t?t=new R(t,e):t instanceof R?t.target=t.target||e:(a=t,y(t=new R(r,e),a)),a=!0,n)for(var i=n.length-1;0<=i;i--)var s=t.g=n[i],a=Z(s,r,!0,t)&&a;if(a=Z(s=t.g=e,r,!0,t)&&a,a=Z(s,r,!1,t)&&a,n)for(i=0;i<n.length;i++)a=Z(s=t.g=n[i],r,!1,t)&&a}function Z(e,t,n,r){if(!(t=e.i.g[String(t)]))return!0;t=t.concat();for(var i=!0,s=0;s<t.length;++s){var a,o,c=t[s];c&&!c.da&&c.capture==n&&(a=c.listener,o=c.ha||c.src,c.fa&&V(e.i,c),i=!1!==a.call(o,r)&&i)}return i&&!r.defaultPrevented}function ee(e,t,n){if("function"==typeof e)n&&(e=m(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=m(e.handleEvent,e)}return 2147483647<Number(t)?-1:E.setTimeout(e,t||0)}t(Y,N),Y.prototype[O]=!0,Y.prototype.removeEventListener=function(e,t,n,r){!function e(t,n,r,i,s){if(Array.isArray(n))for(var a=0;a<n.length;a++)e(t,n[a],r,i,s);else i=l(i)?!!i.capture:!!i,r=J(r),t&&t[O]?(t=t.i,(n=String(n).toString())in t.g&&-1<(r=q(a=t.g[n],r,i,s))&&(F(a[r]),Array.prototype.splice.call(a,r,1),0==a.length&&(delete t.g[n],t.h--))):(t=t&&H(t))&&(n=t.g[n.toString()],(r=(t=-1)<(t=n?q(n,r,i,s):t)?n[t]:null)&&K(r))}(this,e,t,n,r)},Y.prototype.N=function(){if(Y.aa.N.call(this),this.i){var e,t=this.i;for(e in t.g){for(var n=t.g[e],r=0;r<n.length;r++)F(n[r]);delete t.g[e],t.h--}}this.F=null},Y.prototype.K=function(e,t,n,r){return this.i.add(String(e),t,!1,n,r)},Y.prototype.L=function(e,t,n,r){return this.i.add(String(e),t,!0,n,r)};class te extends N{constructor(e,t){super(),this.m=e,this.l=t,this.h=null,this.i=!1,this.g=null}j(e){this.h=arguments,this.g?this.i=!0:function e(t){t.g=ee(()=>{t.g=null,t.i&&(t.i=!1,e(t))},t.l);var n=t.h;t.h=null,t.m.apply(null,n)}(this)}N(){super.N(),this.g&&(E.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function ne(e){N.call(this),this.h=e,this.g={}}t(ne,N);var re=[];function ie(e){g(e.g,function(e,t){this.g.hasOwnProperty(t)&&K(e)},e),e.g={}}ne.prototype.N=function(){ne.aa.N.call(this),ie(this)},ne.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")};var se=E.JSON.stringify,ae=E.JSON.parse,oe=class{stringify(e){return E.JSON.stringify(e,void 0)}parse(e){return E.JSON.parse(e,void 0)}};function ce(){}function le(e){return e.h||(e.h=e.i())}function ue(){}ce.prototype.h=null;var he={OPEN:"a",kb:"b",Ja:"c",wb:"d"};function de(){R.call(this,"d")}function pe(){R.call(this,"c")}t(de,R),t(pe,R);var fe={},ge=null;function me(){return ge=ge||new Y}function ve(e){R.call(this,fe.La,e)}function _e(){var e=me();X(e,new ve(e))}function ye(e,t){R.call(this,fe.STAT_EVENT,e),this.stat=t}function we(e){var t=me();X(t,new ye(t,e))}function be(e,t){R.call(this,fe.Ma,e),this.size=t}function Ie(e,t){if("function"!=typeof e)throw Error("Fn must not be null and must be a function");return E.setTimeout(function(){e()},t)}function Te(){this.g=!0}function Ee(e,t,n,r){e.info(function(){return"XMLHTTP TEXT ("+t+"): "+function(e,t){if(!e.g)return t;if(!t)return null;try{var n=JSON.parse(t);if(n)for(e=0;e<n.length;e++)if(Array.isArray(n[e])){var r=n[e];if(!(r.length<2)){var i=r[1];if(Array.isArray(i)&&!(i.length<1)){var s=i[0];if("noop"!=s&&"stop"!=s&&"close"!=s)for(var a=1;a<i.length;a++)i[a]=""}}}return se(n)}catch(e){return t}}(e,n)+(r?" "+r:"")})}fe.La="serverreachability",t(ve,R),fe.STAT_EVENT="statevent",t(ye,R),fe.Ma="timingevent",t(be,R),Te.prototype.xa=function(){this.g=!1},Te.prototype.info=function(){};var Ce={NO_ERROR:0,gb:1,tb:2,sb:3,nb:4,rb:5,ub:6,Ia:7,TIMEOUT:8,xb:9},Se={lb:"complete",Hb:"success",Ja:"error",Ia:"abort",zb:"ready",Ab:"readystatechange",TIMEOUT:"timeout",vb:"incrementaldata",yb:"progress",ob:"downloadprogress",Pb:"uploadprogress"};function ke(){}function Ae(e,t,n,r){this.j=e,this.i=t,this.l=n,this.R=r||1,this.U=new ne(this),this.I=45e3,this.H=null,this.o=!1,this.m=this.A=this.v=this.L=this.F=this.S=this.B=null,this.D=[],this.g=null,this.C=0,this.s=this.u=null,this.X=-1,this.J=!1,this.O=0,this.M=null,this.W=this.K=this.T=this.P=!1,this.h=new Ne}function Ne(){this.i=null,this.g="",this.h=!1}t(ke,ce),ke.prototype.g=function(){return new XMLHttpRequest},ke.prototype.i=function(){return{}};var Re=new ke,Pe={},De={};function xe(e,t,n){e.L=1,e.v=it(Ze(t)),e.m=n,e.P=!0,Oe(e,null)}function Oe(e,t){e.F=Date.now(),Me(e),e.A=Ze(e.v);var n=e.A,r=e.R;Array.isArray(r)||(r=[String(r)]),_t(n.i,"t",r),e.C=0,n=e.j.J,e.h=new Ne,e.g=sn(e.j,n?t:null,!e.m),0<e.O&&(e.M=new te(m(e.Y,e,e.g),e.O)),t=e.U;var n=e.g,r=e.ca,i="readystatechange";Array.isArray(i)||(i&&(re[0]=i.toString()),i=re);for(var a,o,c,l,u,h,s=0;s<i.length;s++){var d=z(n,i[s],r||t.handleEvent,!1,t.h||t);if(!d)break;t.g[d.key]=d}t=e.H?v(e.H):{},e.m?(e.u||(e.u="POST"),t["Content-Type"]="application/x-www-form-urlencoded",e.g.ea(e.A,e.u,e.m,t)):(e.u="GET",e.g.ea(e.A,e.u,null,t)),_e(),a=e.i,o=e.u,c=e.A,l=e.l,u=e.R,h=e.m,a.info(function(){if(a.g)if(h)for(var e="",t=h.split("&"),n=0;n<t.length;n++){var r,i,s=t[n].split("=");1<s.length&&(r=s[0],s=s[1],e=2<=(i=r.split("_")).length&&"type"==i[1]?e+(r+"=")+s+"&":e+(r+"=redacted&"))}else e=null;else e=h;return"XMLHTTP REQ ("+l+") [attempt "+u+"]: "+o+"\n"+c+"\n"+e})}function Le(e){return e.g&&("GET"==e.u&&2!=e.L&&e.j.Ca)}function Me(e){e.S=Date.now()+e.I,Fe(e,e.I)}function Fe(e,t){if(null!=e.B)throw Error("WatchDog timer not null");e.B=Ie(m(e.ba,e),t)}function Ue(e){e.B&&(E.clearTimeout(e.B),e.B=null)}function Ve(e){0==e.j.G||e.J||Zt(e.j,e)}function qe(e){Ue(e);var t=e.M;t&&"function"==typeof t.ma&&t.ma(),e.M=null,ie(e.U),e.g&&(t=e.g,e.g=null,t.abort(),t.ma())}function Be(e,t){try{var n=e.j;if(0!=n.G&&(n.g==e||We(n.h,e)))if(!e.K&&We(n.h,e)&&3==n.G){try{var r=n.Da.g.parse(t)}catch(e){r=null}if(Array.isArray(r)&&3==r.length){var i=r;if(0==i[0]){e:if(!n.u){if(n.g){if(!(n.g.F+3e3<e.F))break e;Xt(n),jt(n)}Qt(n),we(18)}}else n.za=i[1],0<n.za-n.T&&i[2]<37500&&n.F&&0==n.v&&!n.C&&(n.C=Ie(m(n.Za,n),6e3));if(Ke(n.h)<=1&&n.ca){try{n.ca()}catch(e){}n.ca=void 0}}else tn(n,11)}else if(!e.K&&n.g!=e||Xt(n),!C(t))for(i=n.Da.g.parse(t),t=0;t<i.length;t++){var s=i[t];if(n.T=s[0],s=s[1],2==n.G)if("c"==s[0]){n.K=s[1],n.ia=s[2];var a=s[3];null!=a&&(n.la=a,n.j.info("VER="+n.la));var o=s[4];null!=o&&(n.Aa=o,n.j.info("SVER="+n.Aa));var c,l,u=s[5];null!=u&&"number"==typeof u&&0<u&&(r=1.5*u,n.L=r,n.j.info("backChannelRequestTimeoutMs_="+r)),r=n;const f=e.g;if(f){const g=f.g?f.g.getResponseHeader("X-Client-Wire-Protocol"):null;g&&((c=r.h).g||-1==g.indexOf("spdy")&&-1==g.indexOf("quic")&&-1==g.indexOf("h2")||(c.j=c.l,c.g=new Set,c.h&&(Ge(c,c.h),c.h=null))),!r.D||(l=f.g?f.g.getResponseHeader("X-HTTP-Session-Id"):null)&&(r.ya=l,rt(r.I,r.D,l))}n.G=3,n.l&&n.l.ua(),n.ba&&(n.R=Date.now()-e.F,n.j.info("Handshake RTT: "+n.R+"ms"));var h,d,p=e;(r=n).qa=rn(r,r.J?r.ia:null,r.W),p.K?(He(r.h,p),h=p,(d=r.L)&&(h.I=d),h.B&&(Ue(h),Me(h)),r.g=p):Ht(r),0<n.i.length&&$t(n)}else"stop"!=s[0]&&"close"!=s[0]||tn(n,7);else 3==n.G&&("stop"==s[0]||"close"==s[0]?"stop"==s[0]?tn(n,7):Bt(n):"noop"!=s[0]&&n.l&&n.l.ta(s),n.v=0)}_e()}catch(e){}}Ae.prototype.ca=function(e){e=e.target;const t=this.M;t&&3==Ft(e)?t.j():this.Y(e)},Ae.prototype.Y=function(e){try{if(e==this.g)e:{var t=Ft(this.g),n=this.g.Ba();this.g.Z();if(!(t<3)&&(3!=t||this.g&&(this.h.h||this.g.oa()||Ut(this.g)))){this.J||4!=t||7==n||_e(),Ue(this);var r=this.g.Z();this.X=r;t:if(Le(this)){var i=Ut(this.g);e="";var s=i.length,a=4==Ft(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){qe(this),Ve(this);var o="";break t}this.h.i=new E.TextDecoder}for(n=0;n<s;n++)this.h.h=!0,e+=this.h.i.decode(i[n],{stream:!(a&&n==s-1)});i.length=0,this.h.g+=e,this.C=0,o=this.h.g}else o=this.g.oa();if(this.o=200==r,v=this.i,_=this.u,y=this.A,w=this.l,b=this.R,I=t,T=r,v.info(function(){return"XMLHTTP RESP ("+w+") [ attempt "+b+"]: "+_+"\n"+y+"\n"+I+" "+T}),this.o){if(this.T&&!this.K){t:{if(this.g){var c,l=this.g;if((c=l.g?l.g.getResponseHeader("X-HTTP-Initial-Response"):null)&&!C(c)){var u=c;break t}}u=null}if(!(r=u)){this.o=!1,this.s=3,we(12),qe(this),Ve(this);break e}Ee(this.i,this.l,r,"Initial handshake response via X-HTTP-Initial-Response"),this.K=!0,Be(this,r)}if(this.P){for(var h,d,r=!0;!this.J&&this.C<o.length;){if(f=o,m=g=void 0,g=(p=this).C,(h=-1==(m=f.indexOf("\n",g))?De:(g=Number(f.substring(g,m)),isNaN(g)?Pe:(m+=1)+g>f.length?De:(f=f.slice(m,m+g),p.C=m+g,f)))==De){4==t&&(this.s=4,we(14),r=!1),Ee(this.i,this.l,null,"[Incomplete Response]");break}if(h==Pe){this.s=4,we(15),Ee(this.i,this.l,o,"[Invalid Chunk]"),r=!1;break}Ee(this.i,this.l,h,null),Be(this,h)}Le(this)&&0!=this.C&&(this.h.g=this.h.g.slice(this.C),this.C=0),4!=t||0!=o.length||this.h.h||(this.s=1,we(16),r=!1),this.o=this.o&&r,r?0<o.length&&!this.W&&(this.W=!0,(d=this.j).g==this&&d.ba&&!d.M&&(d.j.info("Great, no buffering proxy detected. Bytes received: "+o.length),Jt(d),d.M=!0,we(11))):(Ee(this.i,this.l,o,"[Invalid Chunked Response]"),qe(this),Ve(this))}else Ee(this.i,this.l,o,null),Be(this,o);4==t&&qe(this),this.o&&!this.J&&(4==t?Zt(this.j,this):(this.o=!1,Me(this)))}else(function(e){const t={};e=(e.g&&2<=Ft(e)&&e.g.getAllResponseHeaders()||"").split("\r\n");for(let i=0;i<e.length;i++)if(!C(e[i])){var n=function(e){var t=1;e=e.split(":");const n=[];for(;0<t&&e.length;)n.push(e.shift()),t--;return e.length&&n.push(e.join(":")),n}(e[i]),r=n[0];if("string"==typeof(n=n[1])){n=n.trim();const s=t[r]||[];t[r]=s,s.push(n)}}!function(e,t){for(const n in e)t.call(void 0,e[n],n,e)}(t,function(e){return e.join(", ")})})(this.g),400==r&&0<o.indexOf("Unknown SID")?(this.s=3,we(12)):(this.s=0,we(13)),qe(this),Ve(this)}}}catch(e){}var p,f,g,m,v,_,y,w,b,I,T},Ae.prototype.cancel=function(){this.J=!0,qe(this)},Ae.prototype.ba=function(){this.B=null;var e,t,n=Date.now();0<=n-this.S?(e=this.i,t=this.A,e.info(function(){return"TIMEOUT: "+t}),2!=this.L&&(_e(),we(17)),qe(this),this.s=2,Ve(this)):Fe(this,this.S-n)};var je=class{constructor(e,t){this.g=e,this.map=t}};function ze(e){this.l=e||10,e=E.PerformanceNavigationTiming?0<(e=E.performance.getEntriesByType("navigation")).length&&("hq"==e[0].nextHopProtocol||"h2"==e[0].nextHopProtocol):!!(E.chrome&&E.chrome.loadTimes&&E.chrome.loadTimes()&&E.chrome.loadTimes().wasFetchedViaSpdy),this.j=e?this.l:1,this.g=null,1<this.j&&(this.g=new Set),this.h=null,this.i=[]}function $e(e){return e.h||e.g&&e.g.size>=e.j}function Ke(e){return e.h?1:e.g?e.g.size:0}function We(e,t){return e.h?e.h==t:e.g&&e.g.has(t)}function Ge(e,t){e.g?e.g.add(t):e.h=t}function He(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function Qe(t){if(null!=t.h)return t.i.concat(t.h.D);if(null==t.g||0===t.g.size)return h(t.i);{let e=t.i;for(const n of t.g.values())e=e.concat(n.D);return e}}function Je(e,t){if(e.forEach&&"function"==typeof e.forEach)e.forEach(t,void 0);else if(c(e)||"string"==typeof e)Array.prototype.forEach.call(e,t,void 0);else for(var n=function(e){if(e.na&&"function"==typeof e.na)return e.na();if(!e.V||"function"!=typeof e.V){if("undefined"!=typeof Map&&e instanceof Map)return Array.from(e.keys());if(!("undefined"!=typeof Set&&e instanceof Set)){if(c(e)||"string"==typeof e){var t=[];e=e.length;for(var n=0;n<e;n++)t.push(n);return t}t=[],n=0;for(const r in e)t[n++]=r;return t}}}(e),r=function(e){if(e.V&&"function"==typeof e.V)return e.V();if("undefined"!=typeof Map&&e instanceof Map||"undefined"!=typeof Set&&e instanceof Set)return Array.from(e.values());if("string"==typeof e)return e.split("");if(c(e)){for(var t=[],n=e.length,r=0;r<n;r++)t.push(e[r]);return t}for(r in t=[],n=0,e)t[n++]=e[r];return t}(e),i=r.length,s=0;s<i;s++)t.call(void 0,r[s],n&&n[s],e)}ze.prototype.cancel=function(){if(this.i=Qe(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const e of this.g.values())e.cancel();this.g.clear()}};var Ye=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function Xe(e){var t,n;this.g=this.o=this.j="",this.s=null,this.m=this.l="",this.h=!1,e instanceof Xe?(this.h=e.h,et(this,e.j),this.o=e.o,this.g=e.g,tt(this,e.s),this.l=e.l,t=e.i,(n=new ft).i=t.i,t.g&&(n.g=new Map(t.g),n.h=t.h),nt(this,n),this.m=e.m):e&&(t=String(e).match(Ye))?(this.h=!1,et(this,t[1]||"",!0),this.o=st(t[2]||""),this.g=st(t[3]||"",!0),tt(this,t[4]),this.l=st(t[5]||"",!0),nt(this,t[6]||"",!0),this.m=st(t[7]||"")):(this.h=!1,this.i=new ft(null,this.h))}function Ze(e){return new Xe(e)}function et(e,t,n){e.j=n?st(t,!0):t,e.j&&(e.j=e.j.replace(/:$/,""))}function tt(e,t){if(t){if(t=Number(t),isNaN(t)||t<0)throw Error("Bad port number "+t);e.s=t}else e.s=null}function nt(e,t,n){var r,i;t instanceof ft?(e.i=t,r=e.i,(i=e.h)&&!r.j&&(gt(r),r.i=null,r.g.forEach(function(e,t){var n=t.toLowerCase();t!=n&&(mt(this,t),_t(this,n,e))},r)),r.j=i):(n||(t=at(t,dt)),e.i=new ft(t,e.h))}function rt(e,t,n){e.i.set(t,n)}function it(e){return rt(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function st(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function at(e,t,n){return"string"==typeof e?(e=encodeURI(e).replace(t,ot),e=n?e.replace(/%25([0-9a-fA-F]{2})/g,"%$1"):e):null}function ot(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Xe.prototype.toString=function(){var e=[],t=this.j;t&&e.push(at(t,lt,!0),":");var n=this.g;return!n&&"file"!=t||(e.push("//"),(t=this.o)&&e.push(at(t,lt,!0),"@"),e.push(encodeURIComponent(String(n)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(n=this.s)&&e.push(":",String(n))),(n=this.l)&&(this.g&&"/"!=n.charAt(0)&&e.push("/"),e.push(at(n,"/"==n.charAt(0)?ht:ut,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.m)&&e.push("#",at(n,pt)),e.join("")};var ct,lt=/[#\/\?@]/g,ut=/[#\?:]/g,ht=/[#\?]/g,dt=/[#\?@]/g,pt=/#/g;function ft(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function gt(n){n.g||(n.g=new Map,n.h=0,n.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n<e.length;n++){var r,i=e[n].indexOf("="),s=null;0<=i?(r=e[n].substring(0,i),s=e[n].substring(i+1)):r=e[n],t(r,s?decodeURIComponent(s.replace(/\+/g," ")):"")}}}(n.i,function(e,t){n.add(decodeURIComponent(e.replace(/\+/g," ")),t)}))}function mt(e,t){gt(e),t=yt(e,t),e.g.has(t)&&(e.i=null,e.h-=e.g.get(t).length,e.g.delete(t))}function vt(e,t){return gt(e),t=yt(e,t),e.g.has(t)}function _t(e,t,n){mt(e,t),0<n.length&&(e.i=null,e.g.set(yt(e,t),h(n)),e.h+=n.length)}function yt(e,t){return t=String(t),t=e.j?t.toLowerCase():t}function wt(e,t,n,r,i){try{i&&(i.onload=null,i.onerror=null,i.onabort=null,i.ontimeout=null),r(n)}catch(e){}}function bt(){this.g=new oe}function It(e){this.l=e.Ub||null,this.j=e.eb||!1}function Tt(e,t){Y.call(this),this.D=e,this.o=t,this.m=void 0,this.status=this.readyState=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.u=new Headers,this.h=null,this.B="GET",this.A="",this.g=!1,this.v=this.j=this.l=null}function Et(e){e.j.read().then(e.Pa.bind(e)).catch(e.ga.bind(e))}function Ct(e){e.readyState=4,e.l=null,e.j=null,e.v=null,St(e)}function St(e){e.onreadystatechange&&e.onreadystatechange.call(e)}function kt(e){let n="";return g(e,function(e,t){n+=t,n+=":",n+=e,n+="\r\n"}),n}function At(e,t,n){e:{for(r in n){var r=!1;break e}r=!0}r||(n=kt(n),"string"==typeof e?null!=n&&encodeURIComponent(String(n)):rt(e,t,n))}function Nt(e){Y.call(this),this.headers=new Map,this.o=e||null,this.h=!1,this.v=this.g=null,this.D="",this.m=0,this.l="",this.j=this.B=this.u=this.A=!1,this.I=null,this.H="",this.J=!1}(e=ft.prototype).add=function(e,t){gt(this),this.i=null,e=yt(this,e);var n=this.g.get(e);return n||this.g.set(e,n=[]),n.push(t),this.h+=1,this},e.forEach=function(n,r){gt(this),this.g.forEach(function(e,t){e.forEach(function(e){n.call(r,e,t,this)},this)},this)},e.na=function(){gt(this);const t=Array.from(this.g.values()),n=Array.from(this.g.keys()),r=[];for(let s=0;s<n.length;s++){var i=t[s];for(let e=0;e<i.length;e++)r.push(n[s])}return r},e.V=function(t){gt(this);let n=[];if("string"==typeof t)vt(this,t)&&(n=n.concat(this.g.get(yt(this,t))));else{t=Array.from(this.g.values());for(let e=0;e<t.length;e++)n=n.concat(t[e])}return n},e.set=function(e,t){return gt(this),this.i=null,vt(this,e=yt(this,e))&&(this.h-=this.g.get(e).length),this.g.set(e,[t]),this.h+=1,this},e.get=function(e,t){return e&&0<(e=this.V(e)).length?String(e[0]):t},e.toString=function(){if(this.i)return this.i;if(!this.g)return"";const e=[],t=Array.from(this.g.keys());for(var n=0;n<t.length;n++)for(var r=t[n],i=encodeURIComponent(String(r)),s=this.V(r),r=0;r<s.length;r++){var a=i;""!==s[r]&&(a+="="+encodeURIComponent(String(s[r]))),e.push(a)}return this.i=e.join("&")},t(It,ce),It.prototype.g=function(){return new Tt(this.l,this.j)},It.prototype.i=(ct={},function(){return ct}),t(Tt,Y),(e=Tt.prototype).open=function(e,t){if(0!=this.readyState)throw this.abort(),Error("Error reopening a connection");this.B=e,this.A=t,this.readyState=1,St(this)},e.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;const t={headers:this.u,method:this.B,credentials:this.m,cache:void 0};e&&(t.body=e),(this.D||E).fetch(new Request(this.A,t)).then(this.Sa.bind(this),this.ga.bind(this))},e.abort=function(){this.response=this.responseText="",this.u=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,Ct(this)),this.readyState=0},e.Sa=function(e){if(this.g&&(this.l=e,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=e.headers,this.readyState=2,St(this)),this.g&&(this.readyState=3,St(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Qa.bind(this),this.ga.bind(this));else if(void 0!==E.ReadableStream&&"body"in e){if(this.j=e.body.getReader(),this.o){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.v=new TextDecoder;Et(this)}else e.text().then(this.Ra.bind(this),this.ga.bind(this))},e.Pa=function(e){var t;this.g&&(this.o&&e.value?this.response.push(e.value):this.o||(t=e.value||new Uint8Array(0),(t=this.v.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)),(e.done?Ct:St)(this),3==this.readyState&&Et(this))},e.Ra=function(e){this.g&&(this.response=this.responseText=e,Ct(this))},e.Qa=function(e){this.g&&(this.response=e,Ct(this))},e.ga=function(){this.g&&Ct(this)},e.setRequestHeader=function(e,t){this.u.append(e,t)},e.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},e.getAllResponseHeaders=function(){if(!this.h)return"";const e=[],t=this.h.entries();for(var n=t.next();!n.done;)n=n.value,e.push(n[0]+": "+n[1]),n=t.next();return e.join("\r\n")},Object.defineProperty(Tt.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}}),t(Nt,Y);var Rt=/^https?$/i,Pt=["POST","PUT"];function Dt(e,t){e.h=!1,e.g&&(e.j=!0,e.g.abort(),e.j=!1),e.l=t,e.m=5,xt(e),Lt(e)}function xt(e){e.A||(e.A=!0,X(e,"complete"),X(e,"error"))}function Ot(e){if(e.h&&void 0!==o&&(!e.v[1]||4!=Ft(e)||2!=e.Z()))if(e.u&&4==Ft(e))ee(e.Ea,0,e);else if(X(e,"readystatechange"),4==Ft(e)){e.h=!1;try{var t,n,r,i=e.Z();e:switch(i){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var s=!0;break e;default:s=!1}if((t=s)||((n=0===i)&&(!(r=String(e.D).match(Ye)[1]||null)&&E.self&&E.self.location&&(r=E.self.location.protocol.slice(0,-1)),n=!Rt.test(r?r.toLowerCase():"")),t=n),t)X(e,"complete"),X(e,"success");else{e.m=6;try{var a=2<Ft(e)?e.g.statusText:""}catch(e){a=""}e.l=a+" ["+e.Z()+"]",xt(e)}}finally{Lt(e)}}}function Lt(e,t){if(e.g){Mt(e);const n=e.g,r=e.v[0]?()=>{}:null;e.g=null,e.v=null,t||X(e,"ready");try{n.onreadystatechange=r}catch(e){}}}function Mt(e){e.I&&(E.clearTimeout(e.I),e.I=null)}function Ft(e){return e.g?e.g.readyState:0}function Ut(e){try{if(!e.g)return null;if("response"in e.g)return e.g.response;switch(e.H){case"":case"text":return e.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.g)return e.g.mozResponseArrayBuffer}return null}catch(e){return null}}function Vt(e,t,n){return n&&n.internalChannelParams&&n.internalChannelParams[e]||t}function qt(e){this.Aa=0,this.i=[],this.j=new Te,this.ia=this.qa=this.I=this.W=this.g=this.ya=this.D=this.H=this.m=this.S=this.o=null,this.Ya=this.U=0,this.Va=Vt("failFast",!1,e),this.F=this.C=this.u=this.s=this.l=null,this.X=!0,this.za=this.T=-1,this.Y=this.v=this.B=0,this.Ta=Vt("baseRetryDelayMs",5e3,e),this.cb=Vt("retryDelaySeedMs",1e4,e),this.Wa=Vt("forwardChannelMaxRetries",2,e),this.wa=Vt("forwardChannelRequestTimeoutMs",2e4,e),this.pa=e&&e.xmlHttpFactory||void 0,this.Xa=e&&e.Tb||void 0,this.Ca=e&&e.useFetchStreams||!1,this.L=void 0,this.J=e&&e.supportsCrossDomainXhr||!1,this.K="",this.h=new ze(e&&e.concurrentRequestLimit),this.Da=new bt,this.P=e&&e.fastHandshake||!1,this.O=e&&e.encodeInitMessageHeaders||!1,this.P&&this.O&&(this.O=!1),this.Ua=e&&e.Rb||!1,e&&e.xa&&this.j.xa(),e&&e.forceLongPolling&&(this.X=!1),this.ba=!this.P&&this.X&&e&&e.detectBufferingProxy||!1,this.ja=void 0,e&&e.longPollingTimeout&&0<e.longPollingTimeout&&(this.ja=e.longPollingTimeout),this.ca=void 0,this.R=0,this.M=!1,this.ka=this.A=null}function Bt(e){if(zt(e),3==e.G){var t=e.U++,n=Ze(e.I);if(rt(n,"SID",e.K),rt(n,"RID",t),rt(n,"TYPE","terminate"),Wt(e,n),(t=new Ae(e,e.j,t)).L=2,t.v=it(Ze(n)),n=!1,E.navigator&&E.navigator.sendBeacon)try{n=E.navigator.sendBeacon(t.v.toString(),"")}catch(e){}!n&&E.Image&&((new Image).src=t.v,n=!0),n||(t.g=sn(t.j,null),t.g.ea(t.v)),t.F=Date.now(),Me(t)}nn(e)}function jt(e){e.g&&(Jt(e),e.g.cancel(),e.g=null)}function zt(e){jt(e),e.u&&(E.clearTimeout(e.u),e.u=null),Xt(e),e.h.cancel(),e.s&&("number"==typeof e.s&&E.clearTimeout(e.s),e.s=null)}function $t(e){var t;$e(e.h)||e.s||(e.s=!0,t=e.Ga,I||k(),T||(I(),T=!0),S.add(t,e),e.B=0)}function Kt(e,t){var n=t?t.l:e.U++,r=Ze(e.I);rt(r,"SID",e.K),rt(r,"RID",n),rt(r,"AID",e.T),Wt(e,r),e.m&&e.o&&At(r,e.m,e.o),n=new Ae(e,e.j,n,e.B+1),null===e.m&&(n.H=e.o),t&&(e.i=t.D.concat(e.i)),t=Gt(e,n,1e3),n.I=Math.round(.5*e.wa)+Math.round(.5*e.wa*Math.random()),Ge(e.h,n),xe(n,r,t)}function Wt(e,n){e.H&&g(e.H,function(e,t){rt(n,t,e)}),e.l&&Je({},function(e,t){rt(n,t,e)})}function Gt(e,t,r){r=Math.min(e.i.length,r);var i=e.l?m(e.l.Na,e.l,e):null;e:{var s=e.i;let n=-1;for(;;){const c=["count="+r];-1==n?0<r?(n=s[0].g,c.push("ofs="+n)):n=0:c.push("ofs="+n);let e=!0;for(let t=0;t<r;t++){var a=s[t].g,o=s[t].map;if((a-=n)<0)n=Math.max(0,s[t].g-100),e=!1;else try{!function(e,r,t){const i=t||"";try{Je(e,function(e,t){let n=e;l(e)&&(n=se(e)),r.push(i+t+"="+encodeURIComponent(n))})}catch(e){throw r.push(i+"type="+encodeURIComponent("_badmap")),e}}(o,c,"req"+a+"_")}catch(e){i&&i(o)}}if(e){i=c.join("&");break e}}}return e=e.i.splice(0,r),t.D=e,i}function Ht(e){var t;e.g||e.u||(e.Y=1,t=e.Fa,I||k(),T||(I(),T=!0),S.add(t,e),e.v=0)}function Qt(e){return!(e.g||e.u||3<=e.v)&&(e.Y++,e.u=Ie(m(e.Fa,e),en(e,e.v)),e.v++,1)}function Jt(e){null!=e.A&&(E.clearTimeout(e.A),e.A=null)}function Yt(e){e.g=new Ae(e,e.j,"rpc",e.Y),null===e.m&&(e.g.H=e.o),e.g.O=0;var t=Ze(e.qa);rt(t,"RID","rpc"),rt(t,"SID",e.K),rt(t,"AID",e.T),rt(t,"CI",e.F?"0":"1"),!e.F&&e.ja&&rt(t,"TO",e.ja),rt(t,"TYPE","xmlhttp"),Wt(e,t),e.m&&e.o&&At(t,e.m,e.o),e.L&&(e.g.I=e.L);var n=e.g;e=e.ia,n.L=1,n.v=it(Ze(t)),n.m=null,n.P=!0,Oe(n,e)}function Xt(e){null!=e.C&&(E.clearTimeout(e.C),e.C=null)}function Zt(e,t){var n,r,i,s=null;if(e.g==t){Xt(e),Jt(e),e.g=null;var a=2}else{if(!We(e.h,t))return;s=t.D,He(e.h,t),a=1}if(0!=e.G)if(t.o)1==a?(s=t.m?t.m.length:0,t=Date.now()-t.F,n=e.B,X(a=me(),new be(a,s)),$t(e)):Ht(e);else if(3==(n=t.s)||0==n&&0<t.X||(1!=a||(i=t,Ke((r=e).h)>=r.h.j-(r.s?1:0)||(r.s?(r.i=i.D.concat(r.i),0):1==r.G||2==r.G||r.B>=(r.Va?0:r.Wa)||(r.s=Ie(m(r.Ga,r,i),en(r,r.B)),r.B++,0))))&&(2!=a||!Qt(e)))switch(s&&0<s.length&&(t=e.h,t.i=t.i.concat(s)),n){case 1:tn(e,5);break;case 4:tn(e,10);break;case 3:tn(e,6);break;default:tn(e,2)}}function en(e,t){let n=e.Ta+Math.floor(Math.random()*e.cb);return e.isActive()||(n*=2),n*t}function tn(e,t){var n,r,i;e.j.info("Error code "+t),2==t?(n=m(e.fb,e),r=!(i=e.Xa),i=new Xe(i||"//www.google.com/images/cleardot.gif"),E.location&&"http"==E.location.protocol||et(i,"https"),it(i),(r?function(e,t){var n=new Te;if(E.Image){const r=new Image;r.onload=u(wt,n,"TestLoadImage: loaded",!0,t,r),r.onerror=u(wt,n,"TestLoadImage: error",!1,t,r),r.onabort=u(wt,n,"TestLoadImage: abort",!1,t,r),r.ontimeout=u(wt,n,"TestLoadImage: timeout",!1,t,r),E.setTimeout(function(){r.ontimeout&&r.ontimeout()},1e4),r.src=e}else t(!1)}:function(e,t){const n=new Te,r=new AbortController,i=setTimeout(()=>{r.abort(),wt(n,0,!1,t)},1e4);fetch(e,{signal:r.signal}).then(e=>{clearTimeout(i),e.ok?wt(n,0,!0,t):wt(n,0,!1,t)}).catch(()=>{clearTimeout(i),wt(n,0,!1,t)})})(i.toString(),n)):we(2),e.G=0,e.l&&e.l.sa(t),nn(e),zt(e)}function nn(e){var t;e.G=0,e.ka=[],e.l&&(0==(t=Qe(e.h)).length&&0==e.i.length||(n(e.ka,t),n(e.ka,e.i),e.h.i.length=0,h(e.i),e.i.length=0),e.l.ra())}function rn(e,t,n){var r,i,s=n instanceof Xe?Ze(n):new Xe(n);return""!=s.g?(t&&(s.g=t+"."+s.g),tt(s,s.s)):(s=(r=E.location).protocol,t=t?t+"."+r.hostname:r.hostname,r=+r.port,i=new Xe(null),s&&et(i,s),t&&(i.g=t),r&&tt(i,r),n&&(i.l=n),s=i),n=e.D,t=e.ya,n&&t&&rt(s,n,t),rt(s,"VER",e.la),Wt(e,s),s}function sn(e,t,n){if(t&&!e.J)throw Error("Can't create secondary domain capable XhrIo object.");return(t=e.Ca&&!e.pa?new Nt(new It({eb:n})):new Nt(e.pa)).Ha(e.J),t}function an(){}function on(){}function cn(e,t){Y.call(this),this.g=new qt(t),this.l=e,this.h=t&&t.messageUrlParams||null,e=t&&t.messageHeaders||null,t&&t.clientProtocolHeaderRequired&&(e?e["X-Client-Protocol"]="webchannel":e={"X-Client-Protocol":"webchannel"}),this.g.o=e,e=t&&t.initMessageHeaders||null,t&&t.messageContentType&&(e?e["X-WebChannel-Content-Type"]=t.messageContentType:e={"X-WebChannel-Content-Type":t.messageContentType}),t&&t.va&&(e?e["X-WebChannel-Client-Profile"]=t.va:e={"X-WebChannel-Client-Profile":t.va}),this.g.S=e,(e=t&&t.Sb)&&!C(e)&&(this.g.m=e),this.v=t&&t.supportsCrossDomainXhr||!1,this.u=t&&t.sendRawJson||!1,(t=t&&t.httpSessionIdParam)&&!C(t)&&(this.g.D=t,null!==(e=this.h)&&t in e&&(t in(e=this.h)&&delete e[t])),this.j=new hn(this)}function ln(e){de.call(this),e.__headers__&&(this.headers=e.__headers__,this.statusCode=e.__status__,delete e.__headers__,delete e.__status__);var t=e.__sm__;if(t){e:{for(const n in t){e=n;break e}e=void 0}(this.i=e)&&(e=this.i,t=null!==t&&e in t?t[e]:void 0),this.data=t}else this.data=e}function un(){pe.call(this),this.status=1}function hn(e){this.g=e}(e=Nt.prototype).Ha=function(e){this.J=e},e.ea=function(e,t,n,r){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+e);t=t?t.toUpperCase():"GET",this.D=e,this.l="",this.m=0,this.A=!1,this.h=!0,this.g=(this.o||Re).g(),this.v=this.o?le(this.o):le(Re),this.g.onreadystatechange=m(this.Ea,this);try{this.B=!0,this.g.open(t,String(e),!0),this.B=!1}catch(e){return void Dt(this,e)}if(e=n||"",n=new Map(this.headers),r)if(Object.getPrototypeOf(r)===Object.prototype)for(var i in r)n.set(i,r[i]);else{if("function"!=typeof r.keys||"function"!=typeof r.get)throw Error("Unknown input type for opt_headers: "+String(r));for(const o of r.keys())n.set(o,r.get(o))}r=Array.from(n.keys()).find(e=>"content-type"==e.toLowerCase()),i=E.FormData&&e instanceof E.FormData,0<=Array.prototype.indexOf.call(Pt,t,void 0)&&!r&&!i&&n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(var[s,a]of n)this.g.setRequestHeader(s,a);this.H&&(this.g.responseType=this.H),"withCredentials"in this.g&&this.g.withCredentials!==this.J&&(this.g.withCredentials=this.J);try{Mt(this),this.u=!0,this.g.send(e),this.u=!1}catch(e){Dt(this,e)}},e.abort=function(e){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.m=e||7,X(this,"complete"),X(this,"abort"),Lt(this))},e.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),Lt(this,!0)),Nt.aa.N.call(this)},e.Ea=function(){this.s||(this.B||this.u||this.j?Ot(this):this.bb())},e.bb=function(){Ot(this)},e.isActive=function(){return!!this.g},e.Z=function(){try{return 2<Ft(this)?this.g.status:-1}catch(e){return-1}},e.oa=function(){try{return this.g?this.g.responseText:""}catch(e){return""}},e.Oa=function(e){if(this.g){var t=this.g.responseText;return e&&0==t.indexOf(e)&&(t=t.substring(e.length)),ae(t)}},e.Ba=function(){return this.m},e.Ka=function(){return"string"==typeof this.l?this.l:String(this.l)},(e=qt.prototype).la=8,e.G=1,e.connect=function(e,t,n,r){we(0),this.W=e,this.H=t||{},n&&void 0!==r&&(this.H.OSID=n,this.H.OAID=r),this.F=this.X,this.I=rn(this,null,this.W),$t(this)},e.Ga=function(t){if(this.s)if(this.s=null,1==this.G){if(!t){this.U=Math.floor(1e5*Math.random()),t=this.U++;const s=new Ae(this,this.j,t);let e=this.o;if(this.S&&(e?(e=v(e),y(e,this.S)):e=this.S),null!==this.m||this.O||(s.H=e,e=null),this.P)e:{for(var n=0,r=0;r<this.i.length;r++){var i=this.i[r];if("__data__"in i.map&&"string"==typeof(i=i.map.__data__)?i=i.length:i=void 0,void 0===i)break;if(4096<(n+=i)){n=r;break e}if(4096===n||r===this.i.length-1){n=r+1;break e}}n=1e3}else n=1e3;n=Gt(this,s,n),rt(r=Ze(this.I),"RID",t),rt(r,"CVER",22),this.D&&rt(r,"X-HTTP-Session-Id",this.D),Wt(this,r),e&&(this.O?n="headers="+encodeURIComponent(String(kt(e)))+"&"+n:this.m&&At(r,this.m,e)),Ge(this.h,s),this.Ua&&rt(r,"TYPE","init"),this.P?(rt(r,"$req",n),rt(r,"SID","null"),s.T=!0,xe(s,r,null)):xe(s,r,n),this.G=2}}else 3==this.G&&(t?Kt(this,t):0==this.i.length||$e(this.h)||Kt(this))},e.Fa=function(){var e;this.u=null,Yt(this),this.ba&&!(this.M||null==this.g||this.R<=0)&&(e=2*this.R,this.j.info("BP detection timer enabled: "+e),this.A=Ie(m(this.ab,this),e))},e.ab=function(){this.A&&(this.A=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.F=!1,this.M=!0,we(10),jt(this),Yt(this))},e.Za=function(){null!=this.C&&(this.C=null,jt(this),Qt(this),we(19))},e.fb=function(e){e?(this.j.info("Successfully pinged google.com"),we(2)):(this.j.info("Failed to ping google.com"),we(1))},e.isActive=function(){return!!this.l&&this.l.isActive(this)},(e=an.prototype).ua=function(){},e.ta=function(){},e.sa=function(){},e.ra=function(){},e.isActive=function(){return!0},e.Na=function(){},on.prototype.g=function(e,t){return new cn(e,t)},t(cn,Y),cn.prototype.m=function(){this.g.l=this.j,this.v&&(this.g.J=!0),this.g.connect(this.l,this.h||void 0)},cn.prototype.close=function(){Bt(this.g)},cn.prototype.o=function(e){var t,n=this.g;"string"==typeof e?((t={}).__data__=e,e=t):this.u&&((t={}).__data__=se(e),e=t),n.i.push(new je(n.Ya++,e)),3==n.G&&$t(n)},cn.prototype.N=function(){this.g.l=null,delete this.j,Bt(this.g),delete this.g,cn.aa.N.call(this)},t(ln,de),t(un,pe),t(hn,an),hn.prototype.ua=function(){X(this.g,"a")},hn.prototype.ta=function(e){X(this.g,new ln(e))},hn.prototype.sa=function(e){X(this.g,new un)},hn.prototype.ra=function(){X(this.g,"b")},on.prototype.createWebChannel=on.prototype.g,cn.prototype.send=cn.prototype.o,cn.prototype.open=cn.prototype.m,im=function(){return new on},rm=me,nm=fe,tm={mb:0,pb:1,qb:2,Jb:3,Ob:4,Lb:5,Mb:6,Kb:7,Ib:8,Nb:9,PROXY:10,NOPROXY:11,Gb:12,Cb:13,Db:14,Bb:15,Eb:16,Fb:17,ib:18,hb:19,jb:20},Ce.NO_ERROR=0,Ce.TIMEOUT=8,Ce.HTTP_ERROR=6,em=Ce,Se.COMPLETE="complete",Zg=Se,(ue.EventType=he).OPEN="a",he.CLOSE="b",he.ERROR="c",he.MESSAGE="d",Y.prototype.listen=Y.prototype.K,Xg=ue,Nt.prototype.listenOnce=Nt.prototype.L,Nt.prototype.getLastError=Nt.prototype.Ka,Nt.prototype.getLastErrorCode=Nt.prototype.Ba,Nt.prototype.getStatus=Nt.prototype.Z,Nt.prototype.getResponseJson=Nt.prototype.Oa,Nt.prototype.getResponseText=Nt.prototype.oa,Nt.prototype.send=Nt.prototype.ea,Nt.prototype.setWithCredentials=Nt.prototype.Ha,Yg=Nt}).apply(void 0!==cm?cm:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});const lm="@firebase/firestore";class um{constructor(e){this.uid=e}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}um.UNAUTHENTICATED=new um(null),um.GOOGLE_CREDENTIALS=new um("google-credentials-uid"),um.FIRST_PARTY=new um("first-party-uid"),um.MOCK_USER=new um("mock-user");let hm="11.0.2";const dm=new ye("@firebase/firestore");function pm(){return dm.logLevel}function fm(e,...t){var n;dm.logLevel<=m.DEBUG&&(n=t.map(vm),dm.debug(`Firestore (${hm}): ${e}`,...n))}function gm(e,...t){var n;dm.logLevel<=m.ERROR&&(n=t.map(vm),dm.error(`Firestore (${hm}): ${e}`,...n))}function mm(e,...t){var n;dm.logLevel<=m.WARN&&(n=t.map(vm),dm.warn(`Firestore (${hm}): ${e}`,...n))}function vm(t){if("string"==typeof t)return t;try{return JSON.stringify(t)}catch(e){return t}}function _m(e="Unexpected state"){var t=`FIRESTORE (${hm}) INTERNAL ASSERTION FAILED: `+e;throw gm(t),new Error(t)}function ym(e){e||_m()}const wm={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class bm extends x{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class Im{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class Tm{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class Em{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(um.UNAUTHENTICATED))}shutdown(){}}class Cm{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable(()=>t(this.token.user))}shutdown(){this.changeListener=null}}class Sm{constructor(e){this.t=e,this.currentUser=um.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(t,n){ym(void 0===this.o);let r=this.i;const i=e=>this.i!==r?(r=this.i,n(e)):Promise.resolve();let s=new Im;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new Im,t.enqueueRetryable(()=>i(this.currentUser))};const a=()=>{const e=s;t.enqueueRetryable(async()=>{await e.promise,await i(this.currentUser)})},o=e=>{fm("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.o&&(this.auth.addAuthTokenListener(this.o),a())};this.t.onInit(e=>o(e)),setTimeout(()=>{var e;this.auth||((e=this.t.getImmediate({optional:!0}))?o(e):(fm("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new Im))},0),a()}getToken(){const t=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then(e=>this.i!==t?(fm("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(ym("string"==typeof e.accessToken),new Tm(e.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.o&&this.auth.removeAuthTokenListener(this.o),this.o=void 0}u(){var e=this.auth&&this.auth.getUid();return ym(null===e||"string"==typeof e),new um(e)}}class km{constructor(e,t,n){this.l=e,this.h=t,this.P=n,this.type="FirstParty",this.user=um.FIRST_PARTY,this.T=new Map}I(){return this.P?this.P():null}get headers(){this.T.set("X-Goog-AuthUser",this.l);var e=this.I();return e&&this.T.set("Authorization",e),this.h&&this.T.set("X-Goog-Iam-Authorization-Token",this.h),this.T}}class Am{constructor(e,t,n){this.l=e,this.h=t,this.P=n}getToken(){return Promise.resolve(new km(this.l,this.h,this.P))}start(e,t){e.enqueueRetryable(()=>t(um.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class Nm{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&0<e.length&&this.headers.set("x-firebase-appcheck",this.value)}}class Rm{constructor(e){this.A=e,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(t,n){ym(void 0===this.o);const r=e=>{null!=e.error&&fm("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);var t=e.token!==this.R;return this.R=e.token,fm("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?n(e.token):Promise.resolve()};this.o=e=>{t.enqueueRetryable(()=>r(e))};const i=e=>{fm("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.o&&this.appCheck.addTokenListener(this.o)};this.A.onInit(e=>i(e)),setTimeout(()=>{var e;this.appCheck||((e=this.A.getImmediate({optional:!0}))?i(e):fm("FirebaseAppCheckTokenProvider","AppCheck not yet detected"))},0)}getToken(){var e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(ym("string"==typeof e.token),this.R=e.token,new Nm(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.o&&this.appCheck.removeTokenListener(this.o),this.o=void 0}}class Pm{static newId(){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=Math.floor(256/t.length)*t.length;let r="";for(;r.length<20;){var i=function(t){const n="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(t);if(n&&"function"==typeof n.getRandomValues)n.getRandomValues(r);else for(let e=0;e<t;e++)r[e]=Math.floor(256*Math.random());return r}(40);for(let e=0;e<i.length;++e)r.length<20&&i[e]<n&&(r+=t.charAt(i[e]%t.length))}return r}}function Dm(e,t){return e<t?-1:t<e?1:0}function xm(e,n,r){return e.length===n.length&&e.every((e,t)=>r(e,n[t]))}function Om(e){return e+"\0"}class Lm{static now(){return Lm.fromMillis(Date.now())}static fromDate(e){return Lm.fromMillis(e.getTime())}static fromMillis(e){var t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new Lm(t,n)}constructor(e,t){if(this.seconds=e,(this.nanoseconds=t)<0)throw new bm(wm.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(1e9<=t)throw new bm(wm.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new bm(wm.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(253402300800<=e)throw new bm(wm.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?Dm(this.nanoseconds,e.nanoseconds):Dm(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){var e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class Mm{static fromTimestamp(e){return new Mm(e)}static min(){return new Mm(new Lm(0,0))}static max(){return new Mm(new Lm(253402300799,999999999))}constructor(e){this.timestamp=e}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class Fm{constructor(e,t,n){void 0===t?t=0:t>e.length&&_m(),void 0===n?n=e.length-t:n>e.length-t&&_m(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===Fm.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof Fm?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return this.construct(this.segments,this.offset+(e=void 0===e?1:e),this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return 0===this.length}isPrefixOf(e){if(e.length<this.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}isImmediateParentOf(e){if(this.length+1!==e.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}forEach(e){for(let t=this.offset,n=this.limit();t<n;t++)e(this.segments[t])}toArray(){return this.segments.slice(this.offset,this.limit())}static comparator(e,t){const n=Math.min(e.length,t.length);for(let r=0;r<n;r++){const n=e.get(r),i=t.get(r);if(n<i)return-1;if(n>i)return 1}return e.length<t.length?-1:e.length>t.length?1:0}}class Um extends Fm{construct(e,t,n){return new Um(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...e){const t=[];for(const n of e){if(0<=n.indexOf("//"))throw new bm(wm.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter(e=>0<e.length))}return new Um(t)}static emptyPath(){return new Um([])}}const Vm=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class qm extends Fm{construct(e,t,n){return new qm(e,t,n)}static isValidIdentifier(e){return Vm.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),e=!qm.isValidIdentifier(e)?"`"+e+"`":e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new qm(["__name__"])}static fromServerFormat(e){const t=[];let n="",r=0;var i=()=>{if(0===n.length)throw new bm(wm.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let s=!1;for(;r<e.length;){const t=e[r];if("\\"===t){if(r+1===e.length)throw new bm(wm.INVALID_ARGUMENT,"Path has trailing escape character: "+e);const t=e[r+1];if("\\"!==t&&"."!==t&&"`"!==t)throw new bm(wm.INVALID_ARGUMENT,"Path has invalid escape sequence: "+e);n+=t,r+=2}else"`"===t?s=!s:"."!==t||s?n+=t:i(),r++}if(i(),s)throw new bm(wm.INVALID_ARGUMENT,"Unterminated ` in path: "+e);return new qm(t)}static emptyPath(){return new qm([])}}class Bm{constructor(e){this.path=e}static fromPath(e){return new Bm(Um.fromString(e))}static fromName(e){return new Bm(Um.fromString(e).popFirst(5))}static empty(){return new Bm(Um.emptyPath())}get collectionGroup(){return this.path.popLast().lastSegment()}hasCollectionId(e){return 2<=this.path.length&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return null!==e&&0===Um.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return Um.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new Bm(new Um(e.slice()))}}class jm{constructor(e,t,n,r){this.indexId=e,this.collectionGroup=t,this.fields=n,this.indexState=r}}function zm(e){return e.fields.find(e=>2===e.kind)}function $m(e){return e.fields.filter(e=>2!==e.kind)}jm.UNKNOWN_ID=-1;class Km{constructor(e,t){this.fieldPath=e,this.kind=t}}class Wm{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new Wm(0,Qm.min())}}function Gm(e,t){var n=e.toTimestamp().seconds,r=e.toTimestamp().nanoseconds+1,r=Mm.fromTimestamp(1e9===r?new Lm(n+1,0):new Lm(n,r));return new Qm(r,Bm.empty(),t)}function Hm(e){return new Qm(e.readTime,e.key,-1)}class Qm{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new Qm(Mm.min(),Bm.empty(),-1)}static max(){return new Qm(Mm.max(),Bm.empty(),-1)}}function Jm(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=Bm.comparator(e.documentKey,t.documentKey),0!==n?n:Dm(e.largestBatchId,t.largestBatchId))}const Ym="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class Xm{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function Zm(e){if(e.code!==wm.FAILED_PRECONDITION||e.message!==Ym)throw e;fm("LocalStore","Unexpectedly lost primary lease")}class ev{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e(e=>{this.isDone=!0,this.result=e,this.nextCallback&&this.nextCallback(e)},e=>{this.isDone=!0,this.error=e,this.catchCallback&&this.catchCallback(e)})}catch(e){return this.next(void 0,e)}next(r,i){return this.callbackAttached&&_m(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(i,this.error):this.wrapSuccess(r,this.result):new ev((t,n)=>{this.nextCallback=e=>{this.wrapSuccess(r,e).next(t,n)},this.catchCallback=e=>{this.wrapFailure(i,e).next(t,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{var t=e();return t instanceof ev?t:ev.resolve(t)}catch(e){return ev.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):ev.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):ev.reject(t)}static resolve(n){return new ev((e,t)=>{e(n)})}static reject(n){return new ev((e,t)=>{t(n)})}static waitFor(e){return new ev((t,n)=>{let r=0,i=0,s=!1;e.forEach(e=>{++r,e.next(()=>{++i,s&&i===r&&t()},e=>n(e))}),s=!0,i===r&&t()})}static or(e){let t=ev.resolve(!1);for(const n of e)t=t.next(e=>e?ev.resolve(e):n());return t}static forEach(e,n){const r=[];return e.forEach((e,t)=>{r.push(n.call(this,e,t))}),this.waitFor(r)}static mapArray(o,c){return new ev((t,n)=>{const r=o.length,i=new Array(r);let s=0;for(let e=0;e<r;e++){const a=e;c(o[a]).next(e=>{i[a]=e,++s,s===r&&t(i)},e=>n(e))}})}static doWhile(r,i){return new ev((e,t)=>{const n=()=>{!0===r()?i().next(()=>{n()},t):e()};n()})}}class tv{static open(e,t,n,r){try{return new tv(t,e.transaction(r,n))}catch(e){throw new sv(t,e)}}constructor(n,e){this.action=n,this.transaction=e,this.aborted=!1,this.V=new Im,this.transaction.oncomplete=()=>{this.V.resolve()},this.transaction.onabort=()=>{e.error?this.V.reject(new sv(n,e.error)):this.V.resolve()},this.transaction.onerror=e=>{var t=uv(e.target.error);this.V.reject(new sv(n,t))}}get m(){return this.V.promise}abort(e){e&&this.V.reject(e),this.aborted||(fm("SimpleDb","Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}g(){const e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){var t=this.transaction.objectStore(e);return new ov(t)}}class nv{static delete(e){return fm("SimpleDb","Removing database:",e),cv(window.indexedDB.deleteDatabase(e)).toPromise()}static p(){if(!R())return!1;if(nv.S())return!0;const e=b(),t=nv.D(e),n=0<t&&t<10,r=rv(e),i=0<r&&r<4.5;return!(0<e.indexOf("MSIE ")||0<e.indexOf("Trident/")||0<e.indexOf("Edge/")||n||i)}static S(){var e;return"undefined"!=typeof process&&"YES"===(null===(e=process.__PRIVATE_env)||void 0===e?void 0:e.v)}static C(e,t){return e.store(t)}static D(e){const t=e.match(/i(?:phone|pad|pod) os ([\d_]+)/i),n=t?t[1].split("_").slice(0,2).join("."):"-1";return Number(n)}constructor(e,t,n){this.name=e,this.version=t,this.F=n,12.2===nv.D(b())&&gm("Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.")}async M(s){return this.db||(fm("SimpleDb","Opening database:",this.name),this.db=await new Promise((n,r)=>{const i=indexedDB.open(this.name,this.version);i.onsuccess=e=>{var t=e.target.result;n(t)},i.onblocked=()=>{r(new sv(s,"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed."))},i.onerror=e=>{var t=e.target.error;"VersionError"===t.name?r(new bm(wm.FAILED_PRECONDITION,"A newer version of the Firestore SDK was previously used and so the persisted data is not compatible with the version of the SDK you are now using. The SDK will operate with persistence disabled. If you need persistence, please re-upgrade to a newer version of the SDK or else clear the persisted IndexedDB data for your app to start fresh.")):"InvalidStateError"===t.name?r(new bm(wm.FAILED_PRECONDITION,"Unable to open an IndexedDB connection. This could be due to running in a private browsing session on a browser whose private browsing sessions do not support IndexedDB: "+t)):r(new sv(s,t))},i.onupgradeneeded=e=>{fm("SimpleDb",'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);var t=e.target.result;this.F.O(t,i.transaction,e.oldVersion,this.version).next(()=>{fm("SimpleDb","Database upgrade to version "+this.version+" complete")})}})),this.N&&(this.db.onversionchange=e=>this.N(e)),this.db}L(t){this.N=t,this.db&&(this.db.onversionchange=e=>t(e))}async runTransaction(e,t,n,r){var i="readonly"===t;let s=0;for(;;){++s;try{this.db=await this.M(e);const t=tv.open(this.db,e,i?"readonly":"readwrite",n),s=r(t).next(e=>(t.g(),e)).catch(e=>(t.abort(e),ev.reject(e))).toPromise();return s.catch(()=>{}),await t.m,s}catch(e){const t=e,n="FirebaseError"!==t.name&&s<3;if(fm("SimpleDb","Transaction failed with error:",t.message,"Retrying:",n),this.close(),!n)return Promise.reject(t)}}}close(){this.db&&this.db.close(),this.db=void 0}}function rv(e){const t=e.match(/Android ([\d.]+)/i),n=t?t[1].split(".").slice(0,2).join("."):"-1";return Number(n)}class iv{constructor(e){this.B=e,this.k=!1,this.q=null}get isDone(){return this.k}get K(){return this.q}set cursor(e){this.B=e}done(){this.k=!0}$(e){this.q=e}delete(){return cv(this.B.delete())}}class sv extends bm{constructor(e,t){super(wm.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function av(e){return"IndexedDbTransactionError"===e.name}class ov{constructor(e){this.store=e}put(e,t){let n;return n=void 0!==t?(fm("SimpleDb","PUT",this.store.name,e,t),this.store.put(t,e)):(fm("SimpleDb","PUT",this.store.name,"<auto-key>",e),this.store.put(e)),cv(n)}add(e){return fm("SimpleDb","ADD",this.store.name,e,e),cv(this.store.add(e))}get(t){return cv(this.store.get(t)).next(e=>(fm("SimpleDb","GET",this.store.name,t,e=void 0===e?null:e),e))}delete(e){return fm("SimpleDb","DELETE",this.store.name,e),cv(this.store.delete(e))}count(){return fm("SimpleDb","COUNT",this.store.name),cv(this.store.count())}U(e,n){const t=this.options(e,n),r=t.index?this.store.index(t.index):this.store;if("function"==typeof r.getAll){const e=r.getAll(t.range);return new ev((t,n)=>{e.onerror=e=>{n(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}{const e=this.cursor(t),n=[];return this.W(e,(e,t)=>{n.push(t)}).next(()=>n)}}G(e,t){const r=this.store.getAll(e,null===t?void 0:t);return new ev((t,n)=>{r.onerror=e=>{n(e.target.error)},r.onsuccess=e=>{t(e.target.result)}})}j(e,t){fm("SimpleDb","DELETE ALL",this.store.name);const n=this.options(e,t);n.H=!1;var r=this.cursor(n);return this.W(r,(e,t,n)=>n.delete())}J(e,t){let n;t?n=e:(n={},t=e);var r=this.cursor(n);return this.W(r,t)}Y(i){const e=this.cursor({});return new ev((n,r)=>{e.onerror=e=>{var t=uv(e.target.error);r(t)},e.onsuccess=e=>{const t=e.target.result;t?i(t.primaryKey,t.value).next(e=>{e?t.continue():n()}):n()}})}W(e,s){const a=[];return new ev((i,t)=>{e.onerror=e=>{t(e.target.error)},e.onsuccess=e=>{const t=e.target.result;if(t){const n=new iv(t),r=s(t.primaryKey,t.value,n);if(r instanceof ev){const e=r.catch(e=>(n.done(),ev.reject(e)));a.push(e)}n.isDone?i():null===n.K?t.continue():t.continue(n.K)}else i()}}).next(()=>ev.waitFor(a))}options(e,t){let n;return void 0!==e&&("string"==typeof e?n=e:t=e),{index:n,range:t}}cursor(e){let t="next";if(e.reverse&&(t="prev"),e.index){const n=this.store.index(e.index);return e.H?n.openKeyCursor(e.range,t):n.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function cv(e){return new ev((n,r)=>{e.onsuccess=e=>{var t=e.target.result;n(t)},e.onerror=e=>{var t=uv(e.target.error);r(t)}})}let lv=!1;function uv(e){const t=nv.D(b());if(12.2<=t&&t<13){const t="An internal error was encountered in the Indexed Database server";if(0<=e.message.indexOf(t)){const e=new bm("internal",`IOS_INDEXEDDB_BUG1: IndexedDb has thrown '${t}'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.`);return lv||(lv=!0,setTimeout(()=>{throw e},0)),e}}return e}class hv{constructor(e,t){this.asyncQueue=e,this.Z=t,this.task=null}start(){this.X(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}X(e){fm("IndexBackfiller",`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{fm("IndexBackfiller",`Documents written: ${await this.Z.ee()}`)}catch(e){av(e)?fm("IndexBackfiller","Ignoring IndexedDB error during index backfill: ",e):await Zm(e)}await this.X(6e4)})}}class dv{constructor(e,t){this.localStore=e,this.persistence=t}async ee(t=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",e=>this.te(e,t))}te(e,t){const n=new Set;let r=t,i=!0;return ev.doWhile(()=>!0===i&&0<r,()=>this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>null===t||n.has(t)?void(i=!1):(fm("IndexBackfiller",`Processing collection: ${t}`),this.ne(e,t,r).next(e=>{r-=e,n.add(t)})))).next(()=>t-r)}ne(r,i,e){return this.localStore.indexManager.getMinOffsetFromCollectionGroup(r,i).next(n=>this.localStore.localDocuments.getNextDocuments(r,i,n,e).next(e=>{const t=e.changes;return this.localStore.indexManager.updateIndexEntries(r,t).next(()=>this.re(n,e)).next(e=>(fm("IndexBackfiller",`Updating offset: ${e}`),this.localStore.indexManager.updateCollectionGroup(r,i,e))).next(()=>t.size)}))}re(e,t){let r=e;return t.changes.forEach((e,t)=>{var n=Hm(t);0<Jm(n,r)&&(r=n)}),new Qm(r.readTime,r.documentKey,Math.max(t.batchId,e.largestBatchId))}}class pv{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.ie(e),this.se=e=>t.writeSequenceNumber(e))}ie(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){var e=++this.previousValue;return this.se&&this.se(e),e}}function fv(e){return null==e}function gv(e){return 0===e&&1/e==-1/0}function mv(e){return"number"==typeof e&&Number.isInteger(e)&&!gv(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}function vv(e){let t="";for(let n=0;n<e.length;n++)0<t.length&&(t=_v(t)),t=function(e,t){let n=t;const r=e.length;for(let i=0;i<r;i++){const r=e.charAt(i);switch(r){case"\0":n+="";break;case"":n+="";break;default:n+=r}}return n}(e.get(n),t);return _v(t)}function _v(e){return e+""}function yv(t){const n=t.length;if(ym(2<=n),2===n)return ym(""===t.charAt(0)&&""===t.charAt(1)),Um.emptyPath();const __PRIVATE_lastReasonableEscapeIndex=n-2,r=[];let i="";for(let a=0;a<n;){const n=t.indexOf("",a);switch((n<0||n>__PRIVATE_lastReasonableEscapeIndex)&&_m(),t.charAt(n+1)){case"":var s=t.substring(a,n);let e;0===i.length?e=s:(i+=s,e=i,i=""),r.push(e);break;case"":i+=t.substring(a,n),i+="\0";break;case"":i+=t.substring(a,n+1);break;default:_m()}a=n+2}return new Um(r)}pv.oe=-1;const wv=["userId","batchId"];function bv(e,t){return[e,vv(t)]}function Iv(e,t,n){return[e,vv(t),n]}const Tv={},Ev=["prefixPath","collectionGroup","readTime","documentId"],Cv=["prefixPath","collectionGroup","documentId"],Sv=["collectionGroup","readTime","prefixPath","documentId"],kv=["canonicalId","targetId"],Av=["targetId","path"],Nv=["path","targetId"],Rv=["collectionId","parent"],Pv=["indexId","uid"],Dv=["uid","sequenceNumber"],xv=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],Ov=["indexId","uid","orderedDocumentKey"],Lv=["userId","collectionPath","documentId"],Mv=["userId","collectionPath","largestBatchId"],Fv=["userId","collectionGroup","largestBatchId"],Uv=["mutationQueues","mutations","documentMutations","remoteDocuments","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries"],Vv=[...Uv,"documentOverlays"],qv=["mutationQueues","mutations","documentMutations","remoteDocumentsV14","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries","documentOverlays"],Bv=qv,jv=[...Bv,"indexConfiguration","indexState","indexEntries"],zv=jv,$v=[...jv,"globals"];class Kv extends Xm{constructor(e,t){super(),this._e=e,this.currentSequenceNumber=t}}function Wv(e,t){var n=e;return nv.C(n._e,t)}function Gv(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function Hv(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function Qv(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}class Jv{constructor(e,t){this.comparator=e,this.root=t||Xv.EMPTY}insert(e,t){return new Jv(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,Xv.BLACK,null,null))}remove(e){return new Jv(this.comparator,this.root.remove(e,this.comparator).copy(null,null,Xv.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){var n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:0<n&&(t=t.right)}return null}indexOf(e){let t=0,n=this.root;for(;!n.isEmpty();){var r=this.comparator(e,n.key);if(0===r)return t+n.left.size;n=r<0?n.left:(t+=n.left.size+1,n.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(n){this.inorderTraversal((e,t)=>(n(e,t),!1))}toString(){const n=[];return this.inorderTraversal((e,t)=>(n.push(`${e}:${t}`),!1)),`{${n.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new Yv(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new Yv(this.root,e,this.comparator,!1)}getReverseIterator(){return new Yv(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new Yv(this.root,e,this.comparator,!0)}}class Yv{constructor(e,t,n,r){this.isReverse=r,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?n(e.key,t):1,t&&r&&(i*=-1),i<0)e=this.isReverse?e.left:e.right;else{if(0===i){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();var t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return 0<this.nodeStack.length}peek(){if(0===this.nodeStack.length)return null;var e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class Xv{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:Xv.RED,this.left=null!=r?r:Xv.EMPTY,this.right=null!=i?i:Xv.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,n,r,i){return new Xv(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=r?r:this.left,null!=i?i:this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let r=this;var i=n(e,r.key);return r=i<0?r.copy(null,null,null,r.left.insert(e,t,n),null):0===i?r.copy(null,t,null,null,null):r.copy(null,null,null,null,r.right.insert(e,t,n)),r.fixUp()}removeMin(){if(this.left.isEmpty())return Xv.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let n,r=this;if(t(e,r.key)<0)r.left.isEmpty()||r.left.isRed()||r.left.left.isRed()||(r=r.moveRedLeft()),r=r.copy(null,null,null,r.left.remove(e,t),null);else{if(r.left.isRed()&&(r=r.rotateRight()),r.right.isEmpty()||r.right.isRed()||r.right.left.isRed()||(r=r.moveRedRight()),0===t(e,r.key)){if(r.right.isEmpty())return Xv.EMPTY;n=r.right.min(),r=r.copy(n.key,n.value,null,null,r.right.removeMin())}r=r.copy(null,null,null,null,r.right.remove(e,t))}return r.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){var e=this.copy(null,null,Xv.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){var e=this.copy(null,null,Xv.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){var e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){var e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw _m();if(this.right.isRed())throw _m();var e=this.left.check();if(e!==this.right.check())throw _m();return e+(this.isRed()?0:1)}}Xv.EMPTY=null,Xv.RED=!0,Xv.BLACK=!1,Xv.EMPTY=new class{constructor(){this.size=0}get key(){throw _m()}get value(){throw _m()}get color(){throw _m()}get left(){throw _m()}get right(){throw _m()}copy(e,t,n,r,i){return this}insert(e,t,n){return new Xv(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class Zv{constructor(e){this.comparator=e,this.data=new Jv(this.comparator)}has(e){return null!==this.data.get(e)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(n){this.data.inorderTraversal((e,t)=>(n(e),!1))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){var r=n.getNext();if(0<=this.comparator(r.key,e[1]))return;t(r.key)}}forEachWhile(e,t){let n;for(n=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();n.hasNext();)if(!e(n.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new e_(this.data.getIterator())}getIteratorFrom(e){return new e_(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size<e.size&&(t=e,e=this),e.forEach(e=>{t=t.add(e)}),t}isEqual(e){if(!(e instanceof Zv))return!1;if(this.size!==e.size)return!1;const t=this.data.getIterator(),n=e.data.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(0!==this.comparator(e,r))return!1}return!0}toArray(){const t=[];return this.forEach(e=>{t.push(e)}),t}toString(){const t=[];return this.forEach(e=>t.push(e)),"SortedSet("+t.toString()+")"}copy(e){const t=new Zv(this.comparator);return t.data=e,t}}class e_{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function t_(e){return e.hasNext()?e.getNext():void 0}class n_{constructor(e){(this.fields=e).sort(qm.comparator)}static empty(){return new n_([])}unionWith(e){let t=new Zv(qm.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new n_(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return xm(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class r_ extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class i_{constructor(e){this.binaryString=e}static fromBase64String(e){var t=function(e){try{return atob(e)}catch(e){throw"undefined"!=typeof DOMException&&e instanceof DOMException?new r_("Invalid base64 string: "+e):e}}(e);return new i_(t)}static fromUint8Array(e){var t=function(e){let t="";for(let n=0;n<e.length;++n)t+=String.fromCharCode(e[n]);return t}(e);return new i_(t)}[Symbol.iterator](){let e=0;return{next:()=>e<this.binaryString.length?{value:this.binaryString.charCodeAt(e++),done:!1}:{value:void 0,done:!0}}}toBase64(){return e=this.binaryString,btoa(e);var e}toUint8Array(){return function(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}(this.binaryString)}approximateByteSize(){return 2*this.binaryString.length}compareTo(e){return Dm(this.binaryString,e.binaryString)}isEqual(e){return this.binaryString===e.binaryString}}i_.EMPTY_BYTE_STRING=new i_("");const s_=new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);function a_(t){if(ym(!!t),"string"!=typeof t)return{seconds:o_(t.seconds),nanos:o_(t.nanos)};{let e=0;var n=s_.exec(t);ym(!!n),n[1]&&(n=((n=n[1])+"000000000").substr(0,9),e=Number(n));const r=new Date(t);return{seconds:Math.floor(r.getTime()/1e3),nanos:e}}}function o_(e){return"number"==typeof e?e:"string"==typeof e?Number(e):0}function c_(e){return"string"==typeof e?i_.fromBase64String(e):i_.fromUint8Array(e)}function l_(e){var t;return"server_timestamp"===(null===(t=((null===(t=null==e?void 0:e.mapValue)||void 0===t?void 0:t.fields)||{}).__type__)||void 0===t?void 0:t.stringValue)}function u_(e){var t=e.mapValue.fields.__previous_value__;return l_(t)?u_(t):t}function h_(e){var t=a_(e.mapValue.fields.__local_write_time__.timestampValue);return new Lm(t.seconds,t.nanos)}class d_{constructor(e,t,n,r,i,s,a,o,c){this.databaseId=e,this.appId=t,this.persistenceKey=n,this.host=r,this.ssl=i,this.forceLongPolling=s,this.autoDetectLongPolling=a,this.longPollingOptions=o,this.useFetchStreams=c}}class p_{constructor(e,t){this.projectId=e,this.database=t||"(default)"}static empty(){return new p_("","")}get isDefaultDatabase(){return"(default)"===this.database}isEqual(e){return e instanceof p_&&e.projectId===this.projectId&&e.database===this.database}}const f_={mapValue:{fields:{__type__:{stringValue:"__max__"}}}},g_={nullValue:"NULL_VALUE"};function m_(e){return"nullValue"in e?0:"booleanValue"in e?1:"integerValue"in e||"doubleValue"in e?2:"timestampValue"in e?3:"stringValue"in e?5:"bytesValue"in e?6:"referenceValue"in e?7:"geoPointValue"in e?8:"arrayValue"in e?9:"mapValue"in e?l_(e)?4:P_(e)?9007199254740991:N_(e)?10:11:_m()}function v_(e,t){if(e===t)return!0;var n,r,i=m_(e);if(i!==m_(t))return!1;switch(i){case 0:case 9007199254740991:return!0;case 1:return e.booleanValue===t.booleanValue;case 4:return h_(e).isEqual(h_(t));case 3:return function(e,t){if("string"==typeof e.timestampValue&&"string"==typeof t.timestampValue&&e.timestampValue.length===t.timestampValue.length)return e.timestampValue===t.timestampValue;var n=a_(e.timestampValue),r=a_(t.timestampValue);return n.seconds===r.seconds&&n.nanos===r.nanos}(e,t);case 5:return e.stringValue===t.stringValue;case 6:return r=t,c_(e.bytesValue).isEqual(c_(r.bytesValue));case 7:return e.referenceValue===t.referenceValue;case 8:return n=t,o_((r=e).geoPointValue.latitude)===o_(n.geoPointValue.latitude)&&o_(r.geoPointValue.longitude)===o_(n.geoPointValue.longitude);case 2:return function(e,t){if("integerValue"in e&&"integerValue"in t)return o_(e.integerValue)===o_(t.integerValue);if("doubleValue"in e&&"doubleValue"in t){var n=o_(e.doubleValue),r=o_(t.doubleValue);return n===r?gv(n)===gv(r):isNaN(n)&&isNaN(r)}return!1}(e,t);case 9:return xm(e.arrayValue.values||[],t.arrayValue.values||[],v_);case 10:case 11:return function(e,t){const n=e.mapValue.fields||{},r=t.mapValue.fields||{};if(Gv(n)!==Gv(r))return!1;for(const e in n)if(n.hasOwnProperty(e)&&(void 0===r[e]||!v_(n[e],r[e])))return!1;return!0}(e,t);default:return _m()}}function __(e,t){return void 0!==(e.values||[]).find(e=>v_(e,t))}function y_(e,t){if(e===t)return 0;var n,r,i,s,a,o,c,l=m_(e),u=m_(t);if(l!==u)return Dm(l,u);switch(l){case 0:case 9007199254740991:return 0;case 1:return Dm(e.booleanValue,t.booleanValue);case 2:return a=t,o=o_((s=e).integerValue||s.doubleValue),c=o_(a.integerValue||a.doubleValue),o<c?-1:c<o?1:o===c?0:isNaN(o)?isNaN(c)?0:-1:1;case 3:return w_(e.timestampValue,t.timestampValue);case 4:return w_(h_(e),h_(t));case 5:return Dm(e.stringValue,t.stringValue);case 6:return function(e,t){const n=c_(e),r=c_(t);return n.compareTo(r)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){var n=e.split("/"),r=t.split("/");for(let i=0;i<n.length&&i<r.length;i++){const t=Dm(n[i],r[i]);if(0!==t)return t}return Dm(n.length,r.length)}(e.referenceValue,t.referenceValue);case 8:return n=e.geoPointValue,r=t.geoPointValue,0!==(i=Dm(o_(n.latitude),o_(r.latitude)))?i:Dm(o_(n.longitude),o_(r.longitude));case 9:return b_(e.arrayValue,t.arrayValue);case 10:return n=e.mapValue,r=t.mapValue,o=n.fields||{},c=r.fields||{},o=null===(i=o.value)||void 0===i?void 0:i.arrayValue,c=null===(i=c.value)||void 0===i?void 0:i.arrayValue,0!==(i=Dm((null===(i=null==o?void 0:o.values)||void 0===i?void 0:i.length)||0,(null===(i=null==c?void 0:c.values)||void 0===i?void 0:i.length)||0))?i:b_(o,c);case 11:return function(e,t){if(e===f_.mapValue&&t===f_.mapValue)return 0;if(e===f_.mapValue)return 1;if(t===f_.mapValue)return-1;const n=e.fields||{},r=Object.keys(n),i=t.fields||{},s=Object.keys(i);r.sort(),s.sort();for(let o=0;o<r.length&&o<s.length;++o){const t=Dm(r[o],s[o]);if(0!==t)return t;var a=y_(n[r[o]],i[s[o]]);if(0!==a)return a}return Dm(r.length,s.length)}(e.mapValue,t.mapValue);default:throw _m()}}function w_(e,t){if("string"==typeof e&&"string"==typeof t&&e.length===t.length)return Dm(e,t);var n=a_(e),r=a_(t),i=Dm(n.seconds,r.seconds);return 0!==i?i:Dm(n.nanos,r.nanos)}function b_(e,t){var n=e.values||[],r=t.values||[];for(let i=0;i<n.length&&i<r.length;++i){const t=y_(n[i],r[i]);if(t)return t}return Dm(n.length,r.length)}function I_(e){return function s(e){return"nullValue"in e?"null":"booleanValue"in e?""+e.booleanValue:"integerValue"in e?""+e.integerValue:"doubleValue"in e?""+e.doubleValue:"timestampValue"in e?function(e){const t=a_(e);return`time(${t.seconds},${t.nanos})`}(e.timestampValue):"stringValue"in e?e.stringValue:"bytesValue"in e?function(e){return c_(e).toBase64()}(e.bytesValue):"referenceValue"in e?function(e){return Bm.fromName(e).toString()}(e.referenceValue):"geoPointValue"in e?function(e){return`geo(${e.latitude},${e.longitude})`}(e.geoPointValue):"arrayValue"in e?function(e){let t="[",n=!0;for(const r of e.values||[])n?n=!1:t+=",",t+=s(r);return t+"]"}(e.arrayValue):"mapValue"in e?function(e){const t=Object.keys(e.fields||{}).sort();let n="{",r=!0;for(const i of t)r?r=!1:n+=",",n+=`${i}:${s(e.fields[i])}`;return n+"}"}(e.mapValue):_m()}(e)}function T_(e,t){return{referenceValue:`projects/${e.projectId}/databases/${e.database}/documents/${t.path.canonicalString()}`}}function E_(e){return!!e&&"integerValue"in e}function C_(e){return!!e&&"arrayValue"in e}function S_(e){return e&&"nullValue"in e}function k_(e){return e&&"doubleValue"in e&&isNaN(Number(e.doubleValue))}function A_(e){return e&&"mapValue"in e}function N_(e){var t;return"__vector__"===(null===(t=((null===(t=null==e?void 0:e.mapValue)||void 0===t?void 0:t.fields)||{}).__type__)||void 0===t?void 0:t.stringValue)}function R_(t){if(t.geoPointValue)return{geoPointValue:Object.assign({},t.geoPointValue)};if(t.timestampValue&&"object"==typeof t.timestampValue)return{timestampValue:Object.assign({},t.timestampValue)};if(t.mapValue){const n={mapValue:{fields:{}}};return Hv(t.mapValue.fields,(e,t)=>n.mapValue.fields[e]=R_(t)),n}if(t.arrayValue){const r={arrayValue:{values:[]}};for(let e=0;e<(t.arrayValue.values||[]).length;++e)r.arrayValue.values[e]=R_(t.arrayValue.values[e]);return r}return Object.assign({},t)}function P_(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}const D_={mapValue:{fields:{__type__:{stringValue:"__vector__"},value:{arrayValue:{}}}}};function x_(e,t){var n=y_(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function O_(e,t){var n=y_(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class L_{constructor(e){this.value=e}static empty(){return new L_({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t<n.length-1;++t)if(e=(e.mapValue.fields||{})[n.get(t)],!A_(e))return null;return e=(e.mapValue.fields||{})[n.lastSegment()],e||null}}set(e,t){this.getFieldsMap(e.popLast())[e.lastSegment()]=R_(t)}setAll(e){let n=qm.emptyPath(),r={},i=[];e.forEach((e,t)=>{if(!n.isImmediateParentOf(t)){const e=this.getFieldsMap(n);this.applyChanges(e,r,i),r={},i=[],n=t.popLast()}e?r[t.lastSegment()]=R_(e):i.push(t.lastSegment())});var t=this.getFieldsMap(n);this.applyChanges(t,r,i)}delete(e){const t=this.field(e.popLast());A_(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return v_(this.value,e.value)}getFieldsMap(t){let n=this.value;n.mapValue.fields||(n.mapValue={fields:{}});for(let r=0;r<t.length;++r){let e=n.mapValue.fields[t.get(r)];A_(e)&&e.mapValue.fields||(e={mapValue:{fields:{}}},n.mapValue.fields[t.get(r)]=e),n=e}return n.mapValue.fields}applyChanges(n,e,t){Hv(e,(e,t)=>n[e]=t);for(const e of t)delete n[e]}clone(){return new L_(R_(this.value))}}class M_{constructor(e,t,n,r,i,s,a){this.key=e,this.documentType=t,this.version=n,this.readTime=r,this.createTime=i,this.data=s,this.documentState=a}static newInvalidDocument(e){return new M_(e,0,Mm.min(),Mm.min(),Mm.min(),L_.empty(),0)}static newFoundDocument(e,t,n,r){return new M_(e,1,t,Mm.min(),n,r,0)}static newNoDocument(e,t){return new M_(e,2,t,Mm.min(),Mm.min(),L_.empty(),0)}static newUnknownDocument(e,t){return new M_(e,3,t,Mm.min(),Mm.min(),L_.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(Mm.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=L_.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=L_.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=Mm.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(e){return e instanceof M_&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new M_(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class F_{constructor(e,t){this.position=e,this.inclusive=t}}function U_(e,t,n){let r=0;for(let i=0;i<e.position.length;i++){const s=t[i],a=e.position[i];if(r=s.field.isKeyField()?Bm.comparator(Bm.fromName(a.referenceValue),n.key):y_(a,n.data.field(s.field)),"desc"===s.dir&&(r*=-1),0!==r)break}return r}function V_(e,t){if(null===e)return null===t;if(null===t)return!1;if(e.inclusive!==t.inclusive||e.position.length!==t.position.length)return!1;for(let n=0;n<e.position.length;n++)if(!v_(e.position[n],t.position[n]))return!1;return!0}class q_{constructor(e,t="asc"){this.field=e,this.dir=t}}class B_{}class j_ extends B_{constructor(e,t,n){super(),this.field=e,this.op=t,this.value=n}static create(e,t,n){return e.isKeyField()?"in"===t||"not-in"===t?this.createKeyFieldInFilter(e,t,n):new J_(e,t,n):"array-contains"===t?new ey(e,n):"in"===t?new ty(e,n):"not-in"===t?new ny(e,n):"array-contains-any"===t?new ry(e,n):new j_(e,t,n)}static createKeyFieldInFilter(e,t,n){return new("in"===t?Y_:X_)(e,n)}matches(e){var t=e.data.field(this.field);return"!="===this.op?null!==t&&this.matchesComparison(y_(t,this.value)):null!==t&&m_(this.value)===m_(t)&&this.matchesComparison(y_(t,this.value))}matchesComparison(e){switch(this.op){case"<":return e<0;case"<=":return e<=0;case"==":return 0===e;case"!=":return 0!==e;case">":return 0<e;case">=":return 0<=e;default:return _m()}}isInequality(){return 0<=["<","<=",">",">=","!=","not-in"].indexOf(this.op)}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class z_ extends B_{constructor(e,t){super(),this.filters=e,this.op=t,this.ae=null}static create(e,t){return new z_(e,t)}matches(t){return $_(this)?void 0===this.filters.find(e=>!e.matches(t)):void 0!==this.filters.find(e=>e.matches(t))}getFlattenedFilters(){return null!==this.ae||(this.ae=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.ae}getFilters(){return Object.assign([],this.filters)}}function $_(e){return"and"===e.op}function K_(e){return"or"===e.op}function W_(e){return G_(e)&&$_(e)}function G_(e){for(const t of e.filters)if(t instanceof z_)return!1;return!0}function H_(e,t){var n=e.filters.concat(t);return z_.create(n,e.op)}function Q_(e){return e instanceof j_?`${(t=e).field.canonicalString()} ${t.op} ${I_(t.value)}`:e instanceof z_?(e=e).op.toString()+" {"+e.getFilters().map(Q_).join(" ,")+"}":"Filter";var t}class J_ extends j_{constructor(e,t,n){super(e,t,n),this.key=Bm.fromName(n.referenceValue)}matches(e){var t=Bm.comparator(e.key,this.key);return this.matchesComparison(t)}}class Y_ extends j_{constructor(e,t){super(e,"in",t),this.keys=Z_(0,t)}matches(t){return this.keys.some(e=>e.isEqual(t.key))}}class X_ extends j_{constructor(e,t){super(e,"not-in",t),this.keys=Z_(0,t)}matches(t){return!this.keys.some(e=>e.isEqual(t.key))}}function Z_(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map(e=>Bm.fromName(e.referenceValue))}class ey extends j_{constructor(e,t){super(e,"array-contains",t)}matches(e){var t=e.data.field(this.field);return C_(t)&&__(t.arrayValue,this.value)}}class ty extends j_{constructor(e,t){super(e,"in",t)}matches(e){var t=e.data.field(this.field);return null!==t&&__(this.value.arrayValue,t)}}class ny extends j_{constructor(e,t){super(e,"not-in",t)}matches(e){if(__(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;var t=e.data.field(this.field);return null!==t&&!__(this.value.arrayValue,t)}}class ry extends j_{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!C_(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>__(this.value.arrayValue,e))}}class iy{constructor(e,t=null,n=[],r=[],i=null,s=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=r,this.limit=i,this.startAt=s,this.endAt=a,this.ue=null}}function sy(e,t=null,n=[],r=[],i=null,s=null,a=null){return new iy(e,t,n,r,i,s,a)}function ay(e){const t=e;if(null===t.ue){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map(e=>function t(e){if(e instanceof j_)return e.field.canonicalString()+e.op.toString()+I_(e.value);if(W_(e))return e.filters.map(e=>t(e)).join(",");var n=e.filters.map(e=>t(e)).join(",");return`${e.op}(${n})`}(e)).join(","),e+="|ob:",e+=t.orderBy.map(e=>function(e){return e.field.canonicalString()+e.dir}(e)).join(","),fv(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map(e=>I_(e)).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map(e=>I_(e)).join(",")),t.ue=e}return t.ue}function oy(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;i<e.orderBy.length;i++)if(n=e.orderBy[i],r=t.orderBy[i],n.dir!==r.dir||!n.field.isEqual(r.field))return!1;var n,r;if(e.filters.length!==t.filters.length)return!1;for(let s=0;s<e.filters.length;s++)if(!function r(e,t){return e instanceof j_?(n=e,(s=t)instanceof j_&&n.op===s.op&&n.field.isEqual(s.field)&&v_(n.value,s.value)):e instanceof z_?(i=t)instanceof z_&&e.op===i.op&&e.filters.length===i.filters.length&&e.filters.reduce((e,t,n)=>e&&r(t,i.filters[n]),!0):void _m();var i,n,s}(e.filters[s],t.filters[s]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!V_(e.startAt,t.startAt)&&V_(e.endAt,t.endAt)}function cy(e){return Bm.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function ly(e,t){return e.filters.filter(e=>e instanceof j_&&e.field.isEqual(t))}function uy(t,n,r){let i=g_,s=!0;for(const r of ly(t,n)){let e=g_,t=!0;switch(r.op){case"<":case"<=":e="nullValue"in(a=r.value)?g_:"booleanValue"in a?{booleanValue:!1}:"integerValue"in a||"doubleValue"in a?{doubleValue:NaN}:"timestampValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"stringValue"in a?{stringValue:""}:"bytesValue"in a?{bytesValue:""}:"referenceValue"in a?T_(p_.empty(),Bm.empty()):"geoPointValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in a?{arrayValue:{}}:"mapValue"in a?N_(a)?D_:{mapValue:{}}:_m();break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=g_}x_({value:i,inclusive:s},{value:e,inclusive:t})<0&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e<t.orderBy.length;++e)if(t.orderBy[e].field.isEqual(n)){const t=r.position[e];x_({value:i,inclusive:s},{value:t,inclusive:r.inclusive})<0&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}function hy(t,n,r){let i=f_,s=!0;for(const r of ly(t,n)){let e=f_,t=!0;switch(r.op){case">=":case">":e="nullValue"in(a=r.value)?{booleanValue:!1}:"booleanValue"in a?{doubleValue:NaN}:"integerValue"in a||"doubleValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"timestampValue"in a?{stringValue:""}:"stringValue"in a?{bytesValue:""}:"bytesValue"in a?T_(p_.empty(),Bm.empty()):"referenceValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in a?{arrayValue:{}}:"arrayValue"in a?D_:"mapValue"in a?N_(a)?{mapValue:{}}:f_:_m(),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=f_}0<O_({value:i,inclusive:s},{value:e,inclusive:t})&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e<t.orderBy.length;++e)if(t.orderBy[e].field.isEqual(n)){const t=r.position[e];0<O_({value:i,inclusive:s},{value:t,inclusive:r.inclusive})&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}class dy{constructor(e,t=null,n=[],r=[],i=null,s="F",a=null,o=null){this.path=e,this.collectionGroup=t,this.explicitOrderBy=n,this.filters=r,this.limit=i,this.limitType=s,this.startAt=a,this.endAt=o,this.ce=null,this.le=null,this.he=null,this.startAt,this.endAt}}function py(e,t,n,r,i,s,a,o){return new dy(e,t,n,r,i,s,a,o)}function fy(e){return new dy(e)}function gy(e){return 0===e.filters.length&&null===e.limit&&null==e.startAt&&null==e.endAt&&(0===e.explicitOrderBy.length||1===e.explicitOrderBy.length&&e.explicitOrderBy[0].field.isKeyField())}function my(e){return null!==e.collectionGroup}function vy(t){const n=t;if(null===n.ce){n.ce=[];const t=new Set;for(const i of n.explicitOrderBy)n.ce.push(i),t.add(i.field.canonicalString());const r=0<n.explicitOrderBy.length?n.explicitOrderBy[n.explicitOrderBy.length-1].dir:"asc",e=function(e){let t=new Zv(qm.comparator);return e.filters.forEach(e=>{e.getFlattenedFilters().forEach(e=>{e.isInequality()&&(t=t.add(e.field))})}),t}(n);e.forEach(e=>{t.has(e.canonicalString())||e.isKeyField()||n.ce.push(new q_(e,r))}),t.has(qm.keyField().canonicalString())||n.ce.push(new q_(qm.keyField(),r))}return n.ce}function _y(e){const t=e;return t.le||(t.le=function(e,t){if("F"===e.limitType)return sy(e.path,e.collectionGroup,t,e.filters,e.limit,e.startAt,e.endAt);{t=t.map(e=>{var t="desc"===e.dir?"asc":"desc";return new q_(e.field,t)});var n=e.endAt?new F_(e.endAt.position,e.endAt.inclusive):null,r=e.startAt?new F_(e.startAt.position,e.startAt.inclusive):null;return sy(e.path,e.collectionGroup,t,e.filters,e.limit,n,r)}}(t,vy(e))),t.le}function yy(e,t){var n=e.filters.concat([t]);return new dy(e.path,e.collectionGroup,e.explicitOrderBy.slice(),n,e.limit,e.limitType,e.startAt,e.endAt)}function wy(e,t,n){return new dy(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,n,e.startAt,e.endAt)}function by(e,t){return oy(_y(e),_y(t))&&e.limitType===t.limitType}function Iy(e){return`${ay(_y(e))}|lt:${e.limitType}`}function Ty(e){return`Query(target=${function(e){let t=e.path.canonicalString();return null!==e.collectionGroup&&(t+=" collectionGroup="+e.collectionGroup),0<e.filters.length&&(t+=`, filters: [${e.filters.map(e=>Q_(e)).join(", ")}]`),fv(e.limit)||(t+=", limit: "+e.limit),0<e.orderBy.length&&(t+=`, orderBy: [${e.orderBy.map(e=>function(e){return`${e.field.canonicalString()} (${e.dir})`}(e)).join(", ")}]`),e.startAt&&(t+=", startAt: ",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map(e=>I_(e)).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>I_(e)).join(",")),`Target(${t})`}(_y(e))}; limitType=${e.limitType})`}function Ey(e,t){return t.isFoundDocument()&&(i=e,a=(s=t).key.path,null!==i.collectionGroup?s.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(a):Bm.isDocumentKey(i.path)?i.path.isEqual(a):i.path.isImmediateParentOf(a))&&function(e,t){for(const n of vy(e))if(!n.field.isKeyField()&&null===t.data.field(n.field))return;return 1}(e,t)&&function(e,t){for(const n of e.filters)if(!n.matches(t))return;return 1}(e,t)&&(i=t,(!(t=e).startAt||(n=t.startAt,e=vy(t),r=U_(n,e,i),n.inclusive?r<=0:r<0))&&(!t.endAt||(n=t.endAt,t=vy(t),r=U_(n,t,i),n.inclusive?0<=r:0<r)));var n,r,i,s,a}function Cy(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}function Sy(i){return(e,t)=>{let n=!1;for(const r of vy(i)){const i=function(e,t,n){var r=e.field.isKeyField()?Bm.comparator(t.key,n.key):function(e,t,n){var r=t.data.field(e),i=n.data.field(e);return null!==r&&null!==i?y_(r,i):_m()}(e.field,t,n);switch(e.dir){case"asc":return r;case"desc":return-1*r;default:return _m()}}(r,e,t);if(0!==i)return i;n=n||r.field.isKeyField()}return 0}}class ky{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){const t=this.mapKeyFn(e),n=this.inner[t];if(void 0!==n)for(const[t,r]of n)if(this.equalsFn(t,e))return r}has(e){return void 0!==this.get(e)}set(e,t){const n=this.mapKeyFn(e),r=this.inner[n];if(void 0===r)return this.inner[n]=[[e,t]],void this.innerSize++;for(let i=0;i<r.length;i++)if(this.equalsFn(r[i][0],e))return void(r[i]=[e,t]);r.push([e,t]),this.innerSize++}delete(e){const t=this.mapKeyFn(e),n=this.inner[t];if(void 0===n)return!1;for(let r=0;r<n.length;r++)if(this.equalsFn(n[r][0],e))return 1===n.length?delete this.inner[t]:n.splice(r,1),this.innerSize--,!0;return!1}forEach(r){Hv(this.inner,(e,t)=>{for(const[e,n]of t)r(e,n)})}isEmpty(){return Qv(this.inner)}size(){return this.innerSize}}const Ay=new Jv(Bm.comparator);const Ny=new Jv(Bm.comparator);function Ry(...e){let t=Ny;for(const n of e)t=t.insert(n.key,n);return t}function Py(e){let n=Ny;return e.forEach((e,t)=>n=n.insert(e,t.overlayedDocument)),n}function Dy(){return new ky(e=>e.toString(),(e,t)=>e.isEqual(t))}const xy=new Jv(Bm.comparator),Oy=new Zv(Bm.comparator);function Ly(...e){let t=Oy;for(const n of e)t=t.add(n);return t}const My=new Zv(Dm);function Fy(e,t){if(e.useProto3Json){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:gv(t)?"-0":t}}function Uy(e){return{integerValue:""+e}}function Vy(e,t){return mv(t)?Uy(t):Fy(e,t)}class qy{constructor(){this._=void 0}}function By(e,t){return e instanceof Gy?E_(e=t)||(e=e)&&"doubleValue"in e?t:{integerValue:0}:null}class jy extends qy{}class zy extends qy{constructor(e){super(),this.elements=e}}function $y(e,t){const n=Qy(t);for(const t of e.elements)n.some(e=>v_(e,t))||n.push(t);return{arrayValue:{values:n}}}class Ky extends qy{constructor(e){super(),this.elements=e}}function Wy(e,t){let n=Qy(t);for(const t of e.elements)n=n.filter(e=>!v_(e,t));return{arrayValue:{values:n}}}class Gy extends qy{constructor(e,t){super(),this.serializer=e,this.Pe=t}}function Hy(e){return o_(e.integerValue||e.doubleValue)}function Qy(e){return C_(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class Jy{constructor(e,t){this.field=e,this.transform=t}}class Yy{constructor(e,t){this.version=e,this.transformResults=t}}class Xy{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new Xy}static exists(e){return new Xy(void 0,e)}static updateTime(e){return new Xy(e)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function Zy(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class ew{}function tw(e,n){if(!e.hasLocalMutations||n&&0===n.fields.length)return null;if(null===n)return e.isNoDocument()?new uw(e.key,Xy.none()):new sw(e.key,e.data,Xy.none());{const i=e.data,s=L_.empty();let t=new Zv(qm.comparator);for(var r of n.fields)if(!t.has(r)){let e=i.field(r);null===e&&1<r.length&&(r=r.popLast(),e=i.field(r)),null===e?s.delete(r):s.set(r,e),t=t.add(r)}return new aw(e.key,s,new n_(t.toArray()),Xy.none())}}function nw(e,t,n){e instanceof sw?function(e,t,n){const r=e.value.clone(),i=cw(e.fieldTransforms,t,n.transformResults);r.setAll(i),t.convertToFoundDocument(n.version,r).setHasCommittedMutations()}(e,t,n):e instanceof aw?function(e,t,n){if(!Zy(e.precondition,t))return t.convertToUnknownDocument(n.version);const r=cw(e.fieldTransforms,t,n.transformResults),i=t.data;i.setAll(ow(e)),i.setAll(r),t.convertToFoundDocument(n.version,i).setHasCommittedMutations()}(e,t,n):t.convertToNoDocument(n.version).setHasCommittedMutations()}function rw(e,t,n,r){return e instanceof sw?function(e,t,n,r){if(!Zy(e.precondition,t))return n;const i=e.value.clone(),s=lw(e.fieldTransforms,r,t);return i.setAll(s),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null}(e,t,n,r):e instanceof aw?function(e,t,n,r){if(!Zy(e.precondition,t))return n;const i=lw(e.fieldTransforms,r,t),s=t.data;return s.setAll(ow(e)),s.setAll(i),t.convertToFoundDocument(t.version,s).setHasLocalMutations(),null===n?null:n.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map(e=>e.field))}(e,t,n,r):(t=t,n=n,Zy(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n)}function iw(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(n=e.fieldTransforms,r=t.fieldTransforms,!!(void 0===n&&void 0===r||n&&r&&xm(n,r,(e,t)=>function(e,t){return e.field.isEqual(t.field)&&(e=e.transform,t=t.transform,e instanceof zy&&t instanceof zy||e instanceof Ky&&t instanceof Ky?xm(e.elements,t.elements,v_):e instanceof Gy&&t instanceof Gy?v_(e.Pe,t.Pe):e instanceof jy&&t instanceof jy)}(e,t)))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask)));var n,r}class sw extends ew{constructor(e,t,n,r=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=r,this.type=0}getFieldMask(){return null}}class aw extends ew{constructor(e,t,n,r,i=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=r,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function ow(n){const r=new Map;return n.fieldMask.fields.forEach(e=>{var t;e.isEmpty()||(t=n.data.field(e),r.set(e,t))}),r}function cw(e,t,n){const r=new Map;ym(e.length===n.length);for(let u=0;u<n.length;u++){var i=e[u],s=i.transform,a=t.data.field(i.field);r.set(i.field,(o=s,c=a,l=n[u],o instanceof zy?$y(o,c):o instanceof Ky?Wy(o,c):l))}var o,c,l;return r}function lw(e,t,n){const r=new Map;for(const l of e){const e=l.transform,u=n.data.field(l.field);r.set(l.field,(i=e,s=u,a=t,c=o=void 0,i instanceof jy?function(e,t){const n={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:e.seconds,nanos:e.nanoseconds}}}};return(t=t&&l_(t)?u_(t):t)&&(n.fields.__previous_value__=t),{mapValue:n}}(a,s):i instanceof zy?$y(i,s):i instanceof Ky?Wy(i,s):(o=By(i=i,s),c=Hy(o)+Hy(i.Pe),E_(o)&&E_(i.Pe)?Uy(c):Fy(i.serializer,c))))}var i,s,a,o,c;return r}class uw extends ew{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=2,this.fieldTransforms=[]}getFieldMask(){return null}}class hw extends ew{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=3,this.fieldTransforms=[]}getFieldMask(){return null}}class dw{constructor(e,t,n,r){this.batchId=e,this.localWriteTime=t,this.baseMutations=n,this.mutations=r}applyToRemoteDocument(e,t){var n=t.mutationResults;for(let r=0;r<this.mutations.length;r++){const i=this.mutations[r];i.key.isEqual(e.key)&&nw(i,e,n[r])}}applyToLocalView(e,t){for(const n of this.baseMutations)n.key.isEqual(e.key)&&(t=rw(n,e,t,this.localWriteTime));for(const r of this.mutations)r.key.isEqual(e.key)&&(t=rw(r,e,t,this.localWriteTime));return t}applyToLocalDocumentSet(s,a){const o=Dy();return this.mutations.forEach(e=>{const t=s.get(e.key),n=t.overlayedDocument;let r=this.applyToLocalView(n,t.mutatedFields);r=a.has(e.key)?null:r;var i=tw(n,r);null!==i&&o.set(e.key,i),n.isValidDocument()||n.convertToNoDocument(Mm.min())}),o}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),Ly())}isEqual(e){return this.batchId===e.batchId&&xm(this.mutations,e.mutations,(e,t)=>iw(e,t))&&xm(this.baseMutations,e.baseMutations,(e,t)=>iw(e,t))}}class pw{constructor(e,t,n,r){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=r}static from(e,t,n){ym(e.mutations.length===n.length);let r=xy;var i=e.mutations;for(let s=0;s<i.length;s++)r=r.insert(i[s].key,n[s].version);return new pw(e,t,n,r)}}class fw{constructor(e,t){this.largestBatchId=e,this.mutation=t}getKey(){return this.mutation.key}isEqual(e){return null!==e&&this.mutation===e.mutation}toString(){return`Overlay{\n largestBatchId: ${this.largestBatchId},\n mutation: ${this.mutation.toString()}\n }`}}class gw{constructor(e,t){this.count=e,this.unchangedNames=t}}function mw(e){switch(e){default:return _m();case wm.CANCELLED:case wm.UNKNOWN:case wm.DEADLINE_EXCEEDED:case wm.RESOURCE_EXHAUSTED:case wm.INTERNAL:case wm.UNAVAILABLE:case wm.UNAUTHENTICATED:return!1;case wm.INVALID_ARGUMENT:case wm.NOT_FOUND:case wm.ALREADY_EXISTS:case wm.PERMISSION_DENIED:case wm.FAILED_PRECONDITION:case wm.ABORTED:case wm.OUT_OF_RANGE:case wm.UNIMPLEMENTED:case wm.DATA_LOSS:return!0}}function vw(e){if(void 0===e)return gm("GRPC error has no .code"),wm.UNKNOWN;switch(e){case sm.OK:return wm.OK;case sm.CANCELLED:return wm.CANCELLED;case sm.UNKNOWN:return wm.UNKNOWN;case sm.DEADLINE_EXCEEDED:return wm.DEADLINE_EXCEEDED;case sm.RESOURCE_EXHAUSTED:return wm.RESOURCE_EXHAUSTED;case sm.INTERNAL:return wm.INTERNAL;case sm.UNAVAILABLE:return wm.UNAVAILABLE;case sm.UNAUTHENTICATED:return wm.UNAUTHENTICATED;case sm.INVALID_ARGUMENT:return wm.INVALID_ARGUMENT;case sm.NOT_FOUND:return wm.NOT_FOUND;case sm.ALREADY_EXISTS:return wm.ALREADY_EXISTS;case sm.PERMISSION_DENIED:return wm.PERMISSION_DENIED;case sm.FAILED_PRECONDITION:return wm.FAILED_PRECONDITION;case sm.ABORTED:return wm.ABORTED;case sm.OUT_OF_RANGE:return wm.OUT_OF_RANGE;case sm.UNIMPLEMENTED:return wm.UNIMPLEMENTED;case sm.DATA_LOSS:return wm.DATA_LOSS;default:return _m()}}function _w(){return new TextEncoder}(Rt=sm=sm||{})[Rt.OK=0]="OK",Rt[Rt.CANCELLED=1]="CANCELLED",Rt[Rt.UNKNOWN=2]="UNKNOWN",Rt[Rt.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",Rt[Rt.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",Rt[Rt.NOT_FOUND=5]="NOT_FOUND",Rt[Rt.ALREADY_EXISTS=6]="ALREADY_EXISTS",Rt[Rt.PERMISSION_DENIED=7]="PERMISSION_DENIED",Rt[Rt.UNAUTHENTICATED=16]="UNAUTHENTICATED",Rt[Rt.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",Rt[Rt.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",Rt[Rt.ABORTED=10]="ABORTED",Rt[Rt.OUT_OF_RANGE=11]="OUT_OF_RANGE",Rt[Rt.UNIMPLEMENTED=12]="UNIMPLEMENTED",Rt[Rt.INTERNAL=13]="INTERNAL",Rt[Rt.UNAVAILABLE=14]="UNAVAILABLE",Rt[Rt.DATA_LOSS=15]="DATA_LOSS";const yw=new Qg([4294967295,4294967295],0);function ww(e){const t=_w().encode(e),n=new Jg;return n.update(t),new Uint8Array(n.digest())}function bw(e){const t=new DataView(e.buffer),n=t.getUint32(0,!0),r=t.getUint32(4,!0),i=t.getUint32(8,!0),s=t.getUint32(12,!0);return[new Qg([n,r],0),new Qg([i,s],0)]}class Iw{constructor(e,t,n){if(this.bitmap=e,this.padding=t,this.hashCount=n,t<0||8<=t)throw new Tw(`Invalid padding: ${t}`);if(n<0)throw new Tw(`Invalid hash count: ${n}`);if(0<e.length&&0===this.hashCount)throw new Tw(`Invalid hash count: ${n}`);if(0===e.length&&0!==t)throw new Tw(`Invalid padding when bitmap length is 0: ${t}`);this.Te=8*e.length-t,this.Ie=Qg.fromNumber(this.Te)}Ee(e,t,n){let r=e.add(t.multiply(Qg.fromNumber(n)));return 1===r.compare(yw)&&(r=new Qg([r.getBits(0),r.getBits(1)],0)),r.modulo(this.Ie).toNumber()}de(e){return 0!=(this.bitmap[Math.floor(e/8)]&1<<e%8)}mightContain(e){if(0===this.Te)return!1;const t=ww(e),[n,r]=bw(t);for(let i=0;i<this.hashCount;i++){const t=this.Ee(n,r,i);if(!this.de(t))return!1}return!0}static create(e,t,n){const r=e%8==0?0:8-e%8,i=new Uint8Array(Math.ceil(e/8)),s=new Iw(i,r,t);return n.forEach(e=>s.insert(e)),s}insert(t){if(0!==this.Te){const n=ww(t),[r,i]=bw(n);for(let e=0;e<this.hashCount;e++){const n=this.Ee(r,i,e);this.Ae(n)}}}Ae(e){var t=Math.floor(e/8);this.bitmap[t]|=1<<e%8}}class Tw extends Error{constructor(){super(...arguments),this.name="BloomFilterError"}}class Ew{constructor(e,t,n,r,i){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=n,this.documentUpdates=r,this.resolvedLimboDocuments=i}static createSynthesizedRemoteEventForCurrentChange(e,t,n){const r=new Map;return r.set(e,Cw.createSynthesizedTargetChangeForCurrentChange(e,t,n)),new Ew(Mm.min(),r,new Jv(Dm),Ay,Ly())}}class Cw{constructor(e,t,n,r,i){this.resumeToken=e,this.current=t,this.addedDocuments=n,this.modifiedDocuments=r,this.removedDocuments=i}static createSynthesizedTargetChangeForCurrentChange(e,t,n){return new Cw(n,t,Ly(),Ly(),Ly())}}class Sw{constructor(e,t,n,r){this.Re=e,this.removedTargetIds=t,this.key=n,this.Ve=r}}class kw{constructor(e,t){this.targetId=e,this.me=t}}class Aw{constructor(e,t,n=i_.EMPTY_BYTE_STRING,r=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=r}}class Nw{constructor(){this.fe=0,this.ge=Dw(),this.pe=i_.EMPTY_BYTE_STRING,this.ye=!1,this.we=!0}get current(){return this.ye}get resumeToken(){return this.pe}get Se(){return 0!==this.fe}get be(){return this.we}De(e){0<e.approximateByteSize()&&(this.we=!0,this.pe=e)}ve(){let n=Ly(),r=Ly(),i=Ly();return this.ge.forEach((e,t)=>{switch(t){case 0:n=n.add(e);break;case 2:r=r.add(e);break;case 1:i=i.add(e);break;default:_m()}}),new Cw(this.pe,this.ye,n,r,i)}Ce(){this.we=!1,this.ge=Dw()}Fe(e,t){this.we=!0,this.ge=this.ge.insert(e,t)}Me(e){this.we=!0,this.ge=this.ge.remove(e)}xe(){this.fe+=1}Oe(){--this.fe,ym(0<=this.fe)}Ne(){this.we=!0,this.ye=!0}}class Rw{constructor(e){this.Le=e,this.Be=new Map,this.ke=Ay,this.qe=Pw(),this.Qe=Pw(),this.Ke=new Jv(Dm)}$e(e){for(const t of e.Re)e.Ve&&e.Ve.isFoundDocument()?this.Ue(t,e.Ve):this.We(t,e.key,e.Ve);for(const n of e.removedTargetIds)this.We(n,e.key,e.Ve)}Ge(n){this.forEachTarget(n,e=>{const t=this.ze(e);switch(n.state){case 0:this.je(e)&&t.De(n.resumeToken);break;case 1:t.Oe(),t.Se||t.Ce(),t.De(n.resumeToken);break;case 2:t.Oe(),t.Se||this.removeTarget(e);break;case 3:this.je(e)&&(t.Ne(),t.De(n.resumeToken));break;case 4:this.je(e)&&(this.He(e),t.De(n.resumeToken));break;default:_m()}})}forEachTarget(e,n){0<e.targetIds.length?e.targetIds.forEach(n):this.Be.forEach((e,t)=>{this.je(t)&&n(t)})}Je(e){const t=e.targetId,n=e.me.count,r=this.Ye(t);if(r){var i=r.target;if(cy(i))if(0===n){const e=new Bm(i.path);this.We(t,e,M_.newNoDocument(e,Mm.min()))}else ym(1===n);else{const r=this.Ze(t);if(r!==n){const n=this.Xe(e),s=n?this.et(n,e,r):1;if(0!==s){this.He(t);const e=2===s?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Ke=this.Ke.insert(t,e)}}}}}Xe(e){var t=e.me.unchangedNames;if(!t||!t.bits)return null;var{bits:{bitmap:n="",padding:r=0},hashCount:t=0}=t;let i,s;try{i=c_(n).toUint8Array()}catch(e){if(e instanceof r_)return mm("Decoding the base64 bloom filter in existence filter failed ("+e.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw e}try{s=new Iw(i,r,t)}catch(e){return mm(e instanceof Tw?"BloomFilter error: ":"Applying bloom filter failed: ",e),null}return 0===s.Te?null:s}et(e,t,n){return t.me.count===n-this.rt(e,t.targetId)?0:2}rt(n,r){const e=this.Le.getRemoteKeysForTarget(r);let i=0;return e.forEach(e=>{var t=this.Le.nt(),t=`projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`;n.mightContain(t)||(this.We(r,e,null),i++)}),i}it(r){const i=new Map;this.Be.forEach((e,t)=>{var n=this.Ye(t);if(n){if(e.current&&cy(n.target)){const i=new Bm(n.target.path);this.st(i).has(t)||this.ot(t,i)||this.We(t,i,M_.newNoDocument(i,r))}e.be&&(i.set(t,e.ve()),e.Ce())}});let s=Ly();this.Qe.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{var t=this.Ye(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1)}),n&&(s=s.add(e))}),this.ke.forEach((e,t)=>t.setReadTime(r));var e=new Ew(r,i,this.Ke,this.ke,s);return this.ke=Ay,this.qe=Pw(),this.Qe=Pw(),this.Ke=new Jv(Dm),e}Ue(e,t){var n;this.je(e)&&(n=this.ot(e,t.key)?2:0,this.ze(e).Fe(t.key,n),this.ke=this.ke.insert(t.key,t),this.qe=this.qe.insert(t.key,this.st(t.key).add(e)),this.Qe=this.Qe.insert(t.key,this._t(t.key).add(e)))}We(e,t,n){if(this.je(e)){const r=this.ze(e);this.ot(e,t)?r.Fe(t,1):r.Me(t),this.Qe=this.Qe.insert(t,this._t(t).delete(e)),this.Qe=this.Qe.insert(t,this._t(t).add(e)),n&&(this.ke=this.ke.insert(t,n))}}removeTarget(e){this.Be.delete(e)}Ze(e){var t=this.ze(e).ve();return this.Le.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}xe(e){this.ze(e).xe()}ze(e){let t=this.Be.get(e);return t||(t=new Nw,this.Be.set(e,t)),t}_t(e){let t=this.Qe.get(e);return t||(t=new Zv(Dm),this.Qe=this.Qe.insert(e,t)),t}st(e){let t=this.qe.get(e);return t||(t=new Zv(Dm),this.qe=this.qe.insert(e,t)),t}je(e){var t=null!==this.Ye(e);return t||fm("WatchChangeAggregator","Detected inactive target",e),t}Ye(e){var t=this.Be.get(e);return t&&t.Se?null:this.Le.ut(e)}He(t){this.Be.set(t,new Nw),this.Le.getRemoteKeysForTarget(t).forEach(e=>{this.We(t,e,null)})}ot(e,t){return this.Le.getRemoteKeysForTarget(e).has(t)}}function Pw(){return new Jv(Bm.comparator)}function Dw(){return new Jv(Bm.comparator)}const xw={asc:"ASCENDING",desc:"DESCENDING"},Ow={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"},Lw={and:"AND",or:"OR"};class Mw{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function Fw(e,t){return e.useProto3Json||fv(t)?t:{value:t}}function Uw(e,t){return e.useProto3Json?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function Vw(e,t){return e.useProto3Json?t.toBase64():t.toUint8Array()}function qw(e){return ym(!!e),Mm.fromTimestamp((t=a_(e),new Lm(t.seconds,t.nanos)));var t}function Bw(e,t){return jw(e,t).canonicalString()}function jw(e,t){const n=(e=e,new Um(["projects",e.projectId,"databases",e.database]).child("documents"));return void 0===t?n:n.child(t)}function zw(e){var t=Um.fromString(e);return ym(ob(t)),t}function $w(e,t){return Bw(e.databaseId,t.path)}function Kw(e,t){const n=zw(t);if(n.get(1)!==e.databaseId.projectId)throw new bm(wm.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+e.databaseId.projectId);if(n.get(3)!==e.databaseId.database)throw new bm(wm.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new Bm(Qw(n))}function Ww(e,t){return Bw(e.databaseId,t)}function Gw(e){var t=zw(e);return 4===t.length?Um.emptyPath():Qw(t)}function Hw(e){return new Um(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function Qw(e){return ym(4<e.length&&"documents"===e.get(4)),e.popFirst(5)}function Jw(e,t,n){return{name:$w(e,t),fields:n.value.mapValue.fields}}function Yw(e,t,n){const r=Kw(e,t.name),i=qw(t.updateTime),s=t.createTime?qw(t.createTime):Mm.min(),a=new L_({mapValue:{fields:t.fields}}),o=M_.newFoundDocument(r,i,s,a);return n&&o.setHasCommittedMutations(),n?o.setHasCommittedMutations():o}function Xw(e,t){let n;if(t instanceof sw)n={update:Jw(e,t.key,t.value)};else if(t instanceof uw)n={delete:$w(e,t.key)};else if(t instanceof aw)n={update:Jw(e,t.key,t.data),updateMask:function(e){const t=[];return e.fields.forEach(e=>t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof hw))return _m();n={verify:$w(e,t.key)}}return 0<t.fieldTransforms.length&&(n.updateTransforms=t.fieldTransforms.map(e=>function(e){var t=e.transform;if(t instanceof jy)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof zy)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof Ky)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof Gy)return{fieldPath:e.field.canonicalString(),increment:t.Pe};throw _m()}(e))),t.precondition.isNone||(n.currentDocument=(r=e,void 0!==(e=t.precondition).updateTime?{updateTime:(t=e.updateTime,Uw(r,t.toTimestamp()))}:void 0!==e.exists?{exists:e.exists}:_m())),n;var r}function Zw(t,e){const n=e.currentDocument?void 0!==(i=e.currentDocument).updateTime?Xy.updateTime(qw(i.updateTime)):void 0!==i.exists?Xy.exists(i.exists):Xy.none():Xy.none(),r=e.updateTransforms?e.updateTransforms.map(e=>function(e,t){let n=null;if("setToServerValue"in t)ym("REQUEST_TIME"===t.setToServerValue),n=new jy;else if("appendMissingElements"in t){const e=t.appendMissingElements.values||[];n=new zy(e)}else if("removeAllFromArray"in t){const e=t.removeAllFromArray.values||[];n=new Ky(e)}else"increment"in t?n=new Gy(e,t.increment):_m();var r=qm.fromServerFormat(t.fieldPath);return new Jy(r,n)}(t,e)):[];var i;if(e.update){e.update.name;var s=Kw(t,e.update.name),a=new L_({mapValue:{fields:e.update.fields}});if(e.updateMask){const t=function(e){const t=e.fieldPaths||[];return new n_(t.map(e=>qm.fromServerFormat(e)))}(e.updateMask);return new aw(s,a,t,n,r)}return new sw(s,a,n,r)}if(e.delete){const r=Kw(t,e.delete);return new uw(r,n)}if(e.verify){const r=Kw(t,e.verify);return new hw(r,n)}return _m()}function eb(e,t){return{documents:[Ww(e,t.path)]}}function tb(e,t){const n={structuredQuery:{}},r=t.path;let i;null!==t.collectionGroup?(i=r,n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(i=r.popLast(),n.structuredQuery.from=[{collectionId:r.lastSegment()}]),n.parent=Ww(e,i);var s=function(e){if(0!==e.length)return function n(e){return e instanceof j_?function(e){if("=="===e.op){if(k_(e.value))return{unaryFilter:{field:sb(e.field),op:"IS_NAN"}};if(S_(e.value))return{unaryFilter:{field:sb(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(k_(e.value))return{unaryFilter:{field:sb(e.field),op:"IS_NOT_NAN"}};if(S_(e.value))return{unaryFilter:{field:sb(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:sb(e.field),op:rb(e.op),value:e.value}}}(e):e instanceof z_?function(e){const t=e.getFilters().map(e=>n(e));return 1===t.length?t[0]:{compositeFilter:{op:ib(e.op),filters:t}}}(e):_m()}(z_.create(e,"and"))}(t.filters);s&&(n.structuredQuery.where=s);s=function(e){if(0!==e.length)return e.map(e=>function(e){return{field:sb(e.field),direction:(e=e.dir,xw[e])}}(e))}(t.orderBy);s&&(n.structuredQuery.orderBy=s);s=Fw(e,t.limit);return null!==s&&(n.structuredQuery.limit=s),t.startAt&&(n.structuredQuery.startAt={before:(e=t.startAt).inclusive,values:e.position}),t.endAt&&(n.structuredQuery.endAt={before:!(t=t.endAt).inclusive,values:t.position}),{ct:n,parent:i}}function nb(e){let t=Gw(e.parent);var n,r,i,s=e.structuredQuery,a=s.from?s.from.length:0;let o=null;if(0<a){ym(1===a);const p=s.from[0];p.allDescendants?o=p.collectionId:t=t.child(p.collectionId)}let c=[];s.where&&(c=function(e){const t=function t(e){return void 0!==e.unaryFilter?function(e){switch(e.unaryFilter.op){case"IS_NAN":const t=ab(e.unaryFilter.field);return j_.create(t,"==",{doubleValue:NaN});case"IS_NULL":const n=ab(e.unaryFilter.field);return j_.create(n,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const r=ab(e.unaryFilter.field);return j_.create(r,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const i=ab(e.unaryFilter.field);return j_.create(i,"!=",{nullValue:"NULL_VALUE"});default:return _m()}}(e):void 0!==e.fieldFilter?function(e){return j_.create(ab(e.fieldFilter.field),function(e){switch(e){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return _m()}}(e.fieldFilter.op),e.fieldFilter.value)}(e):void 0!==e.compositeFilter?function(e){return z_.create(e.compositeFilter.filters.map(e=>t(e)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return _m()}}(e.compositeFilter.op))}(e):_m()}(e);return t instanceof z_&&W_(t)?t.getFilters():[t]}(s.where));let l=[];s.orderBy&&(l=s.orderBy.map(e=>function(e){return new q_(ab(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))}(e)));let u=null;s.limit&&(u=(e=s.limit,fv(n="object"==typeof e?e.value:e)?null:n));let h=null;s.startAt&&(h=(r=s.startAt,i=!!r.before,n=r.values||[],new F_(n,i)));let d=null;return s.endAt&&(d=(r=s.endAt,i=!r.before,s=r.values||[],new F_(s,i))),py(t,o,l,c,u,"F",h,d)}function rb(e){return Ow[e]}function ib(e){return Lw[e]}function sb(e){return{fieldPath:e.canonicalString()}}function ab(e){return qm.fromServerFormat(e.fieldPath)}function ob(e){return 4<=e.length&&"projects"===e.get(0)&&"databases"===e.get(2)}class cb{constructor(e,t,n,r,i=Mm.min(),s=Mm.min(),a=i_.EMPTY_BYTE_STRING,o=null){this.target=e,this.targetId=t,this.purpose=n,this.sequenceNumber=r,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=s,this.resumeToken=a,this.expectedCount=o}withSequenceNumber(e){return new cb(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new cb(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new cb(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new cb(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class lb{constructor(e){this.ht=e}}function ub(e,t){const n=t.key,r={prefixPath:n.getCollectionPath().popLast().toArray(),collectionGroup:n.collectionGroup,documentId:n.path.lastSegment(),readTime:hb(t.readTime),hasCommittedMutations:t.hasCommittedMutations};if(t.isFoundDocument())r.document={name:$w(i=e.ht,(e=t).key),fields:e.data.value.mapValue.fields,updateTime:Uw(i,e.version.toTimestamp()),createTime:Uw(i,e.createTime.toTimestamp())};else if(t.isNoDocument())r.noDocument={path:n.path.toArray(),readTime:db(t.version)};else{if(!t.isUnknownDocument())return _m();r.unknownDocument={path:n.path.toArray(),version:db(t.version)}}var i;return r}function hb(e){var t=e.toTimestamp();return[t.seconds,t.nanoseconds]}function db(e){var t=e.toTimestamp();return{seconds:t.seconds,nanoseconds:t.nanoseconds}}function pb(e){var t=new Lm(e.seconds,e.nanoseconds);return Mm.fromTimestamp(t)}function fb(t,e){const n=(e.baseMutations||[]).map(e=>Zw(t.ht,e));for(let s=0;s<e.mutations.length-1;++s){const n=e.mutations[s];if(s+1<e.mutations.length&&void 0!==e.mutations[s+1].transform){const r=e.mutations[s+1];n.updateTransforms=r.transform.fieldTransforms,e.mutations.splice(s+1,1),++s}}const r=e.mutations.map(e=>Zw(t.ht,e)),i=Lm.fromMillis(e.localWriteTimeMs);return new dw(e.batchId,i,n,r)}function gb(e){var t,n=pb(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?pb(e.lastLimboFreeSnapshotVersion):Mm.min(),i=void 0!==e.query.documents?(ym(1===(t=e.query).documents.length),_y(fy(Gw(t.documents[0])))):_y(nb(e.query));return new cb(i,e.targetId,"TargetPurposeListen",e.lastListenSequenceNumber,n,r,i_.fromBase64String(e.resumeToken))}function mb(e,t){var n=db(t.snapshotVersion),r=db(t.lastLimboFreeSnapshotVersion),i=cy(t.target)?eb(e.ht,t.target):tb(e.ht,t.target).ct,s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:ay(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:r,query:i}}function vb(e){var t=nb({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?wy(t,t.limit,"L"):t}function _b(e,t){return new fw(t.largestBatchId,Zw(e.ht,t.overlayMutation))}function yb(e,t){var n=t.path.lastSegment();return[e,vv(t.path.popLast()),n]}function wb(e,t,n,r){return{indexId:e,uid:t,sequenceNumber:n,readTime:db(r.readTime),documentKey:vv(r.documentKey.path),largestBatchId:r.largestBatchId}}class bb{getBundleMetadata(e,t){return Ib(e).get(t).next(e=>{if(e)return{id:(e=e).bundleId,createTime:pb(e.createTime),version:e.version}})}saveBundleMetadata(e,t){return Ib(e).put({bundleId:(t=t).id,createTime:db(qw(t.createTime)),version:t.version})}getNamedQuery(e,t){return Tb(e).get(t).next(e=>{if(e)return{name:(e=e).name,query:vb(e.bundledQuery),readTime:pb(e.readTime)}})}saveNamedQuery(e,t){return Tb(e).put({name:(t=t).name,readTime:db(qw(t.readTime)),bundledQuery:t.bundledQuery})}}function Ib(e){return Wv(e,"bundles")}function Tb(e){return Wv(e,"namedQueries")}class Eb{constructor(e,t){this.serializer=e,this.userId=t}static Pt(e,t){var n=t.uid||"";return new Eb(e,n)}getOverlay(e,t){return Cb(e).get(yb(this.userId,t)).next(e=>e?_b(this.serializer,e):null)}getOverlays(e,t){const n=Dy();return ev.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(r,i,e){const s=[];return e.forEach((e,t)=>{var n=new fw(i,t);s.push(this.Tt(r,n))}),ev.waitFor(s)}removeOverlaysForBatchId(n,e,r){const t=new Set;e.forEach(e=>t.add(vv(e.getCollectionPath())));const i=[];return t.forEach(e=>{var t=IDBKeyRange.bound([this.userId,e,r],[this.userId,e,r+1],!1,!0);i.push(Cb(n).j("collectionPathOverlayIndex",t))}),ev.waitFor(i)}getOverlaysForCollection(e,t,n){const r=Dy(),i=vv(t),s=IDBKeyRange.bound([this.userId,i,n],[this.userId,i,Number.POSITIVE_INFINITY],!0);return Cb(e).U("collectionPathOverlayIndex",s).next(e=>{for(const t of e){const e=_b(this.serializer,t);r.set(e.getKey(),e)}return r})}getOverlaysForCollectionGroup(e,t,n,i){const s=Dy();let a;var r=IDBKeyRange.bound([this.userId,t,n],[this.userId,t,Number.POSITIVE_INFINITY],!0);return Cb(e).J({index:"collectionGroupOverlayIndex",range:r},(e,t,n)=>{const r=_b(this.serializer,t);s.size()<i||r.largestBatchId===a?(s.set(r.getKey(),r),a=r.largestBatchId):n.done()}).next(()=>s)}Tt(e,t){return Cb(e).put(function(e,t,n){var[,r,i]=yb(t,n.mutation.key);return{userId:t,collectionPath:r,documentId:i,collectionGroup:n.mutation.key.getCollectionGroup(),largestBatchId:n.largestBatchId,overlayMutation:Xw(e.ht,n.mutation)}}(this.serializer,this.userId,t))}}function Cb(e){return Wv(e,"documentOverlays")}class Sb{It(e){return Wv(e,"globals")}getSessionToken(e){return this.It(e).get("sessionToken").next(e=>{var t=null==e?void 0:e.value;return t?i_.fromUint8Array(t):i_.EMPTY_BYTE_STRING})}setSessionToken(e,t){return this.It(e).put({name:"sessionToken",value:t.toUint8Array()})}}class kb{constructor(){}Et(e,t){this.dt(e,t),t.At()}dt(t,n){if("nullValue"in t)this.Rt(n,5);else if("booleanValue"in t)this.Rt(n,10),n.Vt(t.booleanValue?1:0);else if("integerValue"in t)this.Rt(n,15),n.Vt(o_(t.integerValue));else if("doubleValue"in t){var e=o_(t.doubleValue);isNaN(e)?this.Rt(n,13):(this.Rt(n,15),gv(e)?n.Vt(0):n.Vt(e))}else if("timestampValue"in t){let e=t.timestampValue;this.Rt(n,20),"string"==typeof e&&(e=a_(e)),n.ft(`${e.seconds||""}`),n.Vt(e.nanos||0)}else"stringValue"in t?(this.gt(t.stringValue,n),this.yt(n)):"bytesValue"in t?(this.Rt(n,30),n.wt(c_(t.bytesValue)),this.yt(n)):"referenceValue"in t?this.St(t.referenceValue,n):"geoPointValue"in t?(e=t.geoPointValue,this.Rt(n,45),n.Vt(e.latitude||0),n.Vt(e.longitude||0)):"mapValue"in t?P_(t)?this.Rt(n,Number.MAX_SAFE_INTEGER):N_(t)?this.bt(t.mapValue,n):(this.Dt(t.mapValue,n),this.yt(n)):"arrayValue"in t?(this.vt(t.arrayValue,n),this.yt(n)):_m()}gt(e,t){this.Rt(t,25),this.Ct(e,t)}Ct(e,t){t.ft(e)}Dt(e,t){var n=e.fields||{};this.Rt(t,55);for(const e of Object.keys(n))this.gt(e,t),this.dt(n[e],t)}bt(e,t){var n=e.fields||{};this.Rt(t,53);var r=(null===(r=null===(r=n.value.arrayValue)||void 0===r?void 0:r.values)||void 0===r?void 0:r.length)||0;this.Rt(t,15),t.Vt(o_(r)),this.gt("value",t),this.dt(n.value,t)}vt(e,t){var n=e.values||[];this.Rt(t,50);for(const e of n)this.dt(e,t)}St(e,t){this.Rt(t,37),Bm.fromName(e).path.forEach(e=>{this.Rt(t,60),this.Ct(e,t)})}Rt(e,t){e.Vt(t)}yt(e){e.Vt(2)}}function Ab(e){var t=64-function(e){let t=0;for(let r=0;r<8;++r){var n=function(e){if(0===e)return 8;let t=0;return e>>4==0&&(t+=4,e<<=4),e>>6==0&&(t+=2,e<<=2),e>>7==0&&(t+=1),t}(255&e[r]);if(t+=n,8!==n)break}return t}(e);return Math.ceil(t/8)}kb.Ft=new kb;class Nb{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Mt(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.xt(n.value),n=t.next();this.Ot()}Nt(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Lt(n.value),n=t.next();this.Bt()}kt(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.xt(e);else if(e<2048)this.xt(960|e>>>6),this.xt(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.xt(480|e>>>12),this.xt(128|63&e>>>6),this.xt(128|63&e);else{const e=t.codePointAt(0);this.xt(240|e>>>18),this.xt(128|63&e>>>12),this.xt(128|63&e>>>6),this.xt(128|63&e)}}this.Ot()}qt(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Lt(e);else if(e<2048)this.Lt(960|e>>>6),this.Lt(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.Lt(480|e>>>12),this.Lt(128|63&e>>>6),this.Lt(128|63&e);else{const e=t.codePointAt(0);this.Lt(240|e>>>18),this.Lt(128|63&e>>>12),this.Lt(128|63&e>>>6),this.Lt(128|63&e)}}this.Bt()}Qt(e){var t=this.Kt(e),n=Ab(t);this.$t(1+n),this.buffer[this.position++]=255&n;for(let r=t.length-n;r<t.length;++r)this.buffer[this.position++]=255&t[r]}Ut(e){var t=this.Kt(e),n=Ab(t);this.$t(1+n),this.buffer[this.position++]=~(255&n);for(let r=t.length-n;r<t.length;++r)this.buffer[this.position++]=~(255&t[r])}Wt(){this.Gt(255),this.Gt(255)}zt(){this.jt(255),this.jt(255)}reset(){this.position=0}seed(e){this.$t(e.length),this.buffer.set(e,this.position),this.position+=e.length}Ht(){return this.buffer.slice(0,this.position)}Kt(e){const t=function(e){const t=new DataView(new ArrayBuffer(8));return t.setFloat64(0,e,!1),new Uint8Array(t.buffer)}(e),n=0!=(128&t[0]);t[0]^=n?255:128;for(let r=1;r<t.length;++r)t[r]^=n?255:0;return t}xt(e){var t=255&e;0==t?(this.Gt(0),this.Gt(255)):255==t?(this.Gt(255),this.Gt(0)):this.Gt(t)}Lt(e){var t=255&e;0==t?(this.jt(0),this.jt(255)):255==t?(this.jt(255),this.jt(0)):this.jt(e)}Ot(){this.Gt(0),this.Gt(1)}Bt(){this.jt(0),this.jt(1)}Gt(e){this.$t(1),this.buffer[this.position++]=e}jt(e){this.$t(1),this.buffer[this.position++]=~e}$t(e){var t=e+this.position;if(!(t<=this.buffer.length)){let e=2*this.buffer.length;e<t&&(e=t);const n=new Uint8Array(e);n.set(this.buffer),this.buffer=n}}}class Rb{constructor(e){this.Jt=e}wt(e){this.Jt.Mt(e)}ft(e){this.Jt.kt(e)}Vt(e){this.Jt.Qt(e)}At(){this.Jt.Wt()}}class Pb{constructor(e){this.Jt=e}wt(e){this.Jt.Nt(e)}ft(e){this.Jt.qt(e)}Vt(e){this.Jt.Ut(e)}At(){this.Jt.zt()}}class Db{constructor(){this.Jt=new Nb,this.Yt=new Rb(this.Jt),this.Zt=new Pb(this.Jt)}seed(e){this.Jt.seed(e)}Xt(e){return 0===e?this.Yt:this.Zt}Ht(){return this.Jt.Ht()}reset(){this.Jt.reset()}}class xb{constructor(e,t,n,r){this.indexId=e,this.documentKey=t,this.arrayValue=n,this.directionalValue=r}en(){const e=this.directionalValue.length,t=0===e||255===this.directionalValue[e-1]?e+1:e,n=new Uint8Array(t);return n.set(this.directionalValue,0),t!==e?n.set([0],this.directionalValue.length):++n[n.length-1],new xb(this.indexId,this.documentKey,this.arrayValue,n)}}function Ob(e,t){let n=e.indexId-t.indexId;return 0!==n?n:(n=Lb(e.arrayValue,t.arrayValue),0!==n?n:(n=Lb(e.directionalValue,t.directionalValue),0!==n?n:Bm.comparator(e.documentKey,t.documentKey)))}function Lb(e,t){for(let r=0;r<e.length&&r<t.length;++r){var n=e[r]-t[r];if(0!=n)return n}return e.length-t.length}class Mb{constructor(e){this.tn=new Zv((e,t)=>qm.comparator(e.field,t.field)),this.collectionId=null!=e.collectionGroup?e.collectionGroup:e.path.lastSegment(),this.nn=e.orderBy,this.rn=[];for(const t of e.filters){const e=t;e.isInequality()?this.tn=this.tn.add(e):this.rn.push(e)}}get sn(){return 1<this.tn.size}on(e){if(ym(e.collectionGroup===this.collectionId),this.sn)return!1;const t=zm(e);if(void 0!==t&&!this._n(t))return!1;const n=$m(e);let r=new Set,i=0,s=0;for(;i<n.length&&this._n(n[i]);++i)r=r.add(n[i].fieldPath.canonicalString());if(i===n.length)return!0;if(0<this.tn.size){const e=this.tn.getIterator().getNext();if(!r.has(e.field.canonicalString())){const t=n[i];if(!this.an(e,t)||!this.un(this.nn[s++],t))return!1}++i}for(;i<n.length;++i){const e=n[i];if(s>=this.nn.length||!this.un(this.nn[s++],e))return!1}return!0}cn(){if(this.sn)return null;let e=new Zv(qm.comparator);const t=[];for(const n of this.rn)n.field.isKeyField()||("array-contains"===n.op||"array-contains-any"===n.op?t.push(new Km(n.field,2)):e.has(n.field)||(e=e.add(n.field),t.push(new Km(n.field,0))));for(const r of this.nn)r.field.isKeyField()||e.has(r.field)||(e=e.add(r.field),t.push(new Km(r.field,"asc"===r.dir?0:1)));return new jm(jm.UNKNOWN_ID,this.collectionId,t,Wm.empty())}_n(e){for(const t of this.rn)if(this.an(t,e))return!0;return!1}an(e,t){if(void 0===e||!e.field.isEqual(t.fieldPath))return!1;var n="array-contains"===e.op||"array-contains-any"===e.op;return 2===t.kind==n}un(e,t){return!!e.field.isEqual(t.fieldPath)&&(0===t.kind&&"asc"===e.dir||1===t.kind&&"desc"===e.dir)}}function Fb(e){if(0===e.getFilters().length)return[];const t=function t(e){if(ym(e instanceof j_||e instanceof z_),e instanceof j_)return e;if(1===e.filters.length)return t(e.filters[0]);const n=e.filters.map(e=>t(e));let r=z_.create(n,e.op);return r=zb(r),qb(r)?r:(ym(r instanceof z_),ym($_(r)),ym(1<r.filters.length),r.filters.reduce((e,t)=>Bb(e,t)))}(function t(n){var e;if(ym(n instanceof j_||n instanceof z_),n instanceof j_){if(n instanceof ty){const r=(null===(e=null===(e=n.value.arrayValue)||void 0===e?void 0:e.values)||void 0===e?void 0:e.map(e=>j_.create(n.field,"==",e)))||[];return z_.create(r,"or")}return n}const r=n.filters.map(e=>t(e));return z_.create(r,n.op)}(e));return ym(qb(t)),Ub(t)||Vb(t)?[t]:t.getFilters()}function Ub(e){return e instanceof j_}function Vb(e){return e instanceof z_&&W_(e)}function qb(e){return Ub(e)||Vb(e)||function(e){if(e instanceof z_&&K_(e)){for(const t of e.getFilters())if(!Ub(t)&&!Vb(t))return!1;return!0}return!1}(e)}function Bb(e,t){var n,r;return ym(e instanceof j_||e instanceof z_),ym(t instanceof j_||t instanceof z_),zb(e instanceof j_?t instanceof j_?(n=e,r=t,z_.create([n,r],"and")):jb(e,t):t instanceof j_?jb(t,e):function(e,t){if(ym(0<e.filters.length&&0<t.filters.length),$_(e)&&$_(t))return H_(e,t.getFilters());const n=K_(e)?e:t,r=K_(e)?t:e,i=n.filters.map(e=>Bb(e,r));return z_.create(i,"or")}(e,t))}function jb(t,e){if($_(e))return H_(e,t.getFilters());var n=e.filters.map(e=>Bb(t,e));return z_.create(n,"or")}function zb(t){if(ym(t instanceof j_||t instanceof z_),t instanceof j_)return t;const e=t.getFilters();if(1===e.length)return zb(e[0]);if(G_(t))return t;const n=e.map(e=>zb(e)),r=[];return n.forEach(e=>{e instanceof j_?r.push(e):e instanceof z_&&(e.op===t.op?r.push(...e.filters):r.push(e))}),1===r.length?r[0]:z_.create(r,t.op)}class $b{constructor(){this.ln=new Kb}addToCollectionParentIndex(e,t){return this.ln.add(t),ev.resolve()}getCollectionParents(e,t){return ev.resolve(this.ln.getEntries(t))}addFieldIndex(e,t){return ev.resolve()}deleteFieldIndex(e,t){return ev.resolve()}deleteAllFieldIndexes(e){return ev.resolve()}createTargetIndexes(e,t){return ev.resolve()}getDocumentsMatchingTarget(e,t){return ev.resolve(null)}getIndexType(e,t){return ev.resolve(0)}getFieldIndexes(e,t){return ev.resolve([])}getNextCollectionGroupToUpdate(e){return ev.resolve(null)}getMinOffset(e,t){return ev.resolve(Qm.min())}getMinOffsetFromCollectionGroup(e,t){return ev.resolve(Qm.min())}updateCollectionGroup(e,t,n){return ev.resolve()}updateIndexEntries(e,t){return ev.resolve()}}class Kb{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t]||new Zv(Um.comparator),i=!r.has(n);return this.index[t]=r.add(n),i}has(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t];return r&&r.has(n)}getEntries(e){return(this.index[e]||new Zv(Um.comparator)).toArray()}}const Wb=new Uint8Array(0);class Gb{constructor(e,t){this.databaseId=t,this.hn=new Kb,this.Pn=new ky(e=>ay(e),(e,t)=>oy(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(this.hn.has(t))return ev.resolve();var n=t.lastSegment(),r=t.popLast();e.addOnCommittedListener(()=>{this.hn.add(t)});r={collectionId:n,parent:vv(r)};return Hb(e).put(r)}getCollectionParents(e,n){const r=[],t=IDBKeyRange.bound([n,""],[Om(n),""],!1,!0);return Hb(e).U(t).next(e=>{for(const t of e){if(t.collectionId!==n)break;r.push(yv(t.parent))}return r})}addFieldIndex(e,t){const n=Jb(e),r={indexId:t.indexId,collectionGroup:t.collectionGroup,fields:t.fields.map(e=>[e.fieldPath.canonicalString(),e.kind])};delete r.indexId;const i=n.add(r);if(t.indexState){const n=Yb(e);return i.next(e=>{n.put(wb(e,this.uid,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){const n=Jb(e),r=Yb(e),i=Qb(e);return n.delete(t.indexId).next(()=>r.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0))).next(()=>i.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0)))}deleteAllFieldIndexes(e){const t=Jb(e),n=Qb(e),r=Yb(e);return t.j().next(()=>n.j()).next(()=>r.j())}createTargetIndexes(n,e){return ev.forEach(this.Tn(e),t=>this.getIndexType(n,t).next(e=>{if(0===e||1===e){const e=new Mb(t).cn();if(null!=e)return this.addFieldIndex(n,e)}}))}getDocumentsMatchingTarget(e,u){const h=Qb(e);let d=!0;const n=new Map;return ev.forEach(this.Tn(u),t=>this.In(e,t).next(e=>{d=d&&!!e,n.set(t,e)})).next(()=>{if(d){let l=Ly();const d=[];return ev.forEach(n,(e,t)=>{var n;fm("IndexedDbIndexManager",`Using index ${n=e,`id=${n.indexId}|cg=${n.collectionGroup}|f=${n.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")}`} to execute ${ay(u)}`);var r=function(e,t){var n=zm(t);if(void 0===n)return null;for(const t of ly(e,n.fieldPath))switch(t.op){case"array-contains-any":return t.value.arrayValue.values||[];case"array-contains":return[t.value]}return null}(t,e),i=function(e,t){const n=new Map;for(const r of $m(t))for(const t of ly(e,r.fieldPath))switch(t.op){case"==":case"in":n.set(r.fieldPath.canonicalString(),t.value);break;case"not-in":case"!=":return n.set(r.fieldPath.canonicalString(),t.value),Array.from(n.values())}return null}(t,e),s=function(e,t){const n=[];let r=!0;for(const i of $m(t)){const t=(0===i.kind?uy:hy)(e,i.fieldPath,e.startAt);n.push(t.value),r=r&&t.inclusive}return new F_(n,r)}(t,e),a=function(e,t){const n=[];let r=!0;for(const i of $m(t)){const t=(0===i.kind?hy:uy)(e,i.fieldPath,e.endAt);n.push(t.value),r=r&&t.inclusive}return new F_(n,r)}(t,e),o=this.En(e,t,s),c=this.En(e,t,a),i=this.dn(e,t,i),i=this.An(e.indexId,r,o,s.inclusive,c,a.inclusive,i);return ev.forEach(i,e=>h.G(e,u.limit).next(e=>{e.forEach(e=>{var t=Bm.fromSegments(e.documentKey);l.has(t)||(l=l.add(t),d.push(t))})}))}).next(()=>d)}return ev.resolve(null)})}Tn(t){let e=this.Pn.get(t);return e||(e=0===t.filters.length?[t]:Fb(z_.create(t.filters,"and")).map(e=>sy(t.path,t.collectionGroup,t.orderBy,e.getFilters(),t.limit,t.startAt,t.endAt)),this.Pn.set(t,e),e)}An(t,e,n,r,i,s,a){const o=(null!=e?e.length:1)*Math.max(n.length,i.length),c=o/(null!=e?e.length:1),l=[];for(let u=0;u<o;++u){const o=e?this.Rn(e[u/c]):Wb,h=this.Vn(t,o,n[u%c],r),d=this.mn(t,o,i[u%c],s),p=a.map(e=>this.Vn(t,o,e,!0));l.push(...this.createRange(h,d,p))}return l}Vn(e,t,n,r){const i=new xb(e,Bm.empty(),t,n);return r?i:i.en()}mn(e,t,n,r){const i=new xb(e,Bm.empty(),t,n);return r?i.en():i}In(e,t){const r=new Mb(t),n=null!=t.collectionGroup?t.collectionGroup:t.path.lastSegment();return this.getFieldIndexes(e,n).next(e=>{let t=null;for(const n of e)r.on(n)&&(!t||n.fields.length>t.fields.length)&&(t=n);return t})}getIndexType(e,t){let n=2;const r=this.Tn(t);return ev.forEach(r,t=>this.In(e,t).next(e=>{e?0!==n&&e.fields.length<function(e){let t=new Zv(qm.comparator),n=!1;for(const r of e.filters)for(const e of r.getFlattenedFilters())e.field.isKeyField()||("array-contains"===e.op||"array-contains-any"===e.op?n=!0:t=t.add(e.field));for(const n of e.orderBy)n.field.isKeyField()||(t=t.add(n.field));return t.size+(n?1:0)}(t)&&(n=1):n=0})).next(()=>function(e){return null!==e.limit}(t)&&1<r.length&&2===n?1:n)}fn(e,t){const n=new Db;for(const i of $m(e)){const e=t.data.field(i.fieldPath);if(null==e)return null;var r=n.Xt(i.kind);kb.Ft.Et(e,r)}return n.Ht()}Rn(e){const t=new Db;return kb.Ft.Et(e,t.Xt(0)),t.Ht()}gn(e,t){const n=new Db;return kb.Ft.Et(T_(this.databaseId,t),n.Xt(0===(r=$m(e)).length?0:r[r.length-1].kind)),n.Ht();var r}dn(e,t,n){if(null===n)return[];let r=[];r.push(new Db);let i=0;for(const s of $m(e)){const e=n[i++];for(const n of r)if(this.pn(t,s.fieldPath)&&C_(e))r=this.yn(r,s,e);else{const t=n.Xt(s.kind);kb.Ft.Et(e,t)}}return this.wn(r)}En(e,t,n){return this.dn(e,t,n.position)}wn(e){const t=[];for(let n=0;n<e.length;++n)t[n]=e[n].Ht();return t}yn(e,t,n){const r=[...e],i=[];for(const e of n.arrayValue.values||[])for(const n of r){const r=new Db;r.seed(n.Ht()),kb.Ft.Et(e,r.Xt(t.kind)),i.push(r)}return i}pn(e,t){return!!e.filters.find(e=>e instanceof j_&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){const n=Jb(e),r=Yb(e);return(t?n.U("collectionGroupIndex",IDBKeyRange.bound(t,t)):n.U()).next(e=>{const s=[];return ev.forEach(e,i=>r.get([i.indexId,this.uid]).next(e=>{var t,n,r;s.push((t=i,n=(e=e)?new Wm(e.sequenceNumber,new Qm(pb(e.readTime),new Bm(yv(e.documentKey)),e.largestBatchId)):Wm.empty(),r=t.fields.map(([e,t])=>new Km(qm.fromServerFormat(e),t)),new jm(t.indexId,t.collectionGroup,r,n)))})).next(()=>s)})}getNextCollectionGroupToUpdate(e){return this.getFieldIndexes(e).next(e=>0===e.length?null:(e.sort((e,t)=>{var n=e.indexState.sequenceNumber-t.indexState.sequenceNumber;return 0!=n?n:Dm(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,n,r){const i=Jb(e),s=Yb(e);return this.Sn(e).next(t=>i.U("collectionGroupIndex",IDBKeyRange.bound(n,n)).next(e=>ev.forEach(e,e=>s.put(wb(e.indexId,this.uid,t,r)))))}updateIndexEntries(i,e){const n=new Map;return ev.forEach(e,(t,r)=>{var e=n.get(t.collectionGroup);return(e?ev.resolve(e):this.getFieldIndexes(i,t.collectionGroup)).next(e=>(n.set(t.collectionGroup,e),ev.forEach(e,n=>this.bn(i,t,n).next(e=>{var t=this.Dn(r,n);return e.isEqual(t)?ev.resolve():this.vn(i,r,n,e,t)}))))})}Cn(e,t,n,r){return Qb(e).put({indexId:r.indexId,uid:this.uid,arrayValue:r.arrayValue,directionalValue:r.directionalValue,orderedDocumentKey:this.gn(n,t.key),documentKey:t.key.path.toArray()})}Fn(e,t,n,r){return Qb(e).delete([r.indexId,this.uid,r.arrayValue,r.directionalValue,this.gn(n,t.key),t.key.path.toArray()])}bn(e,n,r){const t=Qb(e);let i=new Zv(Ob);return t.J({index:"documentKeyIndex",range:IDBKeyRange.only([r.indexId,this.uid,this.gn(r,n)])},(e,t)=>{i=i.add(new xb(r.indexId,n,t.arrayValue,t.directionalValue))}).next(()=>i)}Dn(e,t){let n=new Zv(Ob);var r=this.fn(t,e);if(null==r)return n;const i=zm(t);if(null!=i){var s=e.data.field(i.fieldPath);if(C_(s))for(const i of s.arrayValue.values||[])n=n.add(new xb(t.indexId,e.key,this.Rn(i),r))}else n=n.add(new xb(t.indexId,e.key,Wb,r));return n}vn(t,n,r,e,i){fm("IndexedDbIndexManager","Updating index entries for document '%s'",n.key);const s=[];return function(e,t,n,r,i){var s=e.getIterator(),a=t.getIterator();let o=t_(s),c=t_(a);for(;o||c;){let e=!1,t=!1;if(o&&c){const r=n(o,c);r<0?t=!0:0<r&&(e=!0)}else null!=o?t=!0:e=!0;e?(r(c),c=t_(a)):t?(i(o),o=t_(s)):(o=t_(s),c=t_(a))}}(e,i,Ob,e=>{s.push(this.Cn(t,n,r,e))},e=>{s.push(this.Fn(t,n,r,e))}),ev.waitFor(s)}Sn(e){let r=1;return Yb(e).J({index:"sequenceNumberIndex",reverse:!0,range:IDBKeyRange.upperBound([this.uid,Number.MAX_SAFE_INTEGER])},(e,t,n)=>{n.done(),r=t.sequenceNumber+1}).next(()=>r)}createRange(e,t,n){n=n.sort((e,t)=>Ob(e,t)).filter((e,t,n)=>!t||0!==Ob(e,n[t-1]));const r=[];r.push(e);for(const i of n){const n=Ob(i,e),s=Ob(i,t);if(0===n)r[0]=e.en();else if(0<n&&s<0)r.push(i),r.push(i.en());else if(0<s)break}r.push(t);const i=[];for(let a=0;a<r.length;a+=2){if(this.Mn(r[a],r[a+1]))return[];const t=[r[a].indexId,this.uid,r[a].arrayValue,r[a].directionalValue,Wb,[]],n=[r[a+1].indexId,this.uid,r[a+1].arrayValue,r[a+1].directionalValue,Wb,[]];i.push(IDBKeyRange.bound(t,n))}return i}Mn(e,t){return 0<Ob(e,t)}getMinOffsetFromCollectionGroup(e,t){return this.getFieldIndexes(e,t).next(Xb)}getMinOffset(t,e){return ev.mapArray(this.Tn(e),e=>this.In(t,e).next(e=>e||_m())).next(Xb)}}function Hb(e){return Wv(e,"collectionParents")}function Qb(e){return Wv(e,"indexEntries")}function Jb(e){return Wv(e,"indexConfiguration")}function Yb(e){return Wv(e,"indexState")}function Xb(e){ym(0!==e.length);let t=e[0].indexState.offset,n=t.largestBatchId;for(let i=1;i<e.length;i++){var r=e[i].indexState.offset;Jm(r,t)<0&&(t=r),n<r.largestBatchId&&(n=r.largestBatchId)}return new Qm(t.readTime,t.documentKey,n)}const Zb={didRun:!1,sequenceNumbersCollected:0,targetsRemoved:0,documentsRemoved:0};class eI{static withCacheSize(e){return new eI(e,eI.DEFAULT_COLLECTION_PERCENTILE,eI.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}constructor(e,t,n){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=n}}function tI(e,t,n){const r=e.store("mutations"),i=e.store("documentMutations"),s=[],a=IDBKeyRange.only(n.batchId);let o=0;const c=r.J({range:a},(e,t,n)=>(o++,n.delete()));s.push(c.next(()=>{ym(1===o)}));const l=[];for(const e of n.mutations){const r=Iv(t,e.key.path,n.batchId);s.push(i.delete(r)),l.push(e.key)}return ev.waitFor(s).next(()=>l)}function nI(e){if(!e)return 0;let t;if(e.document)t=e.document;else if(e.unknownDocument)t=e.unknownDocument;else{if(!e.noDocument)throw _m();t=e.noDocument}return JSON.stringify(t).length}eI.DEFAULT_COLLECTION_PERCENTILE=10,eI.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,eI.DEFAULT=new eI(41943040,eI.DEFAULT_COLLECTION_PERCENTILE,eI.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),eI.DISABLED=new eI(-1,0,0);class rI{constructor(e,t,n,r){this.userId=e,this.serializer=t,this.indexManager=n,this.referenceDelegate=r,this.xn={}}static Pt(e,t,n,r){ym(""!==e.uid);var i=e.isAuthenticated()?e.uid:"";return new rI(i,t,n,r)}checkEmpty(e){let r=!0;var t=IDBKeyRange.bound([this.userId,Number.NEGATIVE_INFINITY],[this.userId,Number.POSITIVE_INFINITY]);return sI(e).J({index:"userMutationsIndex",range:t},(e,t,n)=>{r=!1,n.done()}).next(()=>r)}addMutationBatch(u,h,d,p){const f=aI(u),g=sI(u);return g.add({}).next(e=>{ym("number"==typeof e);const t=new dw(e,h,d,p),n=(i=this.serializer,s=this.userId,a=t,o=a.baseMutations.map(e=>Xw(i.ht,e)),c=a.mutations.map(e=>Xw(i.ht,e)),{userId:s,batchId:a.batchId,localWriteTimeMs:a.localWriteTime.toMillis(),baseMutations:o,mutations:c}),r=[];var i,s,a,o,c;let l=new Zv((e,t)=>Dm(e.canonicalString(),t.canonicalString()));for(const u of p){const h=Iv(this.userId,u.key.path,e);l=l.add(u.key.path.popLast()),r.push(g.put(n)),r.push(f.put(h,Tv))}return l.forEach(e=>{r.push(this.indexManager.addToCollectionParentIndex(u,e))}),u.addOnCommittedListener(()=>{this.xn[e]=t.keys()}),ev.waitFor(r).next(()=>t)})}lookupMutationBatch(e,t){return sI(e).get(t).next(e=>e?(ym(e.userId===this.userId),fb(this.serializer,e)):null)}On(e,n){return this.xn[n]?ev.resolve(this.xn[n]):this.lookupMutationBatch(e,n).next(e=>{if(e){var t=e.keys();return this.xn[n]=t}return null})}getNextMutationBatchAfterBatchId(e,t){const r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]);let i=null;return sI(e).J({index:"userMutationsIndex",range:n},(e,t,n)=>{t.userId===this.userId&&(ym(t.batchId>=r),i=fb(this.serializer,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){var t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]);let r=-1;return sI(e).J({index:"userMutationsIndex",range:t,reverse:!0},(e,t,n)=>{r=t.batchId,n.done()}).next(()=>r)}getAllMutationBatches(e){var t=IDBKeyRange.bound([this.userId,-1],[this.userId,Number.POSITIVE_INFINITY]);return sI(e).U("userMutationsIndex",t).next(e=>e.map(e=>fb(this.serializer,e)))}getAllMutationBatchesAffectingDocumentKey(a,o){const e=bv(this.userId,o.path),t=IDBKeyRange.lowerBound(e),c=[];return aI(a).J({range:t},(e,t,n)=>{var[r,i,s]=e,i=yv(i);if(r===this.userId&&o.path.isEqual(i))return sI(a).get(s).next(e=>{if(!e)throw _m();ym(e.userId===this.userId),c.push(fb(this.serializer,e))});n.done()}).next(()=>c)}getAllMutationBatchesAffectingDocumentKeys(t,e){let o=new Zv(Dm);const n=[];return e.forEach(a=>{var e=bv(this.userId,a.path),e=IDBKeyRange.lowerBound(e),e=aI(t).J({range:e},(e,t,n)=>{var[r,i,s]=e,i=yv(i);r===this.userId&&a.path.isEqual(i)?o=o.add(s):n.done()});n.push(e)}),ev.waitFor(n).next(()=>this.Nn(t,o))}getAllMutationBatchesAffectingQuery(e,t){const a=t.path,o=a.length+1,n=bv(this.userId,a),r=IDBKeyRange.lowerBound(n);let c=new Zv(Dm);return aI(e).J({range:r},(e,t,n)=>{var[r,i,s]=e,i=yv(i);r===this.userId&&a.isPrefixOf(i)?i.length===o&&(c=c.add(s)):n.done()}).next(()=>this.Nn(e,c))}Nn(t,e){const n=[],r=[];return e.forEach(e=>{r.push(sI(t).get(e).next(e=>{if(null===e)throw _m();ym(e.userId===this.userId),n.push(fb(this.serializer,e))}))}),ev.waitFor(r).next(()=>n)}removeMutationBatch(t,n){return tI(t._e,this.userId,n).next(e=>(t.addOnCommittedListener(()=>{this.Ln(n.batchId)}),ev.forEach(e,e=>this.referenceDelegate.markPotentiallyOrphaned(t,e))))}Ln(e){delete this.xn[e]}performConsistencyCheck(n){return this.checkEmpty(n).next(e=>{if(!e)return ev.resolve();const t=IDBKeyRange.lowerBound([this.userId]),r=[];return aI(n).J({range:t},(e,t,n)=>{if(e[0]===this.userId){const t=yv(e[1]);r.push(t)}else n.done()}).next(()=>{ym(0===r.length)})})}containsKey(e,t){return iI(e,this.userId,t)}Bn(e){return oI(e).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function iI(e,s,t){const n=bv(s,t.path),a=n[1],r=IDBKeyRange.lowerBound(n);let o=!1;return aI(e).J({range:r,H:!0},(e,t,n)=>{var[r,i]=e;r===s&&i===a&&(o=!0),n.done()}).next(()=>o)}function sI(e){return Wv(e,"mutations")}function aI(e){return Wv(e,"documentMutations")}function oI(e){return Wv(e,"mutationQueues")}class cI{constructor(e){this.kn=e}next(){return this.kn+=2,this.kn}static qn(){return new cI(0)}static Qn(){return new cI(-1)}}class lI{constructor(e,t){this.referenceDelegate=e,this.serializer=t}allocateTargetId(n){return this.Kn(n).next(e=>{const t=new cI(e.highestTargetId);return e.highestTargetId=t.next(),this.$n(n,e).next(()=>e.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.Kn(e).next(e=>Mm.fromTimestamp(new Lm(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.Kn(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(t,n,r){return this.Kn(t).next(e=>(e.highestListenSequenceNumber=n,r&&(e.lastRemoteSnapshotVersion=r.toTimestamp()),n>e.highestListenSequenceNumber&&(e.highestListenSequenceNumber=n),this.$n(t,e)))}addTargetData(t,n){return this.Un(t,n).next(()=>this.Kn(t).next(e=>(e.targetCount+=1,this.Wn(n,e),this.$n(t,e))))}updateTargetData(e,t){return this.Un(e,t)}removeTargetData(t,e){return this.removeMatchingKeysForTargetId(t,e.targetId).next(()=>uI(t).delete(e.targetId)).next(()=>this.Kn(t)).next(e=>(ym(0<e.targetCount),--e.targetCount,this.$n(t,e)))}removeTargets(r,i,s){let a=0;const o=[];return uI(r).J((e,t)=>{var n=gb(t);n.sequenceNumber<=i&&null===s.get(n.targetId)&&(a++,o.push(this.removeTargetData(r,n)))}).next(()=>ev.waitFor(o)).next(()=>a)}forEachTarget(e,r){return uI(e).J((e,t)=>{var n=gb(t);r(n)})}Kn(e){return hI(e).get("targetGlobalKey").next(e=>(ym(null!==e),e))}$n(e,t){return hI(e).put("targetGlobalKey",t)}Un(e,t){return uI(e).put(mb(this.serializer,t))}Wn(e,t){let n=!1;return e.targetId>t.highestTargetId&&(t.highestTargetId=e.targetId,n=!0),e.sequenceNumber>t.highestListenSequenceNumber&&(t.highestListenSequenceNumber=e.sequenceNumber,n=!0),n}getTargetCount(e){return this.Kn(e).next(e=>e.targetCount)}getTargetData(e,i){var t=ay(i),t=IDBKeyRange.bound([t,Number.NEGATIVE_INFINITY],[t,Number.POSITIVE_INFINITY]);let s=null;return uI(e).J({range:t,index:"queryTargetsIndex"},(e,t,n)=>{var r=gb(t);oy(i,r.target)&&(s=r,n.done())}).next(()=>s)}addMatchingKeys(n,e,r){const i=[],s=dI(n);return e.forEach(e=>{var t=vv(e.path);i.push(s.put({targetId:r,path:t})),i.push(this.referenceDelegate.addReference(n,r,e))}),ev.waitFor(i)}removeMatchingKeys(n,e,r){const i=dI(n);return ev.forEach(e,e=>{var t=vv(e.path);return ev.waitFor([i.delete([r,t]),this.referenceDelegate.removeReference(n,r,e)])})}removeMatchingKeysForTargetId(e,t){const n=dI(e),r=IDBKeyRange.bound([t],[t+1],!1,!0);return n.delete(r)}getMatchingKeysForTargetId(e,t){const n=IDBKeyRange.bound([t],[t+1],!1,!0),r=dI(e);let i=Ly();return r.J({range:n,H:!0},(e,t,n)=>{var r=yv(e[1]),r=new Bm(r);i=i.add(r)}).next(()=>i)}containsKey(e,t){var n=vv(t.path),n=IDBKeyRange.bound([n],[Om(n)],!1,!0);let r=0;return dI(e).J({index:"documentTargetsIndex",H:!0,range:n},([e],t,n)=>{0!==e&&(r++,n.done())}).next(()=>0<r)}ut(e,t){return uI(e).get(t).next(e=>e?gb(e):null)}}function uI(e){return Wv(e,"targets")}function hI(e){return Wv(e,"targetGlobal")}function dI(e){return Wv(e,"targetDocuments")}function pI([e,t],[n,r]){var i=Dm(e,n);return 0===i?Dm(t,r):i}class fI{constructor(e){this.Gn=e,this.buffer=new Zv(pI),this.zn=0}jn(){return++this.zn}Hn(e){var t=[e,this.jn()];if(this.buffer.size<this.Gn)this.buffer=this.buffer.add(t);else{const e=this.buffer.last();pI(t,e)<0&&(this.buffer=this.buffer.delete(e).add(t))}}get maxValue(){return this.buffer.last()[0]}}class gI{constructor(e,t,n){this.garbageCollector=e,this.asyncQueue=t,this.localStore=n,this.Jn=null}start(){-1!==this.garbageCollector.params.cacheSizeCollectionThreshold&&this.Yn(6e4)}stop(){this.Jn&&(this.Jn.cancel(),this.Jn=null)}get started(){return null!==this.Jn}Yn(e){fm("LruGarbageCollector",`Garbage collection scheduled in ${e}ms`),this.Jn=this.asyncQueue.enqueueAfterDelay("lru_garbage_collection",e,async()=>{this.Jn=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(e){av(e)?fm("LruGarbageCollector","Ignoring IndexedDB error during garbage collection: ",e):await Zm(e)}await this.Yn(3e5)})}}class mI{constructor(e,t){this.Zn=e,this.params=t}calculateTargetCount(e,t){return this.Zn.Xn(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return ev.resolve(pv.oe);const n=new fI(t);return this.Zn.forEachTarget(e,e=>n.Hn(e.sequenceNumber)).next(()=>this.Zn.er(e,e=>n.Hn(e))).next(()=>n.maxValue)}removeTargets(e,t,n){return this.Zn.removeTargets(e,t,n)}removeOrphanedDocuments(e,t){return this.Zn.removeOrphanedDocuments(e,t)}collect(t,n){return-1===this.params.cacheSizeCollectionThreshold?(fm("LruGarbageCollector","Garbage collection skipped; disabled"),ev.resolve(Zb)):this.getCacheSize(t).next(e=>e<this.params.cacheSizeCollectionThreshold?(fm("LruGarbageCollector",`Garbage collection skipped; Cache size ${e} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`),Zb):this.tr(t,n))}getCacheSize(e){return this.Zn.getCacheSize(e)}tr(t,n){let r,i,s,a,o,c,l;const u=Date.now();return this.calculateTargetCount(t,this.params.percentileToCollect).next(e=>(i=e>this.params.maximumSequenceNumbersToCollect?(fm("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`),this.params.maximumSequenceNumbersToCollect):e,a=Date.now(),this.nthSequenceNumber(t,i))).next(e=>(r=e,o=Date.now(),this.removeTargets(t,r,n))).next(e=>(s=e,c=Date.now(),this.removeOrphanedDocuments(t,r))).next(e=>(l=Date.now(),pm()<=m.DEBUG&&fm("LruGarbageCollector",`LRU Garbage Collection\n\tCounted targets in ${a-u}ms\n\tDetermined least recently used ${i} in `+(o-a)+"ms\n"+`\tRemoved ${s} targets in `+(c-o)+"ms\n"+`\tRemoved ${e} documents in `+(l-c)+"ms\n"+`Total Duration: ${l-u}ms`),ev.resolve({didRun:!0,sequenceNumbersCollected:i,targetsRemoved:s,documentsRemoved:e})))}}function vI(e,t){return new mI(e,t)}class _I{constructor(e,t){this.db=e,this.garbageCollector=vI(this,t)}Xn(e){const n=this.nr(e);return this.db.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}nr(e){let t=0;return this.er(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}er(e,n){return this.rr(e,(e,t)=>n(t))}addReference(e,t,n){return yI(e,n)}removeReference(e,t,n){return yI(e,n)}removeTargets(e,t,n){return this.db.getTargetCache().removeTargets(e,t,n)}markPotentiallyOrphaned(e,t){return yI(e,t)}ir(t,n){let r=!1;return oI(t).Y(e=>iI(t,e,n).next(e=>(e&&(r=!0),ev.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(n,r){const i=this.db.getRemoteDocumentCache().newChangeBuffer(),s=[];let a=0;return this.rr(n,(t,e)=>{if(e<=r){const r=this.ir(n,t).next(e=>{if(!e)return a++,i.getEntry(n,t).next(()=>(i.removeEntry(t,Mm.min()),dI(n).delete(function(e){return[0,vv(e.path)]}(t))))});s.push(r)}}).next(()=>ev.waitFor(s)).next(()=>i.apply(n)).next(()=>a)}removeTarget(e,t){var n=t.withSequenceNumber(e.currentSequenceNumber);return this.db.getTargetCache().updateTargetData(e,n)}updateLimboDocument(e,t){return yI(e,t)}rr(e,r){const t=dI(e);let i,s=pv.oe;return t.J({index:"documentTargetsIndex"},([e],{path:t,sequenceNumber:n})=>{0===e?(s!==pv.oe&&r(new Bm(yv(i)),s),s=n,i=t):s=pv.oe}).next(()=>{s!==pv.oe&&r(new Bm(yv(i)),s)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function yI(e,t){return dI(e).put((e=e.currentSequenceNumber,{targetId:0,path:vv(t.path),sequenceNumber:e}))}class wI{constructor(){this.changes=new ky(e=>e.toString(),(e,t)=>e.isEqual(t)),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,M_.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();var n=this.changes.get(t);return void 0!==n?ev.resolve(n):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class bI{constructor(e){this.serializer=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,n){return CI(e).put(n)}removeEntry(e,t,n){return CI(e).delete(function(e,t){const n=e.path.toArray();return[n.slice(0,n.length-2),n[n.length-2],hb(t),n[n.length-1]]}(t,n))}updateMetadata(t,n){return this.getMetadata(t).next(e=>(e.byteSize+=n,this.sr(t,e)))}getEntry(e,n){let r=M_.newInvalidDocument(n);return CI(e).J({index:"documentKeyIndex",range:IDBKeyRange.only(SI(n))},(e,t)=>{r=this._r(n,t)}).next(()=>r)}ar(e,n){let r={size:0,document:M_.newInvalidDocument(n)};return CI(e).J({index:"documentKeyIndex",range:IDBKeyRange.only(SI(n))},(e,t)=>{r={document:this._r(n,t),size:nI(t)}}).next(()=>r)}getEntries(e,t){let r=Ay;return this.ur(e,t,(e,t)=>{var n=this._r(e,t);r=r.insert(e,n)}).next(()=>r)}cr(e,t){let r=Ay,i=new Jv(Bm.comparator);return this.ur(e,t,(e,t)=>{var n=this._r(e,t);r=r.insert(e,n),i=i.insert(e,nI(t))}).next(()=>({documents:r,lr:i}))}ur(e,t,i){if(t.isEmpty())return ev.resolve();let n=new Zv(AI);t.forEach(e=>n=n.add(e));const r=IDBKeyRange.bound(SI(n.first()),SI(n.last())),s=n.getIterator();let a=s.getNext();return CI(e).J({index:"documentKeyIndex",range:r},(e,t,n)=>{for(var r=Bm.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);a&&AI(a,r)<0;)i(a,null),a=s.getNext();a&&a.isEqual(r)&&(i(a,t),a=s.hasNext()?s.getNext():null),a?n.$(SI(a)):n.done()}).next(()=>{for(;a;)i(a,null),a=s.hasNext()?s.getNext():null})}getDocumentsMatchingQuery(e,n,t,r,i){const s=n.path,a=[s.popLast().toArray(),s.lastSegment(),hb(t.readTime),t.documentKey.path.isEmpty()?"":t.documentKey.path.lastSegment()],o=[s.popLast().toArray(),s.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return CI(e).U(IDBKeyRange.bound(a,o,!0)).next(e=>{null==i||i.incrementDocumentReadCount(e.length);let t=Ay;for(const i of e){const e=this._r(Bm.fromSegments(i.prefixPath.concat(i.collectionGroup,i.documentId)),i);e.isFoundDocument()&&(Ey(n,e)||r.has(e.key))&&(t=t.insert(e.key,e))}return t})}getAllFromCollectionGroup(e,t,n,i){let s=Ay;var r=kI(t,n),a=kI(t,Qm.max());return CI(e).J({index:"collectionGroupIndex",range:IDBKeyRange.bound(r,a,!0)},(e,t,n)=>{var r=this._r(Bm.fromSegments(t.prefixPath.concat(t.collectionGroup,t.documentId)),t);s=s.insert(r.key,r),s.size===i&&n.done()}).next(()=>s)}newChangeBuffer(e){return new TI(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return EI(e).get("remoteDocumentGlobalKey").next(e=>(ym(!!e),e))}sr(e,t){return EI(e).put("remoteDocumentGlobalKey",t)}_r(e,t){if(t){const e=function(e,t){let n;if(t.document)n=Yw(e.ht,t.document,!!t.hasCommittedMutations);else if(t.noDocument){const e=Bm.fromSegments(t.noDocument.path),i=pb(t.noDocument.readTime);n=M_.newNoDocument(e,i),t.hasCommittedMutations&&n.setHasCommittedMutations()}else{if(!t.unknownDocument)return _m();{const e=Bm.fromSegments(t.unknownDocument.path),s=pb(t.unknownDocument.version);n=M_.newUnknownDocument(e,s)}}return t.readTime&&n.setReadTime((t=t.readTime,r=new Lm(t[0],t[1]),Mm.fromTimestamp(r))),n;var r}(this.serializer,t);if(!e.isNoDocument()||!e.version.isEqual(Mm.min()))return e}return M_.newInvalidDocument(e)}}function II(e){return new bI(e)}class TI extends wI{constructor(e,t){super(),this.hr=e,this.trackRemovals=t,this.Pr=new ky(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(s){const a=[];let o=0,c=new Zv((e,t)=>Dm(e.canonicalString(),t.canonicalString()));return this.changes.forEach((e,t)=>{var n=this.Pr.get(e);if(a.push(this.hr.removeEntry(s,e,n.readTime)),t.isValidDocument()){var r=ub(this.hr.serializer,t);c=c.add(e.path.popLast());var i=nI(r);o+=i-n.size,a.push(this.hr.addEntry(s,e,r))}else if(o-=n.size,this.trackRemovals){const o=ub(this.hr.serializer,t.convertToNoDocument(Mm.min()));a.push(this.hr.addEntry(s,e,o))}}),c.forEach(e=>{a.push(this.hr.indexManager.addToCollectionParentIndex(s,e))}),a.push(this.hr.updateMetadata(s,o)),ev.waitFor(a)}getFromCache(e,t){return this.hr.ar(e,t).next(e=>(this.Pr.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.hr.cr(e,t).next(({documents:n,lr:e})=>(e.forEach((e,t)=>{this.Pr.set(e,{size:t,readTime:n.get(e).readTime})}),n))}}function EI(e){return Wv(e,"remoteDocumentGlobal")}function CI(e){return Wv(e,"remoteDocumentsV14")}function SI(e){const t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function kI(e,t){const n=t.documentKey.path.toArray();return[e,hb(t.readTime),n.slice(0,n.length-2),0<n.length?n[n.length-1]:""]}function AI(e,t){var n=e.path.toArray(),r=t.path.toArray();let i=0;for(let s=0;s<n.length-2&&s<r.length-2;++s)if(i=Dm(n[s],r[s]),i)return i;return i=Dm(n.length,r.length),i||(i=Dm(n[n.length-2],r[r.length-2]),i||Dm(n[n.length-1],r[r.length-1]))}class NI{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class RI{constructor(e,t,n,r){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=n,this.indexManager=r}getDocument(t,n){let r=null;return this.documentOverlayCache.getOverlay(t,n).next(e=>(r=e,this.remoteDocumentCache.getEntry(t,n))).next(e=>(null!==r&&rw(r.mutation,e,n_.empty(),Lm.now()),e))}getDocuments(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.getLocalViewOfDocuments(t,e,Ly()).next(()=>e))}getLocalViewOfDocuments(e,t,n=Ly()){const r=Dy();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,n).next(e=>{let n=Ry();return e.forEach((e,t)=>{n=n.insert(e,t.overlayedDocument)}),n}))}getOverlayedDocuments(e,t){const n=Dy();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,Ly()))}populateOverlays(e,n,t){const r=[];return t.forEach(e=>{n.has(e)||r.push(e)}),this.documentOverlayCache.getOverlays(e,r).next(e=>{e.forEach((e,t)=>{n.set(e,t)})})}computeViews(e,t,r,i){let s=Ay;const a=Dy(),o=Dy();return t.forEach((e,t)=>{const n=r.get(t.key);i.has(t.key)&&(void 0===n||n.mutation instanceof aw)?s=s.insert(t.key,t):void 0!==n?(a.set(t.key,n.mutation.getFieldMask()),rw(n.mutation,t,n.mutation.getFieldMask(),Lm.now())):a.set(t.key,n_.empty())}),this.recalculateAndSaveOverlays(e,s).next(e=>(e.forEach((e,t)=>a.set(e,t)),t.forEach((e,t)=>{var n;return o.set(e,new NI(t,null!==(n=a.get(e))&&void 0!==n?n:null))}),o))}recalculateAndSaveOverlays(s,a){const o=Dy();let c=new Jv((e,t)=>e-t),l=Ly();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(s,a).next(e=>{for(const r of e)r.keys().forEach(e=>{var t,n=a.get(e);null!==n&&(t=o.get(e)||n_.empty(),t=r.applyToLocalView(n,t),o.set(e,t),t=(c.get(r.batchId)||Ly()).add(e),c=c.insert(r.batchId,t))})}).next(()=>{const e=[],t=c.getReverseIterator();for(;t.hasNext();){const c=t.getNext(),n=c.key,r=c.value,i=Dy();r.forEach(e=>{var t;l.has(e)||(null!==(t=tw(a.get(e),o.get(e)))&&i.set(e,t),l=l.add(e))}),e.push(this.documentOverlayCache.saveOverlays(s,n,i))}return ev.waitFor(e)}).next(()=>o)}recalculateAndSaveOverlaysForDocumentKeys(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.recalculateAndSaveOverlays(t,e))}getDocumentsMatchingQuery(e,t,n,r){return i=t,Bm.isDocumentKey(i.path)&&null===i.collectionGroup&&0===i.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):my(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n,r):this.getDocumentsMatchingCollectionQuery(e,t,n,r);var i}getNextDocuments(s,t,a,o){return this.remoteDocumentCache.getAllFromCollectionGroup(s,t,a,o).next(n=>{const e=0<o-n.size?this.documentOverlayCache.getOverlaysForCollectionGroup(s,t,a.largestBatchId,o-n.size):ev.resolve(Dy());let r=-1,i=n;return e.next(e=>ev.forEach(e,(t,e)=>(r<e.largestBatchId&&(r=e.largestBatchId),n.get(t)?ev.resolve():this.remoteDocumentCache.getEntry(s,t).next(e=>{i=i.insert(t,e)}))).next(()=>this.populateOverlays(s,e,n)).next(()=>this.computeViews(s,i,e,Ly())).next(e=>({batchId:r,changes:Py(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new Bm(t)).next(e=>{let t=Ry();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(r,i,s,a){const o=i.collectionGroup;let c=Ry();return this.indexManager.getCollectionParents(r,o).next(e=>ev.forEach(e,e=>{var t,n=(t=i,e=e.child(o),new dy(e,null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt));return this.getDocumentsMatchingCollectionQuery(r,n,s,a).next(e=>{e.forEach((e,t)=>{c=c.insert(e,t)})})}).next(()=>c))}getDocumentsMatchingCollectionQuery(t,s,n,r){let a;return this.documentOverlayCache.getOverlaysForCollection(t,s.path,n.largestBatchId).next(e=>(a=e,this.remoteDocumentCache.getDocumentsMatchingQuery(t,s,n,a,r))).next(r=>{a.forEach((e,t)=>{var n=t.getKey();null===r.get(n)&&(r=r.insert(n,M_.newInvalidDocument(n)))});let i=Ry();return r.forEach((e,t)=>{var n=a.get(e);void 0!==n&&rw(n.mutation,t,n_.empty(),Lm.now()),Ey(s,t)&&(i=i.insert(e,t))}),i})}}class PI{constructor(e){this.serializer=e,this.Tr=new Map,this.Ir=new Map}getBundleMetadata(e,t){return ev.resolve(this.Tr.get(t))}saveBundleMetadata(e,t){return this.Tr.set(t.id,{id:t.id,version:t.version,createTime:qw(t.createTime)}),ev.resolve()}getNamedQuery(e,t){return ev.resolve(this.Ir.get(t))}saveNamedQuery(e,t){return this.Ir.set(t.name,{name:(t=t).name,query:vb(t.bundledQuery),readTime:qw(t.readTime)}),ev.resolve()}}class DI{constructor(){this.overlays=new Jv(Bm.comparator),this.Er=new Map}getOverlay(e,t){return ev.resolve(this.overlays.get(t))}getOverlays(e,t){const n=Dy();return ev.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(n,r,e){return e.forEach((e,t)=>{this.Tt(n,r,t)}),ev.resolve()}removeOverlaysForBatchId(e,t,n){const r=this.Er.get(n);return void 0!==r&&(r.forEach(e=>this.overlays=this.overlays.remove(e)),this.Er.delete(n)),ev.resolve()}getOverlaysForCollection(e,t,n){const r=Dy(),i=t.length+1,s=new Bm(t.child("")),a=this.overlays.getIteratorFrom(s);for(;a.hasNext();){const e=a.getNext().value,s=e.getKey();if(!t.isPrefixOf(s.path))break;s.path.length===i&&e.largestBatchId>n&&r.set(e.getKey(),e)}return ev.resolve(r)}getOverlaysForCollectionGroup(t,e,n,r){let i=new Jv((e,t)=>e-t);const s=this.overlays.getIterator();for(;s.hasNext();){const t=s.getNext().value;if(t.getKey().getCollectionGroup()===e&&t.largestBatchId>n){let e=i.get(t.largestBatchId);null===e&&(e=Dy(),i=i.insert(t.largestBatchId,e)),e.set(t.getKey(),t)}}const a=Dy(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=r)););return ev.resolve(a)}Tt(e,t,n){var r=this.overlays.get(n.key);if(null!==r){const e=this.Er.get(r.largestBatchId).delete(n.key);this.Er.set(r.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new fw(t,n));let i=this.Er.get(t);void 0===i&&(i=Ly(),this.Er.set(t,i)),this.Er.set(t,i.add(n.key))}}class xI{constructor(){this.sessionToken=i_.EMPTY_BYTE_STRING}getSessionToken(e){return ev.resolve(this.sessionToken)}setSessionToken(e,t){return this.sessionToken=t,ev.resolve()}}class OI{constructor(){this.dr=new Zv(LI.Ar),this.Rr=new Zv(LI.Vr)}isEmpty(){return this.dr.isEmpty()}addReference(e,t){var n=new LI(e,t);this.dr=this.dr.add(n),this.Rr=this.Rr.add(n)}mr(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.gr(new LI(e,t))}pr(e,t){e.forEach(e=>this.removeReference(e,t))}yr(e){const t=new Bm(new Um([])),n=new LI(t,e),r=new LI(t,e+1),i=[];return this.Rr.forEachInRange([n,r],e=>{this.gr(e),i.push(e.key)}),i}wr(){this.dr.forEach(e=>this.gr(e))}gr(e){this.dr=this.dr.delete(e),this.Rr=this.Rr.delete(e)}Sr(e){var t=new Bm(new Um([])),n=new LI(t,e),t=new LI(t,e+1);let r=Ly();return this.Rr.forEachInRange([n,t],e=>{r=r.add(e.key)}),r}containsKey(e){var t=new LI(e,0),t=this.dr.firstAfterOrEqual(t);return null!==t&&e.isEqual(t.key)}}class LI{constructor(e,t){this.key=e,this.br=t}static Ar(e,t){return Bm.comparator(e.key,t.key)||Dm(e.br,t.br)}static Vr(e,t){return Dm(e.br,t.br)||Bm.comparator(e.key,t.key)}}class MI{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.Dr=1,this.vr=new Zv(LI.Ar)}checkEmpty(e){return ev.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,r){var i=this.Dr;this.Dr++,0<this.mutationQueue.length&&this.mutationQueue[this.mutationQueue.length-1];var s=new dw(i,t,n,r);this.mutationQueue.push(s);for(const t of r)this.vr=this.vr.add(new LI(t.key,i)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return ev.resolve(s)}lookupMutationBatch(e,t){return ev.resolve(this.Cr(t))}getNextMutationBatchAfterBatchId(e,t){var n=this.Fr(t+1),n=n<0?0:n;return ev.resolve(this.mutationQueue.length>n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return ev.resolve(0===this.mutationQueue.length?-1:this.Dr-1)}getAllMutationBatches(e){return ev.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new LI(t,0),r=new LI(t,Number.POSITIVE_INFINITY),i=[];return this.vr.forEachInRange([n,r],e=>{var t=this.Cr(e.br);i.push(t)}),ev.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new Zv(Dm);return t.forEach(e=>{var t=new LI(e,0),n=new LI(e,Number.POSITIVE_INFINITY);this.vr.forEachInRange([t,n],e=>{r=r.add(e.br)})}),ev.resolve(this.Mr(r))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,r=n.length+1;let i=n;Bm.isDocumentKey(i)||(i=i.child(""));var s=new LI(new Bm(i),0);let a=new Zv(Dm);return this.vr.forEachWhile(e=>{var t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===r&&(a=a.add(e.br)),!0)},s),ev.resolve(this.Mr(a))}Mr(e){const n=[];return e.forEach(e=>{var t=this.Cr(e);null!==t&&n.push(t)}),n}removeMutationBatch(n,r){ym(0===this.Or(r.batchId,"removed")),this.mutationQueue.shift();let i=this.vr;return ev.forEach(r.mutations,e=>{var t=new LI(e.key,r.batchId);return i=i.delete(t),this.referenceDelegate.markPotentiallyOrphaned(n,e.key)}).next(()=>{this.vr=i})}Ln(e){}containsKey(e,t){var n=new LI(t,0),n=this.vr.firstAfterOrEqual(n);return ev.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,ev.resolve()}Or(e,t){return this.Fr(e)}Fr(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Cr(e){var t=this.Fr(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class FI{constructor(e){this.Nr=e,this.docs=new Jv(Bm.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,r=this.docs.get(n),i=r?r.size:0,s=this.Nr(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){var t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const n=this.docs.get(t);return ev.resolve(n?n.document.mutableCopy():M_.newInvalidDocument(t))}getEntries(e,t){let n=Ay;return t.forEach(e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():M_.newInvalidDocument(e))}),ev.resolve(n)}getDocumentsMatchingQuery(e,t,n,r){let i=Ay;const s=t.path,a=new Bm(s.child("")),o=this.docs.getIteratorFrom(a);for(;o.hasNext();){const{key:e,value:{document:a}}=o.getNext();if(!s.isPrefixOf(e.path))break;e.path.length>s.length+1||Jm(Hm(a),n)<=0||(r.has(a.key)||Ey(t,a))&&(i=i.insert(a.key,a.mutableCopy()))}return ev.resolve(i)}getAllFromCollectionGroup(e,t,n,r){_m()}Lr(e,t){return ev.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new UI(this)}getSize(e){return ev.resolve(this.size)}}class UI extends wI{constructor(e){super(),this.hr=e}applyChanges(n){const r=[];return this.changes.forEach((e,t)=>{t.isValidDocument()?r.push(this.hr.addEntry(n,t)):this.hr.removeEntry(e)}),ev.waitFor(r)}getFromCache(e,t){return this.hr.getEntry(e,t)}getAllFromCache(e,t){return this.hr.getEntries(e,t)}}class VI{constructor(e){this.persistence=e,this.Br=new ky(e=>ay(e),oy),this.lastRemoteSnapshotVersion=Mm.min(),this.highestTargetId=0,this.kr=0,this.qr=new OI,this.targetCount=0,this.Qr=cI.qn()}forEachTarget(e,n){return this.Br.forEach((e,t)=>n(t)),ev.resolve()}getLastRemoteSnapshotVersion(e){return ev.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return ev.resolve(this.kr)}allocateTargetId(e){return this.highestTargetId=this.Qr.next(),ev.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.kr&&(this.kr=t),ev.resolve()}Un(e){this.Br.set(e.target,e);var t=e.targetId;t>this.highestTargetId&&(this.Qr=new cI(t),this.highestTargetId=t),e.sequenceNumber>this.kr&&(this.kr=e.sequenceNumber)}addTargetData(e,t){return this.Un(t),this.targetCount+=1,ev.resolve()}updateTargetData(e,t){return this.Un(t),ev.resolve()}removeTargetData(e,t){return this.Br.delete(t.target),this.qr.yr(t.targetId),--this.targetCount,ev.resolve()}removeTargets(n,r,i){let s=0;const a=[];return this.Br.forEach((e,t)=>{t.sequenceNumber<=r&&null===i.get(t.targetId)&&(this.Br.delete(e),a.push(this.removeMatchingKeysForTargetId(n,t.targetId)),s++)}),ev.waitFor(a).next(()=>s)}getTargetCount(e){return ev.resolve(this.targetCount)}getTargetData(e,t){var n=this.Br.get(t)||null;return ev.resolve(n)}addMatchingKeys(e,t,n){return this.qr.mr(t,n),ev.resolve()}removeMatchingKeys(t,e,n){this.qr.pr(e,n);const r=this.persistence.referenceDelegate,i=[];return r&&e.forEach(e=>{i.push(r.markPotentiallyOrphaned(t,e))}),ev.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.qr.yr(t),ev.resolve()}getMatchingKeysForTargetId(e,t){var n=this.qr.Sr(t);return ev.resolve(n)}containsKey(e,t){return ev.resolve(this.qr.containsKey(t))}}class qI{constructor(e,t){this.Kr={},this.overlays={},this.$r=new pv(0),this.Ur=!1,this.Ur=!0,this.Wr=new xI,this.referenceDelegate=e(this),this.Gr=new VI(this),this.indexManager=new $b,this.remoteDocumentCache=(e=e=>this.referenceDelegate.zr(e),new FI(e)),this.serializer=new lb(t),this.jr=new PI(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Ur=!1,Promise.resolve()}get started(){return this.Ur}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new DI,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.Kr[e.toKey()];return n||(n=new MI(t,this.referenceDelegate),this.Kr[e.toKey()]=n),n}getGlobalsCache(){return this.Wr}getTargetCache(){return this.Gr}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.jr}runTransaction(e,t,n){fm("MemoryPersistence","Starting transaction:",e);const r=new BI(this.$r.next());return this.referenceDelegate.Hr(),n(r).next(e=>this.referenceDelegate.Jr(r).next(()=>e)).toPromise().then(e=>(r.raiseOnCommittedEvent(),e))}Yr(t,n){return ev.or(Object.values(this.Kr).map(e=>()=>e.containsKey(t,n)))}}class BI extends Xm{constructor(e){super(),this.currentSequenceNumber=e}}class jI{constructor(e){this.persistence=e,this.Zr=new OI,this.Xr=null}static ei(e){return new jI(e)}get ti(){if(this.Xr)return this.Xr;throw _m()}addReference(e,t,n){return this.Zr.addReference(n,t),this.ti.delete(n.toString()),ev.resolve()}removeReference(e,t,n){return this.Zr.removeReference(n,t),this.ti.add(n.toString()),ev.resolve()}markPotentiallyOrphaned(e,t){return this.ti.add(t.toString()),ev.resolve()}removeTarget(e,t){this.Zr.yr(t.targetId).forEach(e=>this.ti.add(e.toString()));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.ti.add(e.toString()))}).next(()=>n.removeTargetData(e,t))}Hr(){this.Xr=new Set}Jr(n){const r=this.persistence.getRemoteDocumentCache().newChangeBuffer();return ev.forEach(this.ti,e=>{const t=Bm.fromPath(e);return this.ni(n,t).next(e=>{e||r.removeEntry(t,Mm.min())})}).next(()=>(this.Xr=null,r.apply(n)))}updateLimboDocument(e,t){return this.ni(e,t).next(e=>{e?this.ti.delete(t.toString()):this.ti.add(t.toString())})}zr(e){return 0}ni(e,t){return ev.or([()=>ev.resolve(this.Zr.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Yr(e,t)])}}class zI{constructor(e,t){this.persistence=e,this.ri=new ky(e=>vv(e.path),(e,t)=>e.isEqual(t)),this.garbageCollector=vI(this,t)}static ei(e,t){return new zI(e,t)}Hr(){}Jr(e){return ev.resolve()}forEachTarget(e,t){return this.persistence.getTargetCache().forEachTarget(e,t)}Xn(e){const n=this.nr(e);return this.persistence.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}nr(e){let t=0;return this.er(e,e=>{t++}).next(()=>t)}er(n,r){return ev.forEach(this.ri,(e,t)=>this.ir(n,e,t).next(e=>e?ev.resolve():r(t)))}removeTargets(e,t,n){return this.persistence.getTargetCache().removeTargets(e,t,n)}removeOrphanedDocuments(e,n){let r=0;const t=this.persistence.getRemoteDocumentCache(),i=t.newChangeBuffer();return t.Lr(e,t=>this.ir(e,t,n).next(e=>{e||(r++,i.removeEntry(t,Mm.min()))})).next(()=>i.apply(e)).next(()=>r)}markPotentiallyOrphaned(e,t){return this.ri.set(t,e.currentSequenceNumber),ev.resolve()}removeTarget(e,t){var n=t.withSequenceNumber(e.currentSequenceNumber);return this.persistence.getTargetCache().updateTargetData(e,n)}addReference(e,t,n){return this.ri.set(n,e.currentSequenceNumber),ev.resolve()}removeReference(e,t,n){return this.ri.set(n,e.currentSequenceNumber),ev.resolve()}updateLimboDocument(e,t){return this.ri.set(t,e.currentSequenceNumber),ev.resolve()}zr(e){let t=e.key.toString().length;return e.isFoundDocument()&&(t+=function r(e){switch(m_(e)){case 0:case 1:return 4;case 2:return 8;case 3:case 8:return 16;case 4:var t=u_(e);return t?16+r(t):16;case 5:return 2*e.stringValue.length;case 6:return c_(e.bytesValue).approximateByteSize();case 7:return e.referenceValue.length;case 9:return(e.arrayValue.values||[]).reduce((e,t)=>e+r(t),0);case 10:case 11:return function(e){let n=0;return Hv(e.fields,(e,t)=>{n+=e.length+r(t)}),n}(e.mapValue);default:throw _m()}}(e.data.value)),t}ir(e,t,n){return ev.or([()=>this.persistence.Yr(e,t),()=>this.persistence.getTargetCache().containsKey(e,t),()=>{var e=this.ri.get(t);return ev.resolve(void 0!==e&&n<e)}])}getCacheSize(e){return this.persistence.getRemoteDocumentCache().getSize(e)}}class $I{constructor(e){this.serializer=e}O(t,e,n,r){const i=new tv("createOrUpgrade",e);var s;n<1&&1<=r&&(t.createObjectStore("owner"),(s=t).createObjectStore("mutationQueues",{keyPath:"userId"}),s.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",wv,{unique:!0}),s.createObjectStore("documentMutations"),KI(t),t.createObjectStore("remoteDocuments"));let a=ev.resolve();return n<3&&3<=r&&(0!==n&&((s=t).deleteObjectStore("targetDocuments"),s.deleteObjectStore("targets"),s.deleteObjectStore("targetGlobal"),KI(t)),a=a.next(()=>function(e){const t=e.store("targetGlobal"),n={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:Mm.min().toTimestamp(),targetCount:0};return t.put("targetGlobalKey",n)}(i))),n<4&&4<=r&&(0!==n&&(a=a.next(()=>function(r,i){return i.store("mutations").U().next(e=>{r.deleteObjectStore("mutations"),r.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",wv,{unique:!0});const t=i.store("mutations"),n=e.map(e=>t.put(e));return ev.waitFor(n)})}(t,i))),a=a.next(()=>{t.createObjectStore("clientMetadata",{keyPath:"clientId"})})),n<5&&5<=r&&(a=a.next(()=>this.ii(i))),n<6&&6<=r&&(a=a.next(()=>(function(e){e.createObjectStore("remoteDocumentGlobal")}(t),this.si(i)))),n<7&&7<=r&&(a=a.next(()=>this.oi(i))),n<8&&8<=r&&(a=a.next(()=>this._i(t,i))),n<9&&9<=r&&(a=a.next(()=>{var e;(e=t).objectStoreNames.contains("remoteDocumentChanges")&&e.deleteObjectStore("remoteDocumentChanges")})),n<10&&10<=r&&(a=a.next(()=>this.ai(i))),n<11&&11<=r&&(a=a.next(()=>{t.createObjectStore("bundles",{keyPath:"bundleId"}),t.createObjectStore("namedQueries",{keyPath:"name"})})),n<12&&12<=r&&(a=a.next(()=>{!function(e){const t=e.createObjectStore("documentOverlays",{keyPath:Lv});t.createIndex("collectionPathOverlayIndex",Mv,{unique:!1}),t.createIndex("collectionGroupOverlayIndex",Fv,{unique:!1})}(t)})),n<13&&13<=r&&(a=a.next(()=>function(e){const t=e.createObjectStore("remoteDocumentsV14",{keyPath:Ev});t.createIndex("documentKeyIndex",Cv),t.createIndex("collectionGroupIndex",Sv)}(t)).next(()=>this.ui(t,i)).next(()=>t.deleteObjectStore("remoteDocuments"))),n<14&&14<=r&&(a=a.next(()=>this.ci(t,i))),n<15&&15<=r&&(a=a.next(()=>function(e){e.createObjectStore("indexConfiguration",{keyPath:"indexId",autoIncrement:!0}).createIndex("collectionGroupIndex","collectionGroup",{unique:!1}),e.createObjectStore("indexState",{keyPath:Pv}).createIndex("sequenceNumberIndex",Dv,{unique:!1}),e.createObjectStore("indexEntries",{keyPath:xv}).createIndex("documentKeyIndex",Ov,{unique:!1})}(t))),n<16&&16<=r&&(a=a.next(()=>{e.objectStore("indexState").clear()}).next(()=>{e.objectStore("indexEntries").clear()})),n<17&&17<=r&&(a=a.next(()=>{t.createObjectStore("globals",{keyPath:"name"})})),a}si(t){let n=0;return t.store("remoteDocuments").J((e,t)=>{n+=nI(t)}).next(()=>{var e={byteSize:n};return t.store("remoteDocumentGlobal").put("remoteDocumentGlobalKey",e)})}ii(r){const e=r.store("mutationQueues"),t=r.store("mutations");return e.U().next(e=>ev.forEach(e,n=>{var e=IDBKeyRange.bound([n.userId,-1],[n.userId,n.lastAcknowledgedBatchId]);return t.U("userMutationsIndex",e).next(e=>ev.forEach(e,e=>{ym(e.userId===n.userId);var t=fb(this.serializer,e);return tI(r,n.userId,t).next(()=>{})}))}))}oi(e){const a=e.store("targetDocuments"),t=e.store("remoteDocuments");return e.store("targetGlobal").get("targetGlobalKey").next(i=>{const s=[];return t.J((e,t)=>{const n=new Um(e),r=[0,vv(n)];s.push(a.get(r).next(e=>e?ev.resolve():(e=>a.put({targetId:0,path:vv(e),sequenceNumber:i.highestListenSequenceNumber}))(n)))}).next(()=>ev.waitFor(s))})}_i(e,t){e.createObjectStore("collectionParents",{keyPath:Rv});const n=t.store("collectionParents"),r=new Kb,i=e=>{if(r.add(e)){const t=e.lastSegment(),r=e.popLast();return n.put({collectionId:t,parent:vv(r)})}};return t.store("remoteDocuments").J({H:!0},(e,t)=>{const n=new Um(e);return i(n.popLast())}).next(()=>t.store("documentMutations").J({H:!0},([,e],t)=>{const n=yv(e);return i(n.popLast())}))}ai(e){const r=e.store("targets");return r.J((e,t)=>{var n=gb(t),n=mb(this.serializer,n);return r.put(n)})}ui(e,a){const t=a.store("remoteDocuments"),o=[];return t.J((e,t)=>{const n=a.store("remoteDocumentsV14"),r=((s=t).document?new Bm(Um.fromString(s.document.name).popFirst(5)):s.noDocument?Bm.fromSegments(s.noDocument.path):s.unknownDocument?Bm.fromSegments(s.unknownDocument.path):_m()).path.toArray(),i={prefixPath:r.slice(0,r.length-2),collectionGroup:r[r.length-2],documentId:r[r.length-1],readTime:t.readTime||[0,0],unknownDocument:t.unknownDocument,noDocument:t.noDocument,document:t.document,hasCommittedMutations:!!t.hasCommittedMutations};var s;o.push(n.put(i))}).next(()=>ev.waitFor(o))}ci(e,s){const t=s.store("mutations"),a=II(this.serializer),o=new qI(jI.ei,this.serializer.ht);return t.U().next(e=>{const r=new Map;return e.forEach(e=>{var t;let n=null!==(t=r.get(e.userId))&&void 0!==t?t:Ly();fb(this.serializer,e).keys().forEach(e=>n=n.add(e)),r.set(e.userId,n)}),ev.forEach(r,(e,t)=>{var n=new um(t),r=Eb.Pt(this.serializer,n),i=o.getIndexManager(n),n=rI.Pt(n,this.serializer,i,o.referenceDelegate);return new RI(a,n,r,i).recalculateAndSaveOverlaysForDocumentKeys(new Kv(s,pv.oe),e).next()})})}}function KI(e){e.createObjectStore("targetDocuments",{keyPath:Av}).createIndex("documentTargetsIndex",Nv,{unique:!0}),e.createObjectStore("targets",{keyPath:"targetId"}).createIndex("queryTargetsIndex",kv,{unique:!0}),e.createObjectStore("targetGlobal")}const WI="Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.";class GI{constructor(e,t,n,r,i,s,a,o,c,l,u=17){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=n,this.li=i,this.window=s,this.document=a,this.hi=c,this.Pi=l,this.Ti=u,this.$r=null,this.Ur=!1,this.isPrimary=!1,this.networkEnabled=!0,this.Ii=null,this.inForeground=!1,this.Ei=null,this.di=null,this.Ai=Number.NEGATIVE_INFINITY,this.Ri=e=>Promise.resolve(),!GI.p())throw new bm(wm.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new _I(this,r),this.Vi=t+"main",this.serializer=new lb(o),this.mi=new nv(this.Vi,this.Ti,new $I(this.serializer)),this.Wr=new Sb,this.Gr=new lI(this.referenceDelegate,this.serializer),this.remoteDocumentCache=II(this.serializer),this.jr=new bb,this.window&&this.window.localStorage?this.fi=this.window.localStorage:(this.fi=null,!1===l&&gm("IndexedDbPersistence","LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page."))}start(){return this.gi().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new bm(wm.FAILED_PRECONDITION,WI);return this.pi(),this.yi(),this.wi(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Gr.getHighestSequenceNumber(e))}).then(e=>{this.$r=new pv(e,this.hi)}).then(()=>{this.Ur=!0}).catch(e=>(this.mi&&this.mi.close(),Promise.reject(e)))}Si(t){return this.Ri=async e=>{if(this.started)return t(e)},t(this.isPrimary)}setDatabaseDeletedListener(t){this.mi.L(async e=>{null===e.newVersion&&await t()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.li.enqueueAndForget(async()=>{this.started&&await this.gi()}))}gi(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",t=>QI(t).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.bi(t).next(e=>{e||(this.isPrimary=!1,this.li.enqueueRetryable(()=>this.Ri(!1)))})}).next(()=>this.Di(t)).next(e=>this.isPrimary&&!e?this.vi(t).next(()=>!1):!!e&&this.Ci(t).next(()=>!0))).catch(e=>{if(av(e))return fm("IndexedDbPersistence","Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return fm("IndexedDbPersistence","Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.li.enqueueRetryable(()=>this.Ri(e)),this.isPrimary=e})}bi(e){return HI(e).get("owner").next(e=>ev.resolve(this.Fi(e)))}Mi(e){return QI(e).delete(this.clientId)}async xi(){if(this.isPrimary&&!this.Oi(this.Ai,18e5)){this.Ai=Date.now();var e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{const r=Wv(e,"clientMetadata");return r.U().next(e=>{const t=this.Ni(e,18e5),n=e.filter(e=>-1===t.indexOf(e));return ev.forEach(n,e=>r.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this.fi)for(const t of e)this.fi.removeItem(this.Li(t.clientId))}}wi(){this.di=this.li.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.gi().then(()=>this.xi()).then(()=>this.wi()))}Fi(e){return!!e&&e.ownerId===this.clientId}Di(t){return this.Pi?ev.resolve(!0):HI(t).get("owner").next(e=>{if(null!==e&&this.Oi(e.leaseTimestampMs,5e3)&&!this.Bi(e.ownerId)){if(this.Fi(e)&&this.networkEnabled)return!0;if(!this.Fi(e)){if(!e.allowTabSynchronization)throw new bm(wm.FAILED_PRECONDITION,WI);return!1}}return!(!this.networkEnabled||!this.inForeground)||QI(t).U().next(e=>void 0===this.Ni(e,5e3).find(e=>{if(this.clientId!==e.clientId){var t=!this.networkEnabled&&e.networkEnabled,n=!this.inForeground&&e.inForeground,r=this.networkEnabled===e.networkEnabled;if(t||n&&r)return!0}return!1}))}).next(e=>(this.isPrimary!==e&&fm("IndexedDbPersistence",`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.Ur=!1,this.ki(),this.di&&(this.di.cancel(),this.di=null),this.qi(),this.Qi(),await this.mi.runTransaction("shutdown","readwrite",["owner","clientMetadata"],e=>{const t=new Kv(e,pv.oe);return this.vi(t).next(()=>this.Mi(t))}),this.mi.close(),this.Ki()}Ni(e,t){return e.filter(e=>this.Oi(e.updateTimeMs,t)&&!this.Bi(e.clientId))}$i(){return this.runTransaction("getActiveClients","readonly",e=>QI(e).U().next(e=>this.Ni(e,18e5).map(e=>e.clientId)))}get started(){return this.Ur}getGlobalsCache(){return this.Wr}getMutationQueue(e,t){return rI.Pt(e,this.serializer,t,this.referenceDelegate)}getTargetCache(){return this.Gr}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new Gb(e,this.serializer.ht.databaseId)}getDocumentOverlayCache(e){return Eb.Pt(this.serializer,e)}getBundleCache(){return this.jr}runTransaction(t,n,r){fm("IndexedDbPersistence","Starting transaction:",t);var e,i="readonly"===n?"readonly":"readwrite",s=17===(e=this.Ti)?$v:16===e?zv:15===e?jv:14===e?Bv:13===e?qv:12===e?Vv:11===e?Uv:void _m();let a;return this.mi.runTransaction(t,i,s,e=>(a=new Kv(e,this.$r?this.$r.next():pv.oe),"readwrite-primary"===n?this.bi(a).next(e=>!!e||this.Di(a)).next(e=>{if(!e)throw gm(`Failed to obtain primary lease for action '${t}'.`),this.isPrimary=!1,this.li.enqueueRetryable(()=>this.Ri(!1)),new bm(wm.FAILED_PRECONDITION,Ym);return r(a)}).next(e=>this.Ci(a).next(()=>e)):this.Ui(a).next(()=>r(a)))).then(e=>(a.raiseOnCommittedEvent(),e))}Ui(e){return HI(e).get("owner").next(e=>{if(null!==e&&this.Oi(e.leaseTimestampMs,5e3)&&!this.Bi(e.ownerId)&&!this.Fi(e)&&!(this.Pi||this.allowTabSynchronization&&e.allowTabSynchronization))throw new bm(wm.FAILED_PRECONDITION,WI)})}Ci(e){var t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return HI(e).put("owner",t)}static p(){return nv.p()}vi(e){const t=HI(e);return t.get("owner").next(e=>this.Fi(e)?(fm("IndexedDbPersistence","Releasing primary lease."),t.delete("owner")):ev.resolve())}Oi(e,t){var n=Date.now();return!(e<n-t||n<e&&(gm(`Detected an update time that is in the future: ${e} > ${n}`),1))}pi(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.Ei=()=>{this.li.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.gi()))},this.document.addEventListener("visibilitychange",this.Ei),this.inForeground="visible"===this.document.visibilityState)}qi(){this.Ei&&(this.document.removeEventListener("visibilitychange",this.Ei),this.Ei=null)}yi(){var e;"function"==typeof(null===(e=this.window)||void 0===e?void 0:e.addEventListener)&&(this.Ii=()=>{this.ki();var e=/(?:Version|Mobile)\/1[456]/;N()&&(navigator.appVersion.match(e)||navigator.userAgent.match(e))&&this.li.enterRestrictedMode(!0),this.li.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.Ii))}Qi(){this.Ii&&(this.window.removeEventListener("pagehide",this.Ii),this.Ii=null)}Bi(e){var t;try{var n=null!==(null===(t=this.fi)||void 0===t?void 0:t.getItem(this.Li(e)));return fm("IndexedDbPersistence",`Client '${e}' ${n?"is":"is not"} zombied in LocalStorage`),n}catch(e){return gm("IndexedDbPersistence","Failed to get zombied client id.",e),!1}}ki(){if(this.fi)try{this.fi.setItem(this.Li(this.clientId),String(Date.now()))}catch(e){gm("Failed to set zombie client id.",e)}}Ki(){if(this.fi)try{this.fi.removeItem(this.Li(this.clientId))}catch(e){}}Li(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function HI(e){return Wv(e,"owner")}function QI(e){return Wv(e,"clientMetadata")}function JI(e,t){let n=e.projectId;return e.isDefaultDatabase||(n+="."+e.database),"firestore/"+t+"/"+n+"/"}class YI{constructor(e,t,n,r){this.targetId=e,this.fromCache=t,this.Wi=n,this.Gi=r}static zi(e,t){let n=Ly(),r=Ly();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:r=r.add(e.doc.key)}return new YI(e,t.fromCache,n,r)}}class XI{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}class ZI{constructor(){this.ji=!1,this.Hi=!1,this.Ji=100,this.Yi=N()?8:0<rv(b())?6:4}initialize(e,t){this.Zi=e,this.indexManager=t,this.ji=!0}getDocumentsMatchingQuery(n,r,e,t){const i={result:null};return this.Xi(n,r).next(e=>{i.result=e}).next(()=>{if(!i.result)return this.es(n,r,t,e).next(e=>{i.result=e})}).next(()=>{if(!i.result){const t=new XI;return this.ts(n,r,t).next(e=>{if(i.result=e,this.Hi)return this.ns(n,r,t,e.size)})}}).next(()=>i.result)}ns(e,t,n,r){return n.documentReadCount<this.Ji?(pm()<=m.DEBUG&&fm("QueryEngine","SDK will not create cache indexes for query:",Ty(t),"since it only creates cache indexes for collection contains","more than or equal to",this.Ji,"documents"),ev.resolve()):(pm()<=m.DEBUG&&fm("QueryEngine","Query:",Ty(t),"scans",n.documentReadCount,"local documents and returns",r,"documents as results."),n.documentReadCount>this.Yi*r?(pm()<=m.DEBUG&&fm("QueryEngine","The SDK decides to create cache indexes for query:",Ty(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,_y(t))):ev.resolve())}Xi(i,s){if(gy(s))return ev.resolve(null);let t=_y(s);return this.indexManager.getIndexType(i,t).next(e=>0===e?null:(null!==s.limit&&1===e&&(s=wy(s,null,"F"),t=_y(s)),this.indexManager.getDocumentsMatchingTarget(i,t).next(e=>{const r=Ly(...e);return this.Zi.getDocuments(i,r).next(n=>this.indexManager.getMinOffset(i,t).next(e=>{var t=this.rs(s,n);return this.ss(s,t,r,e.readTime)?this.Xi(i,wy(s,null,"F")):this.os(i,t,s,e)}))})))}es(n,r,i,s){return gy(r)||s.isEqual(Mm.min())?ev.resolve(null):this.Zi.getDocuments(n,i).next(e=>{var t=this.rs(r,e);return this.ss(r,t,i,s)?ev.resolve(null):(pm()<=m.DEBUG&&fm("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),Ty(r)),this.os(n,t,r,Gm(s,-1)).next(e=>e))})}rs(n,e){let r=new Zv(Sy(n));return e.forEach((e,t)=>{Ey(n,t)&&(r=r.add(t))}),r}ss(e,t,n,r){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||0<i.version.compareTo(r))}ts(e,t,n){return pm()<=m.DEBUG&&fm("QueryEngine","Using full collection scan to execute query:",Ty(t)),this.Zi.getDocumentsMatchingQuery(e,t,Qm.min(),n)}os(e,n,t,r){return this.Zi.getDocumentsMatchingQuery(e,t,r).next(t=>(n.forEach(e=>{t=t.insert(e.key,e)}),t))}}class eT{constructor(e,t,n,r){this.persistence=e,this._s=t,this.serializer=r,this.us=new Jv(Dm),this.cs=new ky(e=>ay(e),oy),this.ls=new Map,this.hs=e.getRemoteDocumentCache(),this.Gr=e.getTargetCache(),this.jr=e.getBundleCache(),this.Ps(n)}Ps(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new RI(this.hs,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.hs.setIndexManager(this.indexManager),this._s.initialize(this.localDocuments,this.indexManager)}collectGarbage(t){return this.persistence.runTransaction("Collect garbage","readwrite-primary",e=>t.collect(e,this.us))}}function tT(e,t,n,r){return new eT(e,t,n,r)}async function nT(e,t){const a=e;return a.persistence.runTransaction("Handle user change","readonly",i=>{let s;return a.mutationQueue.getAllMutationBatches(i).next(e=>(s=e,a.Ps(t),a.mutationQueue.getAllMutationBatches(i))).next(e=>{const t=[],n=[];let r=Ly();for(const i of s){t.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}for(const i of e){n.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}return a.localDocuments.getDocuments(i,r).next(e=>({Ts:e,removedBatchIds:t,addedBatchIds:n}))})})}function rT(e){const t=e;return t.persistence.runTransaction("Get last remote snapshot version","readonly",e=>t.Gr.getLastRemoteSnapshotVersion(e))}function iT(e,l){const u=e,h=l.snapshotVersion;let d=u.us;return u.persistence.runTransaction("Apply remote event","readwrite-primary",o=>{const e=u.hs.newChangeBuffer({trackRemovals:!0});d=u.us;const c=[];l.targetChanges.forEach((t,n)=>{const r=d.get(n);if(r){c.push(u.Gr.removeMatchingKeys(o,t.removedDocuments,n).next(()=>u.Gr.addMatchingKeys(o,t.addedDocuments,n)));let e=r.withSequenceNumber(o.currentSequenceNumber);var i,s,a;null!==l.targetMismatches.get(n)?e=e.withResumeToken(i_.EMPTY_BYTE_STRING,Mm.min()).withLastLimboFreeSnapshotVersion(Mm.min()):0<t.resumeToken.approximateByteSize()&&(e=e.withResumeToken(t.resumeToken,h)),d=d.insert(n,e),i=r,s=e,a=t,0!==i.resumeToken.approximateByteSize()&&!(3e8<=s.snapshotVersion.toMicroseconds()-i.snapshotVersion.toMicroseconds()||0<a.addedDocuments.size+a.modifiedDocuments.size+a.removedDocuments.size)||c.push(u.Gr.updateTargetData(o,e))}});let t=Ay,n=Ly();if(l.documentUpdates.forEach(e=>{l.resolvedLimboDocuments.has(e)&&c.push(u.persistence.referenceDelegate.updateLimboDocument(o,e))}),c.push(sT(o,e,l.documentUpdates).next(e=>{t=e.Is,n=e.Es})),!h.isEqual(Mm.min())){const l=u.Gr.getLastRemoteSnapshotVersion(o).next(e=>u.Gr.setTargetsMetadata(o,o.currentSequenceNumber,h));c.push(l)}return ev.waitFor(c).next(()=>e.apply(o)).next(()=>u.localDocuments.getLocalViewOfDocuments(o,t,n)).next(()=>t)}).then(e=>(u.us=d,e))}function sT(e,s,t){let n=Ly(),a=Ly();return t.forEach(e=>n=n.add(e)),s.getEntries(e,n).next(r=>{let i=Ay;return t.forEach((e,t)=>{const n=r.get(e);t.isFoundDocument()!==n.isFoundDocument()&&(a=a.add(e)),t.isNoDocument()&&t.version.isEqual(Mm.min())?(s.removeEntry(e,t.readTime),i=i.insert(e,t)):!n.isValidDocument()||0<t.version.compareTo(n.version)||0===t.version.compareTo(n.version)&&n.hasPendingWrites?(s.addEntry(t),i=i.insert(e,t)):fm("LocalStore","Ignoring outdated watch update for ",e,". Current version:",n.version," Watch version:",t.version)}),{Is:i,Es:a}})}function aT(e,r){const i=e;return i.persistence.runTransaction("Allocate target","readwrite",t=>{let n;return i.Gr.getTargetData(t,r).next(e=>e?(n=e,ev.resolve(n)):i.Gr.allocateTargetId(t).next(e=>(n=new cb(r,e,"TargetPurposeListen",t.currentSequenceNumber),i.Gr.addTargetData(t,n).next(()=>n))))}).then(e=>{var t=i.us.get(e.targetId);return(null===t||0<e.snapshotVersion.compareTo(t.snapshotVersion))&&(i.us=i.us.insert(e.targetId,e),i.cs.set(r,e.targetId)),e})}async function oT(e,t,n){const r=e,i=r.us.get(t),s=n?"readwrite":"readwrite-primary";try{n||await r.persistence.runTransaction("Release target",s,e=>r.persistence.referenceDelegate.removeTarget(e,i))}catch(e){if(!av(e))throw e;fm("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}r.us=r.us.remove(t),r.cs.delete(i.target)}function cT(e,n,r){const i=e;let s=Mm.min(),a=Ly();return i.persistence.runTransaction("Execute query","readwrite",t=>function(e,t,n){const r=e,i=r.cs.get(n);return void 0!==i?ev.resolve(r.us.get(i)):r.Gr.getTargetData(t,n)}(i,t,_y(n)).next(e=>{if(e)return s=e.lastLimboFreeSnapshotVersion,i.Gr.getMatchingKeysForTargetId(t,e.targetId).next(e=>{a=e})}).next(()=>i._s.getDocumentsMatchingQuery(t,n,r?s:Mm.min(),r?a:Ly())).next(e=>(hT(i,Cy(n),e),{documents:e,ds:a})))}function lT(e,t){const n=e,r=n.Gr,i=n.us.get(t);return i?Promise.resolve(i.target):n.persistence.runTransaction("Get target data","readonly",e=>r.ut(e,t).next(e=>e?e.target:null))}function uT(e,t){const n=e,r=n.ls.get(t)||Mm.min();return n.persistence.runTransaction("Get new document changes","readonly",e=>n.hs.getAllFromCollectionGroup(e,t,Gm(r,-1),Number.MAX_SAFE_INTEGER)).then(e=>(hT(n,t,e),e))}function hT(e,t,n){let r=e.ls.get(t)||Mm.min();n.forEach((e,t)=>{0<t.readTime.compareTo(r)&&(r=t.readTime)}),e.ls.set(t,r)}function dT(e,t){return`firestore_clients_${e}_${t}`}function pT(e,t,n){let r=`firestore_mutations_${e}_${n}`;return t.isAuthenticated()&&(r+=`_${t.uid}`),r}function fT(e,t){return`firestore_targets_${e}_${t}`}class gT{constructor(e,t,n,r){this.user=e,this.batchId=t,this.state=n,this.error=r}static fs(e,t,n){var r=JSON.parse(n);let i,s="object"==typeof r&&-1!==["pending","acknowledged","rejected"].indexOf(r.state)&&(void 0===r.error||"object"==typeof r.error);return s&&r.error&&(s="string"==typeof r.error.message&&"string"==typeof r.error.code,s&&(i=new bm(r.error.code,r.error.message))),s?new gT(e,t,r.state,i):(gm("SharedClientState",`Failed to parse mutation state for ID '${t}': ${n}`),null)}gs(){const e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class mT{constructor(e,t,n){this.targetId=e,this.state=t,this.error=n}static fs(e,t){var n=JSON.parse(t);let r,i="object"==typeof n&&-1!==["not-current","current","rejected"].indexOf(n.state)&&(void 0===n.error||"object"==typeof n.error);return i&&n.error&&(i="string"==typeof n.error.message&&"string"==typeof n.error.code,i&&(r=new bm(n.error.code,n.error.message))),i?new mT(e,n.state,r):(gm("SharedClientState",`Failed to parse target state for ID '${e}': ${t}`),null)}gs(){const e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class vT{constructor(e,t){this.clientId=e,this.activeTargetIds=t}static fs(e,t){var n=JSON.parse(t);let r="object"==typeof n&&n.activeTargetIds instanceof Array,i=My;for(let s=0;r&&s<n.activeTargetIds.length;++s)r=mv(n.activeTargetIds[s]),i=i.add(n.activeTargetIds[s]);return r?new vT(e,i):(gm("SharedClientState",`Failed to parse client data for instance '${e}': ${t}`),null)}}class _T{constructor(e,t){this.clientId=e,this.onlineState=t}static fs(e){var t=JSON.parse(e);return"object"==typeof t&&-1!==["Unknown","Online","Offline"].indexOf(t.onlineState)&&"string"==typeof t.clientId?new _T(t.clientId,t.onlineState):(gm("SharedClientState",`Failed to parse online state: ${e}`),null)}}class yT{constructor(){this.activeTargetIds=My}ps(e){this.activeTargetIds=this.activeTargetIds.add(e)}ys(e){this.activeTargetIds=this.activeTargetIds.delete(e)}gs(){var e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class wT{constructor(e,t,n,r,i){this.window=e,this.li=t,this.persistenceKey=n,this.ws=r,this.syncEngine=null,this.onlineStateHandler=null,this.sequenceNumberHandler=null,this.Ss=this.bs.bind(this),this.Ds=new Jv(Dm),this.started=!1,this.vs=[];var s=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");this.storage=this.window.localStorage,this.currentUser=i,this.Cs=dT(this.persistenceKey,this.ws),this.Fs=`firestore_sequence_number_${this.persistenceKey}`,this.Ds=this.Ds.insert(this.ws,new yT),this.Ms=new RegExp(`^firestore_clients_${s}_([^_]*)$`),this.xs=new RegExp(`^firestore_mutations_${s}_(\\d+)(?:_(.*))?$`),this.Os=new RegExp(`^firestore_targets_${s}_(\\d+)$`),this.Ns=`firestore_online_state_${this.persistenceKey}`,this.Ls=`firestore_bundle_loaded_v2_${this.persistenceKey}`,this.window.addEventListener("storage",this.Ss)}static p(e){return!(!e||!e.localStorage)}async start(){const e=await this.syncEngine.$i();for(const n of e)if(n!==this.ws){const e=this.getItem(dT(this.persistenceKey,n));var t;!e||(t=vT.fs(n,e))&&(this.Ds=this.Ds.insert(t.clientId,t))}this.Bs();const n=this.storage.getItem(this.Ns);if(n){const e=this.ks(n);e&&this.qs(e)}for(const e of this.vs)this.bs(e);this.vs=[],this.window.addEventListener("pagehide",()=>this.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.Fs,JSON.stringify(e))}getAllActiveQueryTargets(){return this.Qs(this.Ds)}isActiveQueryTarget(n){let r=!1;return this.Ds.forEach((e,t)=>{t.activeTargetIds.has(n)&&(r=!0)}),r}addPendingMutation(e){this.Ks(e,"pending")}updateMutationState(e,t,n){this.Ks(e,t,n),this.$s(e)}addLocalQueryTarget(e,t=!0){let n="not-current";if(this.isActiveQueryTarget(e)){const t=this.storage.getItem(fT(this.persistenceKey,e));var r;!t||(r=mT.fs(e,t))&&(n=r.state)}return t&&this.Us.ps(e),this.Bs(),n}removeLocalQueryTarget(e){this.Us.ys(e),this.Bs()}isLocalQueryTarget(e){return this.Us.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(fT(this.persistenceKey,e))}updateQueryState(e,t,n){this.Ws(e,t,n)}handleUserChange(e,t,n){t.forEach(e=>{this.$s(e)}),this.currentUser=e,n.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.Gs(e)}notifyBundleLoaded(e){this.zs(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this.Ss),this.removeItem(this.Cs),this.started=!1)}getItem(e){var t=this.storage.getItem(e);return fm("SharedClientState","READ",e,t),t}setItem(e,t){fm("SharedClientState","SET",e,t),this.storage.setItem(e,t)}removeItem(e){fm("SharedClientState","REMOVE",e),this.storage.removeItem(e)}bs(e){const i=e;i.storageArea===this.storage&&(fm("SharedClientState","EVENT",i.key,i.newValue),i.key!==this.Cs?this.li.enqueueRetryable(async()=>{if(this.started){if(null!==i.key)if(this.Ms.test(i.key)){if(null==i.newValue){var e=this.js(i.key);return this.Hs(e,null)}e=this.Js(i.key,i.newValue);if(e)return this.Hs(e.clientId,e)}else if(this.xs.test(i.key)){if(null!==i.newValue){var t=this.Ys(i.key,i.newValue);if(t)return this.Zs(t)}}else if(this.Os.test(i.key)){if(null!==i.newValue){t=this.Xs(i.key,i.newValue);if(t)return this.eo(t)}}else if(i.key===this.Ns){if(null!==i.newValue){var n=this.ks(i.newValue);if(n)return this.qs(n)}}else if(i.key===this.Fs){n=function(e){let t=pv.oe;if(null!=e)try{var n=JSON.parse(e);ym("number"==typeof n),t=n}catch(e){gm("SharedClientState","Failed to read sequence number from WebStorage",e)}return t}(i.newValue);n!==pv.oe&&this.sequenceNumberHandler(n)}else if(i.key===this.Ls){const r=this.no(i.newValue);await Promise.all(r.map(e=>this.syncEngine.ro(e)))}}else this.vs.push(i)}):gm("Received WebStorage notification for local change. Another client might have garbage-collected our state"))}get Us(){return this.Ds.get(this.ws)}Bs(){this.setItem(this.Cs,this.Us.gs())}Ks(e,t,n){const r=new gT(this.currentUser,e,t,n),i=pT(this.persistenceKey,this.currentUser,e);this.setItem(i,r.gs())}$s(e){var t=pT(this.persistenceKey,this.currentUser,e);this.removeItem(t)}Gs(e){var t={clientId:this.ws,onlineState:e};this.storage.setItem(this.Ns,JSON.stringify(t))}Ws(e,t,n){const r=fT(this.persistenceKey,e),i=new mT(e,t,n);this.setItem(r,i.gs())}zs(e){var t=JSON.stringify(Array.from(e));this.setItem(this.Ls,t)}js(e){var t=this.Ms.exec(e);return t?t[1]:null}Js(e,t){var n=this.js(e);return vT.fs(n,t)}Ys(e,t){var n=this.xs.exec(e),r=Number(n[1]),n=void 0!==n[2]?n[2]:null;return gT.fs(new um(n),r,t)}Xs(e,t){var n=this.Os.exec(e),n=Number(n[1]);return mT.fs(n,t)}ks(e){return _T.fs(e)}no(e){return JSON.parse(e)}async Zs(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.io(e.batchId,e.state,e.error);fm("SharedClientState",`Ignoring mutation for non-active user ${e.user.uid}`)}eo(e){return this.syncEngine.so(e.targetId,e.state,e.error)}Hs(e,t){const n=t?this.Ds.insert(e,t):this.Ds.remove(e),r=this.Qs(this.Ds),i=this.Qs(n),s=[],a=[];return i.forEach(e=>{r.has(e)||s.push(e)}),r.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.oo(s,a).then(()=>{this.Ds=n})}qs(e){this.Ds.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}Qs(e){let n=My;return e.forEach((e,t)=>{n=n.unionWith(t.activeTargetIds)}),n}}class bT{constructor(){this._o=new yT,this.ao={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e,t=!0){return t&&this._o.ps(e),this.ao[e]||"not-current"}updateQueryState(e,t,n){this.ao[e]=t}removeLocalQueryTarget(e){this._o.ys(e)}isLocalQueryTarget(e){return this._o.activeTargetIds.has(e)}clearQueryState(e){delete this.ao[e]}getAllActiveQueryTargets(){return this._o.activeTargetIds}isActiveQueryTarget(e){return this._o.activeTargetIds.has(e)}start(){return this._o=new yT,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class IT{uo(e){}shutdown(){}}class TT{constructor(){this.co=()=>this.lo(),this.ho=()=>this.Po(),this.To=[],this.Io()}uo(e){this.To.push(e)}shutdown(){window.removeEventListener("online",this.co),window.removeEventListener("offline",this.ho)}Io(){window.addEventListener("online",this.co),window.addEventListener("offline",this.ho)}lo(){fm("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.To)e(0)}Po(){fm("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.To)e(1)}static p(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let ET=null;function CT(){return null===ET?ET=268435456+Math.round(2147483648*Math.random()):ET++,"0x"+ET.toString(16)}const ST={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class kT{constructor(e){this.Eo=e.Eo,this.Ao=e.Ao}Ro(e){this.Vo=e}mo(e){this.fo=e}po(e){this.yo=e}onMessage(e){this.wo=e}close(){this.Ao()}send(e){this.Eo(e)}So(){this.Vo()}bo(){this.fo()}Do(e){this.yo(e)}vo(e){this.wo(e)}}const AT="WebChannelConnection";class NT extends class{get Co(){return!1}constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;var t=e.ssl?"https":"http",n=encodeURIComponent(this.databaseId.projectId),r=encodeURIComponent(this.databaseId.database);this.Fo=t+"://"+e.host,this.Mo=`projects/${n}/databases/${r}`,this.xo="(default)"===this.databaseId.database?`project_id=${n}`:`project_id=${n}&database_id=${r}`}Oo(t,e,n,r,i){const s=CT(),a=this.No(t,e.toUriEncodedString());fm("RestConnection",`Sending RPC '${t}' ${s}:`,a,n);var o={"google-cloud-resource-prefix":this.Mo,"x-goog-request-params":this.xo};return this.Lo(o,r,i),this.Bo(t,a,o,n).then(e=>(fm("RestConnection",`Received RPC '${t}' ${s}: `,e),e),e=>{throw mm("RestConnection",`RPC '${t}' ${s} failed with error: `,e,"url: ",a,"request:",n),e})}ko(e,t,n,r,i,s){return this.Oo(e,t,n,r,i)}Lo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+hm,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach((e,t)=>n[t]=e),t&&t.headers.forEach((e,t)=>n[t]=e)}No(e,t){var n=ST[e];return`${this.Fo}/v1/${t}:${n}`}terminate(){}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Bo(c,t,n,r){const l=CT();return new Promise((s,a)=>{const o=new Yg;o.setWithCredentials(!0),o.listenOnce(Zg.COMPLETE,()=>{try{switch(o.getLastErrorCode()){case em.NO_ERROR:var e=o.getResponseJson();fm(AT,`XHR for RPC '${c}' ${l} received:`,JSON.stringify(e)),s(e);break;case em.TIMEOUT:fm(AT,`RPC '${c}' ${l} timed out`),a(new bm(wm.DEADLINE_EXCEEDED,"Request time out"));break;case em.HTTP_ERROR:var t=o.getStatus();if(fm(AT,`RPC '${c}' ${l} failed with status:`,t,"response text:",o.getResponseText()),0<t){let e=o.getResponseJson();Array.isArray(e)&&(e=e[0]);var n=null==e?void 0:e.error;if(n&&n.status&&n.message){const c=(r=n.status,i=r.toLowerCase().replace(/_/g,"-"),0<=Object.values(wm).indexOf(i)?i:wm.UNKNOWN);a(new bm(c,n.message))}else a(new bm(wm.UNKNOWN,"Server responded with status "+o.getStatus()))}else a(new bm(wm.UNAVAILABLE,"Connection failed."));break;default:_m()}}finally{fm(AT,`RPC '${c}' ${l} completed.`)}var r,i});var e=JSON.stringify(r);fm(AT,`RPC '${c}' ${l} sending request:`,r),o.send(t,"POST",e,n,15)})}qo(i,e,t){const s=CT(),n=[this.Fo,"/","google.firestore.v1.Firestore","/",i,"/channel"],r=im(),a=rm(),o={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},c=this.longPollingOptions.timeoutSeconds;void 0!==c&&(o.longPollingTimeout=Math.round(1e3*c)),this.useFetchStreams&&(o.useFetchStreams=!0),this.Lo(o.initMessageHeaders,e,t),o.encodeInitMessageHeaders=!0;var l=n.join("");fm(AT,`Creating RPC '${i}' stream ${s}: ${l}`,o);const u=r.createWebChannel(l,o);let h=!1,d=!1;const p=new kT({Eo:e=>{d?fm(AT,`Not sending because RPC '${i}' stream ${s} is closed:`,e):(h||(fm(AT,`Opening RPC '${i}' stream ${s} transport.`),u.open(),h=!0),fm(AT,`RPC '${i}' stream ${s} sending:`,e),u.send(e))},Ao:()=>u.close()}),f=(e,t,n)=>{e.listen(t,e=>{try{n(e)}catch(e){setTimeout(()=>{throw e},0)}})};return f(u,Xg.EventType.OPEN,()=>{d||(fm(AT,`RPC '${i}' stream ${s} transport opened.`),p.So())}),f(u,Xg.EventType.CLOSE,()=>{d||(d=!0,fm(AT,`RPC '${i}' stream ${s} transport closed`),p.Do())}),f(u,Xg.EventType.ERROR,e=>{d||(d=!0,mm(AT,`RPC '${i}' stream ${s} transport errored:`,e),p.Do(new bm(wm.UNAVAILABLE,"The operation could not be completed")))}),f(u,Xg.EventType.MESSAGE,n=>{if(!d){var e=n.data[0];ym(!!e);var r=(null==e?void 0:e.error)||(null===(r=e[0])||void 0===r?void 0:r.error);if(r){fm(AT,`RPC '${i}' stream ${s} received error:`,r);const n=r.status;let e=function(e){var t=sm[e];if(void 0!==t)return vw(t)}(n),t=r.message;void 0===e&&(e=wm.INTERNAL,t="Unknown error status: "+n+" with message "+r.message),d=!0,p.Do(new bm(e,t)),u.close()}else fm(AT,`RPC '${i}' stream ${s} received:`,e),p.vo(e)}}),f(a,nm.STAT_EVENT,e=>{e.stat===tm.PROXY?fm(AT,`RPC '${i}' stream ${s} detected buffering proxy`):e.stat===tm.NOPROXY&&fm(AT,`RPC '${i}' stream ${s} detected no buffering proxy`)}),setTimeout(()=>{p.bo()},0),p}}function RT(){return"undefined"!=typeof window?window:null}function PT(){return"undefined"!=typeof document?document:null}function DT(e){return new Mw(e,!0)}class xT{constructor(e,t,n=1e3,r=1.5,i=6e4){this.li=e,this.timerId=t,this.Qo=n,this.Ko=r,this.$o=i,this.Uo=0,this.Wo=null,this.Go=Date.now(),this.reset()}reset(){this.Uo=0}zo(){this.Uo=this.$o}jo(e){this.cancel();var t=Math.floor(this.Uo+this.Ho()),n=Math.max(0,Date.now()-this.Go),r=Math.max(0,t-n);0<r&&fm("ExponentialBackoff",`Backing off for ${r} ms (base delay: ${this.Uo} ms, delay with jitter: ${t} ms, last attempt: ${n} ms ago)`),this.Wo=this.li.enqueueAfterDelay(this.timerId,r,()=>(this.Go=Date.now(),e())),this.Uo*=this.Ko,this.Uo<this.Qo&&(this.Uo=this.Qo),this.Uo>this.$o&&(this.Uo=this.$o)}Jo(){null!==this.Wo&&(this.Wo.skipDelay(),this.Wo=null)}cancel(){null!==this.Wo&&(this.Wo.cancel(),this.Wo=null)}Ho(){return(Math.random()-.5)*this.Uo}}class OT{constructor(e,t,n,r,i,s,a,o){this.li=e,this.Yo=n,this.Zo=r,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.Xo=0,this.e_=null,this.t_=null,this.stream=null,this.n_=0,this.r_=new xT(e,t)}i_(){return 1===this.state||5===this.state||this.s_()}s_(){return 2===this.state||3===this.state}start(){this.n_=0,4!==this.state?this.auth():this.o_()}async stop(){this.i_()&&await this.close(0)}__(){this.state=0,this.r_.reset()}a_(){this.s_()&&null===this.e_&&(this.e_=this.li.enqueueAfterDelay(this.Yo,6e4,()=>this.u_()))}c_(e){this.l_(),this.stream.send(e)}async u_(){if(this.s_())return this.close(0)}l_(){this.e_&&(this.e_.cancel(),this.e_=null)}h_(){this.t_&&(this.t_.cancel(),this.t_=null)}async close(e,t){this.l_(),this.h_(),this.r_.cancel(),this.Xo++,4!==e?this.r_.reset():t&&t.code===wm.RESOURCE_EXHAUSTED?(gm(t.toString()),gm("Using maximum backoff delay to prevent overloading the backend."),this.r_.zo()):t&&t.code===wm.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.P_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.po(t)}P_(){}auth(){this.state=1;const e=this.T_(this.Xo),n=this.Xo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,t])=>{this.Xo===n&&this.I_(e,t)},t=>{e(()=>{var e=new bm(wm.UNKNOWN,"Fetching auth token failed: "+t.message);return this.E_(e)})})}I_(e,t){const n=this.T_(this.Xo);this.stream=this.d_(e,t),this.stream.Ro(()=>{n(()=>this.listener.Ro())}),this.stream.mo(()=>{n(()=>(this.state=2,this.t_=this.li.enqueueAfterDelay(this.Zo,1e4,()=>(this.s_()&&(this.state=3),Promise.resolve())),this.listener.mo()))}),this.stream.po(e=>{n(()=>this.E_(e))}),this.stream.onMessage(e=>{n(()=>1==++this.n_?this.A_(e):this.onNext(e))})}o_(){this.state=5,this.r_.jo(async()=>{this.state=0,this.start()})}E_(e){return fm("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}T_(t){return e=>{this.li.enqueueAndForget(()=>this.Xo===t?e():(fm("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class LT extends OT{constructor(e,t,n,r,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,r,s),this.serializer=i}d_(e,t){return this.connection.qo("Listen",e,t)}A_(e){return this.onNext(e)}onNext(e){this.r_.reset();var t=function(e,t){let n;if("targetChange"in t){t.targetChange;var r="NO_CHANGE"===(p=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===p?1:"REMOVE"===p?2:"CURRENT"===p?3:"RESET"===p?4:_m(),i=t.targetChange.targetIds||[],s=(p=t.targetChange.resumeToken,e.useProto3Json?(ym(void 0===p||"string"==typeof p),i_.fromBase64String(p||"")):(ym(void 0===p||p instanceof Buffer||p instanceof Uint8Array),i_.fromUint8Array(p||new Uint8Array))),a=t.targetChange.cause,o=a&&(o=void 0===(p=a).code?wm.UNKNOWN:vw(p.code),new bm(o,p.message||""));n=new Aw(r,i,s,o||null)}else if("documentChange"in t){t.documentChange;var c=t.documentChange;c.document,c.document.name,c.document.updateTime;var s=Kw(e,c.document.name),o=qw(c.document.updateTime),l=c.document.createTime?qw(c.document.createTime):Mm.min(),u=new L_({mapValue:{fields:c.document.fields}}),l=M_.newFoundDocument(s,o,l,u),u=c.targetIds||[],c=c.removedTargetIds||[];n=new Sw(u,c,l.key,l)}else if("documentDelete"in t){t.documentDelete;u=t.documentDelete;u.document;c=Kw(e,u.document),l=u.readTime?qw(u.readTime):Mm.min(),l=M_.newNoDocument(c,l),u=u.removedTargetIds||[];n=new Sw([],u,l.key,l)}else if("documentRemove"in t){t.documentRemove;var h=t.documentRemove;h.document;var d=Kw(e,h.document),h=h.removedTargetIds||[];n=new Sw([],h,d,null)}else{if(!("filter"in t))return _m();{t.filter;const e=t.filter;e.targetId;var{count:h=0,unchangedNames:d}=e,h=new gw(h,d),d=e.targetId;n=new kw(d,h)}}var o,p;return n}(this.serializer,e),n=function(e){if(!("targetChange"in e))return Mm.min();var t=e.targetChange;return(!t.targetIds||!t.targetIds.length)&&t.readTime?qw(t.readTime):Mm.min()}(e);return this.listener.R_(t,n)}V_(e){const t={};t.database=Hw(this.serializer),t.addTarget=function(e,t){let n;const r=t.target;if(n=cy(r)?{documents:eb(e,r)}:{query:tb(e,r).ct},n.targetId=t.targetId,0<t.resumeToken.approximateByteSize()){n.resumeToken=Vw(e,t.resumeToken);const r=Fw(e,t.expectedCount);null!==r&&(n.expectedCount=r)}else if(0<t.snapshotVersion.compareTo(Mm.min())){n.readTime=Uw(e,t.snapshotVersion.toTimestamp());const r=Fw(e,t.expectedCount);null!==r&&(n.expectedCount=r)}return n}(this.serializer,e);var n,n=(this.serializer,e,null==(n=function(e){switch(e){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return _m()}}(e.purpose))?null:{"goog-listen-tags":n});n&&(t.labels=n),this.c_(t)}m_(e){const t={};t.database=Hw(this.serializer),t.removeTarget=e,this.c_(t)}}class MT extends OT{constructor(e,t,n,r,i,s){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,n,r,s),this.serializer=i}get f_(){return 0<this.n_}start(){this.lastStreamToken=void 0,super.start()}P_(){this.f_&&this.g_([])}d_(e,t){return this.connection.qo("Write",e,t)}A_(e){return ym(!!e.streamToken),this.lastStreamToken=e.streamToken,ym(!e.writeResults||0===e.writeResults.length),this.listener.p_()}onNext(e){ym(!!e.streamToken),this.lastStreamToken=e.streamToken,this.r_.reset();var t,n,r=(t=e.writeResults,n=e.commitTime,t&&0<t.length?(ym(void 0!==n),t.map(e=>function(e,t){let n=e.updateTime?qw(e.updateTime):qw(t);return n.isEqual(Mm.min())&&(n=qw(t)),new Yy(n,e.transformResults||[])}(e,n))):[]),i=qw(e.commitTime);return this.listener.y_(i,r)}w_(){const e={};e.database=Hw(this.serializer),this.c_(e)}g_(e){var t={streamToken:this.lastStreamToken,writes:e.map(e=>Xw(this.serializer,e))};this.c_(t)}}class FT extends class{}{constructor(e,t,n,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.serializer=r,this.S_=!1}b_(){if(this.S_)throw new bm(wm.FAILED_PRECONDITION,"The client has already been terminated.")}Oo(n,r,i,s){return this.b_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.Oo(n,jw(r,i),s,e,t)).catch(e=>{throw"FirebaseError"===e.name?(e.code===wm.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new bm(wm.UNKNOWN,e.toString())})}ko(n,r,i,s,a){return this.b_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.ko(n,jw(r,i),s,e,t,a)).catch(e=>{throw"FirebaseError"===e.name?(e.code===wm.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new bm(wm.UNKNOWN,e.toString())})}terminate(){this.S_=!0,this.connection.terminate()}}class UT{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.D_=0,this.v_=null,this.C_=!0}F_(){0===this.D_&&(this.M_("Unknown"),this.v_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this.v_=null,this.x_("Backend didn't respond within 10 seconds."),this.M_("Offline"),Promise.resolve())))}O_(e){"Online"===this.state?this.M_("Unknown"):(this.D_++,1<=this.D_&&(this.N_(),this.x_(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.M_("Offline")))}set(e){this.N_(),this.D_=0,"Online"===e&&(this.C_=!1),this.M_(e)}M_(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}x_(e){var t=`Could not reach Cloud Firestore backend. ${e}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.C_?(gm(t),this.C_=!1):fm("OnlineStateTracker",t)}N_(){null!==this.v_&&(this.v_.cancel(),this.v_=null)}}class VT{constructor(e,t,n,r,i){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.L_=[],this.B_=new Map,this.k_=new Set,this.q_=[],this.Q_=i,this.Q_.uo(e=>{n.enqueueAndForget(async()=>{HT(this)&&(fm("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=e;t.k_.add(4),await BT(t),t.K_.set("Unknown"),t.k_.delete(4),await qT(t)}(this))})}),this.K_=new UT(n,r)}}async function qT(e){if(HT(e))for(const t of e.q_)await t(!0)}async function BT(e){for(const t of e.q_)await t(!1)}function jT(e,t){const n=e;n.B_.has(t.targetId)||(n.B_.set(t.targetId,t),GT(n)?WT(n):i0(n).s_()&&$T(n,t))}function zT(e,t){const n=e,r=i0(n);n.B_.delete(t),r.s_()&&KT(n,t),0===n.B_.size&&(r.s_()?r.a_():HT(n)&&n.K_.set("Unknown"))}function $T(e,t){var n;e.U_.xe(t.targetId),(0<t.resumeToken.approximateByteSize()||0<t.snapshotVersion.compareTo(Mm.min()))&&(n=e.remoteSyncer.getRemoteKeysForTarget(t.targetId).size,t=t.withExpectedCount(n)),i0(e).V_(t)}function KT(e,t){e.U_.xe(t),i0(e).m_(t)}function WT(t){t.U_=new Rw({getRemoteKeysForTarget:e=>t.remoteSyncer.getRemoteKeysForTarget(e),ut:e=>t.B_.get(e)||null,nt:()=>t.datastore.serializer.databaseId}),i0(t).start(),t.K_.F_()}function GT(e){return HT(e)&&!i0(e).i_()&&0<e.B_.size}function HT(e){return 0===e.k_.size}function QT(e){e.U_=void 0}async function JT(e,t,n){if(!av(t))throw t;e.k_.add(1),await BT(e),e.K_.set("Offline"),n=n||(()=>rT(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{fm("RemoteStore","Retrying IndexedDB access"),await n(),e.k_.delete(1),await qT(e)})}function YT(t,n){return n().catch(e=>JT(t,e,n))}async function XT(e){const t=e,n=s0(t);let r=0<t.L_.length?t.L_[t.L_.length-1].batchId:-1;for(;HT(i=t)&&i.L_.length<10;)try{const e=await function(e,t){const n=e;return n.persistence.runTransaction("Get next mutation batch","readonly",e=>(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t)))}(t.localStore,r);if(null===e){0===t.L_.length&&n.a_();break}r=e.batchId,function(e,t){e.L_.push(t);const n=s0(e);n.s_()&&n.f_&&n.g_(t.mutations)}(t,e)}catch(e){await JT(t,e)}var i;ZT(t)&&e0(t)}function ZT(e){return HT(e)&&!s0(e).i_()&&0<e.L_.length}function e0(e){s0(e).start()}async function t0(e,t){t&&s0(e).f_&&await async function(e,t){if(mw(n=t.code)&&n!==wm.ABORTED){const r=e.L_.shift();s0(e).__(),await YT(e,()=>e.remoteSyncer.rejectFailedWrite(r.batchId,t)),await XT(e)}var n}(e,t),ZT(e)&&e0(e)}async function n0(e,t){const n=e;n.asyncQueue.verifyOperationInProgress(),fm("RemoteStore","RemoteStore received new credentials");var r=HT(n);n.k_.add(3),await BT(n),r&&n.K_.set("Unknown"),await n.remoteSyncer.handleCredentialChange(t),n.k_.delete(3),await qT(n)}async function r0(e,t){const n=e;t?(n.k_.delete(2),await qT(n)):(n.k_.add(2),await BT(n),n.K_.set("Unknown"))}function i0(t){return t.W_||(t.W_=function(e,t,n){const r=e;return r.b_(),new LT(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{Ro:(async function(e){e.K_.set("Online")}).bind(null,t),mo:(async function(n){n.B_.forEach((e,t)=>{$T(n,e)})}).bind(null,t),po:(async function(e,t){QT(e),GT(e)?(e.K_.O_(t),WT(e)):e.K_.set("Unknown")}).bind(null,t),R_:(async function(e,t,n){if(e.K_.set("Online"),t instanceof Aw&&2===t.state&&t.cause)try{await async function(e,t){var n=t.cause;for(const r of t.targetIds)e.B_.has(r)&&(await e.remoteSyncer.rejectListen(r,n),e.B_.delete(r),e.U_.removeTarget(r))}(e,t)}catch(n){fm("RemoteStore","Failed to remove targets %s: %s ",t.targetIds.join(","),n),await JT(e,n)}else if(t instanceof Sw?e.U_.$e(t):t instanceof kw?e.U_.Je(t):e.U_.Ge(t),!n.isEqual(Mm.min()))try{const t=await rT(e.localStore);0<=n.compareTo(t)&&await function(i,r){const e=i.U_.it(r);return e.targetChanges.forEach((e,t)=>{if(0<e.resumeToken.approximateByteSize()){const n=i.B_.get(t);n&&i.B_.set(t,n.withResumeToken(e.resumeToken,r))}}),e.targetMismatches.forEach((e,t)=>{const n=i.B_.get(e);var r;n&&(i.B_.set(e,n.withResumeToken(i_.EMPTY_BYTE_STRING,n.snapshotVersion)),KT(i,e),r=new cb(n.target,e,t,n.sequenceNumber),$T(i,r))}),i.remoteSyncer.applyRemoteEvent(e)}(e,n)}catch(t){fm("RemoteStore","Failed to raise snapshot:",t),await JT(e,t)}}).bind(null,t)}),t.q_.push(async e=>{e?(t.W_.__(),GT(t)?WT(t):t.K_.set("Unknown")):(await t.W_.stop(),QT(t))})),t.W_}function s0(t){return t.G_||(t.G_=function(e,t,n){const r=e;return r.b_(),new MT(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{Ro:()=>Promise.resolve(),mo:(async function(e){s0(e).w_()}).bind(null,t),po:t0.bind(null,t),p_:(async function(e){const t=s0(e);for(const n of e.L_)t.g_(n.mutations)}).bind(null,t),y_:(async function(e,t,n){const r=e.L_.shift(),i=pw.from(r,t,n);await YT(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await XT(e)}).bind(null,t)}),t.q_.push(async e=>{e?(t.G_.__(),await XT(t)):(await t.G_.stop(),0<t.L_.length&&(fm("RemoteStore",`Stopping write stream with ${t.L_.length} pending writes`),t.L_=[]))})),t.G_}class a0{constructor(e,t,n,r,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=n,this.op=r,this.removalCallback=i,this.deferred=new Im,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(e=>{})}get promise(){return this.deferred.promise}static createAndSchedule(e,t,n,r,i){const s=Date.now()+n,a=new a0(e,t,s,r,i);return a.start(n),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new bm(wm.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget(()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then(e=>this.deferred.resolve(e))):Promise.resolve())}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function o0(e,t){if(gm("AsyncQueue",`${t}: ${e}`),av(e))return new bm(wm.UNAVAILABLE,`${t}: ${e}`);throw e}class c0{static emptySet(e){return new c0(e.comparator)}constructor(n){this.comparator=n?(e,t)=>n(e,t)||Bm.comparator(e.key,t.key):(e,t)=>Bm.comparator(e.key,t.key),this.keyedMap=Ry(),this.sortedSet=new Jv(this.comparator)}has(e){return null!=this.keyedMap.get(e)}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){var t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(n){this.sortedSet.inorderTraversal((e,t)=>(n(e),!1))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){var t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof c0))return!1;if(this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),n=e.sortedSet.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(!e.isEqual(r))return!1}return!0}toString(){const t=[];return this.forEach(e=>{t.push(e.toString())}),0===t.length?"DocumentSet ()":"DocumentSet (\n "+t.join(" \n")+"\n)"}copy(e,t){const n=new c0;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class l0{constructor(){this.z_=new Jv(Bm.comparator)}track(e){var t=e.doc.key,n=this.z_.get(t);!n||0!==e.type&&3===n.type?this.z_=this.z_.insert(t,e):3===e.type&&1!==n.type?this.z_=this.z_.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.z_=this.z_.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.z_=this.z_.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.z_=this.z_.remove(t):1===e.type&&2===n.type?this.z_=this.z_.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.z_=this.z_.insert(t,{type:2,doc:e.doc}):_m()}j_(){const n=[];return this.z_.inorderTraversal((e,t)=>{n.push(t)}),n}}class u0{constructor(e,t,n,r,i,s,a,o,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=r,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=a,this.excludesMetadataChanges=o,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,r,i){const s=[];return t.forEach(e=>{s.push({type:0,doc:e})}),new u0(e,t,c0.emptySet(t),s,n,r,!0,!1,i)}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)&&by(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let r=0;r<t.length;r++)if(t[r].type!==n[r].type||!t[r].doc.isEqual(n[r].doc))return!1;return!0}}class h0{constructor(){this.H_=void 0,this.J_=[]}Y_(){return this.J_.some(e=>e.Z_())}}class d0{constructor(){this.queries=p0(),this.onlineState="Unknown",this.X_=new Set}terminate(){!function(e,n){const t=e,r=t.queries;t.queries=p0(),r.forEach((e,t)=>{for(const e of t.J_)e.onError(n)})}(this,new bm(wm.ABORTED,"Firestore shutting down"))}}function p0(){return new ky(e=>Iy(e),by)}async function f0(e,t){const n=e;let r=3;var i=t.query;let s=n.queries.get(i);s?!s.Y_()&&t.Z_()&&(r=2):(s=new h0,r=t.Z_()?0:1);try{switch(r){case 0:s.H_=await n.onListen(i,!0);break;case 1:s.H_=await n.onListen(i,!1);break;case 2:await n.onFirstRemoteStoreListen(i)}}catch(e){const n=o0(e,`Initialization of query '${Ty(t.query)}' failed`);return void t.onError(n)}n.queries.set(i,s),s.J_.push(t),t.ea(n.onlineState),!s.H_||t.ta(s.H_)&&m0(n)}async function g0(e,t){const n=e,r=t.query;let i=3;const s=n.queries.get(r);if(s){const e=s.J_.indexOf(t);0<=e&&(s.J_.splice(e,1),0===s.J_.length?i=t.Z_()?0:1:!s.Y_()&&t.Z_()&&(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 m0(e){e.X_.forEach(e=>{e.next()})}(am=am||{}).na="default",am.Cache="cache";class v0{constructor(e,t,n){this.query=e,this.ra=t,this.ia=!1,this.sa=null,this.onlineState="Unknown",this.options=n||{}}ta(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new u0(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.ia?this.oa(e)&&(this.ra.next(e),t=!0):this._a(e,this.onlineState)&&(this.aa(e),t=!0),this.sa=e,t}onError(e){this.ra.error(e)}ea(e){this.onlineState=e;let t=!1;return this.sa&&!this.ia&&this._a(this.sa,e)&&(this.aa(this.sa),t=!0),t}_a(e,t){return!e.fromCache||(!this.Z_()||(!this.options.ua||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t))}oa(e){if(0<e.docChanges.length)return!0;var t=this.sa&&this.sa.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}aa(e){e=u0.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.ia=!0,this.ra.next(e)}Z_(){return this.options.source!==am.Cache}}class _0{constructor(e,t){this.ca=e,this.byteLength=t}la(){return"metadata"in this.ca}}class y0{constructor(e){this.serializer=e}As(e){return Kw(this.serializer,e)}Rs(e){return e.metadata.exists?Yw(this.serializer,e.document,!1):M_.newNoDocument(this.As(e.metadata.name),this.Vs(e.metadata.readTime))}Vs(e){return qw(e)}}class w0{constructor(e,t,n){this.ha=e,this.localStore=t,this.serializer=n,this.queries=[],this.documents=[],this.collectionGroups=new Set,this.progress=b0(e)}Pa(e){this.progress.bytesLoaded+=e.byteLength;let t=this.progress.documentsLoaded;if(e.ca.namedQuery)this.queries.push(e.ca.namedQuery);else if(e.ca.documentMetadata){this.documents.push({metadata:e.ca.documentMetadata}),e.ca.documentMetadata.exists||++t;const n=Um.fromString(e.ca.documentMetadata.name);this.collectionGroups.add(n.get(n.length-2))}else e.ca.document&&(this.documents[this.documents.length-1].document=e.ca.document,++t);return t!==this.progress.documentsLoaded?(this.progress.documentsLoaded=t,Object.assign({},this.progress)):null}Ta(e){const t=new Map,n=new y0(this.serializer);for(const i of e)if(i.metadata.queries){const e=n.As(i.metadata.name);for(const n of i.metadata.queries){var r=(t.get(n)||Ly()).add(e);t.set(n,r)}}return t}async complete(){const e=await async function(e,t,n,r){const i=e;let s=Ly(),a=Ay;for(const e of n){const n=t.As(e.metadata.name);e.document&&(s=s.add(n));const l=t.Rs(e);l.setReadTime(t.Vs(e.metadata.readTime)),a=a.insert(n,l)}const o=i.hs.newChangeBuffer({trackRemovals:!0}),c=await aT(i,(r=r,_y(fy(Um.fromString(`__bundle__/docs/${r}`)))));return i.persistence.runTransaction("Apply bundle documents","readwrite",t=>sT(t,o,a).next(e=>(o.apply(t),e)).next(e=>i.Gr.removeMatchingKeysForTargetId(t,c.targetId).next(()=>i.Gr.addMatchingKeys(t,s,c.targetId)).next(()=>i.localDocuments.getLocalViewOfDocuments(t,e.Is,e.Es)).next(()=>e.Is)))}(this.localStore,new y0(this.serializer),this.documents,this.ha.id),t=this.Ta(this.documents);for(const e of this.queries)await async function(e,n,r=Ly()){const i=await aT(e,_y(vb(n.bundledQuery))),s=e;return s.persistence.runTransaction("Save named query","readwrite",e=>{var t=qw(n.readTime);if(0<=i.snapshotVersion.compareTo(t))return s.jr.saveNamedQuery(e,n);t=i.withResumeToken(i_.EMPTY_BYTE_STRING,t);return s.us=s.us.insert(t.targetId,t),s.Gr.updateTargetData(e,t).next(()=>s.Gr.removeMatchingKeysForTargetId(e,i.targetId)).next(()=>s.Gr.addMatchingKeys(e,r,i.targetId)).next(()=>s.jr.saveNamedQuery(e,n))})}(this.localStore,e,t.get(e.name));return this.progress.taskState="Success",{progress:this.progress,Ia:this.collectionGroups,Ea:e}}}function b0(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class I0{constructor(e){this.key=e}}class T0{constructor(e){this.key=e}}class E0{constructor(e,t){this.query=e,this.da=t,this.Aa=null,this.hasCachedResults=!1,this.current=!1,this.Ra=Ly(),this.mutatedKeys=Ly(),this.Va=Sy(e),this.ma=new c0(this.Va)}get fa(){return this.da}ga(e,t){const o=t?t.pa:new l0,c=(t||this).ma;let l=(t||this).mutatedKeys,u=c,h=!1;const d="F"===this.query.limitType&&c.size===this.query.limit?c.last():null,p="L"===this.query.limitType&&c.size===this.query.limit?c.first():null;if(e.inorderTraversal((e,t)=>{const n=c.get(e),r=Ey(this.query,t)?t:null,i=!!n&&this.mutatedKeys.has(n.key),s=!!r&&(r.hasLocalMutations||this.mutatedKeys.has(r.key)&&r.hasCommittedMutations);let a=!1;n&&r?n.data.isEqual(r.data)?i!==s&&(o.track({type:3,doc:r}),a=!0):this.ya(n,r)||(o.track({type:2,doc:r}),a=!0,(d&&0<this.Va(r,d)||p&&this.Va(r,p)<0)&&(h=!0)):!n&&r?(o.track({type:0,doc:r}),a=!0):n&&!r&&(o.track({type:1,doc:n}),a=!0,(d||p)&&(h=!0)),a&&(l=r?(u=u.add(r),s?l.add(e):l.delete(e)):(u=u.delete(e),l.delete(e)))}),null!==this.query.limit)for(;u.size>this.query.limit;){const e="F"===this.query.limitType?u.last():u.first();u=u.delete(e.key),l=l.delete(e.key),o.track({type:1,doc:e})}return{ma:u,pa:o,ss:h,mutatedKeys:l}}ya(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n,r){var i=this.ma;this.ma=e.ma,this.mutatedKeys=e.mutatedKeys;const s=e.pa.j_();s.sort((e,t)=>function(e,t){var n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return _m()}};return n(e)-n(t)}(e.type,t.type)||this.Va(e.doc,t.doc)),this.wa(n),r=null!=r&&r;var a=t&&!r?this.Sa():[],o=0===this.Ra.size&&this.current&&!r?1:0,c=o!==this.Aa;return this.Aa=o,0!==s.length||c?{snapshot:new u0(this.query,e.ma,i,s,e.mutatedKeys,0==o,c,!1,!!n&&0<n.resumeToken.approximateByteSize()),ba:a}:{ba:a}}ea(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({ma:this.ma,pa:new l0,mutatedKeys:this.mutatedKeys,ss:!1},!1)):{ba:[]}}Da(e){return!this.da.has(e)&&!!this.ma.has(e)&&!this.ma.get(e).hasLocalMutations}wa(e){e&&(e.addedDocuments.forEach(e=>this.da=this.da.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.da=this.da.delete(e)),this.current=e.current)}Sa(){if(!this.current)return[];const t=this.Ra;this.Ra=Ly(),this.ma.forEach(e=>{this.Da(e.key)&&(this.Ra=this.Ra.add(e.key))});const n=[];return t.forEach(e=>{this.Ra.has(e)||n.push(new T0(e))}),this.Ra.forEach(e=>{t.has(e)||n.push(new I0(e))}),n}va(e){this.da=e.ds,this.Ra=Ly();var t=this.ga(e.documents);return this.applyChanges(t,!0)}Ca(){return u0.fromInitialDocuments(this.query,this.ma,this.mutatedKeys,0===this.Aa,this.hasCachedResults)}}class C0{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class S0{constructor(e){this.key=e,this.Fa=!1}}class k0{constructor(e,t,n,r,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=r,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.Ma={},this.xa=new ky(e=>Iy(e),by),this.Oa=new Map,this.Na=new Set,this.La=new Jv(Bm.comparator),this.Ba=new Map,this.ka=new OI,this.qa={},this.Qa=new Map,this.Ka=cI.Qn(),this.onlineState="Unknown",this.$a=void 0}get isPrimaryClient(){return!0===this.$a}}async function A0(e,t,n,r){var i=await aT(e.localStore,_y(t)),s=i.targetId,a=e.sharedClientState.addLocalQueryTarget(s,n);let o;return r&&(o=await N0(e,t,s,"current"===a,i.resumeToken)),e.isPrimaryClient&&n&&jT(e.remoteStore,i),o}async function N0(r,e,t,n,i){r.Ua=(e,t,n)=>async function(e,t,n,r){let i=t.view.ga(n);i.ss&&(i=await cT(e.localStore,t.query,!1).then(({documents:e})=>t.view.ga(e,i)));var s=r&&r.targetChanges.get(t.targetId),a=r&&null!=r.targetMismatches.get(t.targetId),a=t.view.applyChanges(i,e.isPrimaryClient,s,a);return U0(e,t.targetId,a.ba),a.snapshot}(r,e,t,n);const s=await cT(r.localStore,e,!0),a=new E0(e,s.ds),o=a.ga(s.documents),c=Cw.createSynthesizedTargetChangeForCurrentChange(t,n&&"Offline"!==r.onlineState,i),l=a.applyChanges(o,r.isPrimaryClient,c);U0(r,t,l.ba);var u=new C0(e,t,a);return r.xa.set(e,u),r.Oa.has(t)?r.Oa.get(t).push(e):r.Oa.set(t,[e]),l.snapshot}async function R0(e,t,n){const r=K0(e);try{const e=await function(e,i){const s=e,a=Lm.now(),o=i.reduce((e,t)=>e.add(t.key),Ly());let c,l;return s.persistence.runTransaction("Locally write mutations","readwrite",n=>{let t=Ay,r=Ly();return s.hs.getEntries(n,o).next(e=>{t=e,t.forEach((e,t)=>{t.isValidDocument()||(r=r.add(e))})}).next(()=>s.localDocuments.getOverlayedDocuments(n,t)).next(e=>{c=e;const t=[];for(const n of i){const i=function(e,t){let n=null;for(const r of e.fieldTransforms){const e=t.data.field(r.field),i=By(r.transform,e||null);null!=i&&(null===n&&(n=L_.empty()),n.set(r.field,i))}return n||null}(n,c.get(n.key).overlayedDocument);null!=i&&t.push(new aw(n.key,i,function r(e){const i=[];return Hv(e.fields,(e,t)=>{const n=new qm([e]);if(A_(t)){const e=r(t.mapValue).fields;if(0===e.length)i.push(n);else for(const t of e)i.push(n.child(t))}else i.push(n)}),new n_(i)}(i.value.mapValue),Xy.exists(!0)))}return s.mutationQueue.addMutationBatch(n,a,t,i)}).next(e=>{var t=(l=e).applyToLocalDocumentSet(c,r);return s.documentOverlayCache.saveOverlays(n,e.batchId,t)})}).then(()=>({batchId:l.batchId,changes:Py(c)}))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.qa[e.currentUser.toKey()];r=r||new Jv(Dm),r=r.insert(t,n),e.qa[e.currentUser.toKey()]=r}(r,e.batchId,n),await q0(r,e.changes),await XT(r.remoteStore)}catch(e){const t=o0(e,"Failed to persist write");n.reject(t)}}async function P0(e,t){const r=e;try{const e=await iT(r.localStore,t);t.targetChanges.forEach((e,t)=>{const n=r.Ba.get(t);n&&(ym(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),0<e.addedDocuments.size?n.Fa=!0:0<e.modifiedDocuments.size?ym(n.Fa):0<e.removedDocuments.size&&(ym(n.Fa),n.Fa=!1))}),await q0(r,e,t)}catch(e){await Zm(e)}}function D0(r,i,e){const t=r;if(t.isPrimaryClient&&0===e||!t.isPrimaryClient&&1===e){const r=[];t.xa.forEach((e,t)=>{var n=t.view.ea(i);n.snapshot&&r.push(n.snapshot)}),function(e,n){const t=e;t.onlineState=n;let r=!1;t.queries.forEach((e,t)=>{for(const e of t.J_)e.ea(n)&&(r=!0)}),r&&m0(t)}(t.eventManager,i),r.length&&t.Ma.R_(r),t.onlineState=i,t.isPrimaryClient&&t.sharedClientState.setOnlineState(i)}}async function x0(e,t){const n=e,r=t.batch.batchId;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{const t=r.batch.keys(),n=i.hs.newChangeBuffer({trackRemovals:!0});return function(e,t,r,i){const s=r.batch,n=s.keys();let a=ev.resolve();return n.forEach(n=>{a=a.next(()=>i.getEntry(t,n)).next(e=>{var t=r.docVersions.get(n);ym(null!==t),e.version.compareTo(t)<0&&(s.applyToRemoteDocument(e,r),e.isValidDocument()&&(e.setReadTime(r.commitVersion),i.addEntry(e)))})}),a.next(()=>e.mutationQueue.removeMutationBatch(t,s))}(i,e,r,n).next(()=>n.apply(e)).next(()=>i.mutationQueue.performConsistencyCheck(e)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(e,t,r.batch.batchId)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=Ly();for(let n=0;n<e.mutationResults.length;++n)0<e.mutationResults[n].transformResults.length&&(t=t.add(e.batch.mutations[n].key));return t}(r))).next(()=>i.localDocuments.getDocuments(e,t))})}(n.localStore,t);L0(n,r,null),O0(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await q0(n,e)}catch(e){await Zm(e)}}function O0(e,t){(e.Qa.get(t)||[]).forEach(e=>{e.resolve()}),e.Qa.delete(t)}function L0(e,t,n){const r=e;let i=r.qa[r.currentUser.toKey()];if(i){const e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.qa[r.currentUser.toKey()]=i}}function M0(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t.Oa.get(e))t.xa.delete(r),n&&t.Ma.Wa(r,n);t.Oa.delete(e),t.isPrimaryClient&&t.ka.yr(e).forEach(e=>{t.ka.containsKey(e)||F0(t,e)})}function F0(e,t){e.Na.delete(t.path.canonicalString());var n=e.La.get(t);null!==n&&(zT(e.remoteStore,n),e.La=e.La.remove(t),e.Ba.delete(n),V0(e))}function U0(e,t,n){for(const r of n)r instanceof I0?(e.ka.addReference(r.key,t),function(e,t){const n=t.key,r=n.path.canonicalString();e.La.get(n)||e.Na.has(r)||(fm("SyncEngine","New document in limbo: "+n),e.Na.add(r),V0(e))}(e,r)):r instanceof T0?(fm("SyncEngine","Document no longer in limbo: "+r.key),e.ka.removeReference(r.key,t),e.ka.containsKey(r.key)||F0(e,r.key)):_m()}function V0(e){for(;0<e.Na.size&&e.La.size<e.maxConcurrentLimboResolutions;){var t=e.Na.values().next().value;e.Na.delete(t);var n=new Bm(Um.fromString(t)),t=e.Ka.next();e.Ba.set(t,new S0(n)),e.La=e.La.insert(n,t),jT(e.remoteStore,new cb(_y(fy(n.path)),t,"TargetPurposeLimboResolution",pv.oe))}}async function q0(e,t,r){const i=e,s=[],a=[],o=[];i.xa.isEmpty()||(i.xa.forEach((e,n)=>{o.push(i.Ua(n,t,r).then(e=>{var t;if((e||r)&&i.isPrimaryClient){const s=e?!e.fromCache:null===(t=null==r?void 0:r.targetChanges.get(n.targetId))||void 0===t?void 0:t.current;i.sharedClientState.updateQueryState(n.targetId,s?"current":"not-current")}if(e){s.push(e);const t=YI.zi(n.targetId,e);a.push(t)}}))}),await Promise.all(o),i.Ma.R_(s),await async function(e,t){const r=e;try{await r.persistence.runTransaction("notifyLocalViewChanges","readwrite",n=>ev.forEach(t,t=>ev.forEach(t.Wi,e=>r.persistence.referenceDelegate.addReference(n,t.targetId,e)).next(()=>ev.forEach(t.Gi,e=>r.persistence.referenceDelegate.removeReference(n,t.targetId,e)))))}catch(e){if(!av(e))throw e;fm("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=r.us.get(t),n=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(n);r.us=r.us.insert(t,i)}}}(i.localStore,a))}async function B0(r,e){const i=r;if($0(i),K0(i),!0===e&&!0!==i.$a){const r=i.sharedClientState.getAllActiveQueryTargets(),e=await j0(i,r.toArray());i.$a=!0,await r0(i.remoteStore,!0);for(const r of e)jT(i.remoteStore,r)}else if(!1===e&&!1!==i.$a){const r=[];let n=Promise.resolve();i.Oa.forEach((e,t)=>{i.sharedClientState.isLocalQueryTarget(t)?r.push(t):n=n.then(()=>(M0(i,t),oT(i.localStore,t,!0))),zT(i.remoteStore,t)}),await n,await j0(i,r),function(e){const n=e;n.Ba.forEach((e,t)=>{zT(n.remoteStore,t)}),n.ka.wr(),n.Ba=new Map,n.La=new Jv(Bm.comparator)}(i),i.$a=!1,await r0(i.remoteStore,!1)}}async function j0(t,n){const r=t,i=[],s=[];for(const t of n){let e;const u=r.Oa.get(t);if(u&&0!==u.length){e=await aT(r.localStore,_y(u[0]));for(const t of u){const n=r.xa.get(t),u=(a=r,o=n,l=c=void 0,l=await cT((c=a).localStore,o.query,!0),l=o.view.va(l),c.isPrimaryClient&&U0(c,o.targetId,l.ba),await l);u.snapshot&&s.push(u.snapshot)}}else{const u=await lT(r.localStore,t);e=await aT(r.localStore,u),await N0(r,z0(u),t,!1,e.resumeToken)}i.push(e)}var a,o,c,l;return r.Ma.R_(s),i}function z0(e){return py(e.path,e.collectionGroup,e.orderBy,e.filters,e.limit,"F",e.startAt,e.endAt)}function $0(e){const t=e;return t.remoteStore.remoteSyncer.applyRemoteEvent=P0.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=(function(e,t){const n=e,r=n.Ba.get(t);if(r&&r.Fa)return Ly().add(r.key);{let e=Ly();const r=n.Oa.get(t);if(!r)return e;for(const t of r){const r=n.xa.get(t);e=e.unionWith(r.view.fa)}return e}}).bind(null,t),t.remoteStore.remoteSyncer.rejectListen=(async function(e,t,n){const r=e;r.sharedClientState.updateQueryState(t,"rejected",n);const i=r.Ba.get(t),s=i&&i.key;if(s){let e=new Jv(Bm.comparator);e=e.insert(s,M_.newNoDocument(s,Mm.min()));const n=Ly().add(s),i=new Ew(Mm.min(),new Map,new Jv(Dm),e,n);await P0(r,i),r.La=r.La.remove(s),r.Ba.delete(t),V0(r)}else await oT(r.localStore,t,!1).then(()=>M0(r,t,n)).catch(Zm)}).bind(null,t),t.Ma.R_=(function(e,t){const n=e;let r=!1;for(const e of t){const t=e.query,i=n.queries.get(t);if(i){for(const t of i.J_)t.ta(e)&&(r=!0);i.H_=e}}r&&m0(n)}).bind(null,t.eventManager),t.Ma.Wa=(function(e,t,n){const r=e,i=r.queries.get(t);if(i)for(const e of i.J_)e.onError(n);r.queries.delete(t)}).bind(null,t.eventManager),t}function K0(e){const t=e;return t.remoteStore.remoteSyncer.applySuccessfulWrite=x0.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=(async function(e,t,n){const r=e;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Reject batch","readwrite-primary",t=>{let n;return i.mutationQueue.lookupMutationBatch(t,r).next(e=>(ym(null!==e),n=e.keys(),i.mutationQueue.removeMutationBatch(t,e))).next(()=>i.mutationQueue.performConsistencyCheck(t)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(t,n,r)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t,n)).next(()=>i.localDocuments.getDocuments(t,n))})}(r.localStore,t);L0(r,t,n),O0(r,t),r.sharedClientState.updateMutationState(t,"rejected",n),await q0(r,e)}catch(n){await Zm(n)}}).bind(null,t),t}class W0{constructor(){this.kind="memory",this.synchronizeTabs=!1}async initialize(e){this.serializer=DT(e.databaseInfo.databaseId),this.sharedClientState=this.za(e),this.persistence=this.ja(e),await this.persistence.start(),this.localStore=this.Ha(e),this.gcScheduler=this.Ja(e,this.localStore),this.indexBackfillerScheduler=this.Ya(e,this.localStore)}Ja(e,t){return null}Ya(e,t){return null}Ha(e){return tT(this.persistence,new ZI,e.initialUser,this.serializer)}ja(e){return new qI(jI.ei,this.serializer)}za(e){return new bT}async terminate(){var e;null===(e=this.gcScheduler)||void 0===e||e.stop(),null===(e=this.indexBackfillerScheduler)||void 0===e||e.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}W0.provider={build:()=>new W0};class G0 extends W0{constructor(e){super(),this.cacheSizeBytes=e}Ja(e,t){ym(this.persistence.referenceDelegate instanceof zI);var n=this.persistence.referenceDelegate.garbageCollector;return new gI(n,e.asyncQueue,t)}ja(e){const t=void 0!==this.cacheSizeBytes?eI.withCacheSize(this.cacheSizeBytes):eI.DEFAULT;return new qI(e=>zI.ei(e,t),this.serializer)}}class H0 extends W0{constructor(e,t,n){super(),this.Za=e,this.cacheSizeBytes=t,this.forceOwnership=n,this.kind="persistent",this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.Za.initialize(this,e),await K0(this.Za.syncEngine),await XT(this.Za.remoteStore),await this.persistence.Si(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}Ha(e){return tT(this.persistence,new ZI,e.initialUser,this.serializer)}Ja(e,t){var n=this.persistence.referenceDelegate.garbageCollector;return new gI(n,e.asyncQueue,t)}Ya(e,t){var n=new dv(t,this.persistence);return new hv(e.asyncQueue,n)}ja(e){var t=JI(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),n=void 0!==this.cacheSizeBytes?eI.withCacheSize(this.cacheSizeBytes):eI.DEFAULT;return new GI(this.synchronizeTabs,t,e.clientId,n,e.asyncQueue,RT(),PT(),this.serializer,this.sharedClientState,!!this.forceOwnership)}za(e){return new bT}}class Q0 extends H0{constructor(e,t){super(e,t,!1),this.Za=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);var t=this.Za.syncEngine;this.sharedClientState instanceof wT&&(this.sharedClientState.syncEngine={io:(async function(e,t,n,r){var i=e,s=await function(e,n){const r=e,i=r.mutationQueue;return r.persistence.runTransaction("Lookup mutation documents","readonly",t=>i.On(t,n).next(e=>e?r.localDocuments.getDocuments(t,e):ev.resolve(null)))}(i.localStore,t);null!==s?("pending"===n?await XT(i.remoteStore):"acknowledged"===n||"rejected"===n?(L0(i,t,r||null),O0(i,t),i.localStore.mutationQueue.Ln(t)):_m(),await q0(i,s)):fm("SyncEngine","Cannot apply mutation batch with id: "+t)}).bind(null,t),so:(async function(e,t,n,r){const i=e;if(i.$a)fm("SyncEngine","Ignoring unexpected query state notification.");else{var s=i.Oa.get(t);if(s&&0<s.length)switch(n){case"current":case"not-current":{const e=await uT(i.localStore,Cy(s[0])),r=Ew.createSynthesizedRemoteEventForCurrentChange(t,"current"===n,i_.EMPTY_BYTE_STRING);await q0(i,e,r);break}case"rejected":await oT(i.localStore,t,!0),M0(i,t,r);break;default:_m()}}}).bind(null,t),oo:(async function(e,t,n){const r=$0(e);if(r.$a){for(const e of t)if(r.Oa.has(e)&&r.sharedClientState.isActiveQueryTarget(e))fm("SyncEngine","Adding an already active target "+e);else{const t=await lT(r.localStore,e),n=await aT(r.localStore,t);await N0(r,z0(t),n.targetId,!1,n.resumeToken),jT(r.remoteStore,n)}for(const e of n)r.Oa.has(e)&&await oT(r.localStore,e,!1).then(()=>{zT(r.remoteStore,e),M0(r,e)}).catch(Zm)}}).bind(null,t),$i:(function(e){return e.localStore.persistence.$i()}).bind(null,t),ro:(async function(e,t){const n=e;return uT(n.localStore,t).then(e=>q0(n,e))}).bind(null,t)},await this.sharedClientState.start()),await this.persistence.Si(async e=>{await B0(this.Za.syncEngine,e),this.gcScheduler&&(e&&!this.gcScheduler.started?this.gcScheduler.start():e||this.gcScheduler.stop()),this.indexBackfillerScheduler&&(e&&!this.indexBackfillerScheduler.started?this.indexBackfillerScheduler.start():e||this.indexBackfillerScheduler.stop())})}za(e){var t=RT();if(!wT.p(t))throw new bm(wm.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");var n=JI(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new wT(t,e.asyncQueue,n,e.clientId,e.initialUser)}}class J0{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=>D0(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=(async function(e,t){const n=e;if(!n.currentUser.isEqual(t)){fm("SyncEngine","User change. New user:",t.toKey());const i=await nT(n.localStore,t);n.currentUser=t,e=n,r="'waitForPendingWrites' promise is rejected due to a user change.",e.Qa.forEach(e=>{e.forEach(e=>{e.reject(new bm(wm.CANCELLED,r))})}),e.Qa.clear(),n.sharedClientState.handleUserChange(t,i.removedBatchIds,i.addedBatchIds),await q0(n,i.Ts)}var r}).bind(null,this.syncEngine),await r0(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new d0}createDatastore(e){var t,n,r,i=DT(e.databaseInfo.databaseId),s=(r=e.databaseInfo,new NT(r));return t=e.authCredentials,n=e.appCheckCredentials,r=s,e=i,new FT(t,n,r,e)}createRemoteStore(e){return t=this.localStore,n=this.datastore,r=e.asyncQueue,i=e=>D0(this.syncEngine,e,0),e=new(TT.p()?TT:IT),new VT(t,n,r,i,e);var t,n,r,i}createSyncEngine(e,t){return function(e,t,n,r,i,s,a){const o=new k0(e,t,n,r,i,s);return a&&(o.$a=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){var e;await async function(e){const t=e;fm("RemoteStore","RemoteStore shutting down."),t.k_.add(5),await BT(t),t.Q_.shutdown(),t.K_.set("Unknown")}(this.remoteStore),null===(e=this.datastore)||void 0===e||e.terminate(),null===(e=this.eventManager)||void 0===e||e.terminate()}}function Y0(t,n=10240){let r=0;return{async read(){if(r<t.byteLength){var e={value:t.slice(r,r+n),done:!1};return r+=n,e}return{done:!0}},async cancel(){},releaseLock(){},closed:Promise.resolve()}}J0.provider={build:()=>new J0};class X0{constructor(e){this.observer=e,this.muted=!1}next(e){this.muted||this.observer.next&&this.Xa(this.observer.next,e)}error(e){this.muted||(this.observer.error?this.Xa(this.observer.error,e):gm("Uncaught Error in snapshot listener:",e.toString()))}eu(){this.muted=!0}Xa(e,t){setTimeout(()=>{this.muted||e(t)},0)}}class Z0{constructor(e,t){this.tu=e,this.serializer=t,this.metadata=new Im,this.buffer=new Uint8Array,this.nu=new TextDecoder("utf-8"),this.ru().then(e=>{e&&e.la()?this.metadata.resolve(e.ca.metadata):this.metadata.reject(new Error(`The first element of the bundle is not a metadata, it is\n ${JSON.stringify(null==e?void 0:e.ca)}`))},e=>this.metadata.reject(e))}close(){return this.tu.cancel()}async getMetadata(){return this.metadata.promise}async Ga(){return await this.getMetadata(),this.ru()}async ru(){var e=await this.iu();if(null===e)return null;var t=this.nu.decode(e),n=Number(t);isNaN(n)&&this.su(`length string (${t}) is not valid number`);t=await this.ou(n);return new _0(JSON.parse(t),e.length+n)}_u(){return this.buffer.findIndex(e=>e==="{".charCodeAt(0))}async iu(){for(;this._u()<0&&!await this.au(););if(0===this.buffer.length)return null;var e=this._u();e<0&&this.su("Reached the end of bundle when a length string is expected.");var t=this.buffer.slice(0,e);return this.buffer=this.buffer.slice(e),t}async ou(e){for(;this.buffer.length<e;)await this.au()&&this.su("Reached the end of bundle when more is expected.");var t=this.nu.decode(this.buffer.slice(0,e));return this.buffer=this.buffer.slice(e),t}su(e){throw this.tu.cancel(),new Error(`Invalid bundle format: ${e}`)}async au(){var e=await this.tu.read();if(!e.done){const t=new Uint8Array(this.buffer.length+e.value.length);t.set(this.buffer),t.set(e.value,this.buffer.length),this.buffer=t}return e.done}}class eE{constructor(e){this.datastore=e,this.readVersions=new Map,this.mutations=[],this.committed=!1,this.lastTransactionError=null,this.writtenDocs=new Set}async lookup(e){if(this.ensureCommitNotCalled(),0<this.mutations.length)throw this.lastTransactionError=new bm(wm.INVALID_ARGUMENT,"Firestore transactions require all reads to be executed before all writes."),this.lastTransactionError;const t=await async function(e,t){const r=e,n={documents:t.map(e=>$w(r.serializer,e))},i=await r.ko("BatchGetDocuments",r.serializer.databaseId,Um.emptyPath(),n,t.length),s=new Map;i.forEach(e=>{const t=(n=r.serializer,"found"in(e=e)?function(e,t){ym(!!t.found),t.found.name,t.found.updateTime;var n=Kw(e,t.found.name),r=qw(t.found.updateTime),i=t.found.createTime?qw(t.found.createTime):Mm.min(),s=new L_({mapValue:{fields:t.found.fields}});return M_.newFoundDocument(n,r,i,s)}(n,e):"missing"in e?function(e,t){ym(!!t.missing),ym(!!t.readTime);var n=Kw(e,t.missing),r=qw(t.readTime);return M_.newNoDocument(n,r)}(n,e):_m());var n;s.set(t.key.toString(),t)});const a=[];return t.forEach(e=>{var t=s.get(e.toString());ym(!!t),a.push(t)}),a}(this.datastore,e);return t.forEach(e=>this.recordVersion(e)),t}set(e,t){this.write(t.toMutation(e,this.precondition(e))),this.writtenDocs.add(e.toString())}update(e,t){try{this.write(t.toMutation(e,this.preconditionForUpdate(e)))}catch(e){this.lastTransactionError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new uw(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastTransactionError)throw this.lastTransactionError;const t=this.readVersions;this.mutations.forEach(e=>{t.delete(e.key.toString())}),t.forEach((e,t)=>{var n=Bm.fromPath(t);this.mutations.push(new hw(n,this.precondition(n)))}),await async function(e,t){const n=e,r={writes:t.map(e=>Xw(n.serializer,e))};await n.Oo("Commit",n.serializer.databaseId,Um.emptyPath(),r)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw _m();t=Mm.min()}var n=this.readVersions.get(e.key.toString());if(n){if(!t.isEqual(n))throw new bm(wm.ABORTED,"Document version changed between two reads.")}else this.readVersions.set(e.key.toString(),t)}precondition(e){const t=this.readVersions.get(e.toString());return!this.writtenDocs.has(e.toString())&&t?t.isEqual(Mm.min())?Xy.exists(!1):Xy.updateTime(t):Xy.none()}preconditionForUpdate(e){const t=this.readVersions.get(e.toString());if(this.writtenDocs.has(e.toString())||!t)return Xy.exists(!0);if(t.isEqual(Mm.min()))throw new bm(wm.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return Xy.updateTime(t)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}class tE{constructor(e,t,n,r,i){this.asyncQueue=e,this.datastore=t,this.options=n,this.updateFunction=r,this.deferred=i,this.uu=n.maxAttempts,this.r_=new xT(this.asyncQueue,"transaction_retry")}cu(){--this.uu,this.lu()}lu(){this.r_.jo(async()=>{const t=new eE(this.datastore),e=this.hu(t);e&&e.then(e=>{this.asyncQueue.enqueueAndForget(()=>t.commit().then(()=>{this.deferred.resolve(e)}).catch(e=>{this.Pu(e)}))}).catch(e=>{this.Pu(e)})})}hu(e){try{var t=this.updateFunction(e);return!fv(t)&&t.catch&&t.then?t:(this.deferred.reject(Error("Transaction callback must return a Promise")),null)}catch(e){return this.deferred.reject(e),null}}Pu(e){0<this.uu&&this.Tu(e)?(--this.uu,this.asyncQueue.enqueueAndForget(()=>(this.lu(),Promise.resolve()))):this.deferred.reject(e)}Tu(e){if("FirebaseError"!==e.name)return!1;var t=e.code;return"aborted"===t||"failed-precondition"===t||"already-exists"===t||!mw(t)}}class nE{constructor(e,t,n,r,i){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=r,this.user=um.UNAUTHENTICATED,this.clientId=Pm.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=i,this.authCredentials.start(n,async e=>{fm("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(n,e=>(fm("FirestoreClient","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();const n=new Im;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){var t=o0(e,"Failed to shutdown persistence");n.reject(t)}}),n.promise}}async function rE(e,t){e.asyncQueue.verifyOperationInProgress(),fm("FirestoreClient","Initializing OfflineComponentProvider");var n=e.configuration;await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener(async e=>{r.isEqual(e)||(await nT(t.localStore,e),r=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function iE(e,n){e.asyncQueue.verifyOperationInProgress();var t=await sE(e);fm("FirestoreClient","Initializing OnlineComponentProvider"),await n.initialize(t,e.configuration),e.setCredentialChangeListener(e=>n0(n.remoteStore,e)),e.setAppCheckTokenChangeListener((e,t)=>n0(n.remoteStore,t)),e._onlineComponents=n}async function sE(t){if(!t._offlineComponents)if(t._uninitializedComponentsProvider){fm("FirestoreClient","Using user provided OfflineComponentProvider");try{await rE(t,t._uninitializedComponentsProvider._offline)}catch(e){var n=e;if(!("FirebaseError"===(r=n).name?r.code===wm.FAILED_PRECONDITION||r.code===wm.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&r instanceof DOMException)||22===r.code||20===r.code||11===r.code))throw n;mm("Error using user provided cache. Falling back to memory cache: "+n),await rE(t,new W0)}}else fm("FirestoreClient","Using default OfflineComponentProvider"),await rE(t,new G0(void 0));var r;return t._offlineComponents}async function aE(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(fm("FirestoreClient","Using user provided OnlineComponentProvider"),await iE(e,e._uninitializedComponentsProvider._online)):(fm("FirestoreClient","Using default OnlineComponentProvider"),await iE(e,new J0))),e._onlineComponents}function oE(e){return sE(e).then(e=>e.persistence)}function cE(e){return sE(e).then(e=>e.localStore)}function lE(e){return aE(e).then(e=>e.remoteStore)}function uE(e){return aE(e).then(e=>e.syncEngine)}async function hE(e){const t=await aE(e),n=t.eventManager;return n.onListen=(async function(e,t,n=!0){const r=$0(e);let i;const s=r.xa.get(t);return i=s?(r.sharedClientState.addLocalQueryTarget(s.targetId),s.view.Ca()):await A0(r,t,n,!0),i}).bind(null,t.syncEngine),n.onUnlisten=(async function(e,t,n){const r=e,i=r.xa.get(t),s=r.Oa.get(i.targetId);if(1<s.length)return r.Oa.set(i.targetId,s.filter(e=>!by(e,t))),void r.xa.delete(t);r.isPrimaryClient?(r.sharedClientState.removeLocalQueryTarget(i.targetId),r.sharedClientState.isActiveQueryTarget(i.targetId)||await oT(r.localStore,i.targetId,!1).then(()=>{r.sharedClientState.clearQueryState(i.targetId),n&&zT(r.remoteStore,i.targetId),M0(r,i.targetId)}).catch(Zm)):(M0(r,i.targetId),await oT(r.localStore,i.targetId,!0))}).bind(null,t.syncEngine),n.onFirstRemoteStoreListen=(async function(e,t){await A0($0(e),t,!0,!1)}).bind(null,t.syncEngine),n.onLastRemoteStoreUnlisten=(async function(e,t){const n=e,r=n.xa.get(t),i=n.Oa.get(r.targetId);n.isPrimaryClient&&1===i.length&&(n.sharedClientState.removeLocalQueryTarget(r.targetId),zT(n.remoteStore,r.targetId))}).bind(null,t.syncEngine),n}function dE(e,t,n={}){const r=new Im;return e.asyncQueue.enqueueAndForget(async()=>function(n,r,i,s,a){const o=new X0({next:e=>{o.eu(),r.enqueueAndForget(()=>g0(n,c));var t=e.docs.has(i);!t&&e.fromCache?a.reject(new bm(wm.UNAVAILABLE,"Failed to get document because the client is offline.")):t&&e.fromCache&&s&&"server"===s.source?a.reject(new bm(wm.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.)')):a.resolve(e)},error:e=>a.reject(e)}),c=new v0(fy(i.path),o,{includeMetadataChanges:!0,ua:!0});return f0(n,c)}(await hE(e),e.asyncQueue,t,n,r)),r.promise}function pE(e,t,n={}){const r=new Im;return e.asyncQueue.enqueueAndForget(async()=>function(t,n,e,r,i){const s=new X0({next:e=>{s.eu(),n.enqueueAndForget(()=>g0(t,a)),e.fromCache&&"server"===r.source?i.reject(new bm(wm.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(e)},error:e=>i.reject(e)}),a=new v0(e,s,{includeMetadataChanges:!0,ua:!0});return f0(t,a)}(await hE(e),e.asyncQueue,t,n,r)),r.promise}function fE(e,t,n,r){const i=(n=n,t=DT(t),s="string"==typeof n?_w().encode(n):n,n=function(e,t){if(e instanceof Uint8Array)return Y0(e,t);if(e instanceof ArrayBuffer)return Y0(new Uint8Array(e),t);if(e instanceof ReadableStream)return e.getReader();throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream")}(s),t=t,new Z0(n,t));var s;e.asyncQueue.enqueueAndForget(async()=>{!function(e,t,n){const r=e;!async function(t,n,r){try{var i=await n.getMetadata();if(await function(e,t){const n=e,r=qw(t.createTime);return n.persistence.runTransaction("hasNewerBundle","readonly",e=>n.jr.getBundleMetadata(e,t.id)).then(e=>!!e&&0<=e.createTime.compareTo(r))}(t.localStore,i))return await n.close(),r._completeWith({taskState:"Success",documentsLoaded:i.totalDocuments,bytesLoaded:i.totalBytes,totalDocuments:i.totalDocuments,totalBytes:i.totalBytes}),Promise.resolve(new Set);r._updateProgress(b0(i));const a=new w0(i,t.localStore,n.serializer);let e=await n.Ga();for(;e;){const t=await a.Pa(e);t&&r._updateProgress(t),e=await n.Ga()}var s=await a.complete();return await q0(t,s.Ea,void 0),await function(e,t){const n=e;return n.persistence.runTransaction("Save bundle","readwrite",e=>n.jr.saveBundleMetadata(e,t))}(t.localStore,i),r._completeWith(s.progress),Promise.resolve(s.Ia)}catch(t){return mm("SyncEngine",`Loading bundle failed with ${t}`),r._failWith(t),Promise.resolve(new Set)}}(r,t,n).then(e=>{r.sharedClientState.notifyBundleLoaded(e)})}(await uE(e),i,r)})}function gE(e){const t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}const mE=new Map;function vE(e,t,n){if(!n)throw new bm(wm.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function _E(e,t,n,r){if(!0===t&&!0===r)throw new bm(wm.INVALID_ARGUMENT,`${e} and ${n} cannot be used together.`)}function yE(e){if(!Bm.isDocumentKey(e))throw new bm(wm.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function wE(e){if(Bm.isDocumentKey(e))throw new bm(wm.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function bE(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return 20<e.length&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"!=typeof e)return"function"==typeof e?"a function":_m();if(e instanceof Array)return"an array";var t=(e=e).constructor?e.constructor.name:null;return t?`a custom ${t} object`:"an object"}function IE(e,t){if((e="_delegate"in e?e._delegate:e)instanceof t)return e;if(t.name===e.constructor.name)throw new bm(wm.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");var n=bE(e);throw new bm(wm.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${n}`)}function TE(e,t){if(t<=0)throw new bm(wm.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}class EE{constructor(e){var t;if(void 0===e.host){if(void 0!==e.ssl)throw new bm(wm.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=null===(t=e.ssl)||void 0===t||t;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,void 0===e.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new bm(wm.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}_E("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:void 0===e.experimentalAutoDetectLongPolling?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=gE(null!==(t=e.experimentalLongPollingOptions)&&void 0!==t?t:{}),function(e){if(void 0!==e.timeoutSeconds){if(isNaN(e.timeoutSeconds))throw new bm(wm.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (must not be NaN)`);if(e.timeoutSeconds<5)throw new bm(wm.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (minimum allowed value is 5)`);if(30<e.timeoutSeconds)throw new bm(wm.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&(t=this.experimentalLongPollingOptions,n=e.experimentalLongPollingOptions,t.timeoutSeconds===n.timeoutSeconds)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams;var t,n}}class CE{constructor(e,t,n,r){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=n,this._app=r,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new EE({}),this._settingsFrozen=!1,this._terminateTask="notTerminated"}get app(){if(!this._app)throw new bm(wm.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return"notTerminated"!==this._terminateTask}_setSettings(e){if(this._settingsFrozen)throw new bm(wm.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new EE(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new Em;switch(e.type){case"firstParty":return new Am(e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new bm(wm.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return"notTerminated"===this._terminateTask&&(this._terminateTask=this._terminate()),this._terminateTask}async _restart(){"notTerminated"===this._terminateTask?await this._terminate():this._terminateTask="notTerminated"}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(e){const t=mE.get(e);t&&(fm("ComponentProvider","Removing Datastore"),mE.delete(e),t.terminate())}(this),Promise.resolve()}}class SE{constructor(e,t,n){this.converter=t,this._query=n,this.type="query",this.firestore=e}withConverter(e){return new SE(this.firestore,e,this._query)}}class kE{constructor(e,t,n){this.converter=t,this._key=n,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new AE(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new kE(this.firestore,e,this._key)}}class AE extends SE{constructor(e,t,n){super(e,t,fy(n)),this._path=n,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new kE(this.firestore,null,new Bm(e))}withConverter(e){return new AE(this.firestore,e,this._path)}}function NE(e,t,...n){if(e=le(e),vE("collection","path",t),e instanceof CE){var r=Um.fromString(t,...n);return wE(r),new AE(e,null,r)}if(!(e instanceof kE||e instanceof AE))throw new bm(wm.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(Um.fromString(t,...n));return wE(r),new AE(e.firestore,null,r)}function RE(e,t,...n){if(e=le(e),vE("doc","path",t=1===arguments.length?Pm.newId():t),e instanceof CE){var r=Um.fromString(t,...n);return yE(r),new kE(e,null,new Bm(r))}if(!(e instanceof kE||e instanceof AE))throw new bm(wm.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(Um.fromString(t,...n));return yE(r),new kE(e.firestore,e instanceof AE?e.converter:null,new Bm(r))}function PE(e,t){return e=le(e),t=le(t),(e instanceof kE||e instanceof AE)&&(t instanceof kE||t instanceof AE)&&e.firestore===t.firestore&&e.path===t.path&&e.converter===t.converter}function DE(e,t){return e=le(e),t=le(t),e instanceof SE&&t instanceof SE&&e.firestore===t.firestore&&by(e._query,t._query)&&e.converter===t.converter}class xE{constructor(e=Promise.resolve()){this.Iu=[],this.Eu=!1,this.du=[],this.Au=null,this.Ru=!1,this.Vu=!1,this.mu=[],this.r_=new xT(this,"async_queue_retry"),this.fu=()=>{var e=PT();e&&fm("AsyncQueue","Visibility state changed to "+e.visibilityState),this.r_.Jo()},this.gu=e;const t=PT();t&&"function"==typeof t.addEventListener&&t.addEventListener("visibilitychange",this.fu)}get isShuttingDown(){return this.Eu}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.pu(),this.yu(e)}enterRestrictedMode(e){if(!this.Eu){this.Eu=!0,this.Vu=e||!1;const t=PT();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.fu)}}enqueue(e){if(this.pu(),this.Eu)return new Promise(()=>{});const t=new Im;return this.yu(()=>this.Eu&&this.Vu?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Iu.push(e),this.wu()))}async wu(){if(0!==this.Iu.length){try{await this.Iu[0](),this.Iu.shift(),this.r_.reset()}catch(e){if(!av(e))throw e;fm("AsyncQueue","Operation failed with retryable error: "+e)}0<this.Iu.length&&this.r_.jo(()=>this.wu())}}yu(e){var t=this.gu.then(()=>(this.Ru=!0,e().catch(e=>{throw this.Au=e,this.Ru=!1,gm("INTERNAL UNHANDLED ERROR: ",function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e)),e}).then(e=>(this.Ru=!1,e))));return this.gu=t}enqueueAfterDelay(e,t,n){this.pu(),-1<this.mu.indexOf(e)&&(t=0);var r=a0.createAndSchedule(this,e,t,n,e=>this.Su(e));return this.du.push(r),r}pu(){this.Au&&_m()}verifyOperationInProgress(){}async bu(){for(var e;await(e=this.gu),e!==this.gu;);}Du(e){for(const t of this.du)if(t.timerId===e)return!0;return!1}vu(t){return this.bu().then(()=>{this.du.sort((e,t)=>e.targetTimeMs-t.targetTimeMs);for(const e of this.du)if(e.skipDelay(),"all"!==t&&e.timerId===t)break;return this.bu()})}Cu(e){this.mu.push(e)}Su(e){var t=this.du.indexOf(e);this.du.splice(t,1)}}function OE(e){return function(e,t){if("object"==typeof e&&null!==e){var n=e;for(const e of t)if(e in n&&"function"==typeof n[e])return 1}}(e,["next","error","complete"])}class LE{constructor(){this._progressObserver={},this._taskCompletionResolver=new Im,this._lastProgress={taskState:"Running",totalBytes:0,totalDocuments:0,bytesLoaded:0,documentsLoaded:0}}onProgress(e,t,n){this._progressObserver={next:e,error:t,complete:n}}catch(e){return this._taskCompletionResolver.promise.catch(e)}then(e,t){return this._taskCompletionResolver.promise.then(e,t)}_completeWith(e){this._updateProgress(e),this._progressObserver.complete&&this._progressObserver.complete(),this._taskCompletionResolver.resolve(e)}_failWith(e){this._lastProgress.taskState="Error",this._progressObserver.next&&this._progressObserver.next(this._lastProgress),this._progressObserver.error&&this._progressObserver.error(e),this._taskCompletionResolver.reject(e)}_updateProgress(e){this._lastProgress=e,this._progressObserver.next&&this._progressObserver.next(e)}}var ME,FE,UE,VE;class qE extends CE{constructor(e,t,n,r){super(e,t,n,r),this.type="firestore",this._queue=new xE,this._persistenceKey=(null==r?void 0:r.name)||"[DEFAULT]"}async _terminate(){var e;this._firestoreClient&&(e=this._firestoreClient.terminate(),this._queue=new xE(e),this._firestoreClient=void 0,await e)}}function BE(e){if(e._terminated)throw new bm(wm.FAILED_PRECONDITION,"The client has already been terminated.");return e._firestoreClient||jE(e),e._firestoreClient}function jE(e){var t,n,r,i,s,a,o=e._freezeSettings(),c=(r=e._databaseId,i=(null===(t=e._app)||void 0===t?void 0:t.options.appId)||"",s=e._persistenceKey,a=o,new d_(r,i,s,a.host,a.ssl,a.experimentalForceLongPolling,a.experimentalAutoDetectLongPolling,gE(a.experimentalLongPollingOptions),a.useFetchStreams));e._componentsProvider||null!==(t=o.localCache)&&void 0!==t&&t._offlineComponentProvider&&null!==(n=o.localCache)&&void 0!==n&&n._onlineComponentProvider&&(e._componentsProvider={_offline:o.localCache._offlineComponentProvider,_online:o.localCache._onlineComponentProvider}),e._firestoreClient=new nE(e._authCredentials,e._appCheckCredentials,e._queue,c,e._componentsProvider&&(e=e._componentsProvider,c=null==e?void 0:e._online.build(),{_offline:null==e?void 0:e._offline.build(c),_online:c}))}function zE(e,t,n){if((e=IE(e,qE))._firestoreClient||e._terminated)throw new bm(wm.FAILED_PRECONDITION,"Firestore has already been started and persistence can no longer be enabled. You can only enable persistence before calling any other methods on a Firestore object.");if(e._componentsProvider||e._getSettings().localCache)throw new bm(wm.FAILED_PRECONDITION,"SDK cache is already specified.");e._componentsProvider={_online:t,_offline:n},jE(e)}function $E(e){return function(e){const t=new Im;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t){const n=e;HT(n.remoteStore)||fm("SyncEngine","The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.");try{const e=await function(e){const t=e;return t.persistence.runTransaction("Get highest unacknowledged batch id","readonly",e=>t.mutationQueue.getHighestUnacknowledgedBatchId(e))}(n.localStore);if(-1===e)return void t.resolve();const r=n.Qa.get(e)||[];r.push(t),n.Qa.set(e,r)}catch(e){const n=o0(e,"Initialization of waitForPendingWrites() operation failed");t.reject(n)}}(await uE(e),t)),t.promise}(BE(e=IE(e,qE)))}function KE(e){return(n=BE(e=IE(e,qE))).asyncQueue.enqueue(async()=>{const e=await oE(n),t=await lE(n);return e.setNetworkEnabled(!0),function(e){const t=e;return t.k_.delete(0),qT(t)}(t)});var n}function WE(e){return(n=BE(e=IE(e,qE))).asyncQueue.enqueue(async()=>{const e=await oE(n),t=await lE(n);return e.setNetworkEnabled(!1),async function(e){const t=e;t.k_.add(0),await BT(t),t.K_.set("Offline")}(t)});var n}function GE(t,e){return n=BE(t=IE(t,qE)),r=e,n.asyncQueue.enqueue(async()=>function(e,t){const n=e;return n.persistence.runTransaction("Get named query","readonly",e=>n.jr.getNamedQuery(e,t))}(await cE(n),r)).then(e=>e?new SE(t,null,e.query):null);var n,r}class HE{constructor(e){this._byteString=e}static fromBase64String(e){try{return new HE(i_.fromBase64String(e))}catch(e){throw new bm(wm.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new HE(i_.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}class QE{constructor(...e){for(let t=0;t<e.length;++t)if(0===e[t].length)throw new bm(wm.INVALID_ARGUMENT,"Invalid field name at argument $(i + 1). Field names must not be empty.");this._internalPath=new qm(e)}isEqual(e){return this._internalPath.isEqual(e._internalPath)}}class JE{constructor(e){this._methodName=e}}class YE{constructor(e,t){if(!isFinite(e)||e<-90||90<e)throw new bm(wm.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||180<t)throw new bm(wm.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return Dm(this._lat,e._lat)||Dm(this._long,e._long)}}class XE{constructor(e){this._values=(e||[]).map(e=>e)}toArray(){return this._values.map(e=>e)}isEqual(e){return function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0}(this._values,e._values)}}const ZE=/^__.*__$/;class eC{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return null!==this.fieldMask?new aw(e,this.data,this.fieldMask,t,this.fieldTransforms):new sw(e,this.data,t,this.fieldTransforms)}}class tC{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return new aw(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function nC(e){switch(e){case 0:case 2:case 1:return 1;case 3:case 4:return;default:throw _m()}}class rC{constructor(e,t,n,r,i,s){this.settings=e,this.databaseId=t,this.serializer=n,this.ignoreUndefinedProperties=r,void 0===i&&this.Fu(),this.fieldTransforms=i||[],this.fieldMask=s||[]}get path(){return this.settings.path}get Mu(){return this.settings.Mu}xu(e){return new rC(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}Ou(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.xu({path:n,Nu:!1});return r.Lu(e),r}Bu(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.xu({path:n,Nu:!1});return r.Fu(),r}ku(e){return this.xu({path:void 0,Nu:!0})}qu(e){return TC(e,this.settings.methodName,this.settings.Qu||!1,this.path,this.settings.Ku)}contains(t){return void 0!==this.fieldMask.find(e=>t.isPrefixOf(e))||void 0!==this.fieldTransforms.find(e=>t.isPrefixOf(e.field))}Fu(){if(this.path)for(let e=0;e<this.path.length;e++)this.Lu(this.path.get(e))}Lu(e){if(0===e.length)throw this.qu("Document fields must not be empty");if(nC(this.Mu)&&ZE.test(e))throw this.qu('Document fields cannot begin and end with "__"')}}class iC{constructor(e,t,n){this.databaseId=e,this.ignoreUndefinedProperties=t,this.serializer=n||DT(e)}$u(e,t,n,r=!1){return new rC({Mu:e,methodName:t,Ku:n,path:qm.emptyPath(),Nu:!1,Qu:r},this.databaseId,this.serializer,this.ignoreUndefinedProperties)}}function sC(e){var t=e._freezeSettings(),n=DT(e._databaseId);return new iC(e._databaseId,!!t.ignoreUndefinedProperties,n)}function aC(e,t,n,r,i,s={}){const a=e.$u(s.merge||s.mergeFields?2:0,t,n,i);yC("Data must be an object, but it was:",a,r);var o=vC(r,a);let c,l;if(s.merge)c=new n_(a.fieldMask),l=a.fieldTransforms;else if(s.mergeFields){const e=[];for(const r of s.mergeFields){const i=wC(t,r,n);if(!a.contains(i))throw new bm(wm.INVALID_ARGUMENT,`Field '${i}' is specified in your field mask but missing from your input data.`);EC(e,i)||e.push(i)}c=new n_(e),l=a.fieldTransforms.filter(e=>c.covers(e.field))}else c=null,l=a.fieldTransforms;return new eC(new L_(o),c,l)}class oC extends JE{_toFieldTransform(e){if(2!==e.Mu)throw 1===e.Mu?e.qu(`${this._methodName}() can only appear at the top level of your update data`):e.qu(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof oC}}function cC(e,t,n){return new rC({Mu:3,Ku:t.settings.Ku,methodName:e._methodName,Nu:n},t.databaseId,t.serializer,t.ignoreUndefinedProperties)}class lC extends JE{_toFieldTransform(e){return new Jy(e.path,new jy)}isEqual(e){return e instanceof lC}}class uC extends JE{constructor(e,t){super(e),this.Uu=t}_toFieldTransform(e){const t=cC(this,e,!0),n=this.Uu.map(e=>mC(e,t)),r=new zy(n);return new Jy(e.path,r)}isEqual(e){return e instanceof uC&&z(this.Uu,e.Uu)}}class hC extends JE{constructor(e,t){super(e),this.Uu=t}_toFieldTransform(e){const t=cC(this,e,!0),n=this.Uu.map(e=>mC(e,t)),r=new Ky(n);return new Jy(e.path,r)}isEqual(e){return e instanceof hC&&z(this.Uu,e.Uu)}}class dC extends JE{constructor(e,t){super(e),this.Wu=t}_toFieldTransform(e){var t=new Gy(e.serializer,Vy(e.serializer,this.Wu));return new Jy(e.path,t)}isEqual(e){return e instanceof dC&&this.Wu===e.Wu}}function pC(e,i,s,t){const a=e.$u(1,i,s);yC("Data must be an object, but it was:",a,t);const o=[],c=L_.empty();Hv(t,(e,t)=>{var n=IC(i,e,s);t=le(t);var r=a.Bu(n);if(t instanceof oC)o.push(n);else{const e=mC(t,r);null!=e&&(o.push(n),c.set(n,e))}});var n=new n_(o);return new tC(c,n,a.fieldTransforms)}function fC(e,t,n,r,i,s){const a=e.$u(1,t,n),o=[wC(t,r,n)],c=[i];if(s.length%2!=0)throw new bm(wm.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let p=0;p<s.length;p+=2)o.push(wC(t,s[p])),c.push(s[p+1]);const l=[],u=L_.empty();for(let f=o.length-1;0<=f;--f)if(!EC(l,o[f])){const t=o[f];var h=le(h=c[f]);const r=a.Bu(t);if(h instanceof oC)l.push(t);else{const e=mC(h,r);null!=e&&(l.push(t),u.set(t,e))}}var d=new n_(l);return new tC(u,d,a.fieldTransforms)}function gC(e,t,n,r=!1){return mC(n,e.$u(r?4:3,t))}function mC(e,t){if(_C(e=le(e)))return yC("Unsupported field value:",t,e),vC(e,t);if(e instanceof JE)return function(e,t){if(!nC(t.Mu))throw t.qu(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.qu(`${e._methodName}() is not currently supported inside arrays`);var n=e._toFieldTransform(t);n&&t.fieldTransforms.push(n)}(e,t),null;if(void 0===e&&t.ignoreUndefinedProperties)return null;if(t.path&&t.fieldMask.push(t.path),e instanceof Array){if(t.settings.Nu&&4!==t.Mu)throw t.qu("Nested arrays are not supported");return function(e,t){const n=[];let r=0;for(const i of e){let e=mC(i,t.ku(r));null==e&&(e={nullValue:"NULL_VALUE"}),n.push(e),r++}return{arrayValue:{values:n}}}(e,t)}return function(e,t){if(null===(e=le(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return Vy(t.serializer,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){var n=Lm.fromDate(e);return{timestampValue:Uw(t.serializer,n)}}if(e instanceof Lm){n=new Lm(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:Uw(t.serializer,n)}}if(e instanceof YE)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof HE)return{bytesValue:Vw(t.serializer,e._byteString)};if(e instanceof kE){const i=t.databaseId,s=e.firestore._databaseId;if(!s.isEqual(i))throw t.qu(`Document reference is for database ${s.projectId}/${s.database} but should be for database ${i.projectId}/${i.database}`);return{referenceValue:Bw(e.firestore._databaseId||t.databaseId,e._key.path)}}if(e instanceof XE)return r=t,{mapValue:{fields:{__type__:{stringValue:"__vector__"},value:{arrayValue:{values:e.toArray().map(e=>{if("number"!=typeof e)throw r.qu("VectorValues must only contain numeric values.");return Fy(r.serializer,e)})}}}}};var r;throw t.qu(`Unsupported field value: ${bE(e)}`)}(e,t)}function vC(e,r){const i={};return Qv(e)?r.path&&0<r.path.length&&r.fieldMask.push(r.path):Hv(e,(e,t)=>{var n=mC(t,r.Ou(e));null!=n&&(i[e]=n)}),{mapValue:{fields:i}}}function _C(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof Lm||e instanceof YE||e instanceof HE||e instanceof kE||e instanceof JE||e instanceof XE)}function yC(e,t,n){if(!_C(n)||("object"!=typeof(i=n)||null===i||Object.getPrototypeOf(i)!==Object.prototype&&null!==Object.getPrototypeOf(i))){var r=bE(n);throw"an object"===r?t.qu(e+" a custom object"):t.qu(e+" "+r)}var i}function wC(e,t,n){if((t=le(t))instanceof QE)return t._internalPath;if("string"==typeof t)return IC(e,t);throw TC("Field path arguments must be of type string or ",e,!1,void 0,n)}const bC=new RegExp("[~\\*/\\[\\]]");function IC(t,n,r){if(0<=n.search(bC))throw TC(`Invalid field path (${n}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,r);try{return new QE(...n.split("."))._internalPath}catch(e){throw TC(`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,r)}}function TC(e,t,n,r,i){var s=r&&!r.isEmpty(),a=void 0!==i;let o=`Function ${t}() called with invalid data`;n&&(o+=" (via `toFirestore()`)"),o+=". ";let c="";return(s||a)&&(c+=" (found",s&&(c+=` in field ${r}`),a&&(c+=` in document ${i}`),c+=")"),new bm(wm.INVALID_ARGUMENT,o+e+c)}function EC(e,t){return e.some(e=>e.isEqual(t))}class CC{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 kE(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){var e=new SC(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){var t=this._document.data.field(kC("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class SC extends CC{data(){return super.data()}}function kC(e,t){return"string"==typeof t?IC(e,t):(t instanceof QE?t:t._delegate)._internalPath}function AC(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new bm(wm.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class NC{}class RC extends NC{}function PC(e,t,...n){let r=[];t instanceof NC&&r.push(t),r=r.concat(n),function(e){var t=e.filter(e=>e instanceof xC).length,n=e.filter(e=>e instanceof DC).length;if(1<t||0<t&&0<n)throw new bm(wm.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(const t of r)e=t._apply(e);return e}class DC extends RC{constructor(e,t,n){super(),this._field=e,this._op=t,this._value=n,this.type="where"}static _create(e,t,n){return new DC(e,t,n)}_apply(e){var t=this._parse(e);return BC(e._query,t),new SE(e.firestore,e.converter,yy(e._query,t))}_parse(e){var t=sC(e.firestore);return function(e,t,n,r,i,s,a){let o;if(i.isKeyField()){if("array-contains"===s||"array-contains-any"===s)throw new bm(wm.INVALID_ARGUMENT,`Invalid Query. You can't perform '${s}' queries on documentId().`);if("in"===s||"not-in"===s){qC(a,s);const t=[];for(const n of a)t.push(VC(r,e,n));o={arrayValue:{values:t}}}else o=VC(r,e,a)}else"in"!==s&&"not-in"!==s&&"array-contains-any"!==s||qC(a,s),o=gC(n,t,a,"in"===s||"not-in"===s);return j_.create(i,s,o)}(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}class xC extends NC{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new xC(e,t)}_parse(t){var e=this._queryConstraints.map(e=>e._parse(t)).filter(e=>0<e.getFilters().length);return 1===e.length?e[0]:z_.create(e,this._getOperator())}_apply(e){const t=this._parse(e);return 0===t.getFilters().length?e:(function(e,t){let n=e;for(const e of t.getFlattenedFilters())BC(n,e),n=yy(n,e)}(e._query,t),new SE(e.firestore,e.converter,yy(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}class OC extends RC{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new OC(e,t)}_apply(e){var t=function(e,t,n){if(null!==e.startAt)throw new bm(wm.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new bm(wm.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new q_(t,n)}(e._query,this._field,this._direction);return new SE(e.firestore,e.converter,(e=e._query,t=e.explicitOrderBy.concat([t]),new dy(e.path,e.collectionGroup,t,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)))}}class LC extends RC{constructor(e,t,n){super(),this.type=e,this._limit=t,this._limitType=n}static _create(e,t,n){return new LC(e,t,n)}_apply(e){return new SE(e.firestore,e.converter,wy(e._query,this._limit,this._limitType))}}class MC extends RC{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new MC(e,t,n)}_apply(e){var t,n=UC(e,this.type,this._docOrFields,this._inclusive);return new SE(e.firestore,e.converter,(t=e._query,e=n,new dy(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,e,t.endAt)))}}class FC extends RC{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new FC(e,t,n)}_apply(e){var t,n=UC(e,this.type,this._docOrFields,this._inclusive);return new SE(e.firestore,e.converter,(t=e._query,e=n,new dy(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,e)))}}function UC(e,t,n,r){if(n[0]=le(n[0]),n[0]instanceof CC)return function(e,t,n,r,i){if(!r)throw new bm(wm.NOT_FOUND,`Can't use a DocumentSnapshot that doesn't exist for ${n}().`);const s=[];for(const n of vy(e))if(n.field.isKeyField())s.push(T_(t,r.key));else{const e=r.data.field(n.field);if(l_(e))throw new bm(wm.INVALID_ARGUMENT,'Invalid query. You are trying to start or end a query using a document for which the field "'+n.field+'" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');if(null===e){const e=n.field.canonicalString();throw new bm(wm.INVALID_ARGUMENT,`Invalid query. You are trying to start or end a query using a document for which the field '${e}' (used as the orderBy) does not exist.`)}s.push(e)}return new F_(s,i)}(e._query,e.firestore._databaseId,t,n[0]._document,r);var i=sC(e.firestore);return function(e,t,n,r,i,s){const a=e.explicitOrderBy;if(i.length>a.length)throw new bm(wm.INVALID_ARGUMENT,`Too many arguments provided to ${r}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);const o=[];for(let c=0;c<i.length;c++){const l=i[c];if(a[c].field.isKeyField()){if("string"!=typeof l)throw new bm(wm.INVALID_ARGUMENT,`Invalid query. Expected a string for document ID in ${r}(), but got a ${typeof l}`);if(!my(e)&&-1!==l.indexOf("/"))throw new bm(wm.INVALID_ARGUMENT,`Invalid query. When querying a collection and ordering by documentId(), the value passed to ${r}() must be a plain document ID, but '${l}' contains a slash.`);const n=e.path.child(Um.fromString(l));if(!Bm.isDocumentKey(n))throw new bm(wm.INVALID_ARGUMENT,`Invalid query. When querying a collection group and ordering by documentId(), the value passed to ${r}() must result in a valid document path, but '${n}' is not because it contains an odd number of segments.`);const i=new Bm(n);o.push(T_(t,i))}else{const e=gC(n,r,l);o.push(e)}}return new F_(o,s)}(e._query,e.firestore._databaseId,i,t,n,r)}function VC(e,t,n){if("string"==typeof(n=le(n))){if(""===n)throw new bm(wm.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!my(t)&&-1!==n.indexOf("/"))throw new bm(wm.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);var r=t.path.child(Um.fromString(n));if(!Bm.isDocumentKey(r))throw new bm(wm.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 T_(e,new Bm(r))}if(n instanceof kE)return T_(e,n._key);throw new bm(wm.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${bE(n)}.`)}function qC(e,t){if(!Array.isArray(e)||0===e.length)throw new bm(wm.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function BC(e,t){const n=function(e,t){for(const n of e)for(const e of n.getFlattenedFilters())if(0<=t.indexOf(e.op))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(null!==n)throw n===t.op?new bm(wm.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new bm(wm.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${n.toString()}' filters.`)}class jC{convertValue(e,t="none"){switch(m_(e)){case 0:return null;case 1:return e.booleanValue;case 2:return o_(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(c_(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 _m()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,n="none"){const r={};return Hv(e,(e,t)=>{r[e]=this.convertValue(t,n)}),r}convertVectorValue(e){var t=null===(t=null===(t=null===(t=e.fields)||void 0===t?void 0:t.value.arrayValue)||void 0===t?void 0:t.values)||void 0===t?void 0:t.map(e=>o_(e.doubleValue));return new XE(t)}convertGeoPoint(e){return new YE(o_(e.latitude),o_(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":var n=u_(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(h_(e));default:return null}}convertTimestamp(e){var t=a_(e);return new Lm(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=Um.fromString(e);ym(ob(n));const r=new p_(n.get(1),n.get(3)),i=new Bm(n.popFirst(5));return r.isEqual(t)||gm(`Document ${i} contains a document reference within 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 zC(e,t,n){return e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t}class $C extends jC{constructor(e){super(),this.firestore=e}convertBytes(e){return new HE(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new kE(this.firestore,null,t)}}class KC{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class WC extends CC{constructor(e,t,n,r,i,s){super(e,t,n,r,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){var t=new GC(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){var n=this._document.data.field(kC("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class GC extends WC{data(e={}){return super.data(e)}}class HC{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new KC(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){const t=[];return this.forEach(e=>t.push(e)),t}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(t,n){this._snapshot.docs.forEach(e=>{t.call(n,new GC(this._firestore,this._userDataWriter,e.key,e,new KC(this._snapshot.mutatedKeys.has(e.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){var t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new bm(wm.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(s,t){if(s._snapshot.oldDocs.isEmpty()){let n=0;return s._snapshot.docChanges.map(e=>{var t=new GC(s._firestore,s._userDataWriter,e.doc.key,e.doc,new KC(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);return e.doc,{type:"added",doc:t,oldIndex:-1,newIndex:n++}})}{let i=s._snapshot.oldDocs;return s._snapshot.docChanges.filter(e=>t||3!==e.type).map(e=>{var t=new GC(s._firestore,s._userDataWriter,e.doc.key,e.doc,new KC(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);let n=-1,r=-1;return 0!==e.type&&(n=i.indexOf(e.doc.key),i=i.delete(e.doc.key)),1!==e.type&&(i=i.add(e.doc),r=i.indexOf(e.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return _m()}}(e.type),doc:t,oldIndex:n,newIndex:r}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function QC(e,t){return e instanceof WC&&t instanceof WC?e._firestore===t._firestore&&e._key.isEqual(t._key)&&(null===e._document?null===t._document:e._document.isEqual(t._document))&&e._converter===t._converter:e instanceof HC&&t instanceof HC&&e._firestore===t._firestore&&DE(e.query,t.query)&&e.metadata.isEqual(t.metadata)&&e._snapshot.isEqual(t._snapshot)}class JC extends jC{constructor(e){super(),this.firestore=e}convertBytes(e){return new HE(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new kE(this.firestore,null,t)}}function YC(t){t=IE(t,kE);const n=IE(t.firestore,qE),e=BE(n),r=new JC(n);return function(e,t){const n=new Im;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await function(e,t){const n=e;return n.persistence.runTransaction("read document","readonly",e=>n.localDocuments.getDocument(e,t))}(e,t);i.isFoundDocument()?n.resolve(i):i.isNoDocument()?n.resolve(null):n.reject(new bm(wm.UNAVAILABLE,"Failed to get document from cache. (However, this document may exist on the server. Run again without setting 'source' in the GetOptions to attempt to retrieve the document from the server.)"))}catch(e){var r=o0(e,`Failed to get document '${t} from cache`);n.reject(r)}}(await cE(e),t,n)),n.promise}(e,t._key).then(e=>new WC(n,r,t._key,e,new KC(null!==e&&e.hasLocalMutations,!0),t.converter))}function XC(t){t=IE(t,SE);const n=IE(t.firestore,qE),e=BE(n),r=new JC(n);return function(e,t){const n=new Im;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await cT(e,t,!0),s=new E0(t,i.ds),a=s.ga(i.documents),o=s.applyChanges(a,!1);n.resolve(o.snapshot)}catch(e){var r=o0(e,`Failed to execute query '${t} against cache`);n.reject(r)}}(await cE(e),t,n)),n.promise}(e,t._query).then(e=>new HC(n,r,t,e))}function ZC(e,t,n){e=IE(e,kE);var r=IE(e.firestore,qE),i=zC(e.converter,t,n);return rS(r,[aC(sC(r),"setDoc",e._key,i,null!==e.converter,n).toMutation(e._key,Xy.none())])}function eS(e,t,n,...r){e=IE(e,kE);var i=IE(e.firestore,qE),s=sC(i);let a;return a="string"==typeof(t=le(t))||t instanceof QE?fC(s,"updateDoc",e._key,t,n,r):pC(s,"updateDoc",e._key,t),rS(i,[a.toMutation(e._key,Xy.exists(!0))])}function tS(t,...n){var e;t=le(t);let r={includeMetadataChanges:!1,source:"default"},i=0;"object"!=typeof n[i]||OE(n[i])||(r=n[i],i++);var s={includeMetadataChanges:r.includeMetadataChanges,source:r.source};if(OE(n[i])){const t=n[i];n[i]=null===(e=t.next)||void 0===e?void 0:e.bind(t),n[i+1]=null===(e=t.error)||void 0===e?void 0:e.bind(t),n[i+2]=null===(e=t.complete)||void 0===e?void 0:e.bind(t)}let a,o,c;if(t instanceof kE)o=IE(t.firestore,qE),c=fy(t._key.path),a={next:e=>{n[i]&&n[i](iS(o,t,e))},error:n[i+1],complete:n[i+2]};else{const l=IE(t,SE);o=IE(l.firestore,qE),c=l._query;const u=new JC(o);a={next:e=>{n[i]&&n[i](new HC(o,u,l,e))},error:n[i+1],complete:n[i+2]},AC(t._query)}return function(e,t,n,r){const i=new X0(r),s=new v0(t,i,n);return e.asyncQueue.enqueueAndForget(async()=>f0(await hE(e),s)),()=>{i.eu(),e.asyncQueue.enqueueAndForget(async()=>g0(await hE(e),s))}}(BE(o),c,s,a)}function nS(e,t){return function(e,t){const n=new X0(t);return e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.X_.add(t),t.next()}(await hE(e),n)),()=>{n.eu(),e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.X_.delete(t)}(await hE(e),n))}}(BE(e=IE(e,qE)),OE(t)?t:{next:t})}function rS(e,t){return function(e,t){const n=new Im;return e.asyncQueue.enqueueAndForget(async()=>R0(await uE(e),t,n)),n.promise}(BE(e),t)}function iS(e,t,n){var r=n.docs.get(t._key),i=new JC(e);return new WC(e,i,t._key,r,new KC(n.hasPendingWrites,n.fromCache),t.converter)}const sS={maxAttempts:5};class aS{constructor(e,t){this._firestore=e,this._commitHandler=t,this._mutations=[],this._committed=!1,this._dataReader=sC(e)}set(e,t,n){this._verifyNotCommitted();const r=oS(e,this._firestore),i=zC(r.converter,t,n),s=aC(this._dataReader,"WriteBatch.set",r._key,i,null!==r.converter,n);return this._mutations.push(s.toMutation(r._key,Xy.none())),this}update(e,t,n,...r){this._verifyNotCommitted();var i=oS(e,this._firestore);let s;return s="string"==typeof(t=le(t))||t instanceof QE?fC(this._dataReader,"WriteBatch.update",i._key,t,n,r):pC(this._dataReader,"WriteBatch.update",i._key,t),this._mutations.push(s.toMutation(i._key,Xy.exists(!0))),this}delete(e){this._verifyNotCommitted();var t=oS(e,this._firestore);return this._mutations=this._mutations.concat(new uw(t._key,Xy.none())),this}commit(){return this._verifyNotCommitted(),this._committed=!0,0<this._mutations.length?this._commitHandler(this._mutations):Promise.resolve()}_verifyNotCommitted(){if(this._committed)throw new bm(wm.FAILED_PRECONDITION,"A write batch can no longer be used after commit() has been called.")}}function oS(e,t){if((e=le(e)).firestore!==t)throw new bm(wm.INVALID_ARGUMENT,"Provided document reference is from a different Firestore instance.");return e}class cS extends class{constructor(e,t){this._firestore=e,this._transaction=t,this._dataReader=sC(e)}get(e){const n=oS(e,this._firestore),r=new $C(this._firestore);return this._transaction.lookup([n._key]).then(e=>{if(!e||1!==e.length)return _m();const t=e[0];if(t.isFoundDocument())return new CC(this._firestore,r,t.key,t,n.converter);if(t.isNoDocument())return new CC(this._firestore,r,n._key,null,n.converter);throw _m()})}set(e,t,n){var r=oS(e,this._firestore),i=zC(r.converter,t,n),i=aC(this._dataReader,"Transaction.set",r._key,i,null!==r.converter,n);return this._transaction.set(r._key,i),this}update(e,t,n,...r){var i=oS(e,this._firestore),s="string"==typeof(t=le(t))||t instanceof QE?fC(this._dataReader,"Transaction.update",i._key,t,n,r):pC(this._dataReader,"Transaction.update",i._key,t);return this._transaction.update(i._key,s),this}delete(e){var t=oS(e,this._firestore);return this._transaction.delete(t._key),this}}{constructor(e,t){super(e,t),this._firestore=e}get(e){const t=oS(e,this._firestore),n=new JC(this._firestore);return super.get(e).then(e=>new WC(this._firestore,n,t._key,e._document,new KC(!1,!1),t.converter))}}function lS(t,n,e){t=IE(t,qE);var r=Object.assign(Object.assign({},sS),e);return function(e){if(e.maxAttempts<1)throw new bm(wm.INVALID_ARGUMENT,"Max attempts must be at least 1")}(r),function(t,n,r){const i=new Im;return t.asyncQueue.enqueueAndForget(async()=>{var e=await aE(t).then(e=>e.datastore);new tE(t.asyncQueue,e,r,n,i).cu()}),i.promise}(BE(t),e=>n(new cS(t,e)),r)}ME=!0,St=it,hm=St,Ye(new ue("firestore",(e,{instanceIdentifier:t,options:n})=>{const r=e.getProvider("app").getImmediate(),i=new qE(new Sm(e.getProvider("auth-internal")),new Rm(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new bm(wm.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new p_(e.options.projectId,t)}(r,t),r);return n=Object.assign({useFetchStreams:ME},n),i._setSettings(n),i},"PUBLIC").setMultipleInstances(!0)),ct(lm,"4.7.5",YS),ct(lm,"4.7.5","esm2017");function uS(e,t){if(void 0===t)return{merge:!1};if(void 0!==t.mergeFields&&void 0!==t.merge)throw new bm("invalid-argument",`Invalid options passed to function ${e}(): You cannot `+'specify both "merge" and "mergeFields".');return t}function hS(){if("undefined"==typeof Uint8Array)throw new bm("unimplemented","Uint8Arrays are not available in this environment.")}function dS(){if("undefined"==typeof atob)throw new bm("unimplemented","Blobs are unavailable in Firestore in this environment.")}class pS{constructor(e){this._delegate=e}static fromBase64String(e){return dS(),new pS(HE.fromBase64String(e))}static fromUint8Array(e){return hS(),new pS(HE.fromUint8Array(e))}toBase64(){return dS(),this._delegate.toBase64()}toUint8Array(){return hS(),this._delegate.toUint8Array()}isEqual(e){return this._delegate.isEqual(e._delegate)}toString(){return"Blob(base64: "+this.toBase64()+")"}}function fS(e){return function(e,t){if("object"!=typeof e||null===e)return;var n=e;for(const r of t)if(r in n&&"function"==typeof n[r])return 1;return}(e,["next","error","complete"])}class gS{enableIndexedDbPersistence(e,t){return function(e,t){mm("enableIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");const n=e._freezeSettings();return zE(e,J0.provider,{build:e=>new H0(e,n.cacheSizeBytes,null==t?void 0:t.forceOwnership)}),Promise.resolve()}(e._delegate,{forceOwnership:t})}enableMultiTabIndexedDbPersistence(e){return async function(e){mm("enableMultiTabIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");const t=e._freezeSettings();zE(e,J0.provider,{build:e=>new Q0(e,t.cacheSizeBytes)})}(e._delegate)}clearIndexedDbPersistence(e){return function(e){if(e._initialized&&!e._terminated)throw new bm(wm.FAILED_PRECONDITION,"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.");const t=new Im;return e._queue.enqueueAndForgetEvenWhileRestricted(async()=>{try{await async function(e){if(!nv.p())return Promise.resolve();var t=e+"main";await nv.delete(t)}(JI(e._databaseId,e._persistenceKey)),t.resolve()}catch(e){t.reject(e)}}),t.promise}(e._delegate)}}class mS{constructor(e,t,n){this._delegate=t,this._persistenceProvider=n,this.INTERNAL={delete:()=>this.terminate()},e instanceof p_||(this._appCompat=e)}get _databaseId(){return this._delegate._databaseId}settings(e){var t=this._delegate._getSettings();e.merge||t.host===e.host||mm("You are overriding the original host. If you did not intend to override your settings, use {merge: true}."),e.merge&&delete(e=Object.assign(Object.assign({},t),e)).merge,this._delegate._setSettings(e)}useEmulator(e,t,n={}){!function(n,e,t,r={}){var i;const s=(n=IE(n,CE))._getSettings(),a=`${e}:${t}`;if("firestore.googleapis.com"!==s.host&&s.host!==a&&mm("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},s),{host:a,ssl:!1})),r.mockUserToken){let e,t;if("string"==typeof r.mockUserToken)e=r.mockUserToken,t=um.MOCK_USER;else{e=w(r.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const s=r.mockUserToken.sub||r.mockUserToken.user_id;if(!s)throw new bm(wm.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new um(s)}n._authCredentials=new Cm(new Tm(e,t))}}(this._delegate,e,t,n)}enableNetwork(){return KE(this._delegate)}disableNetwork(){return WE(this._delegate)}enablePersistence(e){let t=!1,n=!1;return e&&(t=!!e.synchronizeTabs,n=!!e.experimentalForceOwningTab,_E("synchronizeTabs",t,"experimentalForceOwningTab",n)),t?this._persistenceProvider.enableMultiTabIndexedDbPersistence(this):this._persistenceProvider.enableIndexedDbPersistence(this,n)}clearPersistence(){return this._persistenceProvider.clearIndexedDbPersistence(this)}terminate(){return this._appCompat&&(this._appCompat._removeServiceInstance("firestore-compat"),this._appCompat._removeServiceInstance("firestore")),this._delegate._delete()}waitForPendingWrites(){return $E(this._delegate)}onSnapshotsInSync(e){return nS(this._delegate,e)}get app(){if(!this._appCompat)throw new bm("failed-precondition","Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._appCompat}collection(e){try{return new RS(this,NE(this._delegate,e))}catch(e){throw IS(e,"collection()","Firestore.collection()")}}doc(e){try{return new bS(this,RE(this._delegate,e))}catch(e){throw IS(e,"doc()","Firestore.doc()")}}collectionGroup(e){try{return new kS(this,function(e,t){if(e=IE(e,CE),vE("collectionGroup","collection id",t),0<=t.indexOf("/"))throw new bm(wm.INVALID_ARGUMENT,`Invalid collection ID '${t}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);return new SE(e,null,(t=t,new dy(Um.emptyPath(),t)))}(this._delegate,e))}catch(e){throw IS(e,"collectionGroup()","Firestore.collectionGroup()")}}runTransaction(t){return lS(this._delegate,e=>t(new _S(this,e)))}batch(){return BE(this._delegate),new yS(new aS(this._delegate,e=>rS(this._delegate,e)))}loadBundle(e){return t=this._delegate,e=e,n=BE(t=IE(t,qE)),r=new LE,fE(n,t._databaseId,e,r),r;var t,n,r}namedQuery(e){return GE(this._delegate,e).then(e=>e?new kS(this,e):null)}}class vS extends jC{constructor(e){super(),this.firestore=e}convertBytes(e){return new pS(new HE(e))}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return bS.forKey(t,this.firestore,null)}}class _S{constructor(e,t){this._firestore=e,this._delegate=t,this._userDataWriter=new vS(e)}get(e){const t=PS(e);return this._delegate.get(t).then(e=>new CS(this._firestore,new WC(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,t.converter)))}set(e,t,n){var r=PS(e);return n?(uS("Transaction.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=PS(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=PS(e);return this._delegate.delete(t),this}}class yS{constructor(e){this._delegate=e}set(e,t,n){var r=PS(e);return n?(uS("WriteBatch.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=PS(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=PS(e);return this._delegate.delete(t),this}commit(){return this._delegate.commit()}}class wS{constructor(e,t,n){this._firestore=e,this._userDataWriter=t,this._delegate=n}fromFirestore(e,t){var n=new GC(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,null);return this._delegate.fromFirestore(new SS(this._firestore,n),null!=t?t:{})}toFirestore(e,t){return t?this._delegate.toFirestore(e,t):this._delegate.toFirestore(e)}static getInstance(e,t){const n=wS.INSTANCES;let r=n.get(e);r||(r=new WeakMap,n.set(e,r));let i=r.get(t);return i||(i=new wS(e,new vS(e),t),r.set(t,i)),i}}wS.INSTANCES=new WeakMap;class bS{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new vS(e)}static forPath(e,t,n){if(e.length%2!=0)throw new bm("invalid-argument","Invalid document reference. Document references must have an even number of segments, but "+`${e.canonicalString()} has ${e.length}`);return new bS(t,new kE(t._delegate,n,new Bm(e)))}static forKey(e,t,n){return new bS(t,new kE(t._delegate,n,e))}get id(){return this._delegate.id}get parent(){return new RS(this.firestore,this._delegate.parent)}get path(){return this._delegate.path}collection(e){try{return new RS(this.firestore,NE(this._delegate,e))}catch(e){throw IS(e,"collection()","DocumentReference.collection()")}}isEqual(e){return(e=le(e))instanceof kE&&PE(this._delegate,e)}set(e,t){t=uS("DocumentReference.set",t);try{return t?ZC(this._delegate,e,t):ZC(this._delegate,e)}catch(e){throw IS(e,"setDoc()","DocumentReference.set()")}}update(e,t,...n){try{return 1===arguments.length?eS(this._delegate,e):eS(this._delegate,e,t,...n)}catch(e){throw IS(e,"updateDoc()","DocumentReference.update()")}}delete(){return rS(IE((e=this._delegate).firestore,qE),[new uw(e._key,Xy.none())]);var e}onSnapshot(...e){var t=TS(e),n=ES(e,e=>new CS(this.firestore,new WC(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)));return tS(this._delegate,t,n)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?YC:"server"===(null==e?void 0:e.source)?function(t){t=IE(t,kE);const n=IE(t.firestore,qE);return dE(BE(n),t._key,{source:"server"}).then(e=>iS(n,t,e))}:function(t){t=IE(t,kE);const n=IE(t.firestore,qE);return dE(BE(n),t._key).then(e=>iS(n,t,e))})(this._delegate),t.then(e=>new CS(this.firestore,new WC(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)))}withConverter(e){return new bS(this.firestore,e?this._delegate.withConverter(wS.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function IS(e,t,n){return e.message=e.message.replace(t,n),e}function TS(e){for(const t of e)if("object"==typeof t&&!fS(t))return t;return{}}function ES(e,t){var n;let r;return r=fS(e[0])?e[0]:fS(e[1])?e[1]:"function"==typeof e[0]?{next:e[0],error:e[1],complete:e[2]}:{next:e[1],error:e[2],complete:e[3]},{next:e=>{r.next&&r.next(t(e))},error:null===(n=r.error)||void 0===n?void 0:n.bind(r),complete:null===(n=r.complete)||void 0===n?void 0:n.bind(r)}}class CS{constructor(e,t){this._firestore=e,this._delegate=t}get ref(){return new bS(this._firestore,this._delegate.ref)}get id(){return this._delegate.id}get metadata(){return this._delegate.metadata}get exists(){return this._delegate.exists()}data(e){return this._delegate.data(e)}get(e,t){return this._delegate.get(e,t)}isEqual(e){return QC(this._delegate,e._delegate)}}class SS extends CS{data(e){var t=this._delegate.data(e);return this._delegate._converter||void 0!==t||_m(),t}}class kS{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new vS(e)}where(e,t,n){try{return new kS(this.firestore,PC(this._delegate,(r=n,i=t,s=kC("where",e),DC._create(s,i,r))))}catch(e){throw IS(e,/(orderBy|where)\(\)/,"Query.$1()")}var r,i,s}orderBy(e,t){try{return new kS(this.firestore,PC(this._delegate,([n,r="asc"]=[e,t],i=r,s=kC("orderBy",n),OC._create(s,i))))}catch(e){throw IS(e,/(orderBy|where)\(\)/,"Query.$1()")}var n,r,i,s}limit(e){try{return new kS(this.firestore,PC(this._delegate,(TE("limit",t=e),LC._create("limit",t,"F"))))}catch(e){throw IS(e,"limit()","Query.limit()")}var t}limitToLast(e){try{return new kS(this.firestore,PC(this._delegate,(TE("limitToLast",t=e),LC._create("limitToLast",t,"L"))))}catch(e){throw IS(e,"limitToLast()","Query.limitToLast()")}var t}startAt(...e){try{return new kS(this.firestore,PC(this._delegate,function(...e){return MC._create("startAt",e,!0)}(...e)))}catch(e){throw IS(e,"startAt()","Query.startAt()")}}startAfter(...e){try{return new kS(this.firestore,PC(this._delegate,function(...e){return MC._create("startAfter",e,!1)}(...e)))}catch(e){throw IS(e,"startAfter()","Query.startAfter()")}}endBefore(...e){try{return new kS(this.firestore,PC(this._delegate,function(...e){return FC._create("endBefore",e,!1)}(...e)))}catch(e){throw IS(e,"endBefore()","Query.endBefore()")}}endAt(...e){try{return new kS(this.firestore,PC(this._delegate,function(...e){return FC._create("endAt",e,!0)}(...e)))}catch(e){throw IS(e,"endAt()","Query.endAt()")}}isEqual(e){return DE(this._delegate,e._delegate)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?XC:"server"===(null==e?void 0:e.source)?function(t){t=IE(t,SE);const n=IE(t.firestore,qE),e=BE(n),r=new JC(n);return pE(e,t._query,{source:"server"}).then(e=>new HC(n,r,t,e))}:function(t){t=IE(t,SE);const n=IE(t.firestore,qE),e=BE(n),r=new JC(n);return AC(t._query),pE(e,t._query).then(e=>new HC(n,r,t,e))})(this._delegate),t.then(e=>new NS(this.firestore,new HC(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)))}onSnapshot(...e){var t=TS(e),n=ES(e,e=>new NS(this.firestore,new HC(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)));return tS(this._delegate,t,n)}withConverter(e){return new kS(this.firestore,e?this._delegate.withConverter(wS.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}class AS{constructor(e,t){this._firestore=e,this._delegate=t}get type(){return this._delegate.type}get doc(){return new SS(this._firestore,this._delegate.doc)}get oldIndex(){return this._delegate.oldIndex}get newIndex(){return this._delegate.newIndex}}class NS{constructor(e,t){this._firestore=e,this._delegate=t}get query(){return new kS(this._firestore,this._delegate.query)}get metadata(){return this._delegate.metadata}get size(){return this._delegate.size}get empty(){return this._delegate.empty}get docs(){return this._delegate.docs.map(e=>new SS(this._firestore,e))}docChanges(e){return this._delegate.docChanges(e).map(e=>new AS(this._firestore,e))}forEach(t,n){this._delegate.forEach(e=>{t.call(n,new SS(this._firestore,e))})}isEqual(e){return QC(this._delegate,e._delegate)}}class RS extends kS{constructor(e,t){super(e,t),this.firestore=e,this._delegate=t}get id(){return this._delegate.id}get path(){return this._delegate.path}get parent(){var e=this._delegate.parent;return e?new bS(this.firestore,e):null}doc(e){try{return void 0===e?new bS(this.firestore,RE(this._delegate)):new bS(this.firestore,RE(this._delegate,e))}catch(e){throw IS(e,"doc()","CollectionReference.doc()")}}add(e){return function(e,t){const n=IE(e.firestore,qE),r=RE(e),i=zC(e.converter,t);return rS(n,[aC(sC(e.firestore),"addDoc",r._key,i,null!==e.converter,{}).toMutation(r._key,Xy.exists(!1))]).then(()=>r)}(this._delegate,e).then(e=>new bS(this.firestore,e))}isEqual(e){return PE(this._delegate,e._delegate)}withConverter(e){return new RS(this.firestore,e?this._delegate.withConverter(wS.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function PS(e){return IE(e,kE)}const DS={Firestore:mS,GeoPoint:YE,Timestamp:Lm,Blob:pS,Transaction:_S,WriteBatch:yS,DocumentReference:bS,DocumentSnapshot:CS,Query:kS,QueryDocumentSnapshot:SS,QuerySnapshot:NS,CollectionReference:RS,FieldPath:class BP{constructor(...e){this._delegate=new QE(...e)}static documentId(){return new BP(qm.keyField().canonicalString())}isEqual(e){return(e=le(e))instanceof QE&&this._delegate._internalPath.isEqual(e._internalPath)}},FieldValue:class jP{static serverTimestamp(){const e=new lC("serverTimestamp");return e._methodName="FieldValue.serverTimestamp",new jP(e)}static delete(){const e=new oC("deleteField");return e._methodName="FieldValue.delete",new jP(e)}static arrayUnion(...e){const t=function(...e){return new uC("arrayUnion",e)}(...e);return t._methodName="FieldValue.arrayUnion",new jP(t)}static arrayRemove(...e){const t=function(...e){return new hC("arrayRemove",e)}(...e);return t._methodName="FieldValue.arrayRemove",new jP(t)}static increment(e){const t=new dC("increment",e);return t._methodName="FieldValue.increment",new jP(t)}constructor(e){this._delegate=e}isEqual(e){return this._delegate.isEqual(e._delegate)}},setLogLevel:function(e){e=e,dm.setLogLevel(e)},CACHE_SIZE_UNLIMITED:-1};FE=Nt,UE=(e,t)=>new mS(e,t,new gS),FE.INTERNAL.registerComponent(new ue("firestore-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("firestore").getImmediate();return UE(t,n)},"PUBLIC").setServiceProps(Object.assign({},DS))),FE.registerVersion("@firebase/firestore-compat","0.3.40");const xS="type.googleapis.com/google.protobuf.Int64Value",OS="type.googleapis.com/google.protobuf.UInt64Value";function LS(e,t){const n={};for(const r in e)e.hasOwnProperty(r)&&(n[r]=t(e[r]));return n}function MS(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case xS:case OS:var t=Number(e.value);if(isNaN(t))throw new Error("Data cannot be decoded from JSON: "+e);return t;default:throw new Error("Data cannot be decoded from JSON: "+e)}return Array.isArray(e)?e.map(e=>MS(e)):"function"==typeof e||"object"==typeof e?LS(e,e=>MS(e)):e}const FS="functions",US={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class VS extends x{constructor(e,t,n){super(`${FS}/${e}`,t||""),this.details=n,Object.setPrototypeOf(this,VS.prototype)}}function qS(e,t){let n=function(e){if(200<=e&&e<300)return"ok";switch(e){case 0:return"internal";case 400:return"invalid-argument";case 401:return"unauthenticated";case 403:return"permission-denied";case 404:return"not-found";case 409:return"aborted";case 429:return"resource-exhausted";case 499:return"cancelled";case 500:return"internal";case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline-exceeded"}return"unknown"}(e),r=n,i=void 0;try{var s=t&&t.error;if(s){const e=s.status;if("string"==typeof e){if(!US[e])return new VS("internal","internal");n=US[e],r=e}var a=s.message;"string"==typeof a&&(r=a),i=s.details,void 0!==i&&(i=MS(i))}}catch(e){}return"ok"===n?null:new VS(n,r,i)}class BS{constructor(e,t,n){this.auth=null,this.messaging=null,this.appCheck=null,this.auth=e.getImmediate({optional:!0}),this.messaging=t.getImmediate({optional:!0}),this.auth||e.get().then(e=>this.auth=e,()=>{}),this.messaging||t.get().then(e=>this.messaging=e,()=>{}),this.appCheck||n.get().then(e=>this.appCheck=e,()=>{})}async getAuthToken(){if(this.auth)try{var e=await this.auth.getToken();return null==e?void 0:e.accessToken}catch(e){return}}async getMessagingToken(){if(this.messaging&&"Notification"in self&&"granted"===Notification.permission)try{return this.messaging.getToken()}catch(e){return}}async getAppCheckToken(e){if(this.appCheck){var t=e?await this.appCheck.getLimitedUseToken():await this.appCheck.getToken();return t.error?null:t.token}return null}async getContext(e){return{authToken:await this.getAuthToken(),messagingToken:await this.getMessagingToken(),appCheckToken:await this.getAppCheckToken(e)}}}const jS="us-central1";class zS{constructor(e,t,n,r,i=jS){this.app=e,this.emulatorOrigin=null,this.contextProvider=new BS(t,n,r),this.cancelAllRequests=new Promise(e=>{this.deleteService=()=>Promise.resolve(e())});try{var s=new URL(i);this.customDomain=s.origin+("/"===s.pathname?"":s.pathname),this.region=jS}catch(e){this.customDomain=null,this.region=i}}_delete(){return this.deleteService()}_url(e){var t=this.app.options.projectId;return null===this.emulatorOrigin?null!==this.customDomain?`${this.customDomain}/${e}`:`https://${this.region}-${t}.cloudfunctions.net/${e}`:`${this.emulatorOrigin}/${t}/${this.region}/${e}`}}function $S(i,s,a){return e=>{return t=e,n=a||{},r=(e=i)._url(s),KS(e,r,t,n);var t,n,r}}async function KS(e,t,n,r){var i={data:n=function t(e){if(null==e)return null;if("number"==typeof(e=e instanceof Number?e.valueOf():e)&&isFinite(e))return e;if(!0===e||!1===e)return e;if("[object String]"===Object.prototype.toString.call(e))return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>t(e));if("function"==typeof e||"object"==typeof e)return LS(e,e=>t(e));throw new Error("Data cannot be encoded in JSON: "+e)}(n)};const s={};var a=await e.contextProvider.getContext(r.limitedUseAppCheckTokens);a.authToken&&(s.Authorization="Bearer "+a.authToken),a.messagingToken&&(s["Firebase-Instance-ID-Token"]=a.messagingToken),null!==a.appCheckToken&&(s["X-Firebase-AppCheck"]=a.appCheckToken);const o=function(n){let r=null;return{promise:new Promise((e,t)=>{r=setTimeout(()=>{t(new VS("deadline-exceeded","deadline-exceeded"))},n)}),cancel:()=>{r&&clearTimeout(r)}}}(r.timeout||7e4);a=await Promise.race([async function(e,t,n){n["Content-Type"]="application/json";let r;try{r=await fetch(e,{method:"POST",body:JSON.stringify(t),headers:n})}catch(e){return{status:0,json:null}}let i=null;try{i=await r.json()}catch(e){}return{status:r.status,json:i}}(t,i,s),o.promise,e.cancelAllRequests]);if(o.cancel(),!a)throw new VS("cancelled","Firebase Functions instance was deleted.");i=qS(a.status,a.json);if(i)throw i;if(!a.json)throw new VS("internal","Response is not valid JSON object.");let c=a.json.data;if(void 0===c&&(c=a.json.result),void 0===c)throw new VS("internal","Response is missing data field.");return{data:MS(c)}}const WS="@firebase/functions",GS="0.11.10";function HS(e,t,n){le(e).emulatorOrigin=`http://${t}:${n}`}function QS(e,t,n){return r=le(e),i=t,s=n,e=>KS(r,i,e,s||{});var r,i,s}Ye(new ue(FS,(e,{instanceIdentifier:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("messaging-internal"),s=e.getProvider("app-check-internal");return new zS(n,r,i,s,t)},"PUBLIC").setMultipleInstances(!0)),ct(WS,GS,VE),ct(WS,GS,"esm2017");var JS,YS,XS,ZS,ek;class tk{constructor(e,t){this.app=e,this._delegate=t,this._region=this._delegate.region,this._customDomain=this._delegate.customDomain}httpsCallable(e,t){return $S(le(this._delegate),e,t)}httpsCallableFromURL(e,t){return QS(this._delegate,e,t)}useFunctionsEmulator(e){var t=e.match("[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?");if(null==t)throw new x("functions","No origin provided to useFunctionsEmulator()");if(null==t[2])throw new x("functions","Port missing in origin provided to useFunctionsEmulator()");return HS(this._delegate,t[1],Number(t[2]))}useEmulator(e,t){return HS(this._delegate,e,t)}}const nk="us-central1",rk=(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("functions").getImmediate({identifier:null!=t?t:nk});return new tk(n,r)};JS={Functions:tk},Nt.INTERNAL.registerComponent(new ue("functions-compat",rk,"PUBLIC").setServiceProps(JS).setMultipleInstances(!0)),Nt.registerVersion("@firebase/functions-compat","0.3.16");const ik="/firebase-messaging-sw.js",sk="/firebase-cloud-messaging-push-scope",ak="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",ok="https://fcmregistrations.googleapis.com/v1",ck="google.c.a.c_id",lk="google.c.a.e";function uk(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(YS=TR=TR||{})[YS.DATA_MESSAGE=1]="DATA_MESSAGE",YS[YS.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(Pt=XS=XS||{}).PUSH_RECEIVED="push-received",Pt.NOTIFICATION_CLICKED="notification-clicked";const hk="fcm_token_details_db",dk="fcm_token_object_Store";async function pk(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(hk))return null}let l=null;const e=await xe(hk,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(dk)){const o=r.objectStore(dk);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:uk(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:uk(s.auth),p256dh:uk(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:uk(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:uk(a.auth),p256dh:uk(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:uk(a.vapidKey)}}))}}});return e.close(),await Oe(hk),await Oe("fcm_vapid_details_db"),await Oe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0<e.createTime&&"string"==typeof e.token&&0<e.token.length&&"string"==typeof t.auth&&0<t.auth.length&&"string"==typeof t.p256dh&&0<t.p256dh.length&&"string"==typeof t.endpoint&&0<t.endpoint.length&&"string"==typeof t.swScope&&0<t.swScope.length&&"string"==typeof t.vapidKey&&0<t.vapidKey.length}(l)?l:null}const fk="firebase-messaging-database",gk=1,mk="firebase-messaging-store";let vk=null;function _k(){return vk=vk||xe(fk,gk,{upgrade:(e,t)=>{0===t&&e.createObjectStore(mk)}}),vk}async function yk(e){var t=bk(e);const n=await _k();t=await n.transaction(mk).objectStore(mk).get(t);if(t)return t;t=await pk(e.appConfig.senderId);return t?(await wk(e,t),t):void 0}async function wk(e,t){var n=bk(e);const r=await _k(),i=r.transaction(mk,"readwrite");return await i.objectStore(mk).put(t,n),await i.done,t}function bk({appConfig:e}){return e.appId}const Ik=new O("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function Tk(e,t){var n={method:"DELETE",headers:await Ck(e)};try{const s=await fetch(`${Ek(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw Ik.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw Ik.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function Ek({projectId:e}){return`${ok}/projects/${e}/registrations`}async function Ck({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function Sk({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==ak&&(i.web.applicationPubKey=r),i}const kk=6048e5;async function Ak(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i<n.length;++i)r[i]=n.charCodeAt(i);return r}(t)})}(e.swRegistration,e.vapidKey);var n,r,i,s,a,o={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:uk(t.getKey("auth")),p256dh:uk(t.getKey("p256dh"))},c=await yk(e.firebaseDependencies);if(c){if(n=c.subscriptionOptions,r=o.vapidKey===n.vapidKey,i=o.endpoint===n.endpoint,s=o.auth===n.auth,a=o.p256dh===n.p256dh,r&&i&&s&&a)return Date.now()>=c.createTime+kk?async function(e,t){try{var n=await async function(e,t){var n=await Ck(e),r=Sk(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${Ek(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw Ik.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw Ik.create("token-update-failed",{errorInfo:r})}if(!i.token)throw Ik.create("token-update-no-token");return i.token}(e.firebaseDependencies,t),r=Object.assign(Object.assign({},t),{token:n,createTime:Date.now()});return await wk(e.firebaseDependencies,r),n}catch(e){throw e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await Tk(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return Rk(e.firebaseDependencies,o)}return Rk(e.firebaseDependencies,o)}async function Nk(e){var t=await yk(e.firebaseDependencies);t&&(await Tk(e.firebaseDependencies,t.token),await async function(e){var t=bk(e);const n=await _k(),r=n.transaction(mk,"readwrite");await r.objectStore(mk).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function Rk(e,t){var n={token:await async function(e,t){var n=await Ck(e),r=Sk(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(Ek(e.appConfig),r);i=await s.json()}catch(e){throw Ik.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw Ik.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw Ik.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await wk(e,n),n.token}function Pk(e){var t,n,r,i,s,a={from:e.from,collapseKey:e.collapse_key,messageId:e.fcmMessageId};return r=a,(n=e).notification&&(r.notification={},(t=n.notification.title)&&(r.notification.title=t),(t=n.notification.body)&&(r.notification.body=t),(t=n.notification.image)&&(r.notification.image=t),(t=n.notification.icon)&&(r.notification.icon=t)),n=a,(r=e).data&&(n.data=r.data),r=a,((e=e).fcmOptions||null!==(i=e.notification)&&void 0!==i&&i.click_action)&&(r.fcmOptions={},(s=null!==(i=null===(i=e.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=e.notification)||void 0===s?void 0:s.click_action)&&(r.fcmOptions.link=s),(s=null===(s=e.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(r.fcmOptions.analyticsLabel=s)),a}function Dk(e){return Ik.create("missing-app-config-values",{valueName:e})}!function(e,t){const n=[];for(let r=0;r<e.length;r++)n.push(e.charAt(r)),r<t.length&&n.push(t.charAt(r));n.join("")}("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class xk{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw Dk("App Configuration Object");if(!e.name)throw Dk("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw Dk(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}async function Ok(e){try{e.swRegistration=await navigator.serviceWorker.register(ik,{scope:sk}),e.swRegistration.update().catch(()=>{})}catch(e){throw Ik.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function Lk(e,t){if(!navigator)throw Ik.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw Ik.create("permission-blocked");var n,r;return n=e,await((r=null==t?void 0:t.vapidKey)?n.vapidKey=r:n.vapidKey||(n.vapidKey=ak)),await async function(e,t){if(t||e.swRegistration||await Ok(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw Ik.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),Ak(e)}async function Mk(e,t,n){var r=function(e){switch(e){case XS.NOTIFICATION_CLICKED:return"notification_open";case XS.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);const i=await e.firebaseDependencies.analyticsProvider.get();i.logEvent(r,{message_id:n[ck],message_name:n["google.c.a.c_l"],message_time:n["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function Fk(e,t){var n,r=t.data;r.isFirebaseMessaging&&(e.onMessageHandler&&r.messageType===XS.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(Pk(r)):e.onMessageHandler.next(Pk(r))),n=r.data,"object"==typeof(t=n)&&t&&ck in t&&"1"===n[lk]&&await Mk(e,r.messageType,n))}const Uk="@firebase/messaging",Vk="0.12.14",qk=e=>{const t=new xk(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>Fk(t,e)),t},Bk=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>Lk(t,e)}};function jk(e){return async function(e){if(!navigator)throw Ik.create("only-available-in-window");return e.swRegistration||await Ok(e),Nk(e)}(e=le(e))}function zk(e,t){return function(e,t){if(!navigator)throw Ik.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=le(e),t)}Ye(new ue("messaging",qk,"PUBLIC")),Ye(new ue("messaging-internal",Bk,"PRIVATE")),ct(Uk,Vk),ct(Uk,Vk,"esm2017");const $k="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",Kk="https://fcmregistrations.googleapis.com/v1",Wk="FCM_MSG",Gk="google.c.a.c_id",Hk=3,Qk=1;function Jk(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(Pt=ZS=ZS||{})[Pt.DATA_MESSAGE=1]="DATA_MESSAGE",Pt[Pt.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(Pt=ek=ek||{}).PUSH_RECEIVED="push-received",Pt.NOTIFICATION_CLICKED="notification-clicked";const Yk="fcm_token_details_db",Xk="fcm_token_object_Store";async function Zk(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(Yk))return null}let l=null;const e=await xe(Yk,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(Xk)){const o=r.objectStore(Xk);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:Jk(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:Jk(s.auth),p256dh:Jk(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:Jk(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:Jk(a.auth),p256dh:Jk(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:Jk(a.vapidKey)}}))}}});return e.close(),await Oe(Yk),await Oe("fcm_vapid_details_db"),await Oe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0<e.createTime&&"string"==typeof e.token&&0<e.token.length&&"string"==typeof t.auth&&0<t.auth.length&&"string"==typeof t.p256dh&&0<t.p256dh.length&&"string"==typeof t.endpoint&&0<t.endpoint.length&&"string"==typeof t.swScope&&0<t.swScope.length&&"string"==typeof t.vapidKey&&0<t.vapidKey.length}(l)?l:null}const eA="firebase-messaging-database",tA=1,nA="firebase-messaging-store";let rA=null;function iA(){return rA=rA||xe(eA,tA,{upgrade:(e,t)=>{0===t&&e.createObjectStore(nA)}}),rA}async function sA(e){var t=oA(e);const n=await iA();t=await n.transaction(nA).objectStore(nA).get(t);if(t)return t;t=await Zk(e.appConfig.senderId);return t?(await aA(e,t),t):void 0}async function aA(e,t){var n=oA(e);const r=await iA(),i=r.transaction(nA,"readwrite");return await i.objectStore(nA).put(t,n),await i.done,t}function oA({appConfig:e}){return e.appId}const cA=new O("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function lA(e,t){var n={method:"DELETE",headers:await hA(e)};try{const s=await fetch(`${uA(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw cA.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw cA.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function uA({projectId:e}){return`${Kk}/projects/${e}/registrations`}async function hA({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function dA({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==$k&&(i.web.applicationPubKey=r),i}async function pA(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i<n.length;++i)r[i]=n.charCodeAt(i);return r}(t)})}(e.swRegistration,e.vapidKey);var n,r,i,s,a,o={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:Jk(t.getKey("auth")),p256dh:Jk(t.getKey("p256dh"))},c=await sA(e.firebaseDependencies);if(c){if(n=c.subscriptionOptions,r=o.vapidKey===n.vapidKey,i=o.endpoint===n.endpoint,s=o.auth===n.auth,a=o.p256dh===n.p256dh,r&&i&&s&&a)return Date.now()>=c.createTime+6048e5?async function(e,t){try{var n=await async function(e,t){var n=await hA(e),r=dA(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${uA(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw cA.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw cA.create("token-update-failed",{errorInfo:r})}if(!i.token)throw cA.create("token-update-no-token");return i.token}(e.firebaseDependencies,t),r=Object.assign(Object.assign({},t),{token:n,createTime:Date.now()});return await aA(e.firebaseDependencies,r),n}catch(e){throw e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await lA(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return gA(e.firebaseDependencies,o)}return gA(e.firebaseDependencies,o)}async function fA(e){var t=await sA(e.firebaseDependencies);t&&(await lA(e.firebaseDependencies,t.token),await async function(e){var t=oA(e);const n=await iA(),r=n.transaction(nA,"readwrite");await r.objectStore(nA).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function gA(e,t){var n={token:await async function(e,t){var n=await hA(e),r=dA(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(uA(e.appConfig),r);i=await s.json()}catch(e){throw cA.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw cA.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw cA.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await aA(e,n),n.token}async function mA(e,t){var n=function(e,t){var n;const r={};e.from&&(r.project_number=e.from);e.fcmMessageId&&(r.message_id=e.fcmMessageId);r.instance_id=t,e.notification?r.message_type=ZS.DISPLAY_NOTIFICATION.toString():r.message_type=ZS.DATA_MESSAGE.toString();r.sdk_platform=Hk.toString(),r.package_name=self.origin.replace(/(^\w+:|^)\/\//,""),e.collapse_key&&(r.collapse_key=e.collapse_key);r.event=Qk.toString(),null!==(n=e.fcmOptions)&&void 0!==n&&n.analytics_label&&(r.analytics_label=null===(n=e.fcmOptions)||void 0===n?void 0:n.analytics_label);return r}(t,await e.firebaseDependencies.installations.getId());!function(e,t,n){const r={};r.event_time_ms=Math.floor(Date.now()).toString(),r.source_extension_json_proto3=JSON.stringify({messaging_client_event:t}),n&&(r.compliance_data=function(e){var t={privacy_context:{prequest:{origin_associated_product_id:e}}};return t}(n));e.logEvents.push(r)}(e,n,t.productId)}async function vA(e,t){var n=function({data:e}){if(!e)return null;try{return e.json()}catch(e){return null}}(e);if(n){t.deliveryMetricsExportedToBigQueryEnabled&&await mA(t,n);var r,i,s,a,o=await yA();if(o.some(e=>"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=ek.PUSH_RECEIVED;for(const n of e)n.postMessage(t)}(o,n);n.notification&&await function(e){var t=e["actions"],n=Notification["maxActions"];t&&n&&t.length>n&&console.warn(`This browser only supports ${n} actions. The remaining actions will not be displayed.`);return self.registration.showNotification(null!==(n=e.title)&&void 0!==n?n:"",e)}(function(e){const t=Object.assign({},e.notification);return t.data={[Wk]:e},t}(n)),t&&t.onBackgroundMessageHandler&&(a={from:(r=n).from,collapseKey:r.collapse_key,messageId:r.fcmMessageId},o=a,(e=r).notification&&(o.notification={},(n=e.notification.title)&&(o.notification.title=n),(n=e.notification.body)&&(o.notification.body=n),(n=e.notification.image)&&(o.notification.image=n),(n=e.notification.icon)&&(o.notification.icon=n)),e=a,(o=r).data&&(e.data=o.data),o=a,((r=r).fcmOptions||null!==(i=r.notification)&&void 0!==i&&i.click_action)&&(o.fcmOptions={},(s=null!==(i=null===(i=r.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=r.notification)||void 0===s?void 0:s.click_action)&&(o.fcmOptions.link=s),(s=null===(s=r.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(o.fcmOptions.analyticsLabel=s)),a=a,"function"==typeof t.onBackgroundMessageHandler?await t.onBackgroundMessageHandler(a):t.onBackgroundMessageHandler.next(a))}}async function _A(e){const t=null===(s=null===(i=e.notification)||void 0===i?void 0:i.data)||void 0===s?void 0:s[Wk];if(t&&!e.action){e.stopImmediatePropagation(),e.notification.close();var n=function(e){var t;var n=null!==(t=null===(t=e.fcmOptions)||void 0===t?void 0:t.link)&&void 0!==t?t:null===(n=e.notification)||void 0===n?void 0:n.click_action;if(n)return n;return function(e){return"object"==typeof e&&e&&Gk in e}(e.data)?self.location.origin:null}(t);if(n){var r,i=new URL(n,self.location.href),s=new URL(self.location.origin);if(i.host===s.host){let e=await async function(e){var t=await yA();for(const r of t){var n=new URL(r.url,self.location.href);if(e.host===n.host)return r}return null}(i);if(e?e=await e.focus():(e=await self.clients.openWindow(n),r=3e3,await new Promise(e=>{setTimeout(e,r)})),e)return t.messageType=ek.NOTIFICATION_CLICKED,t.isFirebaseMessaging=!0,e.postMessage(t)}}}}function yA(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function wA(e){return cA.create("missing-app-config-values",{valueName:e})}!function(e,t){const n=[];for(let r=0;r<e.length;r++)n.push(e.charAt(r)),r<t.length&&n.push(t.charAt(r));n.join("")}("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class bA{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw wA("App Configuration Object");if(!e.name)throw wA("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw wA(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}const IA=e=>{const t=new bA(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",e=>{e.waitUntil(vA(e,t))}),self.addEventListener("pushsubscriptionchange",e=>{e.waitUntil(async function(e,t){var n;(n=e["newSubscription"])?(n=await sA(t.firebaseDependencies),await fA(t),t.vapidKey=null!==(n=null===(n=null==n?void 0:n.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==n?n:$k,await pA(t)):await fA(t)}(e,t))}),self.addEventListener("notificationclick",e=>{e.waitUntil(_A(e))}),t};function TA(e,t){return function(e,t){if(void 0!==self.document)throw cA.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=le(e),t)}Ye(new ue("messaging-sw",IA,"PUBLIC"));var EA,CA,SA,kA;class AA{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return Lk(e=le(e),t)}(this._delegate,e)}async deleteToken(){return jk(this._delegate)}onMessage(e){return zk(this._delegate,e)}onBackgroundMessage(e){return TA(this._delegate,e)}}const NA=e=>self&&"ServiceWorkerGlobalScope"in self?new AA(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw").getImmediate()):new AA(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging").getImmediate()),RA={isSupported:function(){return self&&"ServiceWorkerGlobalScope"in self?R()&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey"):"undefined"!=typeof window&&R()&&D()&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}};Nt.INTERNAL.registerComponent(new ue("messaging-compat",NA,"PUBLIC").setServiceProps(RA)),Nt.registerVersion("@firebase/messaging-compat","0.2.14");const PA="firebasestorage.googleapis.com",DA="storageBucket";class xA extends x{constructor(e,t,n=0){super(OA(e),`Firebase Storage: ${t} (${OA(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,xA.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return OA(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage}\n${this.customData.serverResponse}`:this.message=this._baseMessage}}function OA(e){return"storage/"+e}function LA(){return new xA(EA.UNKNOWN,"An unknown error occurred, please check the error payload for server response.")}function MA(){return new xA(EA.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function FA(){return new xA(EA.CANCELED,"User canceled the upload/download.")}function UA(){return new xA(EA.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function VA(e){return new xA(EA.INVALID_ARGUMENT,e)}function qA(){return new xA(EA.APP_DELETED,"The Firebase app was deleted.")}function BA(e){return new xA(EA.INVALID_ROOT_OPERATION,"The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}function jA(e,t){return new xA(EA.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function zA(e){throw new xA(EA.INTERNAL_ERROR,"Internal error: "+e)}(Rt=EA=EA||{}).UNKNOWN="unknown",Rt.OBJECT_NOT_FOUND="object-not-found",Rt.BUCKET_NOT_FOUND="bucket-not-found",Rt.PROJECT_NOT_FOUND="project-not-found",Rt.QUOTA_EXCEEDED="quota-exceeded",Rt.UNAUTHENTICATED="unauthenticated",Rt.UNAUTHORIZED="unauthorized",Rt.UNAUTHORIZED_APP="unauthorized-app",Rt.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",Rt.INVALID_CHECKSUM="invalid-checksum",Rt.CANCELED="canceled",Rt.INVALID_EVENT_NAME="invalid-event-name",Rt.INVALID_URL="invalid-url",Rt.INVALID_DEFAULT_BUCKET="invalid-default-bucket",Rt.NO_DEFAULT_BUCKET="no-default-bucket",Rt.CANNOT_SLICE_BLOB="cannot-slice-blob",Rt.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",Rt.NO_DOWNLOAD_URL="no-download-url",Rt.INVALID_ARGUMENT="invalid-argument",Rt.INVALID_ARGUMENT_COUNT="invalid-argument-count",Rt.APP_DELETED="app-deleted",Rt.INVALID_ROOT_OPERATION="invalid-root-operation",Rt.INVALID_FORMAT="invalid-format",Rt.INTERNAL_ERROR="internal-error",Rt.UNSUPPORTED_ENVIRONMENT="unsupported-environment";class $A{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o"}static makeFromBucketSpec(t,e){let n;try{n=$A.makeFromUrl(t,e)}catch(e){return new $A(t,"")}if(""===n.path)return n;throw t=t,new xA(EA.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+t+"'.")}static makeFromUrl(e,t){let n=null;var r="([A-Za-z0-9.\\-_]+)";var i=new RegExp("^gs://"+r+"(/(.*))?$","i");function s(e){e.path_=decodeURIComponent(e.path)}var a=t.replace(/[.]/g,"\\."),o=new RegExp(`^https?://${a}/v[A-Za-z0-9_]+/b/${r}/o(/([^?#]*).*)?$`,"i"),a=t===PA?"(?:storage.googleapis.com|storage.cloud.google.com)":t,c=[{regex:i,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:o,indices:{bucket:1,path:3},postModify:s},{regex:new RegExp(`^https?://${a}/${r}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:s}];for(let h=0;h<c.length;h++){const d=c[h];var l=d.regex.exec(e);if(l){var u=l[d.indices.bucket];let e=l[d.indices.path];e=e||"",n=new $A(u,e),d.postModify(n);break}}if(null==n)throw t=e,new xA(EA.INVALID_URL,"Invalid URL '"+t+"'.");return n}}class KA{constructor(e){this.promise_=Promise.reject(e)}getPromise(){return this.promise_}cancel(e=0){}}function WA(e){return"string"==typeof e||e instanceof String}function GA(e){return HA()&&e instanceof Blob}function HA(){return"undefined"!=typeof Blob}function QA(e,t,n,r){if(r<t)throw VA(`Invalid value for '${e}'. Expected ${t} or greater.`);if(n<r)throw VA(`Invalid value for '${e}'. Expected ${n} or less.`)}function JA(e,t,n){let r=null==n?`https://${t}`:t;return`${n}://${r}/v0${e}`}function YA(e){const t=encodeURIComponent;let n="?";for(const i in e){var r;e.hasOwnProperty(i)&&(r=t(i)+"="+t(e[i]),n=n+r+"&")}return n=n.slice(0,-1),n}function XA(e,t){var n=500<=e&&e<600,r=-1!==[408,429].indexOf(e),i=-1!==t.indexOf(e);return n||r||i}(Rt=CA=CA||{})[Rt.NO_ERROR=0]="NO_ERROR",Rt[Rt.NETWORK_ERROR=1]="NETWORK_ERROR",Rt[Rt.ABORT=2]="ABORT";class ZA{constructor(e,t,n,r,i,s,a,o,c,l,u,h=!0){this.url_=e,this.method_=t,this.headers_=n,this.body_=r,this.successCodes_=i,this.additionalRetryCodes_=s,this.callback_=a,this.errorCallback_=o,this.timeout_=c,this.progressCallback_=l,this.connectionFactory_=u,this.retry=h,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise((e,t)=>{this.resolve_=e,this.reject_=t,this.start_()})}start_(){var e=(n,e)=>{if(e)n(!1,new eN(!1,null,!0));else{const r=this.connectionFactory_();this.pendingConnection_=r;const i=e=>{var t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&r.addUploadProgressListener(i),r.send(this.url_,this.method_,this.body_,this.headers_).then(()=>{null!==this.progressCallback_&&r.removeUploadProgressListener(i),this.pendingConnection_=null;var e=r.getErrorCode()===CA.NO_ERROR,t=r.getStatus();!e||XA(t,this.additionalRetryCodes_)&&this.retry?(e=r.getErrorCode()===CA.ABORT,n(!1,new eN(!1,null,e))):(t=-1!==this.successCodes_.indexOf(t),n(!0,new eN(t,r)))})}},t=(e,t)=>{const n=this.resolve_,r=this.reject_,i=t.connection;if(t.wasSuccessCode)try{var s=this.callback_(i,i.getResponse());void 0!==s?n(s):n()}catch(e){r(e)}else if(null!==i){const o=LA();o.serverResponse=i.getErrorText(),this.errorCallback_?r(this.errorCallback_(i,o)):r(o)}else{var a;t.canceled?(a=(this.appDelete_?qA:FA)(),r(a)):(a=MA(),r(a))}};this.canceled_?t(0,new eN(!1,null,!0)):this.backoffId_=function(t,n,e){let r=1,i=null,s=null,a=!1,o=0;function c(){return 2===o}let l=!1;function u(...e){l||(l=!0,n.apply(null,e))}function h(e){i=setTimeout(()=>{i=null,t(p,c())},e)}function d(){s&&clearTimeout(s)}function p(t,...n){if(l)d();else{if(t)return d(),void u.call(null,t,...n);if(c()||a)return d(),void u.call(null,t,...n);r<64&&(r*=2);let e;e=1===o?(o=2,0):1e3*(r+Math.random()),h(e)}}let f=!1;function g(e){f||(f=!0,d(),l||(null!==i?(e||(o=2),clearTimeout(i),h(0)):e||(o=1)))}return h(0),s=setTimeout(()=>{g(a=!0)},e),g}(e,t,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&(0,this.backoffId_)(!1),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class eN{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function tN(...t){const n="undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0;if(void 0!==n){const r=new n;for(let e=0;e<t.length;e++)r.append(t[e]);return r.getBlob()}if(HA())return new Blob(t);throw new xA(EA.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}function nN(e){if("undefined"==typeof atob)throw new xA(EA.UNSUPPORTED_ENVIRONMENT,"base-64 is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.");return atob(e)}const rN={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class iN{constructor(e,t){this.data=e,this.contentType=t||null}}function sN(e,t){switch(e){case rN.RAW:return new iN(aN(t));case rN.BASE64:case rN.BASE64URL:return new iN(oN(e,t));case rN.DATA_URL:return new iN((n=t,(r=new cN(n)).base64?oN(rN.BASE64,r.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw jA(rN.DATA_URL,"Malformed data URL.")}return aN(t)}(r.rest)),(n=t,new cN(n).contentType))}var n,r;throw LA()}function aN(t){const n=[];for(let s=0;s<t.length;s++){let e=t.charCodeAt(s);var r,i;e<=127?n.push(e):e<=2047?n.push(192|e>>6,128|63&e):55296==(64512&e)?s<t.length-1&&56320==(64512&t.charCodeAt(s+1))?(r=e,i=t.charCodeAt(++s),e=65536|(1023&r)<<10|1023&i,n.push(240|e>>18,128|e>>12&63,128|e>>6&63,128|63&e)):n.push(239,191,189):56320==(64512&e)?n.push(239,191,189):n.push(224|e>>12,128|e>>6&63,128|63&e)}return new Uint8Array(n)}function oN(t,e){switch(t){case rN.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r)throw jA(t,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break;case rN.BASE64URL:r=-1!==e.indexOf("+"),n=-1!==e.indexOf("/");if(r||n)throw jA(t,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");e=e.replace(/-/g,"+").replace(/_/g,"/")}let i;try{i=nN(e)}catch(e){if(e.message.includes("polyfill"))throw e;throw jA(t,"Invalid character found")}const s=new Uint8Array(i.length);for(let a=0;a<i.length;a++)s[a]=i.charCodeAt(a);return s}class cN{constructor(e){this.base64=!1,this.contentType=null;var t,n,r=e.match(/^data:([^,]+)?,/);if(null===r)throw jA(rN.DATA_URL,"Must be formatted 'data:[<mediatype>][;base64],<data>");const i=r[1]||null;null!=i&&(this.base64=(t=i,n=";base64",t.length>=n.length&&t.substring(t.length-n.length)===n),this.contentType=this.base64?i.substring(0,i.length-";base64".length):i),this.rest=e.substring(e.indexOf(",")+1)}}class lN{constructor(e,t){let n=0,r="";GA(e)?(this.data_=e,n=e.size,r=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),n=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),n=e.length),this.size_=n,this.type_=r}size(){return this.size_}type(){return this.type_}slice(e,t){if(GA(this.data_)){var n=this.data_,n=(i=e,s=t,(r=n).webkitSlice?r.webkitSlice(i,s):r.mozSlice?r.mozSlice(i,s):r.slice?r.slice(i,s):null);return null===n?null:new lN(n)}var r,i,s,n=new Uint8Array(this.data_.buffer,e,t-e);return new lN(n,!0)}static getBlob(...e){if(HA()){var t=e.map(e=>e instanceof lN?e.data_:e);return new lN(tN.apply(null,t))}{const r=e.map(e=>WA(e)?sN(rN.RAW,e).data:e.data_);let t=0;r.forEach(e=>{t+=e.byteLength});const i=new Uint8Array(t);let n=0;return r.forEach(e=>{for(let t=0;t<e.length;t++)i[n++]=e[t]}),new lN(i,!0)}}uploadData(){return this.data_}}function uN(e){let t;try{t=JSON.parse(e)}catch(e){return null}return"object"!=typeof(e=t)||Array.isArray(e)?null:t}function hN(e){var t=e.lastIndexOf("/",e.length-2);return-1===t?e:e.slice(t+1)}function dN(e,t){return t}class pN{constructor(e,t,n,r){this.server=e,this.local=t||e,this.writable=!!n,this.xform=r||dN}}let fN=null;function gN(){if(fN)return fN;const e=[];e.push(new pN("bucket")),e.push(new pN("generation")),e.push(new pN("metageneration")),e.push(new pN("name","fullPath",!0));const t=new pN("name");t.xform=function(e,t){return!WA(t=t)||t.length<2?t:hN(t)},e.push(t);const n=new pN("size");return n.xform=function(e,t){return void 0!==t?Number(t):t},e.push(n),e.push(new pN("timeCreated")),e.push(new pN("updated")),e.push(new pN("md5Hash",null,!0)),e.push(new pN("cacheControl",null,!0)),e.push(new pN("contentDisposition",null,!0)),e.push(new pN("contentEncoding",null,!0)),e.push(new pN("contentLanguage",null,!0)),e.push(new pN("contentType",null,!0)),e.push(new pN("metadata","customMetadata",!0)),fN=e,fN}function mN(n,r){Object.defineProperty(n,"ref",{get:function(){var e=n.bucket,t=n.fullPath,t=new $A(e,t);return r._makeStorageReference(t)}})}function vN(e,t,n){var r=uN(t);return null===r?null:function(e,t,n){const r={type:"file"};var i=n.length;for(let s=0;s<i;s++){const a=n[s];r[a.local]=a.xform(r,t[a.server])}return mN(r,e),r}(e,r,n)}function _N(e,t){const n={};var r=t.length;for(let s=0;s<r;s++){var i=t[s];i.writable&&(n[i.server]=e[i.local])}return JSON.stringify(n)}const yN="prefixes";function wN(e,t,n){var r=uN(n);return null===r?null:function(e,t,n){const r={prefixes:[],items:[],nextPageToken:n.nextPageToken};if(n[yN])for(const a of n[yN]){var i=a.replace(/\/$/,""),i=e._makeStorageReference(new $A(t,i));r.prefixes.push(i)}if(n.items)for(const o of n.items){var s=e._makeStorageReference(new $A(t,o.name));r.items.push(s)}return r}(e,t,r)}class bN{constructor(e,t,n,r){this.url=e,this.method=t,this.handler=n,this.timeout=r,this.urlParams={},this.headers={},this.body=null,this.errorHandler=null,this.progressCallback=null,this.successCodes=[200],this.additionalRetryCodes=[]}}function IN(e){if(!e)throw LA()}function TN(r,i){return function(e,t){var n=vN(r,t,i);return IN(null!==n),n}}function EN(r,i){return function(e,t){var n=wN(r,i,t);return IN(null!==n),n}}function CN(r,i){return function(e,t){var n=vN(r,t,i);return IN(null!==n),function(r,e,i,s){var t=uN(e);if(null===t)return null;if(!WA(t.downloadTokens))return null;const n=t.downloadTokens;if(0===n.length)return null;const a=encodeURIComponent,o=n.split(",");return o.map(e=>{var t=r.bucket,n=r.fullPath;return JA("/b/"+a(t)+"/o/"+a(n),i,s)+YA({alt:"media",token:e})})[0]}(n,t,r.host,r._protocol)}}function SN(i){return function(e,t){let n;var r;return n=401===e.getStatus()?e.getErrorText().includes("Firebase App Check token is invalid")?new xA(EA.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project."):new xA(EA.UNAUTHENTICATED,"User is not authenticated, please authenticate using Firebase Authentication and try again."):402===e.getStatus()?(r=i.bucket,new xA(EA.QUOTA_EXCEEDED,"Quota for bucket '"+r+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===e.getStatus()?(r=i.path,new xA(EA.UNAUTHORIZED,"User does not have permission to access '"+r+"'.")):t,n.status=e.getStatus(),n.serverResponse=t.serverResponse,n}}function kN(r){const i=SN(r);return function(e,t){let n=i(e,t);return 404===e.getStatus()&&(n=(e=r.path,new xA(EA.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist."))),n.serverResponse=t.serverResponse,n}}function AN(e,t,n){var r=JA(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new bN(r,"GET",TN(e,n),i);return s.errorHandler=kN(t),s}function NN(e,t,n){const r=Object.assign({},n);return r.fullPath=e.path,r.size=t.size(),r.contentType||(r.contentType=(e=t,(t=null)&&t.contentType||e&&e.type()||"application/octet-stream")),r}function RN(e,t,n,r,i){var s=t.bucketOnlyServerUrl();const a={"X-Goog-Upload-Protocol":"multipart"};var o=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();a["Content-Type"]="multipart/related; boundary="+o;var c=NN(t,r,i),l="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+_N(c,n)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",o="\r\n--"+o+"--";const u=lN.getBlob(l,r,o);if(null===u)throw UA();o={name:c.fullPath},c=JA(s,e.host,e._protocol),s=e.maxUploadRetryTime;const h=new bN(c,"POST",TN(e,n),s);return h.urlParams=o,h.headers=a,h.body=u.uploadData(),h.errorHandler=SN(t),h}class PN{constructor(e,t,n,r){this.current=e,this.total=t,this.finalized=!!n,this.metadata=r||null}}function DN(e,t){let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){IN(!1)}const r=t||["active"];return IN(!!n&&-1!==r.indexOf(n)),n}function xN(e,t,n,r,i){var s=t.bucketOnlyServerUrl(),a=NN(t,r,i),o={name:a.fullPath},c=JA(s,e.host,e._protocol),l={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${r.size()}`,"X-Goog-Upload-Header-Content-Type":a.contentType,"Content-Type":"application/json; charset=utf-8"},s=_N(a,n),a=e.maxUploadRetryTime;const u=new bN(c,"POST",function(e){DN(e);let t;try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){IN(!1)}return IN(WA(t)),t},a);return u.urlParams=o,u.headers=l,u.body=s,u.errorHandler=SN(t),u}function ON(e,t,n,i){var r=e.maxUploadRetryTime;const s=new bN(n,"POST",function(e){var t=DN(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){IN(!1)}n||IN(!1);var r=Number(n);return IN(!isNaN(r)),new PN(r,i.size(),"final"===t)},r);return s.headers={"X-Goog-Upload-Command":"query"},s.errorHandler=SN(t),s}function LN(e,a,t,o,n,c,r,i){const l=new PN(0,0);if(r?(l.current=r.current,l.total=r.total):(l.current=0,l.total=o.size()),o.size()!==l.total)throw new xA(EA.SERVER_FILE_WRONG_SIZE,"Server recorded incorrect upload file size, please retry the upload.");var s=l.total-l.current;let u=s;0<n&&(u=Math.min(u,n));var h=l.current,d=h+u;let p="";p=0===u?"finalize":s===u?"upload, finalize":"upload";s={"X-Goog-Upload-Command":p,"X-Goog-Upload-Offset":`${l.current}`};const f=o.slice(h,d);if(null===f)throw UA();d=a.maxUploadRetryTime;const g=new bN(t,"POST",function(e,t){var n=DN(e,["active","final"]),r=l.current+u,i=o.size();let s;return s="final"===n?TN(a,c)(e,t):null,new PN(r,i,"final"===n,s)},d);return g.headers=s,g.body=f.uploadData(),g.progressCallback=i||null,g.errorHandler=SN(e),g}const MN={STATE_CHANGED:"state_changed"},FN={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"};function UN(e){switch(e){case"running":case"pausing":case"canceling":return FN.RUNNING;case"paused":return FN.PAUSED;case"success":return FN.SUCCESS;case"canceled":return FN.CANCELED;default:return FN.ERROR}}class VN{constructor(e,t,n){var r;"function"==typeof e||null!=t||null!=n?(this.next=e,this.error=null!=t?t:void 0,this.complete=null!=n?n:void 0):(this.next=(r=e).next,this.error=r.error,this.complete=r.complete)}}function qN(t){return(...e)=>{Promise.resolve().then(()=>t(...e))}}class BN extends class{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=CA.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=CA.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=CA.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,n,r){if(this.sent_)throw zA("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==r)for(const i in r)r.hasOwnProperty(i)&&this.xhr_.setRequestHeader(i,r[i].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw zA("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw zA("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw zA("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw zA("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(e){return this.xhr_.getResponseHeader(e)}addUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.addEventListener("progress",e)}removeUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.removeEventListener("progress",e)}}{initXhr(){this.xhr_.responseType="text"}}function jN(){return new BN}class zN{isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}constructor(e,t,n=null){this._transferred=0,this._needToFetchStatus=!1,this._needToFetchMetadata=!1,this._observers=[],this._error=void 0,this._uploadUrl=void 0,this._request=void 0,this._chunkMultiplier=1,this._resolve=void 0,this._reject=void 0,this._ref=e,this._blob=t,this._metadata=n,this._mappings=gN(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals(EA.CANCELED))this._needToFetchStatus=!0,this.completeTransitions_();else{var t=this.isExponentialBackoffExpired();if(XA(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=MA()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals(EA.CANCELED)?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t,this._start()}),this._promise.then(null,()=>{})}_makeProgressCallback(){const t=this._transferred;return e=>this._updateProgress(t+e)}_shouldDoResumable(e){return 262144<e.size()}_start(){"running"===this._state&&void 0===this._request&&(this._resumable?void 0===this._uploadUrl?this._createResumable():this._needToFetchStatus?this._fetchStatus():this._needToFetchMetadata?this._fetchMetadata():this.pendingTimeout=setTimeout(()=>{this.pendingTimeout=void 0,this._continueUpload()},this.sleepTime):this._oneShotUpload())}_resolveToken(n){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then(([e,t])=>{switch(this._state){case"running":n(e,t);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}})}_createResumable(){this._resolveToken((e,t)=>{var n=xN(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,jN,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()},this._errorHandler)})}_fetchStatus(){const i=this._uploadUrl;this._resolveToken((e,t)=>{var n=ON(this._ref.storage,this._ref._location,i,this._blob);const r=this._ref.storage._makeRequest(n,jN,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()},this._errorHandler)})}_continueUpload(){const i=262144*this._chunkMultiplier,s=new PN(this._transferred,this._blob.size()),a=this._uploadUrl;this._resolveToken((e,t)=>{let n;try{n=LN(this._ref._location,this._ref.storage,a,this._blob,i,this._mappings,s,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const r=this._ref.storage._makeRequest(n,jN,e,t,!1);this._request=r,r.getPromise().then(e=>{this._increaseMultiplier(),this._request=void 0,this._updateProgress(e.current),e.finalized?(this._metadata=e.metadata,this._transition("success")):this.completeTransitions_()},this._errorHandler)})}_increaseMultiplier(){2*(262144*this._chunkMultiplier)<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken((e,t)=>{var n=AN(this._ref.storage,this._ref._location,this._mappings);const r=this._ref.storage._makeRequest(n,jN,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._transition("success")},this._metadataErrorHandler)})}_oneShotUpload(){this._resolveToken((e,t)=>{var n=RN(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,jN,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")},this._errorHandler)})}_updateProgress(e){var t=this._transferred;this._transferred=e,this._transferred!==t&&this._notifyObservers()}_transition(e){if(this._state!==e)switch(e){case"canceling":case"pausing":this._state=e,void 0!==this._request?this._request.cancel():this.pendingTimeout&&(clearTimeout(this.pendingTimeout),this.pendingTimeout=void 0,this.completeTransitions_());break;case"running":var t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":this._state=e,this._notifyObservers();break;case"canceled":this._error=FA(),this._state=e,this._notifyObservers();break;case"error":case"success":this._state=e,this._notifyObservers()}}completeTransitions_(){switch(this._state){case"pausing":this._transition("paused");break;case"canceling":this._transition("canceled");break;case"running":this._start()}}get snapshot(){var e=UN(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,r){const i=new VN(t||void 0,n||void 0,r||void 0);return this._addObserver(i),()=>{this._removeObserver(i)}}then(e,t){return this._promise.then(e,t)}catch(e){return this.then(null,e)}_addObserver(e){this._observers.push(e),this._notifyObserver(e)}_removeObserver(e){var t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise();const e=this._observers.slice();e.forEach(e=>{this._notifyObserver(e)})}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(UN(this._state)){case FN.SUCCESS:qN(this._resolve.bind(null,this.snapshot))();break;case FN.CANCELED:case FN.ERROR:const t=this._reject;qN(t.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(UN(this._state)){case FN.RUNNING:case FN.PAUSED:e.next&&qN(e.next.bind(e,this.snapshot))();break;case FN.SUCCESS:e.complete&&qN(e.complete.bind(e))();break;case FN.CANCELED:case FN.ERROR:default:e.error&&qN(e.error.bind(e,this._error))()}}resume(){var e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){var e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){var e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class $N{constructor(e,t){this._service=e,t instanceof $A?this._location=t:this._location=$A.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new $N(e,t)}get root(){var e=new $A(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return hN(this._location.path)}get storage(){return this._service}get parent(){var e=function(e){if(0===e.length)return null;var t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;e=new $A(this._location.bucket,e);return new $N(this._service,e)}_throwIfRoot(e){if(""===this._location.path)throw BA(e)}}function KN(e){const t={prefixes:[],items:[]};return async function e(t,n,r){const i={pageToken:r};const s=await WN(t,i);n.prefixes.push(...s.prefixes);n.items.push(...s.items);null!=s.nextPageToken&&await e(t,n,s.nextPageToken)}(e,t).then(()=>t)}function WN(e,t){null!=t&&"number"==typeof t.maxResults&&QA("options.maxResults",1,1e3,t.maxResults);var n=t||{},n=function(e,t,n,r,i){const s={};t.isRoot?s.prefix="":s.prefix=t.path+"/",n&&0<n.length&&(s.delimiter=n),r&&(s.pageToken=r),i&&(s.maxResults=i);var a=JA(t.bucketOnlyServerUrl(),e.host,e._protocol),o=e.maxOperationRetryTime;const c=new bN(a,"GET",EN(e,t.bucket),o);return c.urlParams=s,c.errorHandler=SN(t),c}(e.storage,e._location,"/",n.pageToken,n.maxResults);return e.storage.makeRequestWithTokens(n,jN)}function GN(e,t){e._throwIfRoot("updateMetadata");var n=function(e,t,n,r){var i=JA(t.fullServerUrl(),e.host,e._protocol),s=_N(n,r),a=e.maxOperationRetryTime;const o=new bN(i,"PATCH",TN(e,r),a);return o.headers={"Content-Type":"application/json; charset=utf-8"},o.body=s,o.errorHandler=kN(t),o}(e.storage,e._location,t,gN());return e.storage.makeRequestWithTokens(n,jN)}function HN(e){e._throwIfRoot("getDownloadURL");var t=function(e,t,n){var r=JA(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new bN(r,"GET",CN(e,n),i);return s.errorHandler=kN(t),s}(e.storage,e._location,gN());return e.storage.makeRequestWithTokens(t,jN).then(e=>{if(null===e)throw new xA(EA.NO_DOWNLOAD_URL,"The given file does not have any download URLs.");return e})}function QN(e){e._throwIfRoot("deleteObject");var t=function(e,t){var n=JA(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime;const i=new bN(n,"DELETE",function(e,t){},r);return i.successCodes=[200,204],i.errorHandler=kN(t),i}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,jN)}function JN(e,t){var n,r=(n=e._location.path,r=t.split("/").filter(e=>0<e.length).join("/"),0===n.length?r:n+"/"+r),r=new $A(e._location.bucket,r);return new $N(e.storage,r)}function YN(e,t){if(e instanceof eR){var n=e;if(null==n._bucket)throw new xA(EA.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+DA+"' property when initializing the app?");n=new $N(n,n._bucket);return null!=t?YN(n,t):n}return void 0!==t?JN(e,t):e}function XN(e,t){if(t&&/^[A-Za-z]+:\/\//.test(t)){if(e instanceof eR)return n=e,r=t,new $N(n,r);throw VA("To use ref(service, url), the first argument must be a Storage instance.")}return YN(e,t);var n,r}function ZN(e,t){var n=null==t?void 0:t[DA];return null==n?null:$A.makeFromBucketSpec(n,e)}class eR{constructor(e,t,n,r,i){this.app=e,this._authProvider=t,this._appCheckProvider=n,this._url=r,this._firebaseVersion=i,this._bucket=null,this._host=PA,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,this._bucket=null!=r?$A.makeFromBucketSpec(r,this._host):ZN(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=$A.makeFromBucketSpec(this._url,e):this._bucket=ZN(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){QA("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){QA("time",0,Number.POSITIVE_INFINITY,e),this._maxOperationRetryTime=e}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const e=this._authProvider.getImmediate({optional:!0});if(e){var t=await e.getToken();if(null!==t)return t.accessToken}return null}async _getAppCheckToken(){const e=this._appCheckProvider.getImmediate({optional:!0});return e?(await e.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach(e=>e.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new $N(this,e)}_makeRequest(e,t,n,r,i=!0){if(this._deleted)return new KA(qA());{const u=([s,a,o,e,n,r,t=!0]=[e,this._appId,n,r,t,this._firebaseVersion,i],c=YA(s.urlParams),l=s.url+c,c=Object.assign({},s.headers),i=c,(a=a)&&(i["X-Firebase-GMPID"]=a),a=c,null!==(o=o)&&0<o.length&&(a.Authorization="Firebase "+o),r=r,c["X-Firebase-Storage-Version"]="webjs/"+(null!=r?r:"AppManager"),r=c,null!==(e=e)&&(r["X-Firebase-AppCheck"]=e),new ZA(l,s.method,c,s.body,s.successCodes,s.additionalRetryCodes,s.handler,s.errorHandler,s.timeout,s.progressCallback,n,t));return this._requests.add(u),u.getPromise().then(()=>this._requests.delete(u),()=>this._requests.delete(u)),u}var s,a,o,c,l}async makeRequestWithTokens(e,t){var[n,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,r).getPromise()}}const tR="@firebase/storage";function nR(e,t,n){return e=le(e),t=t,n=n,(e=e)._throwIfRoot("uploadBytesResumable"),new zN(e,new lN(t),n)}function rR(e){return function(e){e._throwIfRoot("getMetadata");var t=AN(e.storage,e._location,gN());return e.storage.makeRequestWithTokens(t,jN)}(e=le(e))}function iR(e,t){return XN(e=le(e),t)}function sR(e,t,n,r={}){!function(e,t,n,r={}){e.host=`${t}:${n}`,e._protocol="http";var i=r["mockUserToken"];i&&(e._overrideAuthToken="string"==typeof i?i:w(i,e.app.options.projectId))}(e,t,n,r)}function aR(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("app-check-internal");return new eR(n,r,i,t,it)}Ye(new ue("storage",aR,"PUBLIC").setMultipleInstances(!0)),ct(tR,"0.13.4",""),ct(tR,"0.13.4","esm2017");class oR{constructor(e,t,n){this._delegate=e,this.task=t,this.ref=n}get bytesTransferred(){return this._delegate.bytesTransferred}get metadata(){return this._delegate.metadata}get state(){return this._delegate.state}get totalBytes(){return this._delegate.totalBytes}}class cR{constructor(e,t){this._delegate=e,this._ref=t,this.cancel=this._delegate.cancel.bind(this._delegate),this.catch=this._delegate.catch.bind(this._delegate),this.pause=this._delegate.pause.bind(this._delegate),this.resume=this._delegate.resume.bind(this._delegate)}get snapshot(){return new oR(this._delegate.snapshot,this,this._ref)}then(t,e){return this._delegate.then(e=>{if(t)return t(new oR(e,this,this._ref))},e)}on(e,t,n,r){let i=void 0;return t&&(i="function"==typeof t?e=>t(new oR(e,this,this._ref)):{next:t.next?e=>t.next(new oR(e,this,this._ref)):void 0,complete:t.complete||void 0,error:t.error||void 0}),this._delegate.on(e,i,n||void 0,r||void 0)}}class lR{constructor(e,t){this._delegate=e,this._service=t}get prefixes(){return this._delegate.prefixes.map(e=>new uR(e,this._service))}get items(){return this._delegate.items.map(e=>new uR(e,this._service))}get nextPageToken(){return this._delegate.nextPageToken||null}}class uR{constructor(e,t){this._delegate=e,this.storage=t}get name(){return this._delegate.name}get bucket(){return this._delegate.bucket}get fullPath(){return this._delegate.fullPath}toString(){return this._delegate.toString()}child(e){var t=JN(this._delegate,e);return new uR(t,this.storage)}get root(){return new uR(this._delegate.root,this.storage)}get parent(){var e=this._delegate.parent;return null==e?null:new uR(e,this.storage)}put(e,t){return this._throwIfRoot("put"),new cR(nR(this._delegate,e,t),this)}putString(e,t=rN.RAW,n){this._throwIfRoot("putString");var r=sN(t,e);const i=Object.assign({},n);return null==i.contentType&&null!=r.contentType&&(i.contentType=r.contentType),new cR(new zN(this._delegate,new lN(r.data,!0),i),this)}listAll(){return KN(le(this._delegate)).then(e=>new lR(e,this.storage))}list(e){return t=this._delegate,e=e||void 0,WN(t=le(t),e).then(e=>new lR(e,this.storage));var t}getMetadata(){return rR(this._delegate)}updateMetadata(e){return GN(le(this._delegate),e)}getDownloadURL(){return HN(le(this._delegate))}delete(){return this._throwIfRoot("delete"),QN(le(this._delegate))}_throwIfRoot(e){if(""===this._delegate._location.path)throw BA(e)}}class hR{constructor(e,t){this.app=e,this._delegate=t}get maxOperationRetryTime(){return this._delegate.maxOperationRetryTime}get maxUploadRetryTime(){return this._delegate.maxUploadRetryTime}ref(e){if(dR(e))throw VA("ref() expected a child path but got a URL, use refFromURL instead.");return new uR(iR(this._delegate,e),this)}refFromURL(e){if(!dR(e))throw VA("refFromURL() expected a full URL but got a child path, use ref() instead.");try{$A.makeFromUrl(e,this._delegate.host)}catch(e){throw VA("refFromUrl() expected a valid full URL but got an invalid one.")}return new uR(iR(this._delegate,e),this)}setMaxUploadRetryTime(e){this._delegate.maxUploadRetryTime=e}setMaxOperationRetryTime(e){this._delegate.maxOperationRetryTime=e}useEmulator(e,t,n={}){sR(this._delegate,e,t,n)}}function dR(e){return/^[A-Za-z]+:\/\//.test(e)}function pR(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("storage").getImmediate({identifier:t});return new hR(n,r)}SA=Nt,kA={TaskState:FN,TaskEvent:MN,StringFormat:rN,Storage:hR,Reference:uR},SA.INTERNAL.registerComponent(new ue("storage-compat",pR,"PUBLIC").setServiceProps(kA).setMultipleInstances(!0)),SA.registerVersion("@firebase/storage-compat","0.3.14");const fR="@firebase/performance",gR="0.6.11",mR=gR,vR="FB-PERF-TRACE-MEASURE",_R="@firebase/performance/config",yR="@firebase/performance/configexpire";var wR,bR,IR,TR="Performance";const ER=new O("performance",TR,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),CR=new ye(TR);CR.logLevel=m.INFO;let SR,kR;class AR{constructor(e){if(!(this.window=e))throw ER.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,n){this.performance&&this.performance.measure&&this.performance.measure(e,t,n)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&D()?!!R()||(CR.info("IndexedDB is not supported by current browser"),!1):(CR.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,n){if(this.PerformanceObserver){const t=new this.PerformanceObserver(e=>{for(const t of e.getEntries())n(t)});t.observe({entryTypes:[e]})}}static getInstance(){return void 0===SR&&(SR=new AR(kR)),SR}}let NR;function RR(e,t){var n=e.length-t.length;if(n<0||1<n)throw ER.create("invalid String merger input");const r=[];for(let i=0;i<e.length;i++)r.push(e.charAt(i)),t.length>i&&r.push(t.charAt(i));return r.join("")}let PR;class DR{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=RR("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=RR("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===PR&&(PR=new DR),PR}}(Rt=wR=wR||{})[Rt.UNKNOWN=0]="UNKNOWN",Rt[Rt.VISIBLE=1]="VISIBLE",Rt[Rt.HIDDEN=2]="HIDDEN";const xR=["firebase_","google_","ga_"],OR=new RegExp("^[a-zA-Z]\\w*$");function LR(){switch(AR.getInstance().document.visibilityState){case"visible":return wR.VISIBLE;case"hidden":return wR.HIDDEN;default:return wR.UNKNOWN}}function MR(e){var t=null===(t=e.options)||void 0===t?void 0:t.appId;if(!t)throw ER.create("no app id");return t}const FR="0.0.1",UR={loggingEnabled:!0},VR="FIREBASE_INSTALLATIONS_AUTH";function qR(e,t){var r,i,n=function(){const e=AR.getInstance().localStorage;if(e){var t=e.getItem(yR);if(t&&function(e){return Number(e)>Date.now()}(t)){t=e.getItem(_R);if(t)try{return JSON.parse(t)}catch(e){return}}}}();return n?(jR(n),Promise.resolve()):(i=t,function(e){const t=e.getToken();return t.then(e=>{}),t}((r=e).installations).then(e=>{var t=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.projectId;if(!t)throw ER.create("no project id");return t}(r.app),n=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.apiKey;if(!t)throw ER.create("no api key");return t}(r.app),n=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${t}/namespaces/fireperf:fetch?key=${n}`,{method:"POST",headers:{Authorization:`${VR} ${e}`},body:JSON.stringify({app_instance_id:i,app_instance_id_token:e,app_id:MR(r.app),app_version:mR,sdk_version:FR})});return fetch(n).then(e=>{if(e.ok)return e.json();throw ER.create("RC response not ok")})}).catch(()=>{CR.info(BR)}).then(jR).then(e=>function(e){const t=AR.getInstance().localStorage;e&&t&&(t.setItem(_R,JSON.stringify(e)),t.setItem(yR,String(Date.now()+60*DR.getInstance().configTimeToLive*60*1e3)))}(e),()=>{}))}const BR="Could not fetch config, will use default configs";function jR(e){if(!e)return e;const t=DR.getInstance();var n=e.entries||{};return void 0!==n.fpr_enabled?t.loggingEnabled="true"===String(n.fpr_enabled):t.loggingEnabled=UR.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):UR.logSource&&(t.logSource=UR.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:UR.logEndPointUrl&&(t.logEndPointUrl=UR.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:UR.transportKey&&(t.transportKey=UR.transportKey),void 0!==n.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):void 0!==UR.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=UR.networkRequestsSamplingRate),void 0!==n.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):void 0!==UR.tracesSamplingRate&&(t.tracesSamplingRate=UR.tracesSamplingRate),t.logTraceAfterSampling=zR(t.tracesSamplingRate),t.logNetworkAfterSampling=zR(t.networkRequestsSamplingRate),e}function zR(e){return Math.random()<=e}let $R=1,KR;function WR(e){var t;return $R=2,KR=KR||(t=e,function(){const n=AR.getInstance().document;return new Promise(e=>{if(n&&"complete"!==n.readyState){const t=()=>{"complete"===n.readyState&&(n.removeEventListener("readystatechange",t),e())};n.addEventListener("readystatechange",t)}else e()})}().then(()=>function(e){const t=e.getId();return t.then(e=>{NR=e}),t}(t.installations)).then(e=>qR(t,e)).then(()=>GR(),()=>GR())),KR}function GR(){$R=3}const HR=1e4,QR=3,JR=1e3;let YR=QR,XR=[],ZR=!1;function eP(e){setTimeout(()=>{if(0!==YR)return XR.length?void function(){const e=XR.splice(0,JR),t=e.map(e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:DR.getInstance().logSource,log_event:t};!function(e,r){return function(e){var t=DR.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}(e).then(e=>(e.ok||CR.info("Call to Firebase backend failed."),e.json())).then(e=>{var t=Number(e.nextRequestWaitMillis);let n=HR;isNaN(t)||(n=Math.max(t,n));t=e.logResponseDetails;Array.isArray(t)&&0<t.length&&"RETRY_REQUEST_LATER"===t[0].responseAction&&(XR=[...r,...XR],CR.info("Retry transport request later.")),YR=QR,eP(n)})}(n,e).catch(()=>{XR=[...e,...XR],YR--,CR.info(`Tries left: ${YR}.`),eP(HR)})}():eP(HR)},e)}function tP(t){return(...e)=>{!function(e){if(!e.eventTime||!e.message)throw ER.create("invalid cc log");XR=[...XR,e]}({message:t(...e),eventTime:Date.now()})}}let nP;function rP(e,t){nP=nP||tP(aP),nP(e,t)}function iP(e){var t=DR.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&AR.getInstance().requiredApisAvailable()&&(e.isAuto&&LR()!==wR.VISIBLE||(3===$R?sP(e):WR(e.performanceController).then(()=>sP(e),()=>sP(e))))}function sP(e){var t;!NR||(t=DR.getInstance()).loggingEnabled&&t.logTraceAfterSampling&&setTimeout(()=>rP(e,1),0)}function aP(e,t){return 0===t?(n={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:oP(e.performanceController.app),network_request_metric:n},JSON.stringify(n)):function(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);var n=e.getAttributes();0!==Object.keys(n).length&&(t.custom_attributes=n);n={application_info:oP(e.performanceController.app),trace_metric:t};return JSON.stringify(n)}(e);var n}function oP(e){return{google_app_id:MR(e),app_instance_id:NR,web_app_info:{sdk_version:mR,page_url:AR.getInstance().getUrl(),service_worker_status:null!=(t=AR.getInstance().navigator)&&t.serviceWorker?t.serviceWorker.controller?2:3:1,visibility_state:LR(),effective_connection_type:function(){var e=AR.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}()},application_process_state:0};var t}const cP=["_fp","_fcp","_fid"];class lP{constructor(e,t,n=!1,r){this.performanceController=e,this.name=t,this.isAuto=n,this.state=1,this.customAttributes={},this.counters={},this.api=AR.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=r||`${vR}-${this.randomId}-${this.name}`,r&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw ER.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw ER.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),iP(this)}record(e,t,n){if(e<=0)throw ER.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw ER.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),n&&n.attributes&&(this.customAttributes=Object.assign({},n.attributes)),n&&n.metrics)for(const r of Object.keys(n.metrics))isNaN(Number(n.metrics[r]))||(this.counters[r]=Math.floor(Number(n.metrics[r])));iP(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(r=e,i=this.name,0===r.length||100<r.length||!(i&&i.startsWith("_wt_")&&-1<cP.indexOf(r))&&r.startsWith("_"))throw ER.create("invalid custom metric name",{customMetricName:e});var n,r,i;this.counters[e]=(t=null!=t?t:0,(n=Math.floor(t))<t&&CR.info(`Metric value should be an Integer, setting the value as : ${n}.`),n)}getMetric(e){return this.counters[e]||0}putAttribute(e,t){var n,r,i=!(0===(n=e).length||40<n.length)&&(!xR.some(e=>n.startsWith(e))&&!!n.match(OR)),s=0!==(r=t).length&&r.length<=100;if(i&&s)this.customAttributes[e]=t;else{if(!i)throw ER.create("invalid attribute name",{attributeName:e});if(!s)throw ER.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){var e=this.api.getEntriesByName(this.traceMeasure),e=e&&e[0];e&&(this.durationUs=Math.floor(1e3*e.duration),this.startTimeUs=Math.floor(1e3*(e.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,n,r){var i=AR.getInstance().getUrl();if(i){const s=new lP(e,"_wt_"+i,!0);i=Math.floor(1e3*AR.getInstance().getTimeOrigin());s.setStartTime(i),t&&t[0]&&(s.setDuration(Math.floor(1e3*t[0].duration)),s.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),s.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),s.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));n&&((i=n.find(e=>"first-paint"===e.name))&&i.startTime&&s.putMetric("_fp",Math.floor(1e3*i.startTime)),(i=n.find(e=>"first-contentful-paint"===e.name))&&i.startTime&&s.putMetric("_fcp",Math.floor(1e3*i.startTime)),r&&s.putMetric("_fid",Math.floor(1e3*r))),iP(s)}}static createUserTimingTrace(e,t){iP(new lP(e,t,!1,t))}}function uP(e,t){const n=t;var r,i,s;n&&void 0!==n.responseStart&&(s=AR.getInstance().getTimeOrigin(),r=Math.floor(1e3*(n.startTime+s)),i=n.responseStart?Math.floor(1e3*(n.responseStart-n.startTime)):void 0,s=Math.floor(1e3*(n.responseEnd-n.startTime)),function(e){const t=DR.getInstance();var n,r,i;t.instrumentationEnabled&&(n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0],n!==r&&n!==i&&t.loggingEnabled&&t.logNetworkAfterSampling&&setTimeout(()=>rP(e,0),0))}({performanceController:e,url:n.name&&n.name.split("?")[0],responsePayloadBytes:n.transferSize,startTimeUs:r,timeToResponseInitiatedUs:i,timeToResponseCompletedUs:s}))}const hP=5e3;function dP(e){NR&&(setTimeout(()=>function(n){const e=AR.getInstance(),r=e.getEntriesByType("navigation"),i=e.getEntriesByType("paint");if(e.onFirstInputDelay){let t=setTimeout(()=>{lP.createOobTrace(n,r,i),t=void 0},hP);e.onFirstInputDelay(e=>{t&&(clearTimeout(t),lP.createOobTrace(n,r,i,e))})}else lP.createOobTrace(n,r,i)}(e),0),setTimeout(()=>function(t){const e=AR.getInstance(),n=e.getEntriesByType("resource");for(const r of n)uP(t,r);e.setupObserver("resource",e=>uP(t,e))}(e),0),setTimeout(()=>function(t){const e=AR.getInstance(),n=e.getEntriesByType("measure");for(const r of n)pP(t,r);e.setupObserver("measure",e=>pP(t,e))}(e),0))}function pP(e,t){const n=t.name;n.substring(0,vR.length)!==vR&&lP.createUserTimingTrace(e,n)}class fP{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==(null==e?void 0:e.dataCollectionEnabled)&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==(null==e?void 0:e.instrumentationEnabled)&&(this.instrumentationEnabled=e.instrumentationEnabled),AR.getInstance().requiredApisAvailable()?P().then(e=>{e&&(ZR||(eP(5500),ZR=!0),WR(this).then(()=>dP(this),()=>dP(this)),this.initialized=!0)}).catch(e=>{CR.info(`Environment doesn't support IndexedDB: ${e}`)}):CR.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){DR.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return DR.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){DR.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return DR.getInstance().dataCollectionEnabled}}const gP="[DEFAULT]";const mP=(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==gP)throw ER.create("FB not default");if("undefined"==typeof window)throw ER.create("no window");e=window,kR=e;const i=new fP(n,r);return i._init(t),i};Ye(new ue("performance",mP,"PUBLIC")),ct(fR,gR),ct(fR,gR,"esm2017");class vP{constructor(e,t){this.app=e,this._delegate=t}get instrumentationEnabled(){return this._delegate.instrumentationEnabled}set instrumentationEnabled(e){this._delegate.instrumentationEnabled=e}get dataCollectionEnabled(){return this._delegate.dataCollectionEnabled}set dataCollectionEnabled(e){this._delegate.dataCollectionEnabled=e}trace(e){return t=this._delegate,e=e,t=le(t),new lP(t,e);var t}}function _P(e){var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("performance").getImmediate();return new vP(t,n)}(bR=Nt).INTERNAL.registerComponent(new ue("performance-compat",_P,"PUBLIC")),bR.registerVersion("@firebase/performance-compat","0.2.11");const yP="@firebase/remote-config";class wP{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}const bP=new O("remoteconfig","Remote Config",{"registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser"});const IP=["1","true","t","yes","y","on"];class TP{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=IP.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return isNaN(e)&&(e=0),e}getSource(){return this._source}}async function EP(e){const t=le(e);var[n,r]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(n&&n.config&&n.eTag&&n.eTag!==r)&&(await Promise.all([t._storageCache.setActiveConfig(n.config),t._storage.setActiveConfigEtag(n.eTag)]),!0)}function CP(e){const t=le(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function SP(t){const n=le(t),e=new wP;setTimeout(async()=>{e.abort()},n.settings.fetchTimeoutMillis);try{await n._client.fetch({cacheMaxAgeMillis:n.settings.minimumFetchIntervalMillis,signal:e}),await n._storageCache.setLastFetchStatus("success")}catch(e){var r=(i="fetch-throttle",(t=e)instanceof x&&-1!==t.code.indexOf(i)?"throttle":"failure");throw await n._storageCache.setLastFetchStatus(r),e}var i}function kP(n){const e=le(n);return[t={},r={}]=[e._storageCache.getActiveConfig(),e.defaultConfig],Object.keys(Object.assign(Object.assign({},t),r)).reduce((e,t)=>(e[t]=AP(n,t),e),{});var t,r}function AP(e,t){const n=le(e);n._isInitializationComplete||n._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value.");var r=n._storageCache.getActiveConfig();return r&&void 0!==r[t]?new TP("remote",r[t]):n.defaultConfig&&void 0!==n.defaultConfig[t]?new TP("default",String(n.defaultConfig[t])):(n._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new TP("static"))}class NP{constructor(e,t,n,r){this.client=e,this.storage=t,this.storageCache=n,this.logger=r}isCachedDataFresh(e,t){if(!t)return this.logger.debug("Config fetch cache check. Cache unpopulated."),!1;var n=Date.now()-t,r=n<=e;return this.logger.debug("Config fetch cache check."+` Cache age millis: ${n}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${r}.`),r}async fetch(e){var[t,n]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(n&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return n;e.eTag=n&&n.eTag;n=await this.client.fetch(e);const r=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===n.status&&r.push(this.storage.setLastSuccessfulFetchResponse(n)),await Promise.all(r),n}}class RP{constructor(e,t,n,r,i,s){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=n,this.projectId=r,this.apiKey=i,this.appId=s}async fetch(n){var e,[t,r]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),i=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`,s={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":n.eTag||"*"},r={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:r,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language},r={method:"POST",headers:s,body:JSON.stringify(r)},i=fetch(i,r),r=new Promise((e,t)=>{n.signal.addEventListener(()=>{const e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let a;try{await Promise.race([i,r]),a=await i}catch(e){let t="fetch-client-network";throw"AbortError"===(null==e?void 0:e.name)&&(t="fetch-timeout"),bP.create(t,{originalErrorMessage:null==e?void 0:e.message})}let o=a.status;i=a.headers.get("ETag")||void 0;let c,l;if(200===a.status){let e;try{e=await a.json()}catch(e){throw bP.create("fetch-client-parse",{originalErrorMessage:null==e?void 0:e.message})}c=e.entries,l=e.state}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw bP.create("fetch-status",{httpStatus:o});return{status:o,eTag:i,config:c}}}class PP{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:n}){var i,s;i=t.signal,s=e,await new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(bP.create("fetch-throttle",{throttleEndTimeMillis:s}))})});try{var r=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),r}catch(e){if(!function(e){if(e instanceof x&&e.customData){var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}}(e))throw e;r={throttleEndTimeMillis:Date.now()+ce(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(r),this.attemptFetch(t,r)}}}class DP{get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}constructor(e,t,n,r,i){this.app=e,this._client=t,this._storageCache=n,this._storage=r,this._logger=i,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}}function xP(e,t){var n=e.target.error||void 0;return bP.create(t,{originalErrorMessage:n&&(null==n?void 0:n.message)})}const OP="app_namespace_store";class LP{constructor(e,t,n,r=function(){return new Promise((t,n)=>{try{const e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{n(xP(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(OP,{keyPath:"compositeKey"})}}catch(e){n(bP.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}})}()){this.appId=e,this.appName=t,this.namespace=n,this.openDbPromise=r}getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}async get(a){const o=await this.openDbPromise;return new Promise((n,t)=>{const e=o.transaction([OP],"readonly"),r=e.objectStore(OP);var i=this.createCompositeKey(a);try{const s=r.get(i);s.onerror=e=>{t(xP(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)}}catch(e){t(bP.create("storage-get",{originalErrorMessage:null==e?void 0:e.message}))}})}async set(a,o){const c=await this.openDbPromise;return new Promise((e,t)=>{const n=c.transaction([OP],"readwrite"),r=n.objectStore(OP);var i=this.createCompositeKey(a);try{const s=r.put({compositeKey:i,value:o});s.onerror=e=>{t(xP(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(bP.create("storage-set",{originalErrorMessage:null==e?void 0:e.message}))}})}async delete(a){const o=await this.openDbPromise;return new Promise((e,t)=>{const n=o.transaction([OP],"readwrite"),r=n.objectStore(OP);var i=this.createCompositeKey(a);try{const s=r.delete(i);s.onerror=e=>{t(xP(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(bP.create("storage-delete",{originalErrorMessage:null==e?void 0:e.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class MP{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),n=this.storage.getActiveConfig(),e=await e;e&&(this.lastFetchStatus=e);t=await t;t&&(this.lastSuccessfulFetchTimestampMillis=t);n=await n;n&&(this.activeConfig=n)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}}async function FP(){if(!R())return!1;try{return await P()}catch(e){return!1}}Ye(new ue("remote-config",function(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if("undefined"==typeof window)throw bP.create("registration-window");if(!R())throw bP.create("indexed-db-unavailable");var{projectId:i,apiKey:s,appId:a}=n.options;if(!i)throw bP.create("registration-project-id");if(!s)throw bP.create("registration-api-key");if(!a)throw bP.create("registration-app-id");t=t||"firebase";const o=new LP(a,n.name,t),c=new MP(o),l=new ye(yP);l.logLevel=m.ERROR;a=new RP(r,it,t,i,s,a),a=new PP(a,o),a=new NP(a,o,c,l),a=new DP(n,a,c,o,l);return CP(a),a},"PUBLIC").setMultipleInstances(!0)),ct(yP,"0.4.11"),ct(yP,"0.4.11","esm2017");class UP{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return EP(this._delegate)}ensureInitialized(){return CP(this._delegate)}fetch(){return SP(this._delegate)}fetchAndActivate(){return async function(e){return await SP(e=le(e)),EP(e)}(this._delegate)}getAll(){return kP(this._delegate)}getBoolean(e){return AP(le(this._delegate),e).asBoolean()}getNumber(e){return AP(le(this._delegate),e).asNumber()}getString(e){return AP(le(this._delegate),e).asString()}getValue(e){return AP(this._delegate,e)}setLogLevel(e){!function(e,t){const n=le(e);switch(t){case"debug":n._logger.logLevel=m.DEBUG;break;case"silent":n._logger.logLevel=m.SILENT;break;default:n._logger.logLevel=m.ERROR}}(this._delegate,e)}}function VP(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("remote-config").getImmediate({identifier:t});return new UP(n,r)}return(IR=Nt).INTERNAL.registerComponent(new ue("remoteConfig-compat",VP,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:FP})),IR.registerVersion("@firebase/remote-config-compat","0.2.11"),console.warn(`
It looks like you're using the development build of the Firebase JS SDK.
When deploying Firebase apps to production, it is advisable to only import
the individual SDK components you intend to use.
For the CDN builds, these are available in the following manner
(replace <PACKAGE> with the name of a component - i.e. auth, database, etc):
https://www.gstatic.com/firebasejs/5.0.0/firebase-<PACKAGE>.js
`),Nt.registerVersion("firebase","11.0.2","compat-cdn"),Nt});
//# sourceMappingURL=firebase-compat.js.map