1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{4444:function(e,t,r){"use strict";r.d(t,{$s:function(){return B},BH:function(){return _},G6:function(){return I},L:function(){return u},LL:function(){return A},L_:function(){return b},P0:function(){return y},Pz:function(){return v},Sg:function(){return w},ZR:function(){return W},aH:function(){return f},b$:function(){return R},eu:function(){return C},hl:function(){return T},m9:function(){return V},ne:function(){return x},pd:function(){return K},q4:function(){return p},ru:function(){return E},tV:function(){return l},uI:function(){return P},vZ:function(){return function e(t,r){if(t===r)return!0;let n=Object.keys(t),i=Object.keys(r);for(let a of n){if(!i.includes(a))return!1;let n=t[a],s=r[a];if(L(n)&&L(s)){if(!e(n,s))return!1}else if(n!==s)return!1}for(let e of i)if(!n.includes(e))return!1;return!0}},w1:function(){return S},xO:function(){return O},xb:function(){return U},z$:function(){return k},zI:function(){return H},zd:function(){return N}});var n=r(4155);/** 2 * @license 3 * Copyright 2017 Google LLC 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */let i=function(e){let t=[],r=0;for(let n=0;n<e.length;n++){let i=e.charCodeAt(n);i<128?t[r++]=i:(i<2048?t[r++]=i>>6|192:((64512&i)==55296&&n+1<e.length&&(64512&e.charCodeAt(n+1))==56320?(i=65536+((1023&i)<<10)+(1023&e.charCodeAt(++n)),t[r++]=i>>18|240,t[r++]=i>>12&63|128):t[r++]=i>>12|224,t[r++]=i>>6&63|128),t[r++]=63&i|128)}return t},a=function(e){let t=[],r=0,n=0;for(;r<e.length;){let i=e[r++];if(i<128)t[n++]=String.fromCharCode(i);else if(i>191&&i<224){let a=e[r++];t[n++]=String.fromCharCode((31&i)<<6|63&a)}else if(i>239&&i<365){let a=((7&i)<<18|(63&e[r++])<<12|(63&e[r++])<<6|63&e[r++])-65536;t[n++]=String.fromCharCode(55296+(a>>10)),t[n++]=String.fromCharCode(56320+(1023&a))}else{let a=e[r++],s=e[r++];t[n++]=String.fromCharCode((15&i)<<12|(63&a)<<6|63&s)}}return t.join("")},s={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(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();let r=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,n=[];for(let t=0;t<e.length;t+=3){let i=e[t],a=t+1<e.length,s=a?e[t+1]:0,o=t+2<e.length,c=o?e[t+2]:0,u=i>>2,l=(3&i)<<4|s>>4,h=(15&s)<<2|c>>6,g=63&c;o||(g=64,a||(h=64)),n.push(r[u],r[l],r[h],r[g])}return n.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(i(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):a(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();let r=t?this.charToByteMapWebSafe_:this.charToByteMap_,n=[];for(let t=0;t<e.length;){let i=r[e.charAt(t++)],a=t<e.length?r[e.charAt(t)]:0,s=++t<e.length?r[e.charAt(t)]:64,c=++t<e.length?r[e.charAt(t)]:64;if(++t,null==i||null==a||null==s||null==c)throw new o;let u=i<<2|a>>4;if(n.push(u),64!==s){let e=a<<4&240|s>>2;if(n.push(e),64!==c){let e=s<<6&192|c;n.push(e)}}}return n},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)}}};
16class o extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}let c=function(e){let t=i(e);return s.encodeByteArray(t,!0)},u=function(e){return c(e).replace(/\./g,"")},l=function(e){try{return s.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null},h=()=>/** 17 * @license 18 * Copyright 2022 Google LLC 19 * 20 * Licensed under the Apache License, Version 2.0 (the "License"); 21 * you may not use this file except in compliance with the License. 22 * You may obtain a copy of the License at 23 * 24 * http://www.apache.org/licenses/LICENSE-2.0 25 * 26 * Unless required by applicable law or agreed to in writing, software 27 * distributed under the License is distributed on an "AS IS" BASIS, 28 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29 * See the License for the specific language governing permissions and 30 * limitations under the License. 31 */(function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r.g)return r.g;throw Error("Unable to locate global object.")})().__FIREBASE_DEFAULTS__,g=()=>{if(void 0===n||void 0===n.env)return;let e=n.env.__FIREBASE_DEFAULTS__;if(e)return JSON.parse(e)},d=()=>{let e;if("undefined"==typeof document)return;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}let t=e&&l(e[1]);return t&&JSON.parse(t)},m=()=>{try{return h()||g()||d()}catch(e){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);return}},p=e=>{var t,r;return null===(r=null===(t=m())||void 0===t?void 0:t.emulatorHosts)||void 0===r?void 0:r[e]},y=e=>{let t=p(e);if(!t)return;let r=t.lastIndexOf(":");if(r<=0||r+1===t.length)throw Error(`Invalid host ${t} with no separate hostname and port!`);let n=parseInt(t.substring(r+1),10);return"["===t[0]?[t.substring(1,r-1),n]:[t.substring(0,r),n]},f=()=>{var e;return null===(e=m())||void 0===e?void 0:e.config},v=e=>{var t;return null===(t=m())||void 0===t?void 0:t[`_${e}`]};/** 32 * @license 33 * Copyright 2017 Google LLC 34 * 35 * Licensed under the Apache License, Version 2.0 (the "License"); 36 * you may not use this file except in compliance with the License. 37 * You may obtain a copy of the License at 38 * 39 * http://www.apache.org/licenses/LICENSE-2.0 40 * 41 * Unless required by applicable law or agreed to in writing, software 42 * distributed under the License is distributed on an "AS IS" BASIS, 43 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 44 * See the License for the specific language governing permissions and 45 * limitations under the License. 46 */class _{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(e){return(t,r)=>{t?this.reject(t):this.resolve(r),"function"==typeof e&&(this.promise.catch(()=>{}),1===e.length?e(t):e(t,r))}}}/** 47 * @license 48 * Copyright 2021 Google LLC 49 * 50 * Licensed under the Apache License, Version 2.0 (the "License"); 51 * you may not use this file except in compliance with the License. 52 * You may obtain a copy of the License at 53 * 54 * http://www.apache.org/licenses/LICENSE-2.0 55 * 56 * Unless required by applicable law or agreed to in writing, software 57 * distributed under the License is distributed on an "AS IS" BASIS, 58 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 59 * See the License for the specific language governing permissions and 60 * limitations under the License. 61 */function w(e,t){if(e.uid)throw Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');let r=t||"demo-project",n=e.iat||0,i=e.sub||e.user_id;if(!i)throw Error("mockUserToken must contain 'sub' or 'user_id' field!");let a=Object.assign({iss:`https://securetoken.google.com/${r}`,aud:r,iat:n,exp:n+3600,auth_time:n,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},e);return[u(JSON.stringify({alg:"none",type:"JWT"})),u(JSON.stringify(a)),""].join(".")}/** 62 * @license 63 * Copyright 2017 Google LLC 64 * 65 * Licensed under the Apache License, Version 2.0 (the "License");
66 * you may not use this file except in compliance with the License. 67 * You may obtain a copy of the License at 68 * 69 * http://www.apache.org/licenses/LICENSE-2.0 70 * 71 * Unless required by applicable law or agreed to in writing, software 72 * distributed under the License is distributed on an "AS IS" BASIS, 73 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 74 * See the License for the specific language governing permissions and 75 * limitations under the License. 76 */function k(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function P(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(k())}function b(){return"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent}function E(){let e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function R(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function S(){let e=k();return e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0}function I(){return!function(){var e;let t=null===(e=m())||void 0===e?void 0:e.forceEnvironment;if("node"===t)return!0;if("browser"===t)return!1;try{return"[object process]"===Object.prototype.toString.call(r.g.process)}catch(e){return!1}}()&&!!navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")}function T(){try{return"object"==typeof indexedDB}catch(e){return!1}}function C(){return new Promise((e,t)=>{try{let r=!0,n="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(n);i.onsuccess=()=>{i.result.close(),r||self.indexedDB.deleteDatabase(n),e(!0)},i.onupgradeneeded=()=>{r=!1},i.onerror=()=>{var e;t((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}})}function H(){return"undefined"!=typeof navigator&&!!navigator.cookieEnabled}class W extends Error{constructor(e,t,r){super(t),this.code=e,this.customData=r,this.name="FirebaseError",Object.setPrototypeOf(this,W.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,A.prototype.create)}}class A{constructor(e,t,r){this.service=e,this.serviceName=t,this.errors=r}create(e,...t){let r=t[0]||{},n=`${this.service}/${e}`,i=this.errors[e],a=i?i.replace(D,(e,t)=>{let n=r[t];return null!=n?String(n):`<${t}?>`}):"Error",s=`${this.serviceName}: ${a} (${n}).`;return new W(n,s,r)}}let D=/\{\$([^}]+)}/g;function U(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function L(e){return null!==e&&"object"==typeof e}/** 77 * @license 78 * Copyright 2017 Google LLC 79 * 80 * Licensed under the Apache License, Version 2.0 (the "License"); 81 * you may not use this file except in compliance with the License. 82 * You may obtain a copy of the License at 83 * 84 * http://www.apache.org/licenses/LICENSE-2.0 85 * 86 * Unless required by applicable law or agreed to in writing, software 87 * distributed under the License is distributed on an "AS IS" BASIS, 88 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 89 * See the License for the specific language governing permissions and 90 * limitations under the License. 91 */function O(e){let t=[];for(let[r,n]of Object.entries(e))Array.isArray(n)?n.forEach(e=>{t.push(encodeURIComponent(r)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(r)+"="+encodeURIComponent(n));return t.length?"&"+t.join("&"):""}function N(e){let t={};return e.replace(/^\?/,"").split("&").forEach(e=>{if(e){let[r,n]=e.split("=");
91t[decodeURIComponent(r)]=decodeURIComponent(n)}}),t}function K(e){let t=e.indexOf("?");if(!t)return"";let r=e.indexOf("#",t);return e.substring(t,r>0?r:void 0)}function x(e,t){let r=new M(e,t);return r.subscribe.bind(r)}class M{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(e){this.forEachObserver(t=>{t.next(e)})}error(e){this.forEachObserver(t=>{t.error(e)}),this.close(e)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,r){let n;if(void 0===e&&void 0===t&&void 0===r)throw Error("Missing Observer.");void 0===(n=!function(e,t){if("object"!=typeof e||null===e)return!1;for(let r of t)if(r in e&&"function"==typeof e[r])return!0;return!1}(e,["next","error","complete"])?{next:e,error:t,complete:r}:e).next&&(n.next=F),void 0===n.error&&(n.error=F),void 0===n.complete&&(n.complete=F);let i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?n.error(this.finalError):n.complete()}catch(e){}}),this.observers.push(n),i}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let t=0;t<this.observers.length;t++)this.sendOne(t,e)}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 F(){}function B(e,t=1e3,r=2){let n=t*Math.pow(r,e);return Math.min(144e5,n+Math.round(.5*n*(Math.random()-.5)*2))}/** 92 * @license 93 * Copyright 2021 Google LLC 94 * 95 * Licensed under the Apache License, Version 2.0 (the "License"); 96 * you may not use this file except in compliance with the License. 97 * You may obtain a copy of the License at 98 * 99 * http://www.apache.org/licenses/LICENSE-2.0 100 * 101 * Unless required by applicable law or agreed to in writing, software 102 * distributed under the License is distributed on an "AS IS" BASIS, 103 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 104 * See the License for the specific language governing permissions and 105 * limitations under the License. 106 */function V(e){return e&&e._delegate?e._delegate:e}},9742:function(e,t){"use strict";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return(r+n)*3/4-n},t.toByteArray=function(e){var t,r,a=c(e),s=a[0],o=a[1],u=new i((s+o)*3/4-o),l=0,h=o>0?s-4:s;for(r=0;r<h;r+=4)t=n[e.charCodeAt(r)]<<18|n[e.charCodeAt(r+1)]<<12|n[e.charCodeAt(r+2)]<<6|n[e.charCodeAt(r+3)],u[l++]=t>>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===o&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===o&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,a=[],s=0,o=n-i;s<o;s+=16383)a.push(function(e,t,n){for(var i,a=[],s=t;s<n;s+=3)a.push(r[(i=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]))>>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join("")}(e,s,s+16383>o?o:s+16383));return 1===i?a.push(r[(t=e[n-1])>>2]+r[t<<4&63]+"=="):2===i&&a.push(r[(t=(e[n-2]<<8)+e[n-1])>>10]+r[t>>4&63]+r[t<<2&63]+"="),a.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,o=a.length;s<o;++s)r[s]=a[s],n[a.charCodeAt(s)]=s;function c(e){var t=e.length;if(t%4>0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var n=r===t?0:4-r%4;return[r,n]}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8764:function(e,t,r){"use strict";/*! 107 * The buffer module from node.js, for the browser. 108 * 109 * @author Feross Aboukhadijeh <https://feross.org> 110 * @license MIT 111 */var n=r(9742),i=r(645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function s(e){if(e>
1112147483647)throw RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,o.prototype),t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return l(e)}return c(e,t,r)}function c(e,t,r){if("string"==typeof e)return function(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!o.isEncoding(t))throw TypeError("Unknown encoding: "+t);var r=0|m(e,t),n=s(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(C(e,Uint8Array)){var t=new Uint8Array(e);return g(t.buffer,t.byteOffset,t.byteLength)}return h(e)}(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(C(e,ArrayBuffer)||e&&C(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(C(e,SharedArrayBuffer)||e&&C(e.buffer,SharedArrayBuffer)))return g(e,t,r);if("number"==typeof e)throw TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return o.from(n,t,r);var i=function(e){if(o.isBuffer(e)){var t,r=0|d(e.length),n=s(r);return 0===n.length||e.copy(n,0,0,r),n}return void 0!==e.length?"number"!=typeof e.length||(t=e.length)!=t?s(0):h(e):"Buffer"===e.type&&Array.isArray(e.data)?h(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return o.from(e[Symbol.toPrimitive]("string"),t,r);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw TypeError('"size" argument must be of type number');if(e<0)throw RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return u(e),s(e<0?0:0|d(e))}function h(e){for(var t=e.length<0?0:0|d(e.length),r=s(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function g(e,t,r){var n;if(t<0||e.byteLength<t)throw RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw RangeError('"length" is outside of buffer bounds');return Object.setPrototypeOf(n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),o.prototype),n}function d(e){if(e>=2147483647)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function m(e,t){if(o.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||C(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return S(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return I(e).length;default:if(i)return n?-1:S(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){var i,a,s=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0||(r>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",a=t;a<r;++a)i+=H[e[a]];return i}(this,t,r);case"utf8":case"utf-8":return _(this,t,r);case"ascii":return function(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}(this,t,r);case"latin1":case"binary":return function(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}(this,t,r);case"base64":return i=t,a=r,0===i&&a===this.length?n.fromByteArray(this):n.fromByteArray(this.slice(i,a));case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return function(e,t,r){for(var n=e.slice(t,r),i="",a=0;a<n.length-1;a+=2)i+=String.fromCharCode(n[a]+256*n[a+1]);return i}(this,t,r);default:if(s)throw TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),s=!0}}function y(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function f(e,t,r,n,i){var a;if(0===e.length)return -1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),(a=r=+r)!=a&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return -1;r=e.length-1}
vendor: 14,466 bytes, line 111
111else if(r<0){if(!i)return -1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:v(e,t,r,n,i);if("number"==typeof t)return(t&=255,"function"==typeof Uint8Array.prototype.indexOf)?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):v(e,[t],r,n,i);throw TypeError("val must be string, number or Buffer")}function v(e,t,r,n,i){var a,s=1,o=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return -1;s=2,o/=2,c/=2,r/=2}function u(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var l=-1;for(a=r;a<o;a++)if(u(e,a)===u(t,-1===l?0:a-l)){if(-1===l&&(l=a),a-l+1===c)return l*s}else -1!==l&&(a-=a-l),l=-1}else for(r+c>o&&(r=o-c),a=r;a>=0;a--){for(var h=!0,g=0;g<c;g++)if(u(e,a+g)!==u(t,g)){h=!1;break}if(h)return a}return -1}function _(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var a,s,o,c,u=e[i],l=null,h=u>239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(l=u);break;case 2:(192&(a=e[i+1]))==128&&(c=(31&u)<<6|63&a)>127&&(l=c);break;case 3:a=e[i+1],s=e[i+2],(192&a)==128&&(192&s)==128&&(c=(15&u)<<12|(63&a)<<6|63&s)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:a=e[i+1],s=e[i+2],o=e[i+3],(192&a)==128&&(192&s)==128&&(192&o)==128&&(c=(15&u)<<18|(63&a)<<12|(63&s)<<6|63&o)>65535&&c<1114112&&(l=c)}null===l?(l=65533,h=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=h}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=4096));return r}(n)}function w(e,t,r){if(e%1!=0||e<0)throw RangeError("offset is not uint");if(e+t>r)throw RangeError("Trying to access beyond buffer length")}function k(e,t,r,n,i,a){if(!o.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<a)throw RangeError('"value" argument is out of bounds');if(r+n>e.length)throw RangeError("Index out of range")}function P(e,t,r,n,i,a){if(r+n>e.length||r<0)throw RangeError("Index out of range")}function b(e,t,r,n,a){return t=+t,r>>>=0,a||P(e,t,r,4,34028234663852886e22,-34028234663852886e22),i.write(e,t,r,n,23,4),r+4}function E(e,t,r,n,a){return t=+t,r>>>=0,a||P(e,t,r,8,17976931348623157e292,-17976931348623157e292),i.write(e,t,r,n,52,8),r+8}t.lW=o,t.h2=50,o.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}}),o.poolSize=8192,o.from=function(e,t,r){return c(e,t,r)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array),o.alloc=function(e,t,r){return(u(e),e<=0)?s(e):void 0!==t?"string"==typeof r?s(e).fill(t,r):s(e).fill(t):s(e)},o.allocUnsafe=function(e){return l(e)},o.allocUnsafeSlow=function(e){return l(e)},o.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==o.prototype},o.compare=function(e,t){if(C(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),C(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(e)||!o.isBuffer(t))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i<a;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);if(void 0===t)for(r=0,t=0;r<e.length;++r)t+=e[r].length;var r,n=o.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var a=e[r];if(C(a,Uint8Array))i+a.length>n.length?o.from(a).copy(n,i):Uint8Array.prototype.set.call(n,a,i);else if(o.isBuffer(a))a.copy(n,i);else throw TypeError('"list" argument must be an Array of Buffers');i+=a.length}return n},o.byteLength=m,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)y(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0==arguments.length?_(this,0,e):p.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(e){if(!o.isBuffer(e))throw TypeError("Argument must be a Buffer");return this===e||0===o.compare(this,e)},o.prototype.inspect=function(){var e="",r=t.h2;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},a&&(o.prototype[a]=o.prototype.inspect),o.prototype.compare=function(e,t,r,n,i){if(C(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),!o.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return -1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,s=r-t,c=Math.min(a,s),u=this.slice(n,i),l=e.slice(t,r),h=0;h<c;++h)if(u[h]!==l[h]){a=u[h],s=l[h];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(e,t,r){return -1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return f(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return f(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var i,a,s,o,c,u,l,h,g=this.length-t;if((void 0===r||r>g)&&(r=g),e.length>0&&(r<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var d=!1;;)switch(n){case"hex":return function(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var a=t.length;n>a/2&&(n=a/2);for(var s=0;s<n;++s){var o=parseInt(t.substr(2*s,2),16);if(o!=o)break;e[r+s]=o}return s}(this,e,t,r);case"utf8":case"utf-8":return i=t,a=r,T(S(e,this.length-i),this,i,a);case"ascii":case"latin1":case"binary":return s=t,o=r,T(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(e),this,s,o);case"base64":return c=t,u=r,T(I(e),this,c,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l=t,h=r,T(function(e,t){for(var r,n,i=[],a=0;a<e.length&&!((t-=2)<0);++a)n=(r=e.charCodeAt(a))>>8,i.push(r%256),i.push(n);return i}(e,this.length-l),this,l,h);default:if(d)throw TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),d=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,o.prototype),n},o.prototype.readUintLE=o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e],i=1,a=0;++a<t&&(i*=256);)n+=this[e+a]*i;return n},o.prototype.readUintBE=o.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(e,t){return e>>>=0,t||w(e,1,this.length),this[e]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||w(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||w(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||w(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||w(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e],i=1,a=0;++a<t&&(i*=256);)n+=this[e+a]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},o.prototype.readInt8=function(e,t){return(e>>>=0,t||w(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||w(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||w(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||w(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||w(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||w(e,4,this.length),i.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||w(e,4,this.length),i.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||w(e,8,this.length),i.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||w(e,8,this.length),i.read(this,e,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;k(this,e,t,r,i,0)}var a=1,s=0;for(this[t]=255&e;++s<r&&(a*=256);)this[t+s]=e/a&255;return t+r},o.prototype.writeUintBE=o.prototype.writeUIntBE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;k(this,e,t,r,i,0)}var a=r-1,s=1;for(this[t+a]=255&e;--a>=0&&(s*=256);)this[t+a]=e/s&255;return t+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);k(this,e,t,r,i-1,-i)}var a=0,s=1,o=0;for(this[t]=255&e;++a<r&&(s*=256);)e<0&&0===o&&0!==this[t+a-1]&&(o=1),this[t+a]=(e/s>>0)-o&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);k(this,e,t,r,i-1,-i)}var a=r-1,s=1,o=0;for(this[t+a]=255&e;--a>=0&&(s*=256);)e<0&&0===o&&0!==this[t+a+1]&&(o=1),this[t+a]=(e/s>>0)-o&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||k(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return b(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return b(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return E(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return E(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(!o.isBuffer(e))throw TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||0===e.length||0===this.length)return 0;if(t<0)throw RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw RangeError("Index out of range");if(n<0)throw RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw TypeError("Unknown encoding: "+n);if(1===e.length){var i,a=e.charCodeAt(0);("utf8"===n&&a<128||"latin1"===n)&&(e=a)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw RangeError("Out of range index");if(r<=t)return this;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{var s=o.isBuffer(e)?e:o.from(e,n),c=s.length;
111if(0===c)throw TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=s[i%c]}return this};var R=/[^+/0-9A-Za-z-_]/g;function S(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319||s+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else throw Error("Invalid code point")}return a}function I(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(R,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function T(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length)&&!(i>=e.length);++i)t[i+r]=e[i];return i}function C(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}var H=function(){for(var e="0123456789abcdef",t=Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)t[n+i]=e[r]+e[i];return t}()},645:function(e,t){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */t.read=function(e,t,r,n,i){var a,s,o=8*i-n-1,c=(1<<o)-1,u=c>>1,l=-7,h=r?i-1:0,g=r?-1:1,d=e[t+h];for(h+=g,a=d&(1<<-l)-1,d>>=-l,l+=o;l>0;a=256*a+e[t+h],h+=g,l-=8);for(s=a&(1<<-l)-1,a>>=-l,l+=n;l>0;s=256*s+e[t+h],h+=g,l-=8);if(0===a)a=1-u;else{if(a===c)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,n),a-=u}return(d?-1:1)*s*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var s,o,c,u=8*a-i-1,l=(1<<u)-1,h=l>>1,g=23===i?5960464477539062e-23:0,d=n?0:a-1,m=n?1:-1,p=t<0||0===t&&1/t<0?1:0;for(isNaN(t=Math.abs(t))||t===1/0?(o=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-s))<1&&(s--,c*=2),s+h>=1?t+=g/c:t+=g*Math.pow(2,1-h),t*c>=2&&(s++,c/=2),s+h>=l?(o=0,s=l):s+h>=1?(o=(t*c-1)*Math.pow(2,i),s+=h):(o=t*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;e[r+d]=255&o,d+=m,o/=256,i-=8);for(s=s<<i|o,u+=i;u>0;e[r+d]=255&s,d+=m,s/=256,u-=8);e[r+d-m]|=128*p}},6840:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return r(9244)}])},2491:function(e,t,r){"use strict";r.d(t,{D:function(){return n}});let n=[{id:"golf",name:"골í",icon:"â³",items:[{name:"ë¼ì´ë© (18í)",desc:"íêµì 3ë¶ì 1 ê°ê²©ì¼ë¡ ì¦ê¸°ë 그린í¼. ìºë ëë°ì´ 기본ì´ìì.",seed:"golf1"},{name:"골í í¨í¤ì§",desc:"ì¬ë¬ ë² ë¼ì´ë©ì ë¬¶ì´ ë ì ë ´íê². 주ë§ë§ë¤ ë¤ë¥¸ ì½ì¤ë ê°ë¥í´ì.",seed:"golf2"},{name:"골í ë ì¨",desc:"ì ë ´í ë¹ì©ì¼ë¡ íì§ íë¡ìê² ìì¸ êµì ê¹ì§ ë°ìë³¼ ì ìì´ì.",seed:"golf3"}]},{id:"sea",name:"ë°ë¤\xb7í´ì",icon:"\uD83D\uDC20",items:[{name:"ìì¼ëë í¸í",desc:"배를 íê³ ì¬ë¬ ì¬ì ëë©° ììê³¼ ì ì¬ì ì¦ê¸°ë ëí í¬ì´ìì.",seed:"ocean1"},{name:"ì¤ë
¸í´ë§",desc:"ìì ë°ë¤ìì ìë¡ë¬ë¡í ë¬¼ê³ ê¸°ì ì°í¸ë¥¼ 구경í´ì. ì¥ë¹ ëì¬ ê°ë¥.",seed:"ocean2"},{name:"ì¤ì¿ ë² ë¤ì´ë¹",desc:"ì²´í ë¤ì´ë¹ë¶í° ìê²©ì¦ ê³¼ì ê¹ì§. ì¸ê³ì ì¸ ë¤ì´ë¹ í¬ì¸í¸ê° ë§ìì.",seed:"ocean3"},{name:"ì ì
í¬ë£¨ì¦",desc:"ë
¸ì ì§ë ë°ë¤ ììì ì¦ê¸°ë ì ë
. ììí´ì ìëì´ë¶ë¤ê» ì¸ê¸°ìì.",seed:"ocean4"},{name:"ì í¸ì¤í¤ \xb7 ë°ëëë³´í¸",desc:"ì§ë¦¿í ìì ë ì . ìì ììì´ í¨ê»í´ ì²ìì´ì´ë ê´ì°®ìì.",seed:"ocean5"}]},{id:"heal",name:"íë§\xb7ë§ì¬ì§",icon:"\uD83D\uDC86",items:[{name:"ì ì ë§ì¬ì§",desc:"í ìê°ì ë§ì ìí. ìì
ì¼ë¡ ì§ì¹ 몸ì ë§¤ì¼ íì´ì£¼ê¸° ì¢ìì.",seed:"massage1"},{name:"ì¤í \xb7 ìë¡ë§",desc:"í루를 íµì§¸ë¡ ì°ë ì¤í í¨í¤ì§. ì¬ì°ëì ìë¡ë§ í
ë¼í¼ê¹ì§.",seed:"massage2"},{name:"ë¤ì¼ \xb7 íì¼ì´",desc:"ì ë ´íê³ ì ì±ì¤ë¬ì´ ê´ë¦¬. 주ë§ì ê°ë³ê² ë¤ë
ì¤ê¸° ì¢ìì.",seed:"massage3"}]},{id:"tour",name:"ê´ê´\xb7í¬ì´",icon:"\uD83D\uDDFAï¸",items:[{name:"ìí° í¬ì´",desc:"ìì¬ ì ì ê³¼ ì±ë¹, ì ë§ë를 ëë ë°ëì ì½ì¤. ê°ì´ë ëë°ì´ í¸í´ì.",seed:"tour1"}
111,{name:"íí¬ \xb7 ìì° í¬ì´",desc:"ìë©ëëë¹ íí¬ì ê³ê³¡. ê°ë²¼ì´ ì°ì±
ì½ì¤ë¡ ë¤ë
ì¬ ì ìì´ì.",seed:"tour2"},{name:"ì§ë¼ì¸ \xb7 ì´ë벤ì²",desc:"ê³ê³¡ ì를 ê°ë¡ì§ë¥´ë ì§ë¦¿í¨. ì²´ë ¥ì ë§ë ì½ì¤ë¥¼ ê³ ë¥¼ ì ìì´ì.",seed:"tour3"},{name:"ê³ ëìì´ í¬ì´",desc:"ê±°ëí ê³ ëìì´ì í¨ê» í¤ìì¹ë ìì§ ëª»í ê²½í (ì§ì íì ).",seed:"tour4"}]},{id:"shop",name:"ì¼í\xb7미ì",icon:"\uD83D\uDECDï¸",items:[{name:"ëí ì¼í몰",desc:"ììì ìµëê¸ ëª°ìì ì¼íê³¼ ìí, ìì¬ë¥¼ í ë²ì. ëë°©ë ììí´ì.",seed:"shopping1"},{name:"íì§ ë§ì§ í¬ì´",desc:"ì ë ´íê³ í¸ì§í íì§ ììë¶í° ë¶ì기 ì¢ì ë ì¤í ëê¹ì§.",seed:"shopping2"},{name:"íì¸ íì´ \xb7 ë§í¸",desc:"íêµ ììì´ ê·¸ë¦¬ì¸ ë. íìë¹ê³¼ íì¸ë§í¸ê° ëª¨ì¬ ìì´ì.",seed:"shopping3"},{name:"ì¼ìì¥ \xb7 ëì´í¸ë§ì¼",desc:"ì ë
ì í기를 ë ë ìì¥ìì 길거리 ììê³¼ 기ë
íì 구경í´ì.",seed:"shopping4"}]}]},7363:function(e,t,r){"use strict";r.d(t,{IL:function(){return a},O:function(){return s},nC:function(){return i}});let n=e=>[{label:"íì ëí ë¸ë¡ì
",kind:"brochure",file:"https://drive.google.com/file/d/".concat(e,"/view")}],i={eedu_eco:n("1stzBVMZ0_ezMADL4w2MPm6sGcwTBHUqE"),bcebu:n("1Py_uXGSfoT69lqxVJTvOAi588EaycR-0"),beci_eop:n("1o1XUnJLcH5TLeW9q9WiRg3pyJJIOLTbK"),beci_city:n("1o1XUnJLcH5TLeW9q9WiRg3pyJJIOLTbK"),blue_ocean:n("1WVnw9ZViByEWryrW3TpInBH_trLrn_DB"),cella_uni:n("1GYU4f51jMwkEiDNtDNRwDnl4C1-qpjLU"),cella_premium:n("1GYU4f51jMwkEiDNtDNRwDnl4C1-qpjLU"),cg_banilad:n("1VehEHkb0aD213d2hzbSQOwiT6Y2a7T04"),cg_sparta:n("1VehEHkb0aD213d2hzbSQOwiT6Y2a7T04"),cia:n("1G_1JzX6pVc9F5YZ0YvQLCDwMposuDIQT"),cij:n("1zaDSAqxpSX7kG22ZPawOvnz9D2oXsWzh"),cns:n("1hy_8NnwZG0kzHNDi7PoOaNvH0nBF3zbE"),cns_senior_camp:n("1hy_8NnwZG0kzHNDi7PoOaNvH0nBF3zbE"),cpi:n("1C3xy7arJfcol6HXE3PdJmlmhQvdNEbaJ"),cpils:n("114Nsg3_4WMlAIXJSvjGzICK8lMwbKor-"),clark_we:n("1Aiol1QFuFzJ433DIAXF222oMSI4DSSH1"),eg_academy:n("1fQklv15_fFvs6jDcMJY9ONOS2NXZQ1t6"),elsa:n("1Tw3lJCkS2O53ZkxrdKx9pcxQPkSlO7p5"),ev_academy:n("1HFREZiBMAtZ-et2Cq6d_sI1Yn5DHC838"),ev_lamer:n("15ztINoTdR6hw5MZhf6tUyZoShKhkcCol"),english_fella_1:n("1bHP1Rk53-hzXE_lgPyRbShlKTrGjkHuk"),english_fella_2:n("1MdACxNL7EH8yQEjiLara7gzPIeCP0VyP"),gitc:n("1VpdBEGBIoOzqoOxerFIoaQU_eeTO1FQw"),glant:n("1wNc94w1jCQJilUV0pjWEpu81K4TfeWtH"),glc:n("15ft7uMdB4pk9T3l53oL37UhPjuMjHA-U"),gs:n("1iAoaZG1rYp5CoWb9_aKGUoL6UMFTLVHK"),hana:n("1Q9TxpxTlsyGJZazjOztDFQ7rWVmLd4gK"),help_clark:n("16BJGl8O5tUQtcLespMEhWnVdNcZxotFV"),ibreeze:n("1GiX187Fg_r6hJPJXaDy2QAi4LzpVqaGd"),ims:n("1s31vUa3tAPLGXKrSQ6ZUpzatvEZz93ML"),jic_challenger:n("1-Uyk0Uo7b2HuhFD7d9ZuXw8P0nS19RAr"),jic_premium:n("1NjY8sxD4_LeYsZLNBLYCfnecJ9Rj2qtd"),lslc:n("1-yga44w-JY4w9xYUGz5um1hNTSeEVavd"),mk:n("10QJgADlH-6wydPWxfVM_ZqZALAv1kRJx"),monol:n("1uIlgLKAC09JUv5NQw0WC0xqALDf1dCyQ"),monol_golf:n("1uIlgLKAC09JUv5NQw0WC0xqALDf1dCyQ"),pilaedu:n("1lIHFlTe75tb6c4UTfMH2v274mD53CQlz"),philinter:n("1sYzV6eFGMP_5zg-61GQ30Pv3f_KqRwl2"),qqenglish_bfc:n("1EJLEYDx4kljym0j_BGJxVrd2QYf3-xg-"),qqenglish_itp:n("1EJLEYDx4kljym0j_BGJxVrd2QYf3-xg-"),smeag_capital:n("1RUgAq9Y_sdkUxrS9v-Bwt-9nVbTfbRRi"),talk:n("1ylvTyr0k1f5DdSjv7_m-6DCoKfObObMg"),talk_camp_adult:n("1ylvTyr0k1f5DdSjv7_m-6DCoKfObObMg"),wales:n("1fejAcYmQh418QGbDlSD-jjbP3Tj-aIu8"),we_academy:n("139-2go0jrU-eLabprTHPYU0UUj7XwGNg"),coco:n("1zASifHM8NZ43Mu7zr
111sLDDLSV7w74g49T"),eroom:n("1T_m7UUWBdqZajsw0dvnZuBLoi2lLNay9"),pines_main:n("1ssi1RxIiBxDJ6cSJal2vt6ndxtExVp5q"),pines_chapis:n("1l_UwFtLtQwMIYEiIO7EMHbCY3uz8Zhhg")};function a(e,t){return/^https?:\/\//.test(t.file)?t.file:"/brochures/".concat(e,"/").concat(t.file)}function s(e){var t;return null!==(t=i[e])&&void 0!==t?t:[]}},7049:function(e,t,r){"use strict";r.d(t,{XT:function(){return i},pT:function(){return n},th:function(){return a}});let n=[{id:"cebu",label:"ì¸ë¶",hint:"í´ë³\xb7ì¤ë
¸í´ë§"},{id:"baguio",label:"ë°ê¸°ì¤",hint:"ê³ ì§ë\xb7ìë"},{id:"clark",label:"í´ë½",hint:"ê±´ì¡°\xb7골í"},{id:"iloilo",label:"ì¼ë¡ì¼ë¡",hint:"í´ì\xb7ì°ê¸°"},{id:"bacolod",label:"ë°ì½ë¡ë",hint:"ì¨í"},{id:"boracay",label:"ë³´ë¼ì¹´ì´",hint:"ë¦¬ì¡°í¸ í´ë³"}],i={cebu:[{text:"ìì¿ ììì¦\xb7ë°©ìí©",note:"í´ë³\xb7ì¤ë
¸í´ë§ ì¡í°ë¹í°ê° ë§ìì"},{text:"ì¤ë
¸í´ë§ ë§ì¤í¬(ì í)",note:"íì§ ëì¬ë ëì§ë§ ììì ê°ì¸ ì§ì°¸ì ì¶ì²í´ì"}],baguio:[{text:"ëêº¼ì´ ê²ì·\xb7ê²½ë í¨ë©",note:"ê³ ì§ëë¼ ìëíê³ ì침ì ë
ì¼ë¡ ììí´ì"},{text:"ìí ì 기ì\xb7í«í©",note:"ë°¤ì ëë°©ì´ ì½í í¸ì´ìì"},{text:"ë±ì°í\xb7í¸ë í¹ ìë§",note:"주ë³ì ì°ì±
\xb7í¸ë í¹ ì½ì¤ê° ë§ìì"}],clark:[{text:"ë³´ìµ ë¡ì
\xb7립밤",note:"ê±´ì¡°í í¸ì´ìì"},{text:"골í ì¥ê°\xb7모ì\xb7íí ì",note:"골í íë¡ê·¸ë¨ì´ ë§ì ì§ìì´ìì"}],iloilo:[{text:"ì°ë¹\xb7ë°©ì ì¬í·",note:"ì°ê¸°ì ë¹ê° ì¦ìì"},{text:"모기 기í¼ì \xb7모기í¥",note:"í´ì ëìë¼ ëª¨ê¸°ê° ìì´ì"}],bacolod:[{text:"ê°ë²¼ì´ ê²ì·",note:"ì¨ííì§ë§ ì¤ë´ ëë°©\xb7ì ë
ëë¹ì©"},{text:"모기 기í¼ì ",note:"모기 ëë¹ì©"}],boracay:[{text:"ë¹ì¹ì¨ì´\xb7ìì¿ ììì¦",note:"ë¦¬ì¡°í¸ í´ë³ íëì´ ë§ìì"},{text:"ë°©ìí©\xb7ì¤ë
¸í´ë§ ì©í",note:"물ëì´\xb7í´ì ì¡í°ë¹í° ëë¹"}]},a=[{title:"íì ìë¥",when:"ì¶ë° ì íì",items:[{text:"ì¬ê¶ ì문ì´ë¦\xb7ìë
ìì¼ì´ íê³µê¶ê³¼ ê°ìì§ íì¸"},{text:"ì¬ê¶ ë§ë£ì¼ì´ 6ê°ì ì´ì ë¨ìëì§ íì¸",note:"â
6ê°ì 미ë§ì´ë©´ ì
êµì´ ê±°ë¶ë ì ìì´ì"},{text:"ìë³µ íê³µê¶ ì¤ë¹ (ì문ì´ë¦\xb7ì¶êµ/ê·êµì¼ íì¸)",note:"í¸ëë ì
êµ ê±°ì ê°ë¥ \xb7 ì¶ë° 1~7ì¼ ì ì¼ì ì¬íì¸"},{text:"ì¬íìë³´í ê°ì
â ë³´í ììì¼ì ì¶êµì¼ê³¼ ëì¼íê²",note:"3ê°ì ì´ê³¼ ì²´ë¥ ì ì íìë³´í íì"},{text:"eTravel ë±ë¡ í QRì½ë ì ì¥",note:"etravel.gov.ph \xb7 ì¶ë° 72ìê° ì´ë´ ìì±"},{text:"ì
ííê°ì\xb7í½ì
íì¸ì ì¤ë¹",note:"ì
êµ ëª©ì (Study)\xb7ì²´ë¥ì§ ì¦ë¹ì©"}]},{title:"ë¹ì\xb7SSP ì¤ë¹",when:"íì§ íì
íê°",items:[{text:"ì¬ê¶ì© ì¬ì§ 2\xd72ì¸ì¹(5\xd75cm) ì¤ë¹",note:"ì°ì기ê°ë³ 2~7ì¥ \xb7 íì§ ì´¬ìì´ ë ì ë ´"},{text:"모ë ìë¥ë ì문\xb7ìµì ë°ê¸ë³¸ì¼ë¡ ì¤ë¹"}]},{title:"íì \xb7ì¹´ë",when:"ë ì¤ë¹",items:[{text:"USD 100ë¬ë¬ê¶ì¼ë¡ 300~500ë¬ë¬ ì¤ë¹",note:"íì§ìì íìë¡ íì íë©´ íì¨ì´ ì 리í´ì"},{text:"í´ì¸ ê²°ì ê°ë¥í ì ì©ì¹´ë",note:"ì¹´ë ì문ì´ë¦ = ì¬ê¶ê³¼ ëì¼ \xb7 VISA/MASTER"},{text:"í´ì¸ ATM ì¶ê¸ ê°ë¥í êµì ì²´í¬ì¹´ë",note:"CIRRUS\xb7PLUS\xb7UnionPay ë± \xb7 ë¶ì¤ ëë¹ 2ì¥ ê¶ì¥"},{text:"íì \xb7ììë£ ì°ë ì¹´ë ì¤ë¹ (í¸ëë¸ë¡ê·¸ ë±)",note:"ì í \xb7 íì§ ATM ììë£ ì½ 200~250íìë ë°ì"},{text:"ì¹´ëì¬ ë¶ì¤ì ê³ ì°ë½ì² 미리 ì ì¥"}]},{title:"í´ëí°\xb7íµì ",when:"ì°ë½ ìë¨",items:[{text:"ë¡ë° / íì§ ì ì¬ / eSIM ì¤ íë ì¤ë¹",note:"íêµë²í¸ ì ì§ë ë¡ë°\xb7eSIM, ê°ì±ë¹ë íì§ ì ì¬"},{text:"ì¹´ì¹´ì¤í¡\xb7íì ì± ë¡ê·¸ì¸ ìí íì¸"},{text:"íì í½ì
ë´ë¹ìì ì¹´ì¹´ì¤í¡/ë¼ì¸ ì°ê²° íì¸"}]},{title:"ì§ â ê¸°ë´ í´ë (íì)",when:"ê¼ ìê°ë°©ì",items:[{text:"ë³´ì¡°ë°°í°ë¦¬\xb7ì¬ë¶ ë°°í°ë¦¬ë ë°ëì ê¸°ë´ í´ë",note:"ìíìí물 ê¸ì§ \xb7 100Wh ì´í 1ì¸ 2ê°"},{text:"ì¬ê¶\xb7íê¸\xb7ê·ì¤í\xb7ì ì기기 ê¸°ë´ í´ë"},{text:"ë
¸í¸ë¶ì ìí\xb7ê°ì 미리 ë¤ì´ë¡ë",note:"íì§ ì¸í°ë·ì´ ë린 í¸ì´ìì"},{text:"220V â
¡í ì´ëí°\xb7ë©í°í"}]},{title:"ì§ â ìë¥\xb7ìíì©í",when:"ìºë¦¬ì´",items:[{text:"ì¬ë¦ì· ì¶©ë¶í + ìì 긴í 1~2ë²",note:"ì¤ë´ ëë°© ëë¹ \xb7 ë°ê¸°ì¤ë ëêº¼ì´ ì·ë íì"},{text:"ììë³µ\xb7ëì¬ê°ë, ì í¬ë¦¼\xb7모ì\xb7ì ê¸ë¼ì¤",note:"ìì¸ì ì´ ë§¤ì° ê°í´ì"},{text:"ì¸ë©´ë구ë ìëë§ (íì§ êµ¬ì
), ìê±´ì ëëí"},{text:"ì°ì°\xb7ì ê¸ì¥ì¹\xb7íì¥ì¤ ì¬ë¦¬í¼ ë± ìí"}]},{title:"ì§ â ê±´ê°\xb7ìë¹ì½",when:"ê±´ê°",items:[{text:"ê°ì ìë¹ì½ (í´ì´ì \xb7ì§íµì \xb7ê°ê¸°ì½\xb7ì§ì¬ì \xb7ìíì \xb7ì°ê³ )"},{text:"ì²ë°©ì½ì ì문 ì²ë°©ì ê³¼ í¨ê» ì¤ë¹",note:"ìì´ ë§ì¼ë©´ ì
êµ ì¬ì¬ìì ì íë ì ìì´ì"},{text:"ì¬ë¶ ìê²½\xb7ë ì¦",note:"íì§ë ì§ë£ íìë§ êµ¬ì
ê°ë¥íê³ ë¹ì¸ì"}]},{title:"íì§ ë©ë¶ë¹ì© ì¤ë¹",when:"ëì°© í ë©ë¶",items:[{text:"ì°ì기ê°ì ë§ì¶° ìì ê¸ì¡ íì ",note:"4주 $500 / 8주 $1000 / 12주 $1500 / 16주 $2000"},{text:"SSP\xb7ë¹ìì°ì¥\xb7I-CARD\xb7기ìì¬ ë³´ì¦ê¸\xb7êµì¬ë¹\xb7ì ê¸°ì¸ íì¸",note:"íì OT ìë£\xb7íë¹ ë´ìììì ê¼ íì¸"},{text:"ëì°© ì§í íìí ê¸ì¡ì íê¸ì¼ë¡, ì´íë ATM ì¸ì¶"}]},{title:"ì¶êµ ë¹ì¼ (ê³µí)",when:"ì¶êµì¼",items:[{text:"íê³µí¸ ì¶ë° 3ìê° ì ê³µí ëì°©"},{text:"ì²´í¬ì¸ â ìí물 ìí â ë³´ìê²ì â ì¶êµì¬ì¬"},{text:"eTravel QR\xb7ì¬ê¶\xb7íê³µê¶ì ìì½ê² êº¼ë¼ ì ìê² ì¤ë¹"},{text:"(ë§ 70ì¸ ì´ì ë±) êµíµì½ì ì°ë ì¶êµì¥ ì´ì© ê°ë¥",note:"ì²´í¬ì¸ ì¹´ì´í°ìì ì°ë ì¹´ë ìë ¹"}]},{title:"ëì°© í (ì
êµ\xb7í½ì
)",when:"í리í ëì°©",items:[{text:"ì
êµì¬ì¬ â eTravel QR\xb7ì
ííê°ì ì ì",note:'목ì ì§ë¬¸ì "Study English in íìëª
"'},{text:"ì
êµ ì¤í¬íì ì²´ë¥ ë§ë£ì¼ íì¸",note:"무ë¹ì ì²´ë¥ë 30ì¼"},{text:"ìí물 ì°¾ê³ ì¸ê´ íµê³¼",note:"ì¬íì í´ëí ë©´ì¸ë²ì 1ì¸ 1ë§ íì"},{text:"í½ì
ë´ë¹ì ë§ë기 (ê³µí 건물 ë°ìì ë기)",note:"못 ë§ëë ì´ëíì§ ë§ê³ í½ì
ì¥ììì ì°ë½"},{text:"ëì°© í ê°ì¡±\xb7íìì ëì°© ì°ë½"}
111]}]},155:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=[{id:"cost",name:"ë¹ì©",icon:"\uD83D\uDCB0",items:[{q:"ë¹ì©ì´ ì´ë»ê² ëëì?",a:"ìì í¬í¨ 4주 기ì¤ì¼ë¡ 150ë§ì~400ë§ì ì¬ì´ìì. ìì íì
, ìì
ìê° ì, ì기, íìë³ íë¡ëª¨ì
ì ë°ë¼ ë¬ë¼ì ¸ì. ì¬ê¸°ì íì§ìì ë³ëë¡ ë©ë¶íë ë¹ì©ì´ ìì´ì. ë¹ì ì°ì¥ë¹, SSP(í리í ì ë¶ìì ë°ê¸íë íì
íê°ì¦), ì 기ì¸, ê´ë¦¬ë¹ ë±ì¸ë° íìë§ë¤ ì¡°ê¸ì© ë¤ë¥´ê³ ëª ì£¼ë¥¼ ê°ìëì§ì ë°ë¼ 4ì£¼ë¹ ë¹ì©ì´ ë¬ë¼ì§ê¸°ë í´ì. ì íí ê¸ì¡ì ë±ë¡íìë íì 기ì¤ì¼ë¡ ìì¸í ìë´ë릴ê²ì."},{q:"íìë§ë¤ ì ê°ê²©ì´ ë¬ë¼ì?",a:"ì¡°ê±´ì´ ë¹ì·íë¤ë©´ ëì²´ë¡ ê°ê²©ëê° ë¹ì·íë° íìë³ íë¡ëª¨ì
ì ë°ë¼ ê°ê²© ì°¨ì´ê° ë°ìíë í¸ì´ìì. ìì íì
, ìì
ìê° ì ë±ì ë°ë¼ ê°ê²©ì´ ì¶ê°ë¡ ë¬ë¼ì§ê³ , ë¬ë¬ë¡ íë¹ë¥¼ ë°ë íìì íì¨ì ë°ë¼ ë¬ë¼ì§ê¸°ë í´ì."},{q:"거기ì ìíë¹ë ì¼ë§ë ëëì?",a:"1ê°ì ê¸°ì¤ 20~40ë§ì ì ëë©´ ì¶©ë¶í´ì. ì¸ìì´ë ì¼í, ì¡í°ë¹í°ë¥¼ ì¼ë§ë ì¦ê¸°ëëì ë°ë¼ ë¬ë¼ì ¸ì."},{q:"ì¸ê² ê° ì ìë ë°©ë²ì´ ìëì?",a:"1ì¸ì¤ë³´ë¤ 룸ë©ì´í¸ê° ìë ë¤ì¸ì¤ì ì ííì¤ìë¡ ë¹ì©ì´ ë®ìì ¸ì. ì기ë³ë¡ íë¡ëª¨ì
ì´ ì ì©ëë íìë¤ë ìì´ì ì¡°ê±´ì ë§ê² ìë´ë릴 ì ìì´ì. íìì´ ê²°ì ëë©´ í´ë¹ íììì ì ì© ê°ë¥í 모ë íë¡ëª¨ì
ì ìµëë¡ ì ì©í´ëë¦¬ê³ , ì í¬ ìì²´ í ì¸ë ìµëë¡ ì ì©í´ëë ¤ì."}]},{id:"effect",name:"í¨ê³¼\xb7í기",icon:"\uD83D\uDCC8",items:[{q:"êµë´ìì ìì´ ë°°ì°ë ê²ê³¼ ëê° ë¬ë¼ì?",a:"êµë´ìì ìì´ë¥¼ ë°°ì°ë ê±´ ìì´ê° ì¸êµì´ì¸ íê²½ìì ê³µë¶íë ê±°ìì. ìì
ì´ ëëë©´ ë¤ì íêµì´ íê²½ì¼ë¡ ëìì¤ê¸° ë문ì ë°°ì´ ê±¸ ë°ë¡ ì¨ë¨¹ì 기íê° ìì´ì. í리íì ìì´ê° ì¤ì ë¡ ì°ì´ë íê²½ì´ìì. ìì
ìê°ì ë¬¼ë¡ ì´ê³ ìì¬í ë, ì¹êµ¬ë¤ê³¼ ì´ì¸ë¦´ ë, íì ì§ìê³¼ ëíí ëë ìì´ë¥¼ ì¨ì¼ í´ì. ë°°ì´ ííì ë°ë¡ ê·¸ë ì¤ìíìì ì°ë¤ ë³´ë©´ ìì°ì¤ë½ê² 몸ì ìµíì ¸ì. 1:1 ìì
ì¼ë¡ ë§í 기íë ìëì ì¼ë¡ ë§ê³ , ê°ì 목í를 ê°ì§ ë¤êµì ì¹êµ¬ë¤ê³¼ í¨ê» ìííë¤ ë³´ë©´ ìì´ì ëí ëë ¤ìë ìì°ì¤ë½ê² ìì´ì§ì¸ì."},{q:"ê°ì ìì´ê° ì ë§ ë기ë íëì?",a:"ì¤ë ë
¸íì°ë¥¼ ê°ì§ ì ìëë¤ê³¼ 1:1ë¡ ìì
í기 ë문ì ë§í 기íê° ìëì ì¼ë¡ ë§ìì. ìì
ìê° ì¸ìë ì¸êµì¸ ì¹êµ¬ë¤ê³¼ ì´ì¸ë¦¬ê³ , ìì¬íê³ , ìííë 모ë ìê°ì´ ìì´ íê²½ì´ìì. íêµìì íìì ë¤ëë ê²ê³¼ ê°ì¥ í° ì°¨ì´ê° ë°ë¡ ì´ ë¶ë¶ì´ìì. ë¬¼ë¡ ìì
ì ì±ì¤íê² ì°¸ì¬íê³ ìì´ë¥¼ ì°ë ¤ë ìì§ê° ìì´ì¼ í¨ê³¼ê° ìì´ì."},{q:"ëì´ê° ìëë° ìì´ê° ë기ë íëì?",a:"íììì ë 벨 ìì¤í
ì¼ë¡ ê´ë¦¬íê³ ìì´ì ì¤ë ¥ ë³íê° ëì ë³´ì¬ì. 20~30ëë³´ë¤ ìëê° ì¡°ê¸ ëë ì ìì§ë§ ëì ëê² ì¢ìì§ì¸ì. 1:1 ìì
ì´ë¤ ë³´ë ì ìëì´ ì¤ë ¥ì ë§ê² ì´ì´íê² ìì
í´ì¤ì ì ë ìê° ìë 구조ìì. ìì´ í ë§ëë 못 íìë ë¶ì´ ë§ì§ë§ 주ì ì ìëì´ë ë§ìê» ì´ì¼ê¸°íìë ê²½ì°ë ì½ê² ë³¼ ì ìì´ì."},{q:"ë¤ë
ì¤ì ë¶ë¤ ë°ìì´ ì´ëì?",a:"ìµê·¼ ìëì´ ì ìëë¤ì 문ìê° í¬ê² ëë©´ì ìëì´ ì ì© ì½ì¤ë ìëì´ ì 문 ìº í¼ì¤ê¹ì§ ì겨ë ì ëìì. í ë² ë¤ë
ì¤ì ë¶ë¤ì´ ë ê°ê² ë¤ê³ ì°ë½ 주ìë ê²½ì°ë ë§ê³ , ì기ê³ë°ì ë¬¼ë¡ í´ìì 겸í´ì ì¤ìë ë¶ë¤ë ìì´ì. ìí´ í ì¶ ì¤ê³ë ì¬íì ìí ìì´ ê³µë¶ë¥¼ 목ì ì¼ë¡ ì¤ìë ë¶ë¤ë ë§ê³ , ì´íì°ì를 ê²½íí´ë³¸ ìë
ë¶ë¤ì´ ë¶ëª¨ëì ë³´ë´ë리ë ê²½ì°ë ìì´ì. ë¤ë
ì¤ì ë¶ë¤ ëë¶ë¶ ë§ì¡±ëê° ëìì 주ë³ì ê¶í´ì£¼ìë ë¶ë¤ë ë§ìì."}]},{id:"class",name:"ìì
",icon:"\uD83D\uDCDA",items:[{q:"ìì´ë¥¼ íëë 못íëë° ê´ì°®ëì?",a:"ì
êµ í ë 벨í
ì¤í¸ë¥¼ íµí´ ì¤ë ¥ì ë§ë ìì
ì´ ë°°ì ë기 ë문ì ê±±ì ì íì
ë ë¼ì. ìì ì´ê¸ì를 ìí êµì¬ë ìì´ì. ë¤ë§ 기본ì ì¸ ìíë²³ì´ë ê°ë¨í ë¨ì´ ì ëë ìê³ ì¤ìë©´ ìì
í¨ì¨ì´ í¨ì¬ ëìì. ë§ì½ ìì§ ìíë²³ì´ ì´ë ¤ì°ìë¤ë©´ ë±ë¡ í ì
í ì ê¹ì§ ìí벳과 ê¸°ì´ ë¨ì´ ì ëë§ ìµíê³ ì¤ìë 걸 ì¶ì²ëë ¤ì."},{q:"í루 ì¼ê³¼ê° ì´ë»ê² ëëì?",a:"íìë§ë¤ ì¡°ê¸ì© ë¤ë¥´ì§ë§ 기본 íë¦ì ë¹ì·í´ì. ì침 ìì¬ í ì¤ì ìì
, ì ì¬ ìì¬, ì¤í ìì
, ì ë
ì ìì ìê°ì´ìì. ìëì´ ì ìëë¤ ê¸°ì¤ì¼ë¡ í루 íê· 4~6ìê° ìì
ì´ ì§íëê³ , ì ë
ìë íì ê·ì ì´ë ë³¸ì¸ ì·¨í¥ì ë°ë¼ ìµì
í´ëì¤ë¥¼ ë¤ì¼ì¤ ìë ìì´ì. ìì
ì ì~ê¸ íì¼ìë§ ìê³ ì£¼ë§ì ìì ìê°ì´ìì. ì
êµíìë ë ì ëë¶ë¶ì íììì ì¤ë¦¬ìí
ì´ì
ê³¼ ë 벨í
ì¤í¸ê° ì§íë¼ì."},{q:"ìì
ì´ ì´ë»ê² ì§íëëì?",a:"1:1 ìì
ìì£¼ë¡ ì´ë£¨ì´ì ¸ì. íê· ì ì¼ë¡ 1:1 ìì
4ìê°ì 그룹 ìì
2~3ìê° ì ëìì. ìëì´ ì ìëë¤ê»ë 1:1 ìì
3~4ìê°ì 그룹 1~2ìê° ì ë를 ì¶ì²ëë¦¬ê³ ìì´ì. 1:1 ìì
ë§ì¼ë¡ 구ì±ë ì½ì¤ë ìì¼ë ìë´ì íµí´ ì·¨í¥ì ë§ê²
111 ê²°ì íìë©´ ë¼ì."},{q:"ìì
ì´ ë무 íë¤ë©´ ì´ë¡íëì?",a:"ì²ì ì
êµíë©´ ë 벨í
ì¤í¸ë¥¼ ì¹ë¥¸ ë¤ì ì¤ë ¥ì ë§ê² êµì¬ê° ê²°ì ë기 ë문ì ëì´ë ê±±ì ì í¬ê² ì íì
ë ë¼ì. ë§ì½ ë³¸ì¸ ë 벨과 ë§ì§ ìëë¤ê³ ëë¼ìë©´ êµì²´ ìì²ë ê°ë¥í´ì. ìì
ìê°ì´ 길ì´ì íëì ê²½ì°ì 1:1 ìì
ì´ë¤ ë³´ë ì ìëì´ íì´ì¤ë¥¼ ì¡°ì í´ì£¼ìê³ ìê°ì´ ì§ë ìë¡ ìµìí´ì§ì¸ì. ìëì´ ì ìëë¤ì ë°°ì´ ë´ì©ì ìíí ìê°ë íìí기 ë문ì ì í¬ë í루 4~6ìê° ì ë ì½ì¤ë¥¼ ì¶ì²ëë¦¬ê³ ìì´ì."},{q:"ì¸êµ ì ìë ë§ì ììë¤ì ì ììê¹ì?",a:"1:1 ìì
ì´ë¤ ë³´ë ì ìëì´ íì ì¤ë ¥ì ë§ì¶°ì ëí를 ì´ì´ê°ì. ë§ë¡ë§ ì¤ëª
íë ê² ìëë¼ ìì§ì´ë íì ë íì©í´ê°ë©´ì ê°ë¥´ì³ì£¼ì¸ì. íìë¤ë ì¤ë ë
¸íì°ê° ìì¬ìê³ ì ìëë¤ë ê·¸ë ê² í¸ë ì´ëì ë°ê¸° ë문ì ê±±ì ì íì
ë ë¼ì."},{q:"ì¼ë§ë ìë¤ê° ìì¼ íëì?",a:"4주 ì´ìì ê¶ì¥ëë ¤ì. ë무 ì§§ì¼ë©´ íì§ ìíì ë§ ì ìí ë쯤 ê·êµíê² ëë ê²½ì°ê° ë§ê±°ë ì. ì¤ì ë¡ 4~8ì£¼ë¡ ë¤ë
ì¤ìë ë¶ë¤ì´ ê°ì¥ ë§ê³ , ê·¸ ë¤ìì¼ë¡ 12주ë 꽤 ë§ì¼ì¸ì. í¨ê³¼ë¥¼ íì¤íê² ë³´ê³ ì¶ì¼ì ë¶ë¤ì 12주를 ì¶ì²ëë ¤ì."},{q:"모르ë ê² ìì ë ì´ë»ê² í´ì?",a:"ìë´ê³¼ ìì ì¤ì ê¶ê¸íì ê±´ ì¸ì ë ì§ ë¬¼ì´ë³´ì¸ì. ë±ë¡ ì ì íì ë¸ë¡ì
ë 먼ì ë리ë 미리 íì¸í´ë³´ì¤ ì ìì´ì. íì§ì ëì°©íìë©´ íì íêµì¸ 매ëì ê° ì¤ë¦¬ìí
ì´ì
ì ì§íí´ëë ¤ì. ìí ì¤ì ê¶ê¸í ì ì íì 매ëì 를 íµí´ íì¸íìë©´ ë¼ì. íêµì¸ 매ëì ê° ì¥ê¸° ë¶ì¬ì¤ì¸ ê²½ì°ì ì í¬ê° ìíµì ëìë릴 ì ìì´ì."}]},{id:"life",name:"ìí",icon:"\uD83C\uDFE0",items:[{q:"ë¨¹ê³ ìë ê±´ ì´ë»ê² í´ì?",a:"기본ì ì¼ë¡ 기ìíìì´ë¼ ììì ì¼ìì¸ë¼ ìì¬ê° ì ê³µë¼ì. 기ìì¬ë 1ì¸ì¤ë¶í° 4~6ì¸ì¤ê¹ì§ ë¤ìí´ì. ìì¤ì´ ê±±ì ëìë©´ íìë³ë¡ ì¸ë¶ê¸°ìì¬ë í¸í
기ìì¬ë¥¼ ì´ìíë ê²½ì°ë ìì´ì. ë¤ë§ ì´ ê²½ì°ì ìì¬ê° ì íì ì¼ ì ìì´ì. ìì ê³¼ íì¬ ê´ë¦¬ë¥¼ ìí´ ê¸°ìì¬ ìíì ê¶ì¥ëë ¤ì."},{q:"거기 ììì´ ì
ì ë§ìê¹ì?",a:"íìë¤ì´ ë¤êµì ì´ë¤ ë³´ë íìë§ ëì¤ì§ë ììì. íì, íì§ì, ì¼ì, ëë§ì ë±ì´ ìì¬ì ëì¤ë í¸ì´ìì. ì í¬ê° ì¤ì ë¡ íì ìì¬ë¥¼ ì§ì 먹ì´ë³´ë©´ì ì ê²íê³ ìì´ì ì
ë§ì´ ê±±ì ëìë©´ 미리 ë§ìí´ ì£¼ì¸ì. ì¸ìì´ ê¼ íìíì¤ ê² ê°ì¼ë©´ ì¸ì¶ì´ ìì ë¡ì´ íìì¼ë¡ 골ë¼ë릴ê²ì. ê·¼ì²ì íì¸ë§í¸ë íì¸ ìë¹ì´ ìë íìë¤ë ìì´ì."},{q:"íêµ ì¬ëë¤ë ë§ì´ ìëì?",a:"ëë¶ë¶ì íìì íêµì¸ ë¹ì¨ì 25~30% ì ëë¡ ê´ë¦¬íê³ ìì´ì. íìë§ë¤ ë¤ë¥´ê³ ì기ì ë°ë¼ìë ë¬ë¼ì§ ì ìì´ì. í¹í ê·ëª¨ê° ìì íìì ë¹ì¨ ë³ëì´ í° í¸ì´ìì. íêµì¸ì´ ë§ì íê²½ì ìíìëì§, ìëë©´ ë¤êµì íê²½ì ìíìëì§ ë§ìí´ ì£¼ìë©´ ê·¸ì ë§ë íìì¼ë¡ ìë´í´ë릴ê²ì."},{q:"주ë§ìë ë íëì?",a:"주ë§ì ìì ìê°ì´ìì. ë³´íµ ê°ì´ ê³µë¶íë ë기 ë¶ë¤(íì§ììë ë°°ì¹ë©ì´í¸ë¼ê³ ë¶ë¬ì)ê³¼ ìí°í¬ì´, ì¼í, ë§ì§ íë°©ì ë§ì´ ê°ì¸ì. 골íë ì¤ë
¸í´ë§ ê°ì ì¡í°ë¹í°ë¥¼ ìíìë©´ 그룹ì ë§ë¤ì´ì ê°ê¸°ë í´ì. íììì ì¡í°ë¹í° ì 보를 ì ê³µíë ê²½ì°ë ìê³ , ì í¬ë ìë´í´ë릴 ì ìì´ì."},{q:"ê°ì¡±ì´ë ì°ë½ì ì ëëì?",a:"íìë§ë¤ ìì´íì´ê° ì¤ì¹ëì´ ìì´ì. íêµì²ë¼ ë¹ ë¥´ì§ ìì§ë§ ì¹´ì¹´ì¤í¡ì´ë ììíµí ì ëë ì¶©ë¶í ê°ë¥í´ì. ìì°¨ë í ìê°ë°ì ì ëì í¬ê² ë¶í¸í¨ ìì´ ì°ë½íì¤ ì ìì´ì. ë¡ë°ì í´ì¤ìë ë¶ë¤ë ìì´ì."},{q:"빨ëë ì´ë»ê² í´ì?",a:"íìë§ë¤ ë¬ë¼ì. 무ë£ë¡ ì¸íì ë§
111¡ê¸¸ ì ìë íìë ìê³ , ì§ì ì
íë¡ í´ì¼ íë íìë ìì´ì. ë¹ì©ì´ ë°ìíë ê²½ì°ì íìë¹ ìê¸ì´ ë¶ë íìë ìê³ , 무ê²ë¹ ìê¸ì´ ë¶ë íìë ìì´ì. ë¹ì©ì´ ì기ë ê²½ì° íê· ì ì¼ë¡ 100~300íì(ì½ 2,500~7,500ì) ì ëìì."},{q:"ê°ì´ ì´ì¸ë¦´ ì¬ëì´ ììê¹ì?",a:"ìëì´ ì ìëë¤ì´ ì í¸íë íì ìì£¼ë¡ ìë´ë리기 ë문ì ë¹ì·í ì°ë°° ë¶ë¤ì´ ê³ì¤ ê°ë¥ì±ì´ ëìì. ë¤ë§ íìì 기본ì ì¼ë¡ 20~30ëê° ë§ì í¸ì´ìì. ê·¸ëë ê±±ì ì íì
ë ë¼ì. íìì ëì°©íë©´ ìì´ ì´ë¦ì ì°ë©´ì ë¤ë¤ ëê°ì íìì¼ë¡ ëí´ì¤ì. ì¸êµì¸ ì¹êµ¬ë¤ì ëì´ì í¬ê² ê°ìì¹ ìê±°ë ì. ê²°êµ ë§ì먹기ì ë¬ë ¤ìì´ì. ì ê·¹ì ì¼ë¡ ë¤ê°ê°ìë©´ ê¸ë°© ì¹í´ì§ì¸ì. ê¼ ëë ë¶ë¤ê³¼ ì´ì¸ë¦¬ê³ ì¶ì¼ìë¤ë©´ ìì© ì¸ìì´ ìì íìë³´ë¤ë ê·ëª¨ê° í° íìì´ ì 리í´ì."},{q:"ì¤ê°ì ì¼ì´ ì기면 먼ì ê·êµí ì ìëì?",a:"ê·êµì ê°ë¥í´ì. ì ì ê·êµíë¤ê° ë¤ì ì¤ìë ê²ë ê°ë¥í´ì. ë¤ë§ ê·êµ ííì ë°ë¼ íì¸íì
ì¼ í ê² ë¬ë¼ì ¸ì. ì ì ë¤ë
ì¤ìë ê²½ì°ë¼ë©´ íìì í½ì
\xb7ìë© ê·ì ê³¼ íë© ê·ì ì íì¸í´ì¼ íê³ , ìì í ê·êµíìë ê²½ì°ë¼ë©´ íë¶ ê·ì ê¹ì§ íì¸ì´ íìí´ì. ê·ì ì íìë§ë¤ ë¤ë¥´ë ìí©ì ìë ¤ì£¼ìë©´ íì 매ëì ì ìë´í ì ìëë¡ ëìë릴ê²ì."},{q:"ì§ì ì¼ë§ë ì±ê²¨ì¼ íëì?",a:"ë³´íµ ìºë¦¬ì´ íëë©´ ì¶©ë¶í´ì. 기본 ìë¥, ìë¹ì½, ê°ì¸ ì¸ë©´ë구 ì ëìì. íì§ ë§í¸ìì ëë¶ë¶ 구매 ê°ë¥í´ì ë무 ë§ì´ ì±ê¸°ì¤ íì ìì´ì. ìì¸í ì¤ë¹ë¬¼ì ì¶êµ ì¤ë¹ ì²´í¬ë¦¬ì¤í¸ íì´ì§ìì íì¸íì¤ ì ìì´ì."}]},{id:"health",name:"ê±´ê°\xb7ìì ",icon:"\uD83E\uDE7A",items:[{q:"거기ì ëª¸ì´ ìíë©´ ì´ë»ê² íëì?",a:"íìë§ë¤ ê°ê¹ì´ ë³ì ì ë³´ê° ìê³ íìê° ì기면 íììì ë¹ ë¥´ê² ìë´í´ì¤ì. íêµì¸ì´ë ì¸êµì¸ë¤ì´ ë§ì´ ì°¾ë ë³ìì¼ë¡ ì°ê³ê° ëì´ ìì´ì. ê°í¸ì¬ê° ì주íë íìë ìì´ì. ë§ì½ì ìí´ ì¬íìë³´íì ê¼ ê°ì
íê³ ì¤ì¸ì."},{q:"ë³´íì ì´ë»ê² í´ì¼ íëì?",a:"ì¬íìë³´íì ê¼ ê°ì
íê³ ì¤ì¸ì. í리íì íêµ ìë£ë³´íì´ ì ì©ëì§ ììì íì§ ë³ìë¹ê° ë§¤ì° ë¹ì¸ì. íìììë ë³´í ìë¥ë¥¼ ì구íë ê²½ì°ê° ë§ìì. ì°ì 기ê°ì´ 3ê°ì ì´íë¼ë©´ ì¬íìë³´í, 3ê°ìì ëì¼ë©´ ì íìë³´íì¼ë¡ ê°ì
íì
ì¼ í´ì. ë³´í ì
ì²´ ì°ê²°ì ì í¬ê° ëìë릴 ì ìì´ì."},{q:"í리íì´ ìì íê°ì?",a:"íì ë´ë¶ìë ê²½ë¹ìì´ ì주íê³ ìì°°ë ëìì. íì ìì²´ê° ìì í ì§ìì ì¸ìì ¸ ìê³ , ì¸êµì¸ 건물ì´ë¼ íì§ ê¸°ê´ììë ê°ë³í ì ê²½ ì¨ì¤ì. ë¤ë§ íêµì´ ìëë¼ë 걸 ëª
ì¬íì
ì¼ í´ì. ë°¤ë¦ê² í¼ì ì¸ì¶íê±°ë ì¸ì ì´ ë문 ê³³ì í¼íìê³ , ê·¸ ì ëë§ ì£¼ìíìë©´ ìííë ë° í° ë¬¸ì ìì´ì."},{q:"ëì´ ë ì¨ê° ê±±ì ë¼ì",a:"íì íì
ì ë°ë¼ ë¬ë¼ì. 건물íì´ë ì½ëí íìì 기ìì¬ì êµì¤ì´ ê°ì 건물 ìì ìì´ì ë°ì ëìë¤ë ì¼ì´ ê±°ì ìì´ì. ìì´ì»¨ë ì ë¼ìì´ì ëì ê±±ì ì´ ì ì´ì. 리조í¸í íìì 건물 ê° ì´ëì´ ìì´ì ëì를 ë ë§ì´ ëë¼ì¤ ì ìì´ì. ê·¸ëë ëìì ë§ì´ ì½íì ë¶ì´ë¼ë©´ 1ë
ë´ë´ 18~20\xb0Cë¡ ì ì í ë°ê¸°ì¤ë ê³ ë ¤í´ë³´ì¸ì!"},{q:"ì½ì ì´ë»ê² ì¤ë¹í´ì¼ íëì?",a:"íì ëìë ì½ì ì문 ì²ë°©ì ê³¼ í¨ê» ì±ê²¨ê°ì¸ì. ì½ì ìì´ ë§ì¼ë©´ ì
êµ ì¬ì¬ìì ì íë ì ìì¼ë 주ìíì¸ì. ìë¹ì½ì íì§ììë ì´ ì ìì§ë§ ì©ë²ì 모르면 ë¶í¸íìë ì¡°ê¸ë§ ì±ê²¨ê°ìë 걸 ì¶ì²ëë ¤ì. ìì¸í ì¤ë¹ ë°©ë²ì ì¶êµ ì¤ë¹ ì²´í¬ë¦¬ì¤í¸ íì´ì§ìì íì¸íì¤ ì ìì´ì."},{q:"ì§ë³ì´ ìì´ë ê° ì ìëì?",a:"ì§ë³ì ì¢
ë¥ì ìíì ë°ë¼ ë¬ë¼ì. í리íì íêµë§í¼ ìë£ íê²½ì´ ì¢ì§ ììì íì§ìì ì¹ë£ê° íìí ìí©ì´ ì기면 í° ë¬¸ì ê° ë ì ìì´ì. ì¹ë£ê° ìì í ëëê³ ê±´ê°í ìíìì ê°ìë 걸 ê¶ì¥ëë ¤ì. ì
íë ì°ë ¤ê° ìë ì§ë³ì´ë¼ë ë§ì½ì ìí´ ê³µíê³¼ ê°ê¹ì´ ì¸ë¶ë í´ë½ì¼ë¡ ê°ìë 걸 ì¶ì²ëë ¤ì."},{q:"ê°ì¡±ë¤ì´ ë§ì´ ê±±ì í ê² ê°ìì",a:"ë§¤ì¼ ì°ë½íì¤ ì ìì´ì. íìë§ë¤ ìì´íì´ê° ì ë¼ìê³ , ì¶ë° ì ì ì ì¬ì´ë ë¡ë° ì¤ë¹ ë°©ë²ë ìë´ë릴ê²ì. ì¹´ì¹´ì¤í¡, ììíµí 모ë ê°ë¥í´ì ê°ì¡±ë¶ë¤ë ê¸ë°© ìì¬íì¸ì."}]},{id:"process",name:"ìì\xb7ì ì²",icon:"\uD83D\uDCCB",items:[{q:"ì´ë»ê² ì ì²íë©´ ëëì?",a:"ì í ë°ê¸° ì ì²ì í´ì£¼ìë©´ ìíìë ìê°ì ë§ì¶° ë´ë¹ìê° ë¨¼ì ì°ë½ëë ¤ì. ì¹´ì¹´ì¤ë ì§ì ì íë¡ ì°ë½ 주ì
ë ë¼ì. ìëì´ ì ë´íìì ìë´ì íµí´ íì ì íë¶í° ì
í ì ê¹ì§ ìì ê³¼ì ì í¨ê» ëìë릴ê²ì."},{q:"ë¹ìê° íìíê°ì?",a:"ë³ëë¡ ì¤ë¹íì¤ íì ìì´ì. íêµì¸ì ìë³µíê³µê¶ê³¼ ì¬ê¶ë§ ìì¼ë©´ ì
êµ ì 30ì¼ì§ë¦¬ ê´ê´ë¹ì를 ë°ì¼ì¤ ì ìì´ì. 30ì¼ ì´ì ì²´ë¥íìë©´ íì§ìì ë¹ì ì°ì¥ì íë©´ ëëë°, íììì ëë¶ë¶ ëìì¤ì."},{q:"ë¹í기íë ì´ë»ê² í´ì?",a:"ìë³µíê³µê¶ì ì¤ë¹íìë©´ ë¼ì. í리í ì
êµ ì ìë³µíê³µê¶ì ë³´ì¬ì£¼ì
ì¼ í´ì. ì´ë»ê² 구매íëì§ ë¨ê³ë³ë¡ ìë´ë릴ê²ì."},{q:"ì¸ì ë¶í° ì¤ë¹íë©´ ëëì?",a:"ìíìë ì기ì ì¡°ê±´ì ë°ë¼ ë¬ë¼ì. ì±ì기(ì¬ë¦\xb7겨ì¸)ë¼ë©´ ìµì 2~3ê°ì ì ìë ì¤ë¹ë¥¼ ììíì
ì¼ ìì í´ì. 1ì¸ì¤ì ìíì ë¤ë©´ ì±ì기\xb7ë¹ì기 ê´ê³ìì´ ë ìë르ì
ì¼ í´ì. ì¸ê¸° íì 1ì¸ì¤ì 6ê°ì ì ì ë§ê°ëë ê²½ì°ë ìê±°ë ì. ìíìë íìê³¼ ì¡°ê±´ì´ ìì¼ìë¤ë©´ 빨리 ìë´í´ë³´ìë ê² ì¢ìì."},{q:"ì ì²íë ë° ëì´ ëëì?",a:"ìë´ë ììë 모ë 무ë£ìì. íìê³¼ 기ìì¬ê° ê²°ì ëë©´ ë±ë¡ë¹ë§ 먼ì ë´ì
ì ì리를 íë³´í´ëìê³ , ëë¨¸ì§ íë¹ë ì
í 4주 ì ê¹ì§ ìë©íìë©´ ë¼ì."},{q:"í¼ìì ë¤ ì¤ë¹í´ì¼ íëì?",a:"ì²ìì´ë¼ ë§ë§íì¤ ì ìëë° ê±±ì ì íì
ë ë¼ì. ìë´ì íµí´ íì ì íì ëìëë¦¬ê³ , í리í ì
êµ ì ê¹ì§ íìí ë´ì©ë¤ì ìë´ë리면ì ìì ê³¼ì ì í¨ê» ëìëë ¤ì."},{q:"ì¶ë° ì ì ë ì±ê²¨ì¼ íëì?",a:"ì¬ê¶, íê³µê¶, ì¬íìë³´í, íì ê³¼ ì¹´ë ì¤ë¹, ì²ë°©ì½ ì문 ì²ë°©ì , eTravel ë±ë¡(í리í ì ë¶ ì¸í°ë· ì
êµ ì ê³ ì), ë¡ë° ëë ì ì¬ê¹ì§ 미리 ì¤ë¹íì
ì¼ í´ì. íëª©ë³ ìì¸ ë´ì©ê³¼ 주ìì¬íì ì¶êµ ì¤ë¹ ì²´í¬ë¦¬ì¤í¸ íì´ì§ìì íì¸íì¤ ì ìì´ì."}]}]},9701:function(e,t,r){"use strict";r.d(t,{e:function(){return n}});let n=[{key:"finder",label:"íì 찾기",pic:"search"},{key:"quiz",label:"ì í©ë í
ì¤í¸",pic:"clipboard"},{key:"regions",label:"ì§ì ìë´",pic:"map"},{key:"faq",label:"ì주 묻ë ì§ë¬¸",pic:"question"},{key:"checklist",label:"ì¤ë¹ ì²´í¬ë¦¬ì¤í¸",pic:"check"},{key:"activities",label:"ì¡í°ë¹í°",pic:"flag"}]},175:function(e,t,r){"use strict";r.d(t,{$Y:function(){return _},Be:function(){return m},Bi:function(){return P},GX:function(){return p},MR:function(){return u},MY:function(){return a},Nj:function(){return y},OS:function(){return c},TZ:function(){return v},aQ:function(){return l},b2:function(){return f},mb:function(){return s},oW:function(){return k},qw:function(){return w},sk:function(){return d},th:function(){return b},v0:function(){return g},yo:function(){return h}});var n=r(6628);let i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:800;return"https://picsum.photos/seed/".concat(e,"/").concat(t,"/").concat(r)},a={hero:"/img/banner.webp",finder:"/img/finder-bg.png",processBg:"/img/uhakInfo-bg.png",test:i("test-md"),regions:i("regions-md"),faq:i("faq-md"),checklist:i("checklist-md"),activities:i("activity-md"),process:i("senior-journey",1600,700),schools:i("schools-all")},s=new Set(["cns_senior_camp","monol_golf","talk_camp_adult"]),o=n._.filter(e=>!s.has(e.id)),c=[{id:"copy-1on1",c:"ì ìë í ë¶ì ìí \n 1:1 ìì
",s:"ì ìëì ìí ì ë´ ê°ì¬ê° ë°°ì ë©ëë¤."},{id:"copy-start",c:"ìì´ê° ì²ìì´ì
ë \n ê´ì°®ìì",s:"ì
문ì ì ì©ë°ê³¼ íêµì¸ 매ëì ê° í¨ê»í©ëë¤."},{id:"copy-stage",c:"ê³µë¶ë ì¬íë, \n ì¸ìì ë ë²ì§¸ 무ëìì",s:"ì£¼ë§ ê´ê´ \xb7 골í \xb7 í´ì ì¼ì ê¹ì§ ì±ê²¨ ë립ëë¤."},{id:"copy-pace",c:"ì²ì²í, \nì ìë ìëì ë§ì¶ê²ì",s:"ìëì´ ë§ì¶¤ ì½ì¤ë¡ ë¶ë´ ìì´ ììí ì ììµëë¤."}],u=[{id:"call",cls:"foPhone",icon:"phone",img:"/img/quick_call.svg",main:"ì í걸기",desc:"ì§ê¸ ë°ë¡ íµí",kind:"tel",href:"tel:025320542"},{id:"callback",cls:"foConsult",icon:"clipboard",img:"/img/quick_timeCall.svg",main:"ì íë°ê¸°",desc:"ìíë ìê°ì ì í",kind:"consult"},{id:"kakao",cls:"foKakao",icon:"speech",img:"/img/quick_kakao.svg",main:"ì¹´ì¹´ì¤í¡",desc:"ì±í
ì¼ë¡ ìë´",kind:"kakao",href:"http://pf.kakao.com/_tlGfX/chat"},{id:"material",cls:"foMaterial",icon:"book",img:"/img/quick_doc.svg",main:"ìë£ìì²",desc:"ìë´ ì±
ì ë°ê¸°",kind:"material"}],l={liveFeedTitle:"ì¤ìê° ìë´\xb7ë±ë¡ íí©",playLabel:"ìì¸í 보기"},h=[{id:"lf-1",kind:"inquiry",name:"ê¹ââ ì ìë",act:"ìë´ ë¬¸ì ì ì",date:"26-07-16"},{id:"lf-2",kind:"enroll",name:"íââ ì ìë",act:"ë±ë¡ ìë£",date:"26-07-15"},{id:"lf-3",kind:"inquiry",name:"ì´ââ ì ìë",act:"ìë´ ë¬¸ì ì ì",date:"26-07-15"},{id:"lf-4",kind:"enroll",name:"ë°ââ ì ìë",act:"ë±ë¡ ìë£",date:"26-07-14"},{id:"lf-5",kind:"inquiry",name:"ìµââ ì ìë",act:"ìë£ ìì²",date:"26-07-14"},{id:"lf-6",kind:"enroll",name:"ì ââ ì ìë",act:"ë±ë¡ ìë£",date:"26-07-13"},{id:"lf-7",kind:"inquiry",name:"ê°ââ ì ìë",act:"ìë´ ë¬¸ì ì ì",date:"26-07-13"},{id:"lf-8",kind:"enroll",name:"ì¤ââ ì ìë",act:"ë±ë¡ ìë£",date:"26-07-12"}],g=[{id:"hs-find",q:"íìì´ ë무 ë§ì\nê³ ë¥´ê¸° ì´ë ¤ì°ì¸ì?",feed:0},{id:"hs-fit",q:"ì´ ëì´ìë\nì í´ë¼ ì ììê¹ì?",feed:1},{id:"hs-region",q:"ì¸ë¶? ë°ê¸°ì¤?\nì´ëë¡ ê°ì¼ í ê¹ì?",feed:2},{id:"hs-english",q:"ìì´ë¥¼ 못íëë°\nì ë§ ê´ì°®ìê¹ì?",feed:3}],d=[{id:"m-finder",pic:"search",iconW:"/img/header_search_w.svg",label:"íì 찾기",sub:"ëìê² ë§ë ì´íì",href:"/finder",img:"/img/cate/catItem_1.png",color:"#e65e29",active:!0},{id:"m-quiz",pic:"clipboard",iconW:"/img/header_test_w.svg",label:"ì í©ë í
ì¤í¸",sub:"1ë¶ ì°ì ì±í¥ ì§ë¨",href:"/quiz",img:"/img/cate/catItem_2.png",color:"#ce4c8d",active:!0},{id:"m-regions",pic:"map",iconW:"/img/header_info_w.svg",label:"ì§ì ìë´",sub:"í리í ì§ìë³ ìê°",href:"/regions",img:"/img/cate/catItem_3.png",color:"#196aac",active:!0},{id:"m-faq",pic:"question",iconW:"/img/header_fnq_w.svg",label:"ì주 묻ë ì§ë¬¸",sub:"ê¶ê¸ì¦ í ë²ì",href:"/faq",img:"/img/cate/catItem_4.png",color:"#e09b34",active:!0},{id:"m-checklist",pic:"check",iconW:"/img/header_check_w.svg",label:"ì¤ë¹ ì²´í¬ë¦¬ì¤í¸",sub:"ì¶êµ ì ì¤ë¹ë¬¼",href:"/checklist",img:"/img/cate/catItem_5.png",color:"#466479",active:!0},{id:"m-activities",pic:"flag",iconW:"/img/header_activity_w.svg",label:"ì¡í°ë¹í°",sub:"ì£¼ë§ ì¦ê¸¸ê±°ë¦¬",href:"/activities",img:"/img/cate/catItem_6.png",color:"#4b7c41",active:!0},{id:"m-reviews",pic:"speech",iconW:"/img/header_review_w.svg",label:"ì°ì í기",sub:"ë¤ë
ì¨ ë¶ë¤ ì´ì¼ê¸°",href:"/reviews",img:"/img/m_review.webp",color:"#732da8",active:!1}],m=[{id:"promo-1",title:"íì§ ìíë ë ë íê², íì ë°ì°¬ í© ìë¹ì¤",href:"/schools",img:"/img/promoPost01.png",color:"#e8480a",imageOnly:!0},{id:"promo-2",title:"ì´íì°ìì í¨ê» ì¦ê¸°ë 골í íë¡ê·¸ë¨",href:"/schools",img:"/img/promoPost02.png",color:"#1f8f5f",imageOnly:!0},{id:"promo-3",title:"ì°ì í íë§, íì§ ë§ì¬ì§ ìì½ ìë¹ì¤",href:"/regions",img:"/img/promoPost03.png",color:"#7c3aed",imageOnly:!0}];a.finder,a.test,a.regions,a.faq,a.checklist,a.activities;let p={tag:"ìë´ë¶í° ì¶êµê¹ì§, ëê¹ì§ í¨ê»í´ì",title:"ìëì´ì íì´ ì´ë ê² ëìë립ëë¤",sub:"í¼ì ìì보기 ì´ë ¤ì´ ê³¼ì , ì ë´íì´ ë¨ê³ë§ë
111¤ ê³ìì ì±ê²¨ëë ¤ì. ìë´\xb7ììì 무ë£ì
ëë¤."},y=[{id:"stat-dept",hi:"ìëì´ ì ë´ë¶ì ì´ì",rest:"ì ìëì ìí©ê³¼ ì·¨í¥ì ë°ìí´ í ë¶ í ë¶ ë§ì¶¤ì¼ë¡ ìë´í´ ë립ëë¤."},{id:"stat-schools",hi:"ìëì´ í¹í ".concat(o.length,"ê³³ ì´íì"),rest:"í리í ì ìì ìëì´ í¹í ì´íìê³¼ ì í´ëì´ ìì´ì. ì ìëê» ë§ë ê³³ì¼ë¡ ìë´ë립ëë¤."},{id:"stat-age",hi:"30ëë¶í° 70ëê¹ì§",rest:"ì§ì¥ì¸ë¶í° ìí´ í ì ëì ì ì¤ë¹íë ë¶ê¹ì§, ì°ë ¹ê³¼ ìí©ì ë§ì¶° ìë´í´ ë립ëë¤."}],f={youtubeId:"uzoALbFh1wc",youtubeIdM:"oEE2C4PYeQo",poster:"/img/finder-bg.png",ytWatchUrl:"https://youtu.be/uzoALbFh1wc"},v={title:"ìµê·¼ ë¤ë
ì¨ ìëì´ ì°ì íì´ë¼ì´í¸",sub:"ë³´ê³ ì¶ì 구ê°ì ì±í°ë¡ ë°ë¡ ê³¨ë¼ ë³´ì¸ì.",credit:"\xa9 ìëì´ì í"},_=[{t:25,label:"íì ìê°"},{t:70,label:"ìì¤\xb7기ìì¬"},{t:120,label:"ìì
íì¥"},{t:170,label:"ë¹ì©\xb7ë§ë¬´ë¦¬"}],w={eyebrow:"ìëì´ì í ìì",title:"ììí íì§ ì´ì¼ê¸°, ììì¼ë¡ ë³´ì¸ì"},k=[{id:"VpyLyEPszTg",t:"ìëì´ ì´íì°ì ì¼ì¸ ",img:"/img/shorts/short_tum1.png"},{id:"i3pT6RSt4YE",t:"ìëì´ ì´íì°ì ì¼ì¸ ",img:"/img/shorts/short_tum2.png"},{id:"O3khPxFcT8g",t:"ìëì´ ì´íì°ì ì¼ì¸ ",img:"/img/shorts/short_tum3.png"}],P={eyebrow:"ìëì´ í¹í ì´íì",title:e=>"ìëì´ í¹í ".concat(e,"ê³³"),tabSub:e=>"ìëì´ ì ìëê» ë§ë ì´íì ".concat(e,"ê³³ì íëì ë³´ê³ ë¹êµíì¸ì.")},b=[{id:"rev-highlight",videoId:"_RXfKDz-J-o",vertical:!1,thumb:"/img/finder-bg.png",name:"ìëì´ ì°ì íì´ë¼ì´í¸",place:"ì¸ë¶",meta:"íì¥ ì¤ì¼ì¹",quote:"ì§ì ë¤ë
ì¨ ìëì´ ì°ì íì¥ì ììì¼ë¡ ë´ìì´ì."},{id:"rev-fella",videoId:"CJeS5C-qta0",vertical:!0,thumb:"",name:"ê¹ââ ì ìë",place:"ì¸ë¶ \xb7 í ë¼2(FELLA)",meta:"3ê°ì ê³¼ì ",quote:"ìì¤ì´ 깨ëíê³ 1:1 ìì
ì´ë¼ ë¶ë´ì´ ììì´ì."},{id:"rev-monol",videoId:"rqdFixKdrOo",vertical:!0,thumb:"",name:"ë°ââ ì ìë",place:"ë°ê¸°ì¤ \xb7 CNS-MONOL",meta:"2ê°ì ê³¼ì ",quote:"ììí ë ì¨ì 골íê¹ì§, 매ì¼ì´ ì¦ê±°ì ìµëë¤."},{id:"rev-cns",videoId:"-G0AQTCePcs",vertical:!0,thumb:"",name:"ì´ââ ì ìë",place:"ë°ê¸°ì¤ \xb7 CNS",meta:"1ê°ì ê³¼ì ",quote:"ìì¥ëì´ ì§ì ì±ê²¨ì£¼ì
ì ë ë íì´ì."},{id:"rev-compare",videoId:"Ov3MV6QCeOQ",vertical:!0,thumb:"",name:"ì ââ ì ìë",place:"ì¸ë¶",meta:"ë¹êµ í기",quote:"ì¬ë¬ íìì ë¹êµí´ë³´ê³ ì í´ì ë§ì¡±ëê° ëìì."}]},4813:function(e,t,r){"use strict";r.d(t,{RS:function(){return a},mI:function(){return n},oj:function(){return i}});let n=[{part:"ìíí¸",q:"기ìíìì ë±êµìê°, 취침ìê° ë± íì¹ì´ ìì´ì",options:[{label:"ê·ì¹ì ì¸ ìí ì¢ìì, ì¤íë ¤ í¸í´ì",type:"good"},{label:"ì¢ ìì ë¡ê² ì§ë´ê³ ì¶ì´ì",type:"mid",solution:"íì¹ì´ ëì¨í íìë¤ë ìì´ì. ì¸ì¶ì´ ìì ë¡ê³ ê·ì¨ì´ ëí íìì¼ë¡ 골ë¼ë릴 ì ìì´ì."},{label:"ëê° ë´ ìíì íµì íë ê±´ ì ë¼ì",type:"bad"}]},{part:"ìíí¸",q:"매 ë¼ë íì ê¸ìì´ ëìì",options:[{label:"ëë ì 먹ì´ì, 문ì ìì´ì",type:"good"},{label:"ìì§í íêµ ììì´ ê·¸ë¦¬ì¸ ê² ê°ìì",type:"mid",solution:"íì 주ë³ì íêµ ìë¹ì´ ìë ê²½ì°ê° ë§ìì. ì¸ìì´ ìì ë¡ì´ íìì¼ë¡ 골ë¼ëë¦¬ê³ ê·¼ì² íìë¹ ì ë³´ë ìë ¤ë릴ê²ì."},{label:"íêµ ìì ìëë©´ ì§ì§ 못 먹ì´ì",type:"bad"}]},{part:"ìíí¸",q:"룸ë©ì´í¸ì ë°©ì ê°ì´ ì¸ ìë ìì´ì",options:[{label:"ì¹êµ¬ ì길 ê² ê°ìì ì¢ìì",type:"good"},{label:"ìì§í í¼ì ì°ê³ ì¶ì´ì",type:"mid",solution:"1ì¸ì¤ì´ ìë íìë¤ì´ ë§ìì. ì ìë ìì°ì ë§ë 1ì¸ì¤ íìì¼ë¡ 골ë¼ë릴 ì ìì´ì."},{label:"기ìì¬ ë§ê³ ë´ê° ìíë ììì¬ì¼ í´ì",type:"bad"}]},{part:"ì±ê²©í¸",q:"ìì
ì¤ì í리거ë 못íë 모ìµì´ ë³´ì¼ ì ìì´ì",options:[{label:"ë°°ì°ë ê±´ë° ë¹ì°íì£ , ê´ì°®ìì",type:"good"},{label:"ë¨ë¤ ìììë ì¢ ë¶ëë¬ì¸ ê² ê°ìì",type:"mid",solution:"그룹ìì
ì ë¹ì·í ë 벨ë¼ë¦¬ ë°°ì¹ë¼ì. ë¶ë´ì¤ë¬ì°ë©´ 1:1 ìì
ì주ë¡ë§ 구ì±íë ê²ë
111 ê°ë¥í´ì."},{label:"못íë 모ìµì ë¨ìê² ë³´ì´ë ê±´ ì ë ì«ì´ì",type:"bad"}]},{part:"ì±ê²©í¸",q:"ëë³´ë¤ ì´ë¦° ì ìëíí
ë°°ì°ê³ , ì¸êµì¸ ì¹êµ¬ë¤ê³¼ ì´ì¸ë ¤ì¼ í´ì",options:[{label:"ë°°ì°ë ì
ì¥ì¸ë° ëì´ê° ë¬´ì¨ ìê´ì´ìì",type:"good"},{label:"ì¡°ê¸ ì´ìí긴 íê² ì§ë§ ê´ì°®ìì",type:"mid",solution:'ì¸êµì¸ ì¹êµ¬ë¤ì ëì´ë¥¼ ë°ì§ì§ ììì. ê·¸ë¥ ê°ì íìì´ìì. ì ìëë í리íììë ê·¸ë¥ "íì"ì¼ë¡ ëì ë°ì¼ì¸ì. ì¤íë ¤ í¸íë¤ê³ íìë ë¶ë¤ì´ ë§ìì.'},{label:"ì´ë¦° ì¬ëíí
ë°°ì°ë ê±´ ìì¡´ì¬ ìí´ì",type:"bad"}]},{part:"ìê°í¸",q:"í ë¬ ì´ì ê°ì¡±, ì§ì ë¹ìì¼ í´ì",options:[{label:"문ì ìì´ì, ì¼ë§ë ì§ ê°ë¥í´ì",type:"good"},{label:"ê°ì¡±ì´ ê±±ì ë긴 í´ì",type:"mid",solution:"íìë§ë¤ ì¸í°ë·ì´ ì ë¼ìì´ì. ë§¤ì¼ ììíµíë¡ ê°ì¡± ì¼êµ´ ë³´ë©´ì ì§ë´ìë ì ìëë¤ ë§ìì."},{label:"í ë¬ ì´ìì ì¬ì ì ì ë ì ë¼ì",type:"bad"}]},{part:"ìê°í¸",q:"ë¹íê¸°ë¡ 4~5ìê° ì´ëí´ì¼ í´ì",options:[{label:"ê´ì°®ìì, 문ì ìì´ì",type:"good"},{label:"ì¤ë ìììë ê² ì¢ íë¤ì´ì",type:"mid",solution:"ì¸ë¶, í´ë½ì ê³µíìì íìê¹ì§ ì´ëìê°ì´ ì§§ìì. ë¹í í ë¹ ë¥´ê² ì¬ì¤ ì ìì´ì."},{label:"ìë£ì ì¼ë¡ ì¥ê±°ë¦¬ ì´ëì´ ì´ë ¤ìì",type:"bad"}]},{part:"ì²´ë ¥í¸",q:"íì§ë 30~35\xb0C ëì´ ë ì¨ìì",options:[{label:"ëì´ ê±° ì¢ìì, 문ì ìì´ì",type:"good"},{label:"ëìì ì¢ ì½í í¸ì´ìì",type:"mid",solution:"ë°ê¸°ì¤ë 1ë
ë´ë´ 18~20\xb0Cìì. ê°ìëì²ë¼ ì ì í´ì ëì ê±±ì ì´ ìì´ì."},{label:"ëì ë문ì ê±´ê°ì 문ì ê° ì길 ì ìì´ì",type:"bad"}]},{part:"ì²´ë ¥í¸",q:"í루 4~6ìê° ììì ìì
í´ì",options:[{label:"문ì ìì´ì, ê±°ë¬í´ì",type:"good"},{label:"ì¢ íë¤ ê² ê°ê¸´ í´ì",type:"mid",solution:"ìì
ê°ëë ì íí ì ìì´ì. í루 4ìê° ì´íë¡ ê°ë³ê² ììíë íìë ìì´ì."},{label:"ìììë ê² ì ì²´ì ì¼ë¡ ë§ì´ íë¤ì´ì",type:"bad"}]}],i=[{emoji:"\uD83C\uDF89",img:"quiz-result-best.png",title:"ëí ëì ìì´ ì¢ìì!",body:'ê±±ì íì¤ ê² íëë ìì´ì. ì§ê¸ ë°ë¡ ë ëì
ë ì¢ìµëë¤. 매ë
ë¹ì·í ê³ ë¯¼ íì
¨ë ë¶ë¤ì´ ë¤ë
ì¤ê³ ëì ê¼ ì´ë ê² ë§ìíì¸ì. "ì ì§ì ì ê°ìê¹ì?"'},{emoji:"â¨",img:"quiz-result-2.png",title:"ì주 ì°ìí´ì!",body:"ê±°ì 모ë ë©´ìì ì ë§ì¼ì¸ì. ì¬ìíê² ì ê²½ ì°ì´ë ë¶ë¶ë§ ì±ê¸°ë©´ ìë²½í ì°ìê° ë ê±°ìì."},{emoji:"\uD83D\uDC4D",img:"quiz-result-3.png",title:"문ì ìì´ì!",body:"ê±±ì ì íì
ë ë©ëë¤. ì ê²½ ì°ì´ë ë¶ë¶ë ì ìëê» ë§ê² 골ë¼ë리면 ê¹ëíê² í´ê²°ë¼ì. ì¶©ë¶í ì ë¤ë
ì¤ì¤ ì ìì´ì."},{emoji:"\uD83D\uDCAA",img:"quiz-result-can.png",title:"ìë´ì¼ë¡ ì¶©ë¶í 극복í ì ìì´ì",body:"ê±±ì ëë ë¶ë¶ì´ ìì¼ìì£ ? ê·¸ëë ë¤ ë°©ë²ì´ ìì´ì. ìë´ íë² í´ë³´ìê² ì´ì? ì ìë ìí©ì ë§ë íìê³¼ ë°©ë²ì ë°ë¡ ì°¾ìë릴ê²ì."},{emoji:"\uD83C\uDF31",img:"quiz-result-prep.png",title:"ì¤ë¹ê° ë íì í ê±° ê°ìì.",body:"í리í ì´íì°ì를 ìí´ìë ì§ê¸ ë¹ì¥ë³´ë¤ë ì¡°ê¸ ë ì¤ë¹ê° ë íìí ê² ê°ìì. ê·¸ëë ê¶ê¸íì ê² ìì¼ë©´ í¸íê² ì°ë½ 주ì¸ì."}];function a(e,t){return e>=3?4:e>=1?3:t>=4?2:t>=1?1:0}},9464:function(e,t,r){"use strict";r.d(t,{U:function(){return n},o:function(){return i}});let n=[{id:"cebu",name:"ì¸ë¶",icon:"\uD83C\uDFD6ï¸",iconImg:"region-cebu.png",keyword:"ì§í 4ìê° \xb7 í¸ë¦¬í ì¸íë¼",img:"https://picsum.photos/seed/cebu-island/600/440",pos:{left:"72%",top:"65%"},good:["ì¸ì²ìì ì§í 4ìê°, ê°ì¥ ê°ê¹ê³ í¸í´ì","íêµ ìë¹\xb7ë§í¸ê° ë§ì ìíì´ í¸í´ì","주ë§ì 골í\xb7ì¤ë
¸í´ë§ ë± ì¦ê¸¸ê±°ë¦¬ê° ë§ìì","íìì´ ë§ì ì í íì´ ëì´ì"],note:["6~10ì ì°ê¸°ì ë¹ê° ì주 ìì","ê´ê´ì§ë¼ ë¤ì ë³µì¡í ì ìì´ì"],recommend:"ì²ì ê°ìë ë¶, ì£¼ë§ ì¡í°ë¹í°ë¥¼ ì¦ê¸°ê³ ì¶ì ë¶"},{id:"baguio",name:"ë°ê¸°ì¤",icon:"\uD83C\uDF3F",iconImg:"region-baguio.png",keyword:"ëì ê±±ì ìë ììí¨",img:"https://picsum.photos/seed/baguio-hill/600/440",pos:{left:"45%",top:"18%"},good:["1ë
ë´ë´ 18~20\xb0C, ëì ê±±ì ì´ ìì´ì","ê°ìëì²ë¼ ì ì íê³ ê³µê¸°ê° ë§ìì","ì¡°ì©í´ì ê³µë¶ì ì§ì¤í기 ì¢ìì","ê°ì¬ì§ì ì¤ë ¥ì´ ì¢ê¸°ë¡ ìë ¤ì ¸ ìì´ì"],note:["ì§íí¸ì´ ìì´ ë§ëë¼ìì ê°ìíì¼ í´ì (5~6ìê°)","ì°ì
ì§íì´ë¼ ì¸ëì´ ë§ìì"],recommend:"ëìì ì½íì ë¶, ì¡°ì©í ê³µë¶ì ì§ì¤íê³ ì¶ì ë¶"},{id:"clark",name:"í´ë½",icon:"\uD83C\uDFD9ï¸",iconImg:"region-clark.png",keyword:"íêµì íê²½ \xb7 ì§í",img:"https://picsum.photos/seed/clark-town/600/440",pos:{left:"51%",top:"38%"},good:["ê³íëìë¼ ê±°ë¦¬ê° ê¹¨ëíê³ ìì í´ì","ê³µíì´ ìê³ íì°í´ ì
êµì´ ë¹ ë¥´ê³ í¸í´ì","íêµ ë§í¸\xb7ìë¹\xb7ë³ìì´ ìì´ í¸í´ì","íêµì íê²½ì´ë¼ ë¯ì¦ì´ ì ì´ì"],note:["ì¦ê¸¸ê±°ë¦¬ê° ë§ì§ ììì","ë ì¨ê° ëì´ í¸ì´ìì"],recommend:"ì²ì í´ì¸ ìíì´ë¼ ê±±ì ëìë ë¶, íêµì íê²½ì´ íìíì ë¶"},{id:"iloilo",name:"ì¼ë¡ì¼ë¡",icon:"\uD83C\uDF3E",iconImg:"region-iloilo.png",keyword:"ì ëë êµì¡ ì ëì",img:"https://picsum.photos/seed/iloilo-city/600/440",pos:{left:"32%",top:"59%"},good:["ê¹ëíê² ì ëë ì ëìë¼ ê±°ë¦¬ê° ì¾ì í´ì","êµì¡ ëìë¼ ë©´í ë¶ìê¸°ê° ì ì¡í ìì´ì","물ê°ê° ì ë ´í´ ë¶ë´ì´ ì ì´ì"],note:["ì§íí¸ì´ ìì´ ê°ìíì¼ í´ì ì´ëì´ ê¸¸ì´ì","íêµ í¸ììì¤ì´ ì ì´ì"],recommend:"ê¹ëíê³ ì°¨ë¶í íê²½ìì ê³µë¶ì ì§ì¤íê³ ì¶ì ë¶"},{id:"bacolod",name:"ë°ì½ë¡ë",icon:"\uD83C\uDF3B",iconImg:"region-bacolod.png",keyword:"ì¸ì¬ ì¢ì 미ìì ëì",img:"https://picsum.photos/seed/bacolod-city/600/440",pos:{left:"58%",to
111p:"57%"},good:["'미ìì ëì'ë¡ ë¶ë¦´ ë§í¼ ì¬ëë¤ì´ ì¹ì í´ì","ì골 ì ì·¨ê° ë¨ì ì ê²¹ê³ ì¬ì ë¡ìì","물ê°ê° ì ë ´í´ ë¶ë´ì´ ì ì´ì"],note:["ì§íí¸ì´ ìì´ ê°ìíì¼ í´ì ì´ëì´ ê¸¸ì´ì","ì¦ê¸¸ê±°ë¦¬ê° ë§ì§ ììì"],recommend:"ë°ë»í ì¸ì¬ ììì ì ê²¹ê³ ì¬ì ë¡ê² ì§ë´ê³ ì¶ì ë¶"},{id:"boracay",name:"ë³´ë¼ì¹´ì´",icon:"\uD83C\uDF0A",iconImg:"region-boracay.png",keyword:"í´ì + ê³µë¶",img:"https://picsum.photos/seed/boracay-beach/600/440",pos:{left:"46%",top:"54%"},good:["ì¸ê³ì ì¼ë¡ ì ëª
í ìë¦ë¤ì´ í´ë³ì´ìì","ê³µë¶íë©° í´ìì í¨ê» ì¦ê¸¸ ì ìì´ì","í´ì ì¡í°ë¹í°ê° íë¶í´ì"],note:["ë§ëë¼ ê²½ì + ë³´í¸ ì´ëì´ë¼ 7~8ìê°ì´ìì","ì±ì기ì 물ê°ê° ì¬ë¼ì"],recommend:"ê³µë¶ì í´ìì í¨ê» ìíìë ë¶"}],i=[{icon:"\uD83D\uDCB0",iconImg:"why-cost.png",title:"ë¹ì© ë¶ë´ì´ ì ì´ì",desc:"ì미ê¶ì 3ë¶ì 1 ë¹ì©ì¼ë¡, íë¹\xb7ìì\xb7ìì¬ê¹ì§ 모ë í¬í¨ë¼ì"},{icon:"\uD83D\uDC68â\uD83C\uDFEB",iconImg:"why-oneonone.png",title:"1:1 ë§ì¶¤ ìì
",desc:"1:1 ìì
ì´ ì¤ì¬ì´ë¼, ë´ ìì¤ê³¼ ìëì ë§ì¶° ì
ì´ í¸ì¼ ëê¹ì§ ë´ëë ¤ì"},{icon:"\uD83D\uDDE3ï¸",iconImg:"why-english.png",title:"ìì´ê° ê³µì©ì´ìì",desc:"í리íì ìì´ê° ê³µì©ì´ë¼, íì ë° ì¼ìììë ìì°ì¤ë½ê² ìì´ë¥¼ ìµíì"},{icon:"âï¸",iconImg:"why-flight.png",title:"ê°ê¹ê³ ìì°¨ê° ìì´ì",desc:"ì§í 4~5ìê°, ìì°¨ë 1ìê°ì´ë¼ ëª¸ì´ í¸í´ì"},{icon:"\uD83C\uDFE0",iconImg:"why-home.png",title:"ììì ì¼ìì¸ë¼ ì ê³µ",desc:"기ìì¬ìì ì§ë´ê³ ìì¬ê° ëìì, ê³µë¶ìë§ ì§ì¤íìë©´ ë¼ì"},{icon:"\uD83C\uDF34",iconImg:"why-resort.png",title:"í´ìë í¨ê» ì¦ê²¨ì",desc:"주ë§ì ìë¦ë¤ì´ ë°ë¤ì 골í, ë§ì¬ì§ë¡ ì¬ì¶©ì í ì ìì´ì"}]},6628:function(e,t,r){"use strict";r.d(t,{_:function(){return n}});let n=[{id:"eedu_eco",schoolCode:"EEDU_ECO",name:"A&J e-Edu ìì½ ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"ìì½ ë¦´ë ì¤",price4Weeks:75e4,currency:"KRW",classDetails:"1:1 3H + ìµì
1H = ì´ 4H"},{name:"ìì½ ë¦´ë ì¤ íë¬ì¤",price4Weeks:85e4,currency:"KRW",classDetails:"1:1 3H + 그룹 2H + ìµì
1H = ì´ 6H"},{name:"ìì½ íë¸",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H"},{name:"ìì½ ì¤í르í",price4Weeks:125e4,currency:"KRW",classDetails:"1:1 6H + ìµì
1H = ì´ 7H"},{name:"TEST ì½ì¤ (í ìµ/í í/ìì´ìì¸ /PTE)",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H"},{name:"í ìµ ë³´ì¥ë°",price4Weeks:105e4,currency:"KRW",note:"í ìµ ë³´ì¥ë°. 12주 315ë§ì / 16주 420ë§ì. 4주 íì°ê° 105ë§ì (12주\xf73 기ì¤).",classDetails:"1:1 4H + 그룹 2H = ì´ 6H"},{name:"ìì´ìì¸ ë³´ì¥ë° (ì .í)",price4Weeks:115e4,currency:"KRW",note:"ìì´ìì¸ ë³´ì¥ë° (ì .í). 12주 345ë§ì / 20주 575ë§ì / 24주 690ë§ì. 4주 íì°ê° 115ë§ì (12주\xf73 기ì¤).",classDetails:"1:1 5H + 그룹 2H = ì´ 7H"}],dormitories:[{name:"DELUXE 1ì¸ì¤",capacity:1,price4Weeks:155e4,currency:"KRW"},{name:"DELUXE 2ì¸ì¤",capacity:2,price4Weeks:105e4,currency:"KRW"},{name:"DELUXE 3ì¸ì¤",capacity:3,price4Weeks:9e5,currency:"KRW"},{name:"PREMIUM 1ì¸ì¤",capacity:1,price4Weeks:175e4,currency:"KRW"},{name:"PREMIUM 2ì¸ì¤",capacity:2,price4Weeks:125e4,currency:"KRW"},{name:"PREMIUM ì¤ìí¸",price4Weeks:22e5,currency:"KRW"},{name:"PREMIUM STUDIO 1ì¸ì¤",capacity:1,price4Weeks:175e4,currency:"KRW"},{name:"PREMIUM STUDIO 2ì¸ì¤",capacity:2,price4Weeks:125e4,currency:"KRW"},{name:"PREMIUM STUDIO 3ì¸ì¤",capacity:3,price4Weeks:127e4,currency:"KRW"},{name:"PREMIUM STUDIO 4ì¸ì¤",capacity:4,price4Weeks:12e5,currency:"KRW"},{name:"ECO VILLA 1ì¸ì¤",capacity:1,price4Weeks:24e5,currency:"KRW"},{name:"ECO VILLA 2ì¸ì¤",capacity:2,price4Weeks:14e5,currency:"KRW"},{name:"ECO VILLA 3ì¸ì¤",capacity:3,price4Weeks:127e4,currency:"KRW"}],picks:{lowest:{dorm:"DELUXE 3ì¸ì¤"},recCombo:{course:"ìì½ ë¦´ë ì¤"}},registrationFee:{note:"ë±ë¡ê¸ â©100,000",amount:1e5,currency:"KRW"},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ìì°¨ì§. 2026.6.29~8.22, ì£¼ë¹ 50,000ì."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 8주",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 12주",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 16주",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 20주",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 24주",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì í¸ë¦¬í°ë¹ (ëëì¤)",amount:2500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì í¸ë¦¬í°ë¹ (í리미ì&ìì½ë¹ë¼)",amount:3500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì í¸ë¦¬í°ë¹ (ì¤ìí¸)",amount:4e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ì ì§ë¹ (ëëì¤)",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ì ì§ë¹ (í리미ì&ìì½ë¹ë¼)",amount:1500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (ëëì¤)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (í리미ì&ìì½ë¹ë¼)",amount:5e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íì ìì´ë ì¹´ëë¹",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"}]},{id:"bcebu",schoolCode:"BCEBU",name:"B'CEBU",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"LITE ESL",price4Weeks:85e4,currency:"KRW",note:"1:1ìì
4H. ì¬ì ìë ìì
ì¤ì¼ì¥´ì ì í¸íë ìëì´ ë° ë³´í¸ì.",classDetails:"1:1 4H = ì´ 4H"},{name:"SPEED ESL",price4Weeks:95e4,currency:"KRW",note:"1:1ìì
4H + 그룹ìì
2H + ìµì
ìì
2H. 기ì´ê³¼ì ë¶í° ê³ ê¸ê³¼ì ê¹ì§, ê°ì¥ ëíì ì¸ ESLì½ì¤.",classDetails:"1:1 4H + 그룹 2H = ì´ 6H (+ ìµì
2H ì í)"},{name:"B'SPARTA",price4Weeks:115e4,currency:"KRW",note:"1:1ìì
5H + 그룹ìì
2H + ìµì
ìì
3H + ì무ììµ 2H. í루 12ìê°ì ì²´ê³ì ì¸ íìµ íë¡ê·¸ë¨ì ìíë íì.",classDetails:"1:1 5H + 그룹 2H + ì무ììµ 2H = ì´ 9H (+ ìµì
3H ì í)"},{name:"INTENSIVE ESL",price4Weeks:115e4,currency:"KRW",note:"1:1ìì
6H + ìµì
ìì
2H. ì§ì¤ì ì¸ 1:1 ìì
ì ì í¸íë íìì´ë ìì´ì´ë³´ íì.",classDetails:"1:1 6H = ì´ 6H (+ ìµì
2H ì í)"},{name:"IELTS 기본ë°",price4Weeks:115e4,currency:"KRW",note:"1:1ìì
4H + 그룹ìì
2H + ìµì
ìì
2H. ìì´ìì¸ ê³µì¸ìíì 본 ì ìë ì´ë³´ìë 기본ë 벨ì íì.",classDetails:"1:1 4H + 그룹 2H = ì´ 6H (+ ìµì
2H ì í)"},{name:"BUSINESS",price4Weeks:115e4,currency:"KRW",note:"1:1ìì
4H + 그룹ìì
2H + ìµì
ìì
2H. ë¹ì§ëì¤ ì
무ì ëí ëí,íì,í리ì í
ì´ì
ì¤í¬ì ìíë íì.",classDetails:"1:1 4H + 그룹 2H = ì´ 6H (+ ìµì
2H ì í)"},{name:"IELTS ë³´ì¥ë°",price4Weeks:125e4,currency:"KRW",note:"1:1ìì
4H + 그룹ìì
2H + ì무ìì
2H. 4.0 ì´ìì ê³µì¸ì ì를 ë³´ì ì¤ì¸ íì (12주 ì´ì ë±ë¡ê°ë¥).",classDetails:"1:1 4H + 그룹 2H + ì무ìì
2H = ì´ 8H"}],dormitories:[{name:"1ì¸ì¤ (ë§íë·°)",capacity:1,price4Weeks:175e4,currency:"KRW"},{name:"1ì¸ì¤ (건물뷰)",capacity:1,price4Weeks:165e4,currency:"KRW"},{name:"2ì¸ì¤ 리ë¹",capacity:2,price4Weeks:145e4,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:105e4,currency:"KRW"},{name:"2+1ì¸ì¤",capacity:1,price4Weeks:1e6,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:85e4,currency:"KRW"}],picks:{recDorms:["1ì¸ì¤ (건물뷰)","1ì¸ì¤ (ë§íë·°)","2ì¸ì¤"]},registrationFee:{note:"ë±ë¡ë¹ 10ë§ì",amount:1e5,currency:"KRW"},surcharges:[{amountPerWeek:5e4,startDate:"2026-07-05",endDate:"2026-08-15",currency:"KRW",note:"ìì°¨ì§ë ë¹ì기 íë¡ëª¨ì
ì ì© ë¶ê°. ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"59ì¼ ì´ê³¼ ì²´ë¥ì",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (5~8주)",amount:5130,currency:"PHP",chargeUnit:"per_person",trigger:"5주 ì´ì",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (9~12주)",amount:11530,currency:"PHP",chargeUnit:"per_person",trigger:"9주 ì´ì",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (13~16주)",amount:15960,currency:"PHP",chargeUnit:"per_person",trigger:"13주 ì´ì",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (17~20주)",amount:20390,currency:"PHP",chargeUnit:"per_person",trigger:"17주 ì´ì",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (21~24주)",amount:24820,currency:"PHP",chargeUnit:"per_person",trigger:"21주 ì´ì",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìë/ì 기ì¸",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"}
111,{category:"í½ì
/ìë©",name:"ë§íêµì ê³µí í½ì
",amount:1e3,currency:"PHP",chargeUnit:"per_visit"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_person"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:200,currency:"PHP",chargeUnit:"per_usage"}]},{id:"beci_eop",dormNote:"ë§ 40ì¸ë¶í°ë 1ì¸ì¤ë§ ì¬ì© ê°ë¥í©ëë¤. 그룹 ìì
ì ìµë 6ëª
ì¼ë¡ ì§íë©ëë¤.",schoolCode:"BECI_THE_CAFE",name:"BECI EOPìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"Lite ESL (EOPìº í¼ì¤)",classDetails:"1:1 2H + 그룹 2H = ì´ 4H (+ ì¼ê° 2H ì í)",price4Weeks:7e5,currency:"KRW"},{name:"Speed ESL (EOPìº í¼ì¤)",classDetails:"1:1 4H + 그룹 2H = ì´ 6H (+ ì¼ê° 2H ì í)",price4Weeks:9e5,currency:"KRW"},{name:"Sparta ESL (EOPìº í¼ì¤)",classDetails:"1:1 5H + 그룹 2H + ì¼ê° 2H(ì무) = ì´ 9H",price4Weeks:1e6,currency:"KRW"}],dormitories:[{name:"ë§ì¤í° 1ì¸ì¤ (EOP)",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"ë ê·¤ë¬ 1ì¸ì¤ (EOP)",capacity:1,price4Weeks:12e5,currency:"KRW"},{name:"2ì¸ì¤ (EOP)",capacity:2,price4Weeks:9e5,currency:"KRW"},{name:"3ì¸ì¤ (EOP)",capacity:3,price4Weeks:7e5,currency:"KRW"},{name:"4ì¸ì¤(ì¬ì) (EOP)",capacity:4,price4Weeks:6e5,currency:"KRW"}],registrationFee:{amount:0,note:"ë±ë¡ê¸ ë³ë ëª
ì ìì",currency:"KRW"},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ìì°¨ì§. 2026.6.29~8.22 (ì´ 8주), ì£¼ë¹ 50,000ì."}],localFees:[{category:"êµì¬ë¹",name:"êµì¬ë¹",currency:"PHP",amountText:"ìë´ ì ìë´"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",currency:"PHP",amountText:"ìë´ ì ìë´"},{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 5~8주",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~12주",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~16주",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~20주",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~24주",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìë/ì 기ì¸",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (íë¶ê°ë¥)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:1500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"}]},{id:"beci_city",schoolCode:"BECI_CITY",name:"BECI ìí°ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"Lite ESL (ìí°ìº í¼ì¤)",classDetails:"1:1 2H + 그룹 2H = ì´ 4H (+ ìµì
(ì¼ê°) 2H ì í)",price4Weeks:7e5,currency:"KRW"},{name:"Native ESL (ìí°ìº í¼ì¤)",classDetails:"1:1 4H(í리í 3H + ë¤ì´í°ë¸ 1H) + 그룹 2H(í리í 1H + ë¤ì´í°ë¸ 1H) = ì´ 6H (+ ëì´í¸ìµì
2H ì í)",price4Weeks:1e6,currency:"KRW"},{name:"Unlimited ESL (ìí°ìº í¼ì¤)",classDetails:"1:1 í루 ìµë 8H = ì´ 8H (+ ìµì
2H ì í)",price4Weeks:11e5,currency:"KRW"}],dormitories:[{name:"ì¤íëì¤ 1ì¸ì¤ (ìí°)",capacity:1,price4Weeks:17e5,currency:"KRW"},{name:"ì¤íëì¤ 2ì¸ì¤ (ìí°)",capacity:2,price4Weeks:11e5,
111currency:"KRW"},{name:"ì¤íëì¤ 4ì¸ì¤ (ìí°)",capacity:4,price4Weeks:85e4,currency:"KRW"},{name:"ì¸ë¯¸ë§ì¤í° 1ì¸ì¤ (ìí°)",capacity:1,price4Weeks:15e5,currency:"KRW"},{name:"ì¸ë¯¸ 1ì¸ì¤ (ìí°)",capacity:1,price4Weeks:12e5,currency:"KRW"}],registrationFee:{note:"ë±ë¡ê¸ ë³ë ëª
ì ìì",amount:0,currency:"KRW"},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ìì°¨ì§. 2026.6.29~8.22 (ì´ 8주), ì£¼ë¹ 50,000ì."}],localFees:[{category:"í½ì
/ìë©",name:"í½ì
ë¹",currency:"PHP",amountText:"ë§ëë¼ 3,000 / í´ë½ 2,500"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ì½ì¤ë³)",currency:"PHP",amountText:"Lite ESL 1,000 / Speed\xb7Native ESL 1,500 / 24\xb7IELTS\xb7TOEIC\xb7Sparta ESL 2,000"},{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 5~8주",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~12주",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~16주",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~20주",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ ~24주",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìë/ì 기ì¸",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (íë¶ê°ë¥)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:1500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"}]},{id:"blue_ocean",schoolCode:"BLUE_OCEAN",name:"CEBU BLUE OCEAN",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ë¼ì´í¸ ESL4",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H = ì´ 4H"},{name:"ì¸í
ìë¸ ESL",price4Weeks:118e4,currency:"KRW",classDetails:"1:1 5H + 4:1 2H = ì´ 7H"},{name:"íì ESL5",price4Weeks:113e4,currency:"KRW",note:"2과목 ë³ê²½ê°ë¥(ìë´íì)",classDetails:"1:1 5H = ì´ 5H"},{name:"íì ESL7",price4Weeks:138e4,currency:"KRW",note:"2과목 ë³ê²½ê°ë¥(ìë´íì)",classDetails:"1:1 7H = ì´ 7H"},{name:"ìë°ì´ë² ESL (ìµë 4주)",price4Weeks:128e4,currency:"KRW",note:"ì ìëê³¼ ì¨í°í¬ì´ 1í, ì¡í°ë¹í° 1í ë¹ì©í¬í¨",classDetails:"1:1 4H + 4:1 2H = ì´ 6H"},{name:"ë¹ì¦ëì¤",price4Weeks:138e4,currency:"KRW",classDetails:"1:1 5H + 그룹 2H(5~6:1) = ì´ 7H"},{name:"í ìµ",price4Weeks:12e5,currency:"KRW",classDetails:"1:1 5H + 4:1 2H = ì´ 7H"},{name:"ìì´ìì¸ ",price4Weeks:133e4,currency:"KRW",classDetails:"1:1 5H + 4:1 2H = ì´ 7H"},{name:"ë¶ëª¨ ì½ì¤",price4Weeks:88e4,currency:"KRW",note:"ë³´í¸ì ì½ì¤ 1ìê° ìë
ìê² ìë ê°ë¥",classDetails:"1:1 3H = ì´ 3H"}],dormitories:[{name:"2ì¸ì¤ ì¤ì
ë·° (ë´ë¶/EGI)",capacity:2,price4Weeks:123e4,currency:"KRW"},{name:"2ì¸ì¤ ì¨í°ë·° (ë´ë¶/EGI)",capacity:2,price4Weeks:96e4,currency:"KRW"},{name:"3ì¸ì¤ ì¤ì
ë·° (ë´ë¶/EGI)",capacity:3,price4Weeks:91e4,currency:"KRW"},{name:"1ì¸ì¤ ì¤ì
ë·° (Ocean Suites)",capacity:1,price4Weeks:18e5,currency:"KRW"},{name:"1ì¸ì¤ ëëì¤ (Ocean Suites)",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"1ì¸ì¤ ìíë¦¬ì¼ (Ocean Suites)",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"ëëì¤ ì»¤í룸 (Ocean Suites)",capacity:2,price4Weeks:96e4,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ë¹ 10ë§ì"},surcharges:[{amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP",name:"SSP I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"59ì¼ ì´ê³¼",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (12주 ì´í)",amount:11550,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (16주 ì´í)",amount:15990,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (20주 ì´í)",amount:20430,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (24주 ì´í)",amount:24870,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"í½ì
/ìë©",name:"Sending Fee",amount:1e3,currency:"PHP",chargeUnit:"per_visit"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"ìì´ë ì¹´ë",amount:300,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:1500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì¸íë¹",name:"ì¸í+ê±´ì¡°",amount:200,currency:"PHP",chargeUnit:"per_usage"}]},{id:"cella_uni",schoolCode:"CELLA_UNI",name:"CELLA ì ë ì¤í르í ìº í¼ì¤",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ì¤í르í íìì¤í¼í¹ 1",price4Weeks:11e5,
111currency:"KRW",classDetails:"1:1 4íì + 그룹 4íì = ì´ 8íì"},{name:"ì¤í르í íìì¤í¼í¹ 2",price4Weeks:13e5,currency:"KRW",classDetails:"1:1 6íì + 그룹 2íì = ì´ 8íì"},{name:"í ìµ ì
문ë°",price4Weeks:13e5,currency:"KRW",classDetails:"1:1 4H + ESL그룹 4H(Prep) = ì´ 8H"},{name:"í ìµ ì§ì¤ë°",price4Weeks:145e4,currency:"KRW",classDetails:"1:1 4H + TOEIC그룹 4H(Int) = ì´ 8H"},{name:"ìì´ìì¸ ì
문ë°",price4Weeks:13e5,currency:"KRW",classDetails:"1:1 4H + ESL그룹 4H(Prep) = ì´ 8H"},{name:"ìì´ìì¸ ì§ì¤ë°",price4Weeks:145e4,currency:"KRW",classDetails:"1:1 4H + IELTS그룹 4H(Int) = ì´ 8H"},{name:"ìì´ìì¸ ë³´ì¥ë° (12주)",price4Weeks:17e5,currency:"KRW",note:"12주 ë±ë¡ íì",classDetails:"1:1 6H + IELTS그룹 2H = ì´ 8H"},{name:"í
ì (TESOL)",price4Weeks:185e4,currency:"KRW",note:"ë±ë¡ ì ì¨ë¼ì¸ ì¸í°ë·° íµê³¼ íì. ììì¼: 1/4, 2/1, 3/1, 3/29, 4/26, 5/24, 6/21, 7/19, 8/16, 9/13, 10/11, 11/8 (2026)",classDetails:"2:8 6íì + E-Learning 2íì = ì´ 8íì"}],dormitories:[{name:"ì ë 1ì¸ì¤",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"ì ë 2ì¸ì¤",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"ì ë 3ì¸ì¤",capacity:3,price4Weeks:85e4,currency:"KRW"},{name:"ì ë 4ì¸ì¤",capacity:4,price4Weeks:75e4,currency:"KRW"},{name:"JDN ì¸ë¶ 1ì¸ì¤",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"JDN ì¸ë¶ 2ì¸ì¤",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"JDN ì¸ë¶ 3ì¸ì¤",capacity:3,price4Weeks:85e4,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ê¸ 10ë§ì ë³ë"},surcharges:[{amountPerWeek:5e4,startDate:"2026-07-05",endDate:"2026-08-30",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"59ì¼ì´ì ì²´ë¥ì",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (9~12주)",amount:11550,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨~ (ì¶ê° 1ë¬ì©)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:300,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amountByWeeks:{4:5e3,8:5e3,12:8e3},currency:"PHP"},{category:"í½ì
/ìë©",name:"í½ì
",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ (ê¶ë¹)",amount:200,currency:"PHP",chargeUnit:"per_person"}]},{id:"cella_premium",schoolCode:"CELLA_PREMIUM",name:"CELLA í리미ì ìº í¼ì¤",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ë¼ì´í¸ ESL (ì¤ì /ì¤í)",price4Weeks:95e4,currency:"KRW",note:"ê°ë³ ëª
ìê° ê¸°ì¤(í©ì°í 85ë§ ìë¹ì´ë ê°ë³ê° ì°ì )",classDetails:"1:1 3H + 그룹 1H(ì¤ì /ì¤í í1) = ì´ 4H"},{name:"íìì¤í¼í¹ 1",price4Weeks:11e5,currency:"KRW",note:"ê°ë³ ëª
ìê° ê¸°ì¤",classDetails:"1:1 4H + 그룹 4H(기본 ì½ì¤) = ì´ 8H"},{name:"íìì¤í¼í¹ 2",price4Weeks:13e5,currency:"KRW",note:"ê°ë³ ëª
ìê° ê¸°ì¤",classDetails:"1:1 6H + 그룹 2H(ë¨ê¸° ì§ì¤) = ì´ 8H"},{name:"ì¤í½(OPIC) ì
문ë°",price4Weeks:13e5,currency:"KRW",classDetails:"1:1 4H + ESL 그룹 4H = ì´ 8H"},{name:"ì¤í½(OPIC) ì§ì¤ë°",price4Weeks:145e4,currency:"KRW",classDetails:"1:1 4H + ì¤í½ 그룹 4H = ì´ 8H"},{name:"ë¹ì¦ëì¤(BPE) ì
문ë°",price4Weeks:13e5,currency:"KRW",classDetails:"1:1 3H + 그룹 4H = ì´ 7H"},{name:"ë¹ì¦ëì¤(BPE) ì§ì¤ë°",price4Weeks:145e4,currency:"KRW",classDetails:"1:1 3H + 그룹 4H = ì´ 7H"},{name:"ìµì¤íë ì(EXP) ë¨ê¸°ë³´ì¥ì½ì¤",price4Weeks:11e5,
111currency:"KRW",note:"ë¨ê¸° ìì
ë³´ì¥. 1~4주 ì ì©. í©ì°í ìì°ê°(110ë§) ì ì©, ëª
ì ë¨ê° 본ì¬íì¸ íì",classDetails:"1:1 9H + 그룹 1H = ì´ 10H"}],dormitories:[{name:"1ì¸ì¤ (í리미ì ë´ë¶)",capacity:1,price4Weeks:165e4,currency:"KRW"},{name:"ì¸ë¯¸ 1ì¸ì¤ (ë´ë¶)",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"2ì¸ì¤ (ë´ë¶)",capacity:2,price4Weeks:12e5,currency:"KRW"},{name:"4ì¸ì¤ (ë´ë¶)",capacity:4,price4Weeks:85e4,currency:"KRW"},{name:"6ì¸ì¤ (ë´ë¶)",capacity:6,price4Weeks:65e4,currency:"KRW"},{name:"ì¸ë¶ ALICIA 1ì¸ì¤",capacity:1,price4Weeks:165e4,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ê¸ 10ë§ì ë³ë"},surcharges:[{amountPerWeek:2e5,startDate:"2026-12-20",endDate:"2027-01-02",currency:"KRW",note:"ê°ì¡±ì°ì í¨í¤ì§ ëì. ì£¼ë¹ 20ë§ì"},{amountPerWeek:5e4,startDate:"2026-07-05",endDate:"2026-08-30",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ì 10% ì íì í ì¸ ê°ë¥"}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card(59ì¼â)",amount:4e3,currency:"PHP",chargeUnit:"per_person"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨(5~8주)",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨(9~12주)",amount:6410,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨(13~16주)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:300,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:8e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹ 200~600)",amount:400,currency:"PHP",chargeUnit:"per_person"}]},{id:"cg_banilad",schoolCode:"CG_BANILAD",name:"CG (Banilad ìº í¼ì¤)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Semi-Sparta (ESL)",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 4H + 1:4 4H = ì´ 8H (+ Optional 2H ì í)"},{name:"Premier Semi-Sparta (ESL)",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 5H + 1:4 3H = ì´ 8H"},{name:"Light (ESL)",price4Weeks:8e5,currency:"KRW",note:"ê°ë³ ëª
ìê° ê¸°ì¤ (í©ì°íë 75ë§ ìë¹ì´ë ê°ë³ê° ì°ì )",classDetails:"1:1 4H = ì´ 4H (+ Optional 2H ì í)"},{name:"General (ESL)",price4Weeks:85e4,currency:"KRW",classDetails:"1:1 4H + 1:4 2H = ì´ 6H (+ Optional 2H ì í)"},{name:"Intensive (ESL)",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 5H + 1:4 1H = ì´ 6H (+ Optional 2H ì í)"},{name:"Power (ESL)",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 6H = ì´ 6H (+ Optional 2H ì í)"},{name:"IELTS Basic",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(IELTS 2+ESL 2) + 1:4 4H(IELTS 2+ESL 2) = ì´ 8H (+ Optional 2H ì í)"},{name:"TOEIC Course",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(TOEIC 2+ESL 2) + 1:4 4H(TOEIC 2+ESL 그룹ìì
) = ì´ 8H (+ Optional 2H ì í)"},{name:"Business English",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(Business 2+ESL 2) + 1:4 4H(Native 2+ESL 2) = ì´ 8H (+ Optional 2H ì í)"}],dormitories:[{name:"1ì¸ì¤ (ë´ë¶)",capacity:1,price4Weeks:115e4,currency:"KRW"},{name:"2ì¸ì¤ (ë´ë¶)",capacity:2,price4Weeks:9e5,currency:"KRW"},{name:"3ì¸ì¤ (ë´ë¶)",capacity:3,price4Weeks:8e5,currency:"KRW"},{name:"4ì¸ì¤ (ë´ë¶)",capacity:4,price4Weeks:75e4,currency:"KRW"},{name:"ì¸ë¶ Alicia 1ì¸ì¤",capacity:1,price4Weeks:16e5,currency:"KRW"}
111,{name:"ì¸ë¶ Alicia 2ì¸ì¤",capacity:2,price4Weeks:11e5,currency:"KRW"},{name:"ì¸ë¶ Alicia 3ì¸ì¤",capacity:3,price4Weeks:1e6,currency:"KRW"},{name:"ì¸ë¶ Alicia 4ì¸ì¤",capacity:4,price4Weeks:95e4,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 1ì¸ì¤",capacity:1,price4Weeks:18e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 2ì¸ì¤",capacity:2,price4Weeks:13e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 3ì¸ì¤",capacity:3,price4Weeks:12e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 4ì¸ì¤",capacity:4,price4Weeks:11e5,currency:"KRW"},{name:"ì¸ë¶ M&J Pension 1ì¸ì¤",capacity:1,price4Weeks:13e5,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ê¸ 10ë§ì (íë¶ë¶ê°)"},surcharges:[{amountPerWeek:5e4,startDate:"2026-07-05",endDate:"2026-08-30",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP (Special Study Permit)",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"E-Card (SSP)",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:5160,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (9~12주)",amount:6390,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (13~16주)",amount:4460,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê³µì© ì 기ì¸",amount:4e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹ 250~450)",amount:350,currency:"PHP",chargeUnit:"per_person"}]},{id:"cg_sparta",schoolCode:"CG_SPARTA",name:"CG (Sparta ìº í¼ì¤)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"sparta",minWeeks:1,courses:[{name:"Sparta (ESL)",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 4H + 1:4 4H + Voca Test&Essay 1H + ì무ìì¨ 2H = ì´ 11H (+ Evening(문ë²/TOEIC L/IELTS L ëë Self) ì í)"},{name:"Premier Sparta (ESL)",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 5H + 1:4 3H + Voca&Essay 1H + ì무ìì¨ 2H = ì´ 11H"},{name:"TOEIC",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(TOEIC 2+ESL 2) + 1:4 4H(TOEIC 2+ESL 2) + ì무ìì¨ 2H = ì´ 10H"},{name:"TOEIC Premier",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H(TOEIC 3+ESL 2) + 1:4 3H(TOEIC 2+ESL 1) + ì무ìì¨ 2H = ì´ 10H"},{name:"IELTS Basic",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(IELTS 2+ESL 2) + 1:4 4H(IELTS 2+ESL 2) + ì무ìì¨ 2H = ì´ 10H"},{name:"IELTS Intensive",price4Weeks:11e5,currency:"KRW",classDetails:"1:1 4H(S/W/R/Grammar) + ì그룹 4H(IELTS Listening 2+Speaking 2) + IELTS Voca 1H + ì무ìì¨ 2H = ì´ 11H"},{name:"IELTS Guarantee",price4Weeks:125e4,currency:"KRW",note:"기본 12주 ì½ì¤",classDetails:"1:1 4H(S/W/R/G) + ì그룹 4H(Listening\xb7IELTS Prep) + IELTS Voca 1H + ì무ìì¨ 2H = ì´ 11H"},{name:"Business English",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H(Business 2+ESL 2) + 1:4 4H(Native 2+ESL 2) + ì무ìì¨ 2H = ì´ 10H"}],dormitories:[{name:"1ì¸ì¤ (ë´ë¶)",capacity:1,price4Weeks:105e4,currency:"KRW"},{name:"2ì¸ì¤ (ë´ë¶)",capacity:2,price4Weeks:9e5,currency:"KRW"},{name:"3ì¸ì¤ (ë´ë¶)",capacity:3,price4Weeks:8e5,currency:"KRW"},{name:"4ì¸ì¤ (ë´ë¶)",capacity:4,price4Weeks:75e4,currency:"KRW"},{name:"ì¸ë¶ Alicia 1ì¸ì¤",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"ì¸ë¶ Alicia 2ì¸ì¤",capacity:2,price4Weeks:11e5,currency:"KRW"},{name:"ì¸ë¶ Alicia 3ì¸ì¤",capacity:3,price4Weeks:1e6,currency:"KRW"},{name:"ì¸ë¶ Alicia 4ì¸ì¤",capacity:4,price4Weeks:95e4,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 1ì¸ì¤",capacity:1,price4Weeks:18e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 2ì¸ì¤",capacity:2,price4Weeks:13e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 3ì¸ì¤",capacity:3,price4Weeks:12e5,currency:"KRW"},{name:"ì¸ë¶ 88th Avenue 4ì¸ì¤",capacity:4,price4Weeks:11e5,
111currency:"KRW"},{name:"ì¸ë¶ M&J Pension 1ì¸ì¤",capacity:1,price4Weeks:13e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ë±ë¡ê¸ 10ë§ì (íë¶ë¶ê°)",currency:"KRW"},surcharges:[{amountPerWeek:5e4,startDate:"2026-07-05",endDate:"2026-08-30",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP (Special Study Permit)",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"E-Card (SSP)",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"í½ì
/ìë©",name:"í½ì
ë¹",currency:"PHP",amountText:"ìë´ ì ìë´"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:5160,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (9~12주)",amount:11550,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (13~16주)",amount:4460,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê³µì© ì 기ì¸",amountByWeeks:{4:2e3,8:4e3,12:6e3},currency:"PHP"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_visit"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:350,currency:"PHP",chargeUnit:"per_usage"}]},{id:"cia",schoolCode:"CIA",name:"CIA (Cebu International Academy)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ESL Regular",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 4H + ì 1H + ì¤ 1H + ë 1H + Self-Writing 1H + Self-Study 1H = ì´ 9êµì (+ ìµì
(Elective) 1H ì í)"},{name:"ESL Intensive",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 5H + ì 1H + ì¤ 1H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"ESL Power Intensive",price4Weeks:11e5,currency:"KRW",classDetails:"1:1 6H + ì 1H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"Certified University",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H + ì 1H + ì¤ 1H + ë 1H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"Callan Method",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H + ì 1H + ì¤ 1H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"TOEIC (Pre/Regular/Guarantee)",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H + ì 1H + ì¤ 2H + Self-Writing 1H(Self Reading) + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"IELTS (Pre/Regular/Guarantee)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + ì 1H + ì¤ 2H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"},{name:"Business Course",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H + ì 1H + ì¤ 1H + Self-Writing 1H + Self-Study 1H = ì´ 9H (+ ìµì
1H ì í)"}],dormitories:[{name:"Premium Single",capacity:1,price4Weeks:19e5,currency:"KRW"},{name:"Standard Single",capacity:1,price4Weeks:17e5,currency:"KRW"},{name:"Twin",capacity:2,price4Weeks:125e4,currency:"KRW"},{name:"Triple",capacity:3,price4Weeks:105e4,currency:"KRW"},{name:"Quad",capacity:4,price4Weeks:9e5,currency:"KRW"},{name:"Suite Single",capacity:1,price4Weeks:29e5,currency:"KRW"},{name:"Suite Twin",capacity:2,price4Weeks:17e5,currency:"KRW"},{name:"Suite Triple",capacity:3,price4Weeks:14e5,currency:"KRW"},{name:"Suite Quad",capacity:4,price4Weeks:12e5,currency:"KRW"},{name:"Pinnacle Single",capacity:1,price4Weeks:19e5,currency:"KRW"}],picks:{recCombo:{course:"ESL Regular",dorm:"Standard Single"}},registrationFee:{note:"ë±ë¡ê¸ 10ë§ì",amount:1e5,currency:"KRW"},surcharges:[{amountPerWeek:5e4,startDate:"2026-06-14",endDate:"2026-08-08",currency:"KRW",note:"ìì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."},{amountPerWeek:5e4,startDate:"2027-01-18",endDate:"2027-02-14",currency:"KRW"}],localFees:[{category:"SSP",name:"SSP",amount:8e3,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"8주 ì´ê³¼",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (8주)",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (12주)",amount:11540,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (16주)",amount:16080,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (20주)",amount:20620,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (24주)",amount:25160,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì¢
í©ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:250,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:2500,currency:"PHP",chargeUnit:"per_person"}
111,{category:"í½ì
/ìë©",name:"ê³µí í½ì
/ìë©",amount:1e3,currency:"PHP",chargeUnit:"per_visit"},{category:"íìì¦/ì¬ì§",name:"ID CARD / ì¬ì§ë¹",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_person"}]},{id:"cij",schoolCode:"CIJ",name:"CIJ Academy & School",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ESL 4",price4Weeks:8e5,currency:"KRW",classDetails:"1:1 4H = ì´ 4H"},{name:"General ESL",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 4H + 그룹 2H = ì´ 6H"},{name:"Basic Speaking",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H + ì그룹 3H + ë그룹 1H + ììµ 1H = ì´ 9H"},{name:"Power Speaking",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H + ì그룹 2H + ë그룹 1H + ììµ 1H = ì´ 9H"},{name:"Sparta 5",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H + ì그룹 2H + ë그룹 1H + ììµ 1H + ë³´ì¹´í
ì¤í¸ 2H = ì´ 11H"},{name:"Sparta 6",price4Weeks:12e5,currency:"KRW",classDetails:"1:1 6H + ì그룹 2H + ë그룹 1H + ììµ 1H + ë³´ì¹´í
ì¤í¸ 2H = ì´ 12H"},{name:"IELTS Basic",price4Weeks:125e4,currency:"KRW",classDetails:"1:1 5H + ì그룹 3H + ë그룹 1H + ììµ 1H + ë³´ì¹´í
ì¤í¸ 2H = ì´ 12H"}],dormitories:[{name:"ë´ë¶(릴ë¡ì) 1ì¸ì¤",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"ë´ë¶(릴ë¡ì) 2ì¸ì¤",capacity:2,price4Weeks:105e4,currency:"KRW"},{name:"ë´ë¶(릴ë¡ì) 3ì¸ì¤(ê°ì¡±)",capacity:3,price4Weeks:95e4,currency:"KRW"},{name:"ë´ë¶(릴ë¡ì) 4ì¸ì¤(ê°ì¡±)",capacity:4,price4Weeks:9e5,currency:"KRW"},{name:"ì¸ë¶(í리미ì) 1ì¸ì¤",capacity:1,price4Weeks:145e4,currency:"KRW"},{name:"ì¸ë¶(í리미ì) 2ì¸ì¤",capacity:2,price4Weeks:115e4,currency:"KRW"},{name:"ì¸ë¶(í리미ì) 3ì¸ì¤(ê°ì¡±)",capacity:3,price4Weeks:11e5,currency:"KRW"},{name:"ì¸ë¶(í리미ì) 4ì¸ì¤(ê°ì¡±)",capacity:4,price4Weeks:105e4,currency:"KRW"}],registrationFee:{amount:15e4,note:"ì
íê¸ 15ë§ì",currency:"KRW"},surcharges:[],localFees:[{category:"기í",name:"í¹íì ì°¸ê°ë¹",currency:"KRW",amountByWeeks:{4:1e5,8:15e4,12:15e4}},{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (9~12주 ëì )",amount:11540,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (13~16주)",amount:4540,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (17~20주)",amount:4540,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (21~24주)",amount:4540,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Electricity",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Water",amount:300,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Utility Fee",amount:1e3,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"Deposit",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"Pick-up Fee",amount:1500,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"Send-off Fee",amount:1500,currency:"PHP",chargeUnit:"per_visit"},{category:"íìì¦/ì¬ì§",name:"ID Card Fee",amount:350,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"Picture Fee",amount:150,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"Textbook (ë³´ì¦ê¸ìì ì°¨ê°)",amount:150,currency:"PHP",chargeUnit:"per_person"}]},{id:"cns_senior_camp",schoolCode:"CNS_SENIOR_CAMP",name:"CNS ìëì´ ìº í",region:"baguio",regi
111onLabel:"ë°ê¸°ì¤",schoolType:"camp",minWeeks:4,courses:[],dormitories:[],registrationFee:{currency:"KRW",amount:0,note:"í¨í¤ì§ì í¬í¨"},surcharges:[],localFees:[],packages:[{name:"CNS ìëì´ ìº í (4기~7기)",weeks:4,price:38e5,allInclusive:!0,includes:"ì
íê¸, ììë¹(ìì, 3ì, ì²ì, 빨ë, ì 기 ë° ìëì¸), ìì´ ìì
ë£, ì£¼ë§ ë° ì£¼ì¤ ì¬íê²½ë¹, ì¬íì ë³´í, SSP ë°ê¸ë¹, êµì¬ë¹, í½ì
/ìë©ë¹",note:"기ìë³ 4주 ê³¼ì . 기ìì¬ 2ì¸ 1ì¤ ê¸°ë³¸. 1ì¸ì¤ ë³ê²½ ì 40ë§ì ì¶ê°. ê° ê¸°ìë³ 15ëª
ì ì°©ì ë§ê°."}]},{id:"cns",schoolCode:"CNS",name:"CNS ì´íì (Choice and Success)",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:2,courses:[{name:"ìëì´ Light",classDetails:"1:1 3H + ìµì
그룹 1H = ì´ 4H",price4Weeks:8e5,currency:"KRW"},{name:"ìëì´ Standard",classDetails:"1:1 4H + ìµì
그룹 1H = ì´ 5H",price4Weeks:95e4,currency:"KRW"},{name:"ìëì´ Elite",classDetails:"1:1 5H + ìµì
그룹 1H = ì´ 6H",price4Weeks:11e5,currency:"KRW"}],dormitories:[{name:"í리미ì 1ì¸ì¤",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"ì¤í
ë¤ë 1ì¸ì¤",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"ì¸ë¯¸ 1ì¸ì¤",capacity:1,price4Weeks:11e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ë±ë¡ê¸ â©100,000",currency:"KRW"},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ìì°¨ì§. 2026.6.29~8.22, ì£¼ë¹ 50,000ì."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 5~8주",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 9~12주",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 13~16주",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기/ìëì¸",amount:2500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (íë¶ê°ë¥)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹",currency:"PHP",amountText:"â±700~1,100 (ì½ì¤ ìì´)"},{category:"í½ì
/ìë©",name:"ë¨ì²´ í½ì
ë¹",currency:"PHP",amountText:"â±2,500~3,000 (ê³µí ìì´)"}]},{id:"cpi",schoolCode:"CPI",name:"CPI (Cebu Pelis Institute)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"GE (General English)",price4Weeks:97e4,currency:"KRW",classDetails:"1:1 4H + 1:4 2H + 1:8 1H = ì´ 7H"},{name:"TOEIC/IELTS/TOEFL/ESP Prep",price4Weeks:102e4,currency:"KRW",classDetails:"1:1 4H(Academic 2+ESL 2) + 1:4 2H(ESL) + 1:8 1H = ì´ 7H"},{name:"Intensive GE",price4Weeks:107e4,currency:"KRW",classDetails:"1:1 5H + 1:4 2H + 1:8 1H = ì´ 8H"},{name:"TOEIC/TOEFL/IELTS/ESP General",price4Weeks:107e4,currency:"KRW",classDetails:"1:4 그룹 í´ëì¤(ìì¹´ë°ë¯¹ 1 + ESL 1)"},{name:"TOEIC/IELTS/TOEFL Intensive",price4Weeks:112e4,currency:"KRW",classDetails:"1:1 5H(ìì¹´ë°ë¯¹) + 1:4 2H(ESL 1+ìì¹´ë°ë¯¹ 1) + Practice Test 2H = ì´ 9H"},{name:"TOEIC/IELTS/TOEFL Guaranteed",price4Weeks:117e4,currency:"KRW",classDetails:"1:1 4H(ìì¹´ë°ë¯¹) + 1:4 2H(ESL 1+ìì¹´ë°ë¯¹ 1) + Practice Test 2H = ì´ 8H"},{name:"DIET PROGRAM (ë³´í¸ì)",price4Weeks:85e4,currency:"KRW",classDetails:"1:1 2H + 1:4 1H + 1:8 1H = ì´ 4H"}],dormitories:[{name:"Room A Deluxe Single (6)",capacity:1,price4Weeks:143e4,currency:"KRW"},{name:"Room A Deluxe Double (20)",capacity:2,price4Weeks:108e4,currency:"KRW"},{name:"Room A Deluxe Triple (34)",capacity:3,price4Weeks:91e4,currency:"KRW"},{name:"Room A Deluxe Quad (6)",capacity:4,price4Weeks:81e4,currency:"KRW"},{name:"Room B Superior Single (2)",capacity:1,price4Weeks:153e4,currency:"KRW"},{name:"Room B Superior Double A (2)",capacity:2,price4Weeks:123e4,currency:"KRW"},{name:"Room B Superior Double B (3)",capacity:2,price4Weeks:118e4,currency:"KRW"},{name:"Room B Superior Triple (5)",capacity:3,price4Weeks:101e4,currency:"KRW"},{name:"Room B Superior Hexa (2)",capacity:2,price4Weeks:81e4,currency:"KRW"}],registrationFee:{note:"ë±ë¡ê¸ 10ë§ì",amount:1e5,currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP",name:"SSP I-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"Tourist ACR I-CARD (59ì¼ì´ì)",amount:4500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"SSP ACR I-CARD (íìë¹ì)",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (8주)",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (12주)",amount:11550,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (16주)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (20주)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (24주)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"기본ì ê¸°ì¸ (4주)",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"기본ìëì¸ (4주)",amount:1500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹ (4주)",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"Deposit",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"Pick-up",amount:1e3,currency:"PHP",chargeUnit:"per_visit"},{category:"íìì¦/ì¬ì§",name:"School ID Card",amount:350,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"ì±
ê°/ê¶ë¹",amount:400,currency:"PHP",chargeUnit:"per_person"}]},{id:"cpils",schoolCode:"CPILS",name:"CPILS",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"General ESL Light",price4Weeks:85e4,currency:"KRW",note:"ì±ì기(12\xb71\xb77\xb78ì) ìê° ë¶ê°",classDetails:"1:1 4íì + 1:12 1íì = ì´ 5íì"},{name:"General ESL",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 3íì + 1:4 2íì + 1:12 2íì + 1:15 1íì + ì¤íì
그룹 1íì = ì´ 9íì"},{name:"General ESL Plus",price4Weeks:95e4,currency:"KRW",classDetails:"1:1 4íì + 1:4 2íì + 1:12 1íì + 1:15 1íì + ì¤íì
그룹 1íì = ì´ 9íì"},{name:"Premier Sparta",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5íì + 1:4 2íì + 1:12 1íì + ì¤íì
그룹 1íì + 리뷰 2íì = ì´ 12íì"},{name:"TOEIC (ì¼ë°)",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 4íì + 1:4 2íì + 1:15 3íì + 리뷰 3íì = ì´ 12íì"},{name:"TOEFL iBT",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 3íì + 1:4 2íì + 1:12 2íì + 1:15 2íì + 리뷰 3íì = ì´ 12íì"},{name:"Business English",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 4íì + 1:4 2íì + 1:15 1íì + 그룹 2íì = ì´ 9íì"},{name:"Power Speaking PMC",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 4íì + 1:4 3íì + 1:12 1íì + 1:15 2íì + 그룹 2íì = ì´ 12íì"},{name:"IELTS (ì¼ë°)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4íì + 1:15 5íì + 리뷰 3íì = ì´ 12íì"}],dormitories:[{name:"ì¼ë°ë£¸ 1ì¸ì¤",capacity:1,price4Weeks:11e5,
111currency:"KRW"},{name:"ì¼ë°ë£¸ 2ì¸ì¤",capacity:2,price4Weeks:91e4,currency:"KRW"},{name:"ì¼ë°ë£¸ 3ì¸ì¤",capacity:3,price4Weeks:85e4,currency:"KRW"},{name:"ì¼ë°ë£¸ 4ì¸ì¤",capacity:4,price4Weeks:79e4,currency:"KRW"},{name:"í리미ì룸 1ì¸ì¤",capacity:1,price4Weeks:121e4,currency:"KRW"},{name:"í리미ì룸 2ì¸ì¤",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"í리미ì룸 3ì¸ì¤",capacity:3,price4Weeks:94e4,currency:"KRW"},{name:"í리미ì룸 4ì¸ì¤",capacity:4,price4Weeks:89e4,currency:"KRW"}],registrationFee:{amount:1e5,currency:"KRW",note:"ë±ë¡ë¹ 10ë§ì (íë¶ë¶ê°)"},surcharges:[{label:"ì±ì기",amountPerWeek:25e3,startDate:"2026-07-06",endDate:"2026-08-28",currency:"KRW"}],localFees:[{category:"SSP",name:"SSP ë°ê¸ë¹",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"ACR I-Card (SSPì í¨ê»)",amount:4e3,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card (2ì°¨ ë¹ìì°ì¥ ì)",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"cumulative",triggerWeeks:9},{category:"ë³´ì¦ê¸",name:"기ìì¬ ë³´ì¦ê¸ (íë¶)",amount:2e3,currency:"PHP",chargeUnit:"per_person"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì ê¸°ì¸ ë³´ì¦ê¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:150,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (1ê¶)",amount:400,currency:"PHP",chargeUnit:"per_book"}]},{id:"clark_we",schoolCode:"CLARK_WE",name:"WE",region:"clark",regionLabel:"í´ë½",schoolType:"general",minWeeks:1,courses:[{name:"ESL4",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H",price4Weeks:85e4,currency:"KRW"},{name:"ESL5",classDetails:"1:1 5H + 그룹 2H + ìµì
1H = ì´ 8H",price4Weeks:95e4,currency:"KRW"},{name:"ESL6",classDetails:"1:1 6H + 그룹 2H + ìµì
1H = ì´ 9H",price4Weeks:105e4,currency:"KRW"},{name:"TOEIC/TOEFL/IELTS/Business ESL",classDetails:"ì¤íì
1:1 6H + 그룹 1H + ìµì
1H = ì´ 8H",price4Weeks:115e4,currency:"KRW"},{name:"Native Mix Light",classDetails:"1:1 3H + 그룹 2H + ìì´ë¯¼ 1:1 1H + ìµì
1H = ì´ 7H",price4Weeks:1e6,currency:"KRW"},{name:"Native Mix General",classDetails:"1:1 3H + 그룹 2H + ìì´ë¯¼ 1:1 2H + ìµì
1H = ì´ 8H",price4Weeks:125e4,currency:"KRW"},{name:"Native Mix Intensive",classDetails:"1:1 3H + 그룹 2H + ìì´ë¯¼ 1:1 3H + ìµì
1H = ì´ 9H",price4Weeks:15e5,currency:"KRW"},{name:"ESL + GOLF (ì±ì¸ 골íì½ì¤)",classDetails:"1:1 3H + 골íë ì¨ 1H + ìµì
1H = ì´ 5H",price4Weeks:125e4,currency:"KRW"},{name:"ESL + GOLF ROUND (íëë ì¨ í¬í¨)",classDetails:"1:1 3H + 골íë ì¨ 1H + ìµì
1H = ì´ 5H",price4Weeks:185e4,currency:"KRW"},{name:"ESL3 FOR GUARDIAN",classDetails:"1:1 3H = ì´ 3H",price4Weeks:75e4,currency:"KRW",note:"ê°ì¡±ì°ì ì ì©. ë³´í¸ì ìì
ì ìë
ìê² ìë ê°ë¥. ì¼ë°ì½ì¤ ì ì²ë ê°ë¥."}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:11e5,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:9e5,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:8e5,currency:"KRW"},{name:"4ì¸ì¤",capacity:4,price4Weeks:7e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ë±ë¡ë¹ 10ë§ì. ë±ë¡ë¹ ë° í½ì
ë¹ ë¶í¬í¨ ê°ê²©.",currency:"KRW"},surcharges:[],picks:{recCourses:["ESL4","ESL5","Native Mix General","ESL + GOLF (ì±ì¸ 골íì½ì¤)"],recCombo:{course:"Native Mix General",dorm:"1ì¸ì¤"}},localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR I CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (8주/059ì¼)",amount:4800,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (12주/089ì¼)",amount:6e3,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (16주/119ì¼)",amount:4500,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (20주/149ì¼)",amount:4500,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (24주/179ì¼)",amount:4500,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì í¸ë¦¬í°ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:22,currency:"PHP",chargeUnit:"per_kw",trigger:"usage"},{category:"ë³´ì¦ê¸",name:"기ìì¬ ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ (í´ë½)",amount:1e3,currency:"PHP",chargeUnit:"per_family",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ (ë§ëë¼)",amount:5e3,currency:"PHP",chargeUnit:"per_family",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amountText:"â±250~500 (ê¶ë¹)",currency:"PHP",trigger:"enrollment"},{category:"기í",name:"방문ì 1ë°ë¹ì©",amount:1500,currency:"PHP",chargeUnit:"per_night",trigger:"usage"},{category:"기í",name:"ì¶ê° 1ë°",amount:1500,currency:"PHP",chargeUnit:"per_night",trigger:"usage"}]},{id:"eg_academy",schoolCode:"EG_ACADEMY",name:"EG (EG ì´íì)",region:"clark",regi
111onLabel:"í´ë½",schoolType:"general",minWeeks:1,courses:[{name:"ESL 4",price4Weeks:95e4,currency:"KRW",note:"4주 95ë§ì.",classDetails:"í1:1 4H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H(무ë£ì í그룹) = ì´ 7H"},{name:"ESL 6",price4Weeks:127e4,currency:"KRW",note:"4주 127ë§ì.",classDetails:"í1:1 6H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 9H"},{name:"ESL Native Plus",price4Weeks:137e4,currency:"KRW",note:"4주 137ë§ì.",classDetails:"í1:1 2H + ìì´ë¯¼1:1 2H + ìì´ë¯¼ê·¸ë£¹ 2H + í그룹 2H + ìµì
1H(ìí 08:00~16:50 9êµì) = ì´ 9H"},{name:"ESL Native Complete",price4Weeks:152e4,currency:"KRW",note:"4주 152ë§ì.",classDetails:"ìì´ë¯¼1:1 4H + ìì´ë¯¼ê·¸ë£¹ 3H + ìµì
1H = ì´ 8H"},{name:"Pre-IELTS",price4Weeks:122e4,currency:"KRW",note:"4주 122ë§ì.",classDetails:"í1:1 5H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 8H"},{name:"IELTS + NATIVE",price4Weeks:132e4,currency:"KRW",note:"4주 132ë§ì.",classDetails:"í1:1 4H + ìì´ë¯¼1:1 1H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 8H"},{name:"IELTS Score Guarantee",price4Weeks:137e4,currency:"KRW",note:"12주 ì ì© ë³´ì¥ë°. íë¹ 12주 4,110,000 + 기ì 12주(1ì¸ì¤ 3,600,000/2ì¸ì¤ 3,000,000/4ì¸ì¤ 2,400,000). ì´ì¡: 1ì¸ì¤ 7,710,000 / 2ì¸ì¤ 7,110,000 / 4ì¸ì¤ 6,510,000. (ìë£ 2025.09 기ì¤)",classDetails:"í1:1 5H + ìì´ë¯¼1:1 1H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + IELTS Review 2H = ì´ 10H"},{name:"TOEIC + Native",price4Weeks:132e4,currency:"KRW",note:"4주 132ë§ì. TOEFL+Native, Business+Native ëì¼ ê°ê²©.",classDetails:"í1:1 4H + ìì´ë¯¼1:1 1H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 8H"},{name:"TOEFL + Native",price4Weeks:132e4,currency:"KRW",note:"4주 132ë§ì.",classDetails:"í1:1 4H + ìì´ë¯¼1:1 1H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 8H"},{name:"Business + Native",price4Weeks:132e4,currency:"KRW",note:"4주 132ë§ì.",classDetails:"í1:1 4H + ìì´ë¯¼1:1 1H + ìì´ë¯¼ê·¸ë£¹ 1H + í그룹 1H + ìµì
1H = ì´ 8H"},{name:"GOLF + ESL",price4Weeks:135e4,currency:"KRW",note:"4주 135ë§ì.",classDetails:"í1:1 3H + í그룹 1H(+골í) = ì´ 4H"},{name:"GOLF SPECIAL",price4Weeks:195e4,currency:"KRW",note:"4주 195ë§ì.",classDetails:"í1:1 3H + í그룹 1H(+골íì§ì¤) = ì´ 4H"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:1e6,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:8e5,currency:"KRW"},{name:"4ì¸ì¤",capacity:4,price4Weeks:6e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ë±ë¡ë¹ 10ë§ì ë¶í¬í¨ (ë³ë).",currency:"KRW"},surcharges:[],picks:{lowest:{dorm:"4ì¸ì¤"}},localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨",amount:4830,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:4},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨",amount:10830,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:8},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨",amount:4530,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:12},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨",amount:4530,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:16},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨",amount:4530,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:20},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"UTILITY FEE",amountByWeeks:{4:2e3,8:4e3,12:6e3},currency:"PHP",chargeUnit:"per_person",trigger:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (DEPOSIT)",amount:5e3,currency:"PHP",chargeUnit:"flat",trigger:"always"},{category:"í½ì
/ìë©",name:"í´ë½ê³µí í½ì
(ì±ì¸)",amount:1e3,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"í½ì
/ìë©",name:"ë§ëë¼ê³µí í½ì
(ì±ì¸)",amount:5e3,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"íìì¦/ì¬ì§",name:"SCHOOL ID CARD",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"ECC/기ííê°",name:"ECC CLEARANCE",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:20}]},{id:"elsa",schoolCode:"ELSA",name:"ELSA (Interactive Learning School)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Golf ESL",price4Weeks:195e4,currency:"KRW",note:"ì¼ì¼ 3íì 그룹ìì
+ 주 2í íë ë¼ì´ë + 골í ì°ìµì¥ ë¬´ë£ ì´ì©",classDetails:"그룹 3H = ì´ 3H"},{name:"Super Basic ESL",price4Weeks:105e4,currency:"KRW",note:"1:1 5í",classDetails:"1:1 5H = ì´ 5H"},{name:"Super Intensive ESL",price4Weeks:125e4,currency:"KRW",note:"1:1 5í(4í) + 그룹 3í",classDetails:"1:1 4H + 그룹 3H = ì´ 7H"}],dormitories:[{name:"2ì¸ì¤",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:95e4,currency:"KRW"}],registrationFee:{note:"ì
íê¸ 10ë§ì (1ì¸). í½ì
ë¹ 2ë§ì (1ì¸) ë³ë.",amount:1e5,currency:"KRW"},surcharges:[],picks:{lowest:{course:"Super Basic ESL",dorm:"3ì¸ì¤"}},localFees:[{category:"SSP",name:"SSP (ESL)",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"ACR E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1st VISA",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2nd VISA",amount:6400,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3rd VISA",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìì¤ ì´ì©ë£",amount:1500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìì´ì»¨ ì¬ì©ë£",amountText:"â±25 (KWë¹\xb74주)",currency:"PHP",chargeUnit:"per_usage"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:5e3,currency:"PHP",chargeUnit:"per_family"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amountText:"ì½ì¤ ë° ê°ë³ ìì´",currency:"PHP",chargeUnit:"per_person"}]},{id:"ev_academy",priceNote:"êµì¬ë¹ ë³ë",schoolCode:"EV",name:"EV",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"[Sparta] Intensive ESL",price4Weeks:114e4,currency:"KRW",note:"ì¤í르í Intensive ESL",classDetails:"1:1 4H + ì그룹 2H + ë그룹 2H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Sparta] IELTS Guarantee",price4Weeks:142e4,currency:"KRW",note:"ì¤í르í IELTS Guarantee (Academic module). 12주 ì´ì.",classDetails:"1:1 4H + 그룹 4H = ì´ 8H (+ 모ë\xb7ì´ë¸ë í´ëì¤ ê° 1H)"},{name:"[Sparta] Specific Courses (IELTS/TOEIC/Business/Digital English)",price4Weeks:126e4,currency:"KRW",note:"ì¤í르í Specific Courses",classDetails:"1:1 4H + 그룹 4H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Sparta] Power Speaking 6",price4Weeks:133e4,currency:"KRW",note:"ì¤í르í Power Speaking 6",classDetails:"1:1 6H + ì그룹 1H + ë그룹 1H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Sparta] Power Speaking 8",price4Weeks:156e4,currency:"KRW",note:"ì¤í르í Power Speaking 8",classDetails:"1:1 8H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Semi] ESL Classic",price4Weeks:108e4,currency:"KRW",note:"ì¸ë¯¸ì¤í르í ESL Classic",classDetails:"1:1 4H + ì그룹 2H + ë그룹 2H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Semi] Specific Courses (TOEIC/Business/Digital English)",price4Weeks:12e5,currency:"KRW",note:"ì¸ë¯¸ì¤í르í Specific Courses",classDetails:"1:1 4H + 그룹 4H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Semi] Power Speaking 6",price4Weeks:127e4,currency:"KRW",note:"ì¸ë¯¸ì¤í르í Power Speaking 6",classDetails:"1:1 6H + ì그룹 1H + ë그룹 1H + ìµì
/ììµ 2H = ì´ 10H"},{name:"[Semi] Power Speaking 8",price4Weeks:15e5,currency:"KRW",note:"ì¸ë¯¸ì¤í르í Power Speaking 8",classDetails:"1:1 8H + ìµì
/ììµ 2H = ì´ 10H"}],dormitories:[{name:"1ì¸ì¤ (Single)",capacity:1,price4Weeks:156e4,currency:"KRW"},{name:"2ì¸ì¤ (Double)",capacity:2,price4Weeks:118e4,currency:"KRW"},{name:"3ì¸ì¤ (Triple)",capacity:3,price4Weeks:108e4,currency:"KRW"},{name:"4ì¸ì¤ (Quadruple)",capacity:4,price4Weeks:103e4,currency:"KRW"},{name:"ì½ë 1ì¸ì¤ (Condominium Single)",capacity:1,price4Weeks:171e4,currency:"KRW"}],registrationFee:{note:"ì
íê¸ 10ë§ì. íë¹í í©ì°ê°ì í¬í¨ëì´ ìì.",amount:1e5,currency:"KRW"},surcharges:[{currency:"USD"}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (ëì )",amount:11530,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (ëì )",amount:15960,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (ëì )",amount:20390,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (ëì )",amount:24820,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì´ìë¹ (Operation fee)",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:300,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amountByWeeks:{4:3e3,8:3e3,12:5e3},currency:"PHP"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"ID Card",amount:500,currency:"PHP",chargeUnit:"per_person"}]},{id:"ev_lamer",schoolCode:"EV_LAMER",name:"EV La Mer Campus",regi
111on:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ESL Classic",price4Weeks:101e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"Senior",price4Weeks:119e4,currency:"KRW",note:"ìëì´ ì½ì¤",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"Power Speaking 6",price4Weeks:119e4,currency:"KRW",classDetails:"1:1 6H + 그룹 2H = ì´ 8H"},{name:"Power Speaking 8",price4Weeks:142e4,currency:"KRW",classDetails:"1:1 8H = ì´ 8H"}],dormitories:[{name:"1ì¸ì¤ (Single)",capacity:1,price4Weeks:19e5,currency:"KRW"},{name:"2ì¸ì¤A (Pool Access Room)",capacity:2,price4Weeks:128e4,currency:"KRW"},{name:"2ì¸ì¤B (Double B)",capacity:2,price4Weeks:118e4,currency:"KRW"},{name:"3ì¸ì¤ (Triple)",capacity:3,price4Weeks:102e4,currency:"KRW"},{name:"4ì¸ì¤ (Quadruple)",capacity:4,price4Weeks:97e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ì
íê¸ 10ë§ì. íë¹í í©ì°ê°ì í¬í¨.",amount:1e5},surcharges:[{currency:"KRW"}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (ëì )",amount:11530,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (ëì )",amount:15960,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (ëì )",amount:20390,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (ëì )",amount:24820,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì´ìë¹",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:300,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amountByWeeks:{4:3e3,8:3e3,12:5e3},currency:"PHP"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"ID Card",amount:500,currency:"PHP",chargeUnit:"per_person"}]},{id:"english_fella_1",schoolCode:"ENGLISH_FELLA_1",name:"English Fella (1ìº í¼ì¤ (ì¤í르í))",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"PIC-4 (1:1 4íì)",price4Weeks:95e4,currency:"KRW",note:"1:1 4íì",classDetails:"1:1 4H + 1:4 2H + 1:8 1H = ì´ 7H"},{name:"PIC-5 (1:1 5íì)",price4Weeks:1e6,currency:"KRW",note:"1:1 5íì",classDetails:"1:1 5H + 1:4 1H + 1:8 1H = ì´ 7H"},{name:"PIC-6 (1:1 6íì)",price4Weeks:11e5,currency:"KRW",note:"1:1 6íì",classDetails:"1:1 6H(Power Speaking) + 1:8 1H = ì´ 7H"},{name:"PPT / TOEIC+ESL",price4Weeks:11e5,currency:"KRW",note:"PPT ëë TOEIC+ESL",classDetails:"ESL 1:1 2H + TOEIC 1:1 2H + 1:4 2H + 1:8 1H(1:1 í© 4) = ì´ 7H"},{name:"PIFT / PTFT TOEIC",price4Weeks:115e4,currency:"KRW",note:"PIFT ëë PTFT TOEIC",classDetails:"1:1 4H + 1:4 2H + 1:8 1H = ì´ 7H"},{name:"PIGI / PIRC",price4Weeks:125e4,currency:"KRW",note:"PIGI ëë PIRC",classDetails:"1:1 5H + 1:4 2H = ì´ 7H"},{name:"TOEIC Guarantee",price4Weeks:125e4,currency:"KRW",note:"12주 ì´ì ë±ë¡ë§ ê°ë¥. Fella1 ìº í¼ì¤ë§ ì´ì.",classDetails:"ì´ 8H(50ë¶ êµì)"}],dormitories:[{name:"1ì¸ì¤ (1P)",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"1ì¸ì¤A (1A)",capacity:1,price4Weeks:115e4,currency:"KRW"},{name:"1ì¸ì¤B (1B)",capacity:1,price4Weeks:11e5,currency:"KRW"},{name:"2ì¸ì¤ (2A)",capacity:2,price4Weeks:95e4,currency:"KRW"},{name:"3ì¸ì¤ (3A)",capacity:3,price4Weeks:85e4,currency:"KRW"}],registrationFee:{amount:1e5,note:"ì
íê¸ 10ë§ì. SSP íêµ ìí ê²°ì ì 195,000ì.",currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4100,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4100,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5170,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥",amount:4100,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì¢
í©ê´ë¦¬ë¹",amount:2500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"ë³´ì¦ê¸",name:"Padlock Deposit",amount:100,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:2500,currency:"PHP",chargeUnit:"per_person"},{category:"ECC/기ííê°",name:"ARP",amount:500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9}]},{id:"english_fella_2",schoolCode:"ENGLISH_FELLA_2",name:"English Fella (2ìº í¼ì¤ (J-ì¤í르í/í´ëì))",regi
111on:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"PIC-4 (1:1 4íì)",price4Weeks:95e4,currency:"KRW",note:"1:1 4íì",classDetails:"1:1 4H + 1:4 2H + 1:8 1H + ìµì
1H = ì´ 8H"},{name:"PIC-5 (1:1 5íì)",price4Weeks:1e6,currency:"KRW",note:"1:1 5íì",classDetails:"1:1 5H + 1:4 1H + 1:8 1H + ìµì
1H = ì´ 8H"},{name:"PIC-6 (1:1 6íì)",price4Weeks:11e5,currency:"KRW",note:"1:1 6íì",classDetails:"1:1 6H(Power Speaking) + 1:8 1H + ìµì
1H = ì´ 8H"},{name:"PPT / TOEIC+ESL",price4Weeks:11e5,currency:"KRW",note:"PPT ëë TOEIC+ESL",classDetails:"ESL 1:1 2H + TOEIC 1:1 2H + 1:4 2H + 1:8 1H + ìµì
1H = ì´ 8H"},{name:"PIFT / PTFT TOEIC",price4Weeks:115e4,currency:"KRW",note:"PIFT ëë PTFT TOEIC",classDetails:"1:1 4H + 1:4 2H + 1:8 1H + ìµì
1H = ì´ 8H"},{name:"EBC (ë¹ì¦ëì¤)",price4Weeks:115e4,currency:"KRW",note:"ë¹ì¦ëì¤ ìì´",classDetails:"1:1 5H(VOCA&L/R/G/S/W) + 1:4 2H(Let's Talk Business/Presenting) + ìµì
1H = ì´ 8H"},{name:"GEC (ë³´í¸ì)",price4Weeks:8e5,currency:"KRW",note:"ë³´í¸ì ì½ì¤. ì¥ê¸°í ì¸ ì ì¸.",classDetails:"1:1 3H + ìµì
1H = ì´ 4H"},{name:"SSC",price4Weeks:11e5,currency:"KRW",note:"SSC ì½ì¤",classDetails:"1:1 6H + ìµì
1H = ì´ 7H"}],dormitories:[{name:"1ì¸ì¤ (1P)",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"2ì¸ì¤ (2A)",capacity:2,price4Weeks:95e4,currency:"KRW"},{name:"3ì¸ì¤ (3A)",capacity:3,price4Weeks:85e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ì
íê¸ 10ë§ì. SSP íêµ ìí ê²°ì ì 195,000ì.",amount:1e5},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4100,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4100,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5170,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (9~12주 ëì )",amount:11610,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì¢
í©ê´ë¦¬ë¹",amountByWeeks:{4:2500,8:4500,12:6500},currency:"PHP"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"ë³´ì¦ê¸",name:"Padlock Deposit",amount:100,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1e3,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:2500,currency:"PHP",chargeUnit:"per_person"},{category:"ECC/기ííê°",name:"ARP",amount:500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9}]},{id:"gitc",schoolCode:"GITC",name:"GITC (Green International Technical College)",region:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",schoolType:"general",minWeeks:1,courses:[{name:"Basic",classDetails:"1:1 3H + Group 2H(그룹 2~4ëª
) = ì´ 5H",price4Weeks:9e5,currency:"KRW"},{name:"Regular",classDetails:"1:1 4H + Group 3H = ì´ 7H",price4Weeks:11e5,currency:"KRW"},{name:"Power Speaking",classDetails:"1:1 7H(그룹 ìì) = ì´ 7H",price4Weeks:125e4,currency:"KRW"},{name:"Pre TOEIC\xb7IELTS",classDetails:"1:1 3H + Group 4H = ì´ 7H",price4Weeks:11e5,currency:"KRW"},{name:"TOEIC\xb7IELTS ì ìë³´ì¥ë°",classDetails:"1:1 3H + Group 4H = ì´ 7H",price4Weeks:125e4,currency:"KRW"}],dormitories:[{name:"One Spatial ì½ë 1ì¸ì¤ (Single B\xb7ì¶ì²)",capacity:1,price4Weeks:65e4,currency:"KRW"},{name:"One Spatial ì½ë 1ì¸ì¤ (Single A)",capacity:1,price4Weeks:8e5,currency:"KRW"},{name:"Avida\xb7SMDC ì½ë 1ì¸ì¤",capacity:1,price4Weeks:9e5,currency:"KRW"},{name:"Mega World ì½ë 1ì¸ì¤",capacity:1,price4Weeks:105e4,currency:"KRW"}],registrationFee:{amount:12e4,currency:"KRW",note:"ë±ë¡ê¸ 12ë§ì"},surcharges:[],picks:{lowest:{dorm:"One Spatial ì½ë 1ì¸ì¤ (Single B\xb7ì¶ì²)"},recCombo:{course:"Basic",dorm:"One Spatial ì½ë 1ì¸ì¤ (Single B\xb7ì¶ì²)"}},localFees:[{category:"SSP",name:"SSP",amount:7e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"SSP I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACRI-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"Visa 2ì°¨ (~59ì¼)",amount:4140,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"Visa 3ì°¨ (~89ì¼)",amount:5410,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"Visa 4ì°¨ (~119ì¼)",amount:3440,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"Visa 5ì°¨ (~149ì¼)",amount:3440,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"Visa 6ì°¨ (~179ì¼)",amount:3440,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ë¹ìì°ì¥",name:"Visa 7ì°¨ (~209ì¼)",amount:4850,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:25},{category:"ë¹ìì°ì¥",name:"Visa 8ì°¨ (239ì¼~)",amount:3440,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:29},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Facility fee",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Electricity/Water",amount:0,currency:"PHP",chargeUnit:"per_usage",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Deposit",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"Pick up (Kalibo Airport)",amount:5e3,currency:"PHP",chargeUnit:"per_trip",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"ID",amount:500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"Textbook",amount:500,currency:"PHP",chargeUnit:"per_book",trigger:"enrollment"}]}
111,{id:"glant",schoolCode:"GLANT",name:"GLANT English Academy",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Regular",price4Weeks:99e4,currency:"KRW",note:"LT 1:1 4h + LT SG 1h + NT G 1h = 6h/day. ë ë²¨ë³ ë¤ì 1:1 ìì
.",classDetails:"1:1 4H + SG 1H + NT G 1H = ì´ 6H"},{name:"Intensive",price4Weeks:118e4,currency:"KRW",note:"LT 1:1 5h + LT SG 1h + NT G 1h = 7h/day. ìµë¤ 1:1 ìì
.",classDetails:"1:1 5H + SG 1H + NT G 1H = ì´ 7H"},{name:"Premium",price4Weeks:147e4,currency:"KRW",note:"LT 1:1 4h + NT 1:1 1h + LT SG 1h + NT G 1h = 7h/day. ìì´ë¯¼ 1:1 í¬í¨.",classDetails:"1:1 4H + NT 1:1 1H + SG 1H + NT G 1H = ì´ 7H"},{name:"Mini",price4Weeks:76e4,currency:"KRW",note:"LT 1:1 4h = 4h/day. ë³´í¸ì ëë ì§§ì ì¼ì ì í¸ìì©.",classDetails:"1:1 4H = ì´ 4H"},{name:"IELTS",price4Weeks:111e4,currency:"KRW",note:"LT 1:1 4h + LT SG 1h + NT G 1h = 6h/day. IELTS ìíìì´.",classDetails:"1:1 4H + SG 1H + NT G 1H = ì´ 6H"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:96e4,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:8e5,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:7e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ì
íê¸ 10ë§ì (ë±ë¡ ì ì¬ì ë©ë¶). ê³µíí½ì
3ë§ì ë³ë.",currency:"KRW"},surcharges:[],localFees:[{category:"SSP E-CARD",name:"SSP + E-Card",amount:12e3,currency:"PHP",chargeUnit:"per_person"},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:4700,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹ (기ì)",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"íìì¦/ì¬ì§",name:"ID Card",amount:200,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amountText:"â±200~500",currency:"PHP",chargeUnit:"per_person"},{category:"ì¸íë¹",name:"ì¸íë¹ (기ì)",amount:33,currency:"PHP",chargeUnit:"per_kg"}]},{id:"glc",schoolCode:"GLC",name:"GLC (Global Language Cebu)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Lite Power Speaking (LPS)",price4Weeks:6e5,currency:"KRW",note:"1:1 3h + SG 1h + Optional. ì¤í 1ì~6ì ìì
ë§ ê°ë¥.",classDetails:"1:1 3H + SG 1H = ì´ 4H (+ Optional(ì¤í1~6ìë§) ì í)"},{name:"Power Speaking (GPS)",price4Weeks:8e5,currency:"KRW",note:"1:1 4h + SG 2h + Optional.",classDetails:"1:1 4H + SG 2H = ì´ 6H"},{name:"Intensive Power Speaking (IPS)",price4Weeks:1e6,currency:"KRW",note:"1:1 5h + SG 2h + Optional.",classDetails:"1:1 5H + SG 2H = ì´ 7H"},{name:"Ultra7 Power Speaking (UPS)",price4Weeks:14e5,currency:"KRW",note:"1:1 7h + SG 1h + Optional.",classDetails:"1:1 7H + SG 1H = ì´ 8H"},{name:"Ultra Sparta ESL (USE)",price4Weeks:104e4,currency:"KRW",note:"1:1 5h + 그룹 3h + ì무 ë¨ì´ìí + ì¼ê°ìì
2h + ì¼ê°ìì¨íìµ 1h + í ìì¼ ìì
.",classDetails:"1:1 5H + 그룹 3H + ì¼ì(ì무ììµ) 1H = ì´ 9H (+ ì¼ê° 2H ì í)"},{name:"General TOEIC (GTS)",price4Weeks:896e3,currency:"KRW",note:"1:1 4h + SG 2h + Optional.",classDetails:"1:1 4H + SG 2H = ì´ 6H"},{name:"Intensive TOEIC (ITC)",price4Weeks:112e4,currency:"KRW",note:"1:1 5h + SG 2h + Optional.",classDetails:"1:1 5H + SG 2H = ì´ 7H"},{name:"Ultra8 TOEIC (UTC)",price4Weeks:16e5,currency:"KRW",note:"1:1 8h + Optional.",classDetails:"1:1 8H = ì´ 8H"},{name:"Ultra Sparta TOEIC (UST)",price4Weeks:132e4,currency:"KRW",note:"1:1 5h + 그룹 3h + ì무 ë¨ì´ìí + ì¼ê°ìì
2h + ì¼ê°ìì¨íìµ 1h + í ìì¼ ëª¨ììí.",classDetails:"1:1 5H + 그룹 3H + ì¼ì 1H = ì´ 9H (+ ì¼ê° 2H ì í)"},{name:"General IELTS (GIS)",price4Weeks:896e3,currency:"KRW",note:"1:1 4h + SG 2h + Optional.",classDetails:"1:1 4H + SG 2H = ì´ 6H"},{name:"Intensive IELTS (IIS)",price4Weeks:112e4,currency:"KRW",note:"1:1 5h + SG 2h + Optional.",classDetails:"1:1 5H + SG 2H = ì´ 7H"},{name:"Ultra8 IELTS (UIS)",price4Weeks:16e5,currency:"KRW",note:"1:1 8h + Optional.",classDetails:"1:1 8H = ì´ 8H"},{name:"Ultra Sparta IELTS (USI)",price4Weeks:132e4,currency:"KRW",note:"1:1 5h + 그룹 3h + ì무 ë¨ì´ìí + ì¼ê°ìì
2h + ì¼ê°ìì¨íìµ 1h + í ìì¼ ëª¨ììí.",classDetails:"1:1 5H + 그룹 3H + ì¼ì 1H(=USTëì¼) = ì´ 9H (+ ì¼ê° 2H ì í)"},{name:"Business (BI)",price4Weeks:112e4,currency:"KRW",note:"1:1 4h + SG 2h + Optional.",classDetails:"1:1 4H + SG 2H = ì´ 6H"},{name:"Ultra7 Business (UBI)",price4Weeks:172e4,currency:"KRW",note:"1:1 7h + SG 1h + Optional.",classDetails:"1:1 7H + SG 1H = ì´ 8H"}],dormitories:[{name:"3ì¸ì¤ (Superior)",capacity:3,price4Weeks:82e4,currency:"KRW"},{name:"2ì¸ì¤ (Superior)",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"2ì¸ì¤ (ìë¥ì¤2)",capacity:2,price4Weeks:92e4,currency:"KRW"},{name:"1ì¸ì¤ (ë©ì¸)",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"1ì¸ì¤ (ìë¥ì¤2)",capacity:1,price4Weeks:152e4,currency:"KRW"}],registrationFee:{note:"ì
íê¸ 12ë§ì.",amount:12e4,currency:"KRW"},surcharges:[{amountPerWeek:5e4,startDate:"2026-05-31",endDate:"2026-08-30",currency:"KRW",note:"ì¸ë¶ ì±ì기 ìì°¨ì§. ì
111ì°¨ì§ í¬í¨ ë¹ì©ìì íë¹&기ìì¬ 10% ì íì í ì¸ ê°ë¥."}],localFees:[{category:"SSP",name:"SSP",amount:8e3,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR-I Card",amount:3500,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥ (5-8주)",amount:4670,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (9-12주, ACR-I í¬í¨)",amount:9740,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (13-16주)",amount:3970,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (17-20주)",amount:3970,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (21-24주)",amount:3970,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"물ì¸",amount:500,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìì¤ ê´ë¦¬ë¹ (Management Fee)",amount:6e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:2500,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"ê³µí í½ì
",amount:1500,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"ì¨ë¼ì¸ êµì¬ (ESL)",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"ì¨ë¼ì¸ êµì¬ (IELTS/TOEIC/Business)",amount:5e3,currency:"PHP",chargeUnit:"per_person"}]},{id:"gs",schoolCode:"GS",name:"GS ì´íì (Global Standard)",region:"clark",regionLabel:"í´ë½",schoolType:"general",minWeeks:2,courses:[{name:"ESL LITE",classDetails:"1:1 2H + 그룹 1H = ì´ 3H",price4Weeks:75e4,currency:"KRW"},{name:"ESL",classDetails:"1:1 4H + 그룹 2H = ì´ 6H",price4Weeks:9e5,currency:"KRW"},{name:"GOLF ESL LITE",classDetails:"1:1 2H + 그룹 1H + GC(골í) 1H = ì´ 4H",price4Weeks:105e4,currency:"KRW"},{name:"GOLF ESL",classDetails:"1:1 4H + 그룹 2H + GC(골í) 1H = ì´ 7H",price4Weeks:12e5,currency:"KRW"},{name:"IELTS",classDetails:"1:1 4H + 그룹 3H = ì´ 7H",price4Weeks:12e5,currency:"KRW"},{name:"TOEIC",classDetails:"1:1 4H + 그룹 2H = ì´ 6H",price4Weeks:12e5,currency:"KRW"},{name:"Business English",classDetails:"1:1 4H + 그룹 2H = ì´ 6H",price4Weeks:12e5,currency:"KRW"},{name:"GGC Program",classDetails:"1:1 4H + 그룹 2H = ì´ 6H",price4Weeks:12e5,currency:"KRW"}],dormitories:[{name:"Global (Luxury) Single",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"Global (Luxury) Semi Single",capacity:1,price4Weeks:13e5,currency:"KRW"},{name:"Global (Luxury) Double",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"Global (Luxury) Triple",capacity:3,price4Weeks:9e5,currency:"KRW"},{name:"Global (Luxury) Quadruple",capacity:4,price4Weeks:85e4,currency:"KRW"},{name:"Global (Luxury) Triple (2rooms)",capacity:3,price4Weeks:11e5,currency:"KRW"},{name:"Global (Luxury) Quadruple (2rooms)",capacity:4,price4Weeks:95e4,currency:"KRW"},{name:"Clark (Premium) Single",capacity:1,price4Weeks:13e5,currency:"KRW"},{name:"Clark (Premium) Double",capacity:2,price4Weeks:95e4,currency:"KRW"},{name:"Clark (Premium) Triple",capacity:3,price4Weeks:85e4,currency:"KRW"},{name:"Clark (Premium) Quadruple",capacity:4,price4Weeks:75e4,currency:"KRW"},{name:"Standard Single",capacity:1,price4Weeks:12e5,currency:"KRW"},{name:"Standard Double",capacity:2,price4Weeks:8e5,currency:"KRW"},{name:"Standard Triple",capacity:3,price4Weeks:75e4,currency:"KRW"},{name:"Standard Quadruple",capacity:4,price4Weeks:7e5,currency:"KRW"}],registrationFee:{amount:1e5,note:"ë±ë¡ê¸ 10ë§ì",currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"I-Card",amount:3500,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"Visa Extension (8주)",amount:5130,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"Visa Extension (12주)",amount:11540,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"Visa Extension (16주)",amount:16080,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"Visa Extension (20주)",amount:20620,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"Visa Extension (24주)",amount:25160,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Electricity (ì 기ì¸)",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Water (ìëì¸)",amount:500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Utility",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Deposit (ë³´ì¦ê¸)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"ID Card",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"Laundry (ì¸íë¹)",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"}]},{id:"hana",schoolCode:"HANA",name:"HANA (íë ì´íì)",region:"clark",regi
111onLabel:"í´ë½",schoolType:"general",minWeeks:1,courses:[{name:"Light ESL (ì±ì¸)",price4Weeks:94e4,currency:"KRW",note:"í리í1:1 4íì + ìì´ë¯¼ê·¸ë£¹ 1íì + í리í그룹 1íì. 4주 94ë§ì.",classDetails:"1:1 4H + 그룹 1H + ìì´ë¯¼ 그룹 1H = ì´ 6H"},{name:"General ESL (ì±ì¸)",price4Weeks:111e4,currency:"KRW",note:"í리í1:1 5íì + ìì´ë¯¼ê·¸ë£¹ 1íì + í리í그룹 1íì. 4주 111ë§ì.",classDetails:"1:1 5H + 그룹 1H + ìì´ë¯¼ 그룹 1H = ì´ 7H"},{name:"Native ESL (ì±ì¸)",price4Weeks:128e4,currency:"KRW",note:"í리í1:1 2íì + ìì´ë¯¼1:1 2íì + ìì´ë¯¼ê·¸ë£¹ 1íì + í리í그룹 1íì. 4주 128ë§ì.",classDetails:"1:1 2H + ìì´ë¯¼ 1:1 2H + 그룹 1H + ìì´ë¯¼ 그룹 1H = ì´ 6H"},{name:"Native Only (ì±ì¸)",price4Weeks:153e4,currency:"KRW",note:"ìì´ë¯¼1:1 4íì. 4주 153ë§ì.",classDetails:"ìì´ë¯¼ 1:1 4H + ìì´ë¯¼ 그룹 1H = ì´ 5H"},{name:"TOEIC / IELTS (ì±ì¸)",price4Weeks:12e5,currency:"KRW",note:"í리í1:1 3íì + ìì´ë¯¼1:1 1íì + ESLí리í그룹 1íì + ESLìì´ë¯¼ê·¸ë£¹ 1íì + 주1í 모ìê³ ì¬. 4주 120ë§ì.",classDetails:"1:1 3H + ìì´ë¯¼ 1:1 1H + 그룹 1H + ìì´ë¯¼ 그룹 1H = ì´ 6H"},{name:"골í ë ì ¸",price4Weeks:8e5,currency:"KRW",note:"AM:Golf, PM:Study. í리í1:1 3íì + ìì´ë¯¼ê·¸ë£¹ 1íì. 무ì í ì°ìµ (EG GOLF, 6am-10pm). 4주 80ë§ì.",classDetails:"1:1 3H + 그룹 1H(í리í ì ìë\xb7ì¤ííìµ) = ì´ 4H"},{name:"골í ì¸í
ìë¸",price4Weeks:12e5,currency:"KRW",note:"AM:Golf, PM:Study. í리í1:1 3íì + ìì´ë¯¼ê·¸ë£¹ 1íì. ê°ì¸ ë ì¨ 16í/4주, 무ì í ì°ìµ (EG GOLF, 6am-10pm). 4주 120ë§ì.",classDetails:"1:1 3H + 그룹 1H(í리í ì ìë) = ì´ 4H"},{name:"ìëì´ ì½ì¤ (1ì¸)",price4Weeks:12e5,currency:"KRW",note:"í리í1:1 3íì + ìì´ë¯¼ê·¸ë£¹ 1íì. íì§ë¹ì© í¬í¨ (Deposit ì ì¸). 4주 120ë§ì.",classDetails:"1:1 3H + 그룹 1H(í리í ì ìë) = ì´ 4H"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:9e5,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:75e4,currency:"KRW"}],registrationFee:{amount:0,note:"â ï¸ ë³¸ì¬ íì¸ íì â ìë£ì ë±ë¡ë¹ ëª
ì ìì.",currency:"KRW"},surcharges:[],picks:{recCourses:["Light ESL (ì±ì¸)","골í ë ì ¸","골í ì¸í
ìë¸","ìëì´ ì½ì¤ (1ì¸)"],lowest:{course:"Light ESL (ì±ì¸)",dorm:"2ì¸ì¤"}},localFees:[{category:"SSP",name:"SSP (ê³µë¶íê°ì¦)",amount:7500,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"ACR I-CARD",name:"ACR ICARD (ì¸êµì¸ ì ë¶ì¦)",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (30th day)",amount:4630,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:4},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (59th day)",amount:5900,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (89th day)",amount:4130,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:12},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (119th day)",amount:4130,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:16},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (149th day)",amount:4130,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:20},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amountText:"1ì¸ì¤ â±1,800 / 2~5ì¸ì¤ â±2,400 (4주ë¹\xb7ì´ê³¼ë¶ ë³´ì¦ê¸ ì°¨ê°)",currency:"PHP",trigger:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹ (ìëì¸, ì²ì, 빨ë, ê²½ë¹, ìì, ê³µì©ì 기, ììì¥ê´ë¦¬, ìì¤ì ì§ë³´ì)",amountText:"1ì¸ì¤ â±3,000 / 2ì¸ì¤ â±2,500 (4주ë¹)",currency:"PHP",trigger:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"기ìì¬ ë³´ì¦ê¸",amount:4e3,currency:"PHP",chargeUnit:"flat",trigger:"always"}
111,{category:"í½ì
/ìë©",name:"ê³µí í½ì
ë¹",amount:1e3,currency:"PHP",chargeUnit:"flat",trigger:"always"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amountText:"â±300~400 (ê¶ë¹)",currency:"PHP",trigger:"always"}]},{id:"help_clark",schoolCode:"HELP_CLARK",name:"HELP English (í¬íì´íì)",region:"clark",regionLabel:"í´ë½",schoolType:"general",minWeeks:4,courses:[{name:"ESL",price4Weeks:1e6,currency:"KRW",note:"ì±ì¸ ESL ê³¼ì . 4주 100ë§ì.",classDetails:"1:1 4H + 그룹 2H + ì¤íì
1H = ì´ 7H"},{name:"IELTS",price4Weeks:122e4,currency:"KRW",note:"ì±ì¸ IELTS ê³¼ì . 4주 122ë§ì.",classDetails:"1:1 4H + 그룹 2H + ì¤íì
1H = ì´ 7H"},{name:"ë¹ì¦ëì¤ ê³¼ì ",price4Weeks:122e4,currency:"KRW",note:"ì±ì¸ ë¹ì¦ëì¤ ê³¼ì . 4주 122ë§ì.",classDetails:"1:1 4H + 그룹 2H + ì¤íì
1H = ì´ 7H"}],dormitories:[{name:"1ì¸ì¤ (ì±ì¸)",capacity:1,price4Weeks:124e4,currency:"KRW"},{name:"2ì¸ì¤ (ì±ì¸)",capacity:2,price4Weeks:99e4,currency:"KRW"},{name:"3ì¸ì¤ (ì±ì¸)",capacity:3,price4Weeks:85e4,currency:"KRW"},{name:"4ì¸ì¤ (ì±ì¸)",capacity:4,price4Weeks:75e4,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ë¹ 1ì¸ë¹ 10ë§ì"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"SSP E-CARD",name:"SSP E-Card",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨",amount:4940,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:4},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨",amount:6210,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:9},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëìê¸",amount:600,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì í¸ë¦¬í° (기íë¹ì©)",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"flat",trigger:"always"},{category:"ë³´ì¦ê¸",name:"ì 기보ì¦ê¸",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:1700,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"}]},{id:"ibreeze",priceNote:"í½ì
ë¹ 2ë§ì ë³ë",picks:{recDorms:["IB1 Main 1ì¸ì¤","IB1 Main 2ì¸ì¤","IB2 Prime 1ì¸ì¤","IB2 Prime 2ì¸ì¤"]},schoolCode:"IBREEZE",name:"I.BREEZE International Language Center",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Intensive Beginner",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H(ë°ì&ë³´ì¹´\xb7S\xb7R\xb7L\xb7G) + 그룹 3H = ì´ 8H (+ ì¼ê° ìµì
1H ì í)"},{name:"Power ESL",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5H(R\xb7W\xb7S\xb7L\xb7G) + 그룹 2H + ì¤íì
1H(1:10) = ì´ 8H (+ ì¼ê° ìµì
1H ì í)"},{name:"Light ESL",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 4H(S\xb7R\xb7L\xb7G) + 그룹 2H = ì´ 6H (+ ì¼ê° ìµì
1H ì í)"},{name:"Intensive Speaking",price4Weeks:85e4,currency:"KRW",classDetails:"1:1 4íì(Speaking\xb7Conversation\xb7Grammar\xb7Reading) = ì´ 4íì"},{name:"IELTS Starter",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 4H(S&ë°ì\xb7L\xb7R&ë³´ì¹´\xb7W) + 그룹 3H = ì´ 7H (+ ì¼ê° ìµì
1H(IELTS Advance) ì í)"},{name:"IELTS Target",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 5íì + 그룹 3íì + IELTS Advance 2íì(ì¼ê° 18:30~20:00, 90ë¶) = ì´ 10íì"},{name:"TOEIC Target",price4Weeks:105e4,currency:"KRW",classDetails:"1:1 5íì + 그룹 2íì = ì´ 7íì (+ ì¼ê° ìì¹´ë°ë¯¹ 1íì(18:30~19:15) ì í)"}
111,{name:"General Business & BEC",price4Weeks:11e5,currency:"KRW",note:"ì¥ê¸° í ì¸ ë´ì¥: 16주 4,000,000 / 24주 6,000,000 (ì ë¹ë¡ ëë¹ ê° 40ë§/60ë§ í ì¸).",classDetails:"1:1 4H(Business Correspondence\xb7Presentation\xb7Reading\xb7Grammar) + 그룹 2H = ì´ 6H (+ ì¼ê° ìµì
1H + ë§ì§ë§ì£¼ íë ì í
ì´ì
ì í)"}],dormitories:[{name:"IB1 Main 1ì¸ì¤",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"IB1 Main 2ì¸ì¤",capacity:2,price4Weeks:102e4,currency:"KRW"},{name:"IB1 Main 3ì¸ì¤",capacity:3,price4Weeks:87e4,currency:"KRW"},{name:"IB1 Main 4ì¸ì¤",capacity:4,price4Weeks:8e5,currency:"KRW"},{name:"IB2 Prime 1ì¸ì¤",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"IB2 Prime 2ì¸ì¤",capacity:2,price4Weeks:11e5,currency:"KRW"},{name:"IB2 Prime 4ì¸ì¤",capacity:4,price4Weeks:85e4,currency:"KRW"},{name:"ì½ë 1ì¸ì¤",capacity:1,price4Weeks:19e5,currency:"KRW"},{name:"ì½ë 2ì¸ì¤ (Family)",capacity:2,price4Weeks:14e5,currency:"KRW"},{name:"ì½ë 3ì¸ì¤ (Family)",capacity:3,price4Weeks:12e5,currency:"KRW"},{name:"ì½ë 4ì¸ì¤ (Family)",capacity:4,price4Weeks:11e5,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ë¹ 10ë§ì. í½ì
ë¹ 2ë§ì ë³ë.",amount:1e5},surcharges:[{amountPerWeek:5e4,startDate:"2026-06-28",endDate:"2026-08-15",currency:"KRW",note:"ì±ì기 ìì°¨ì§. ì íì í ì¸ ì ì© ë¶ê°."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"SSP I-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥",amount:6410,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥",amount:5040,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Maintenance (ìì¤ê´ë¦¬ë¹)",amount:4e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:2e4,currency:"KRW",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"ID Card",amount:400,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:2500,currency:"PHP",chargeUnit:"per_4weeks"}]},{id:"ims",schoolCode:"IMS",name:"IMS",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Premium ESL (4:4)",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"Intensive ESL (6:3)",price4Weeks:12e5,currency:"KRW",classDetails:"1:1 6H + 그룹 3H = ì´ 9H"},{name:"Essential ESL 4 (4:0)",price4Weeks:7e5,currency:"KRW",classDetails:"1:1 4H = ì´ 4H"},{name:"Essential ESL 5 (5:0)",price4Weeks:85e4,currency:"KRW",classDetails:"1:1 5H = ì´ 5H"},{name:"Essential ESL 6 (6:0)",price4Weeks:1e6,currency:"KRW",classDetails:"1:1 6H = ì´ 6H"},{name:"ìëì´ ESL 4 (4:1)",price4Weeks:8e5,currency:"KRW",classDetails:"1:1 4H + 그룹 1H = ì´ 5H"},{name:"ìëì´ ESL 5 (5:0)",price4Weeks:8e5,currency:"KRW",classDetails:"1:1 5H = ì´ 5H"},{name:"Business English (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"Power Speaking (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"TESOL Light (5:0)",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 5H = ì´ 5H"},{name:"TOEIC SPEAKING (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"OPIC (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"Pre-TOEIC (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"TOEIC (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"TOEIC Guarantee (4:4)",currency:"KRW",note:"12주 3,650,000 / 16주 4,800,000 / 20주 5,950,000 / 24주 7,300,000. ì¥ê¸° ì ì© ê°ê²©."},{name:"Pre-IELTS (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"IELTS (4:4)",price4Weeks:115e4,currency:"KRW",classDetails:"1:1 4H + 그룹 4H = ì´ 8H"},{name:"IELTS Guarantee (4:4)",currency:"KRW",note:"12주 3,850,000 / 16주 5,000,000 / 20주 6,150,000 / 24주 7,700,000. ì¥ê¸° ì ì© ê°ê²©."}],dormitories:[{name:"1ì¸ì¤ (Single)",capacity:1,price4Weeks:12e5,currency:"KRW"},{name:"2ì¸ì¤ (Double)",capacity:2,price4Weeks:1e6,currency:"KRW"},{name:"3ì¸ì¤ (Triple)",capacity:3,price4Weeks:8e5,currency:"KRW"},{name:"4ì¸ì¤ (Quadruple)",capacity:4,price4Weeks:7e5,currency:"KRW"}],registrationFee:{note:"ì
íê¸ 10ë§ì.",amount:1e5,currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:8e3,currency:"PHP",chargeUnit:"per_person"},{category:"SSP E-CARD",name:"E-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5050,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥",amount:6800,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥",amount:4250,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥",amount:4250,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥",amount:4250,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ë¹ìì°ì¥",name:"6ì°¨ ë¹ìì°ì¥",amount:5850,currency:"PHP",chargeUnit:"per_person",triggerWeeks:25},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ìê¸",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê³µì©ê´ë¦¬ë¹, ìë",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìì´ì»¨",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (í¤/기ìì¬)",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ì©",amount:1e3,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"íì IDì¹´ë",amount:300,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:3e3,currency:"PHP",chargeUnit:"per_person"}]},{id:"jic_challenger",picks:{recCombo:{course:"ESL Flex",dorm:"Room for 1 (studio)"}}
111,schoolCode:"JIC_CHALLENGER",name:"JIC Challenger Campus",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"ESL Flex",classDetails:"1:1 3H + ì¤íì
í´ëì¤ 2H = ì´ 5H",price4Weeks:8e5,currency:"KRW"},{name:"ESL Lite",classDetails:"1:1 4H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 8H",price4Weeks:1e6,currency:"KRW"},{name:"ESL Core",classDetails:"1:1 5H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 9H",price4Weeks:112e4,currency:"KRW"},{name:"ESL Standard",classDetails:"1:1 6H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 10H",price4Weeks:124e4,currency:"KRW"},{name:"IELTS Lite",classDetails:"1:1 4H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 8H",price4Weeks:124e4,currency:"KRW"},{name:"IELTS Core",classDetails:"1:1 5H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 9H",price4Weeks:132e4,currency:"KRW"},{name:"IELTS Standard",classDetails:"1:1 6H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 10H",price4Weeks:14e5,currency:"KRW"},{name:"IELTS Guarantee",classDetails:"1:1 6H + 그룹 í´ëì¤ 2H + ì¤íì
í´ëì¤ 2H = ì´ 10H",price4Weeks:14e5,currency:"KRW",note:"IELTS Guarantee Application Fee â±18,000 ë³ë (íì§ë©ë¶, 8주 ë¨ì). ìµì 12주 ë±ë¡ íì."}],dormitories:[{name:"Room for 1 (studio)",capacity:1,price4Weeks:159e4,currency:"KRW"},{name:"Room for 2 (studio)",capacity:2,price4Weeks:95e4,currency:"KRW"},{name:"Room for 4 (loft)",capacity:4,price4Weeks:89e4,currency:"KRW"},{name:"Room for 4 (studio)",capacity:4,price4Weeks:75e4,currency:"KRW"}],registrationFee:{currency:"KRW",amount:1e5,note:"ë±ë¡ê¸ â©100,000 (ë±ë¡ ì 1í ë©ë¶, íë¶ ë¶ê°)"},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"2026ë
6ì 29ì¼ ~ 8ì 22ì¼ ì±ì기 기ê°, ì£¼ë¹ 50,000ì ì¶ê°."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP",name:"SSP I-card",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension 1st (8 weeks)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"VISA Extension 2nd (12 weeks)",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension 3rd (16 weeks)",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"VISA Extension 4th (20 weeks)",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"VISA Extension 5th (24 weeks)",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Utility Bill",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Maintenance",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Deposit (refundable)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"Student ID card",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"Laundry Fee",amount:1200,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"기í",name:"IELTS Guarantee Application Fee",amount:18e3,currency:"PHP",chargeUnit:"per_8weeks",trigger:"ielts_guarantee"},{category:"기í",name:"Odd week (Arrival and Graduation)",amount:8e3,currency:"PHP",chargeUnit:"per_odd_week",trigger:"odd_week"}]},{id:"jic_premium",schoolCode:"JIC_PREMIUM",name:"JIC Premium Campus",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"Speaking Starter",classDetails:"1:1 4H + 그룹 1H = ì´ 5H (+ ìµì
2H ì í)",price4Weeks:103e4,currency:"KRW"},{name:"Speaking Pro",classDetails:"1:1 5H + 그룹 1H = ì´ 6H (+ ìµì
2H ì í)",price4Weeks:1215e3,currency:"KRW"},{name:"Speaking Master",classDetails:"1:1 6H + 그룹 1H = ì´ 7H (+ ìµì
2H ì í)",price4Weeks:14e5,currency:"KRW"},{name:"ESL TEP 8 (TEP 8)",classDetails:"1:1 3H + 그룹 3H = ì´ 6H (+ ìµì
2H ì í)",price4Weeks:103e4,currency:"KRW"},{name:"ESL TEP 9 (TEP 9)",classDetails:"1:1 4H + 그룹 3H = ì´ 7H (+ ìµì
2H ì í)",price4Weeks:113e4,currency:"KRW"},{name:"ESL TEP 10 (TEP 10)",classDetails:"1:1 5H + 그룹 3H = ì´ 8H (+ ìµì
2H ì í)",price4Weeks:123e4,currency:"KRW"},{name:"Active Senior 5 (AS 5)",classDetails:"1:1 3H = ì´ 3H (+ ìµì
2H ì í)",price4Weeks:83e4,currency:"KRW"},{name:"Active Senior 6 (AS 6)",classDetails:"1:1 4H = ì´ 4H (+ ìµì
2H ì í)",price4Weeks:93e4,currency:"KRW"},{name:"TOEIC",classDetails:"1:1 3H + 그룹 3H = ì´ 6H (+ ìµì
2H ì í)",price4Weeks:113e4,currency:"KRW"},{name:"Business Master 8 (BM 8)",classDetails:"1:1 6H = ì´ 6H (+ ìµì
2H ì í)",price4Weeks:14e5,currency:"KRW"}],dormitories:[{name:"Room for 1 Balcony",capacity:1,price4Weeks:179e4,currency:"KRW"},{name:"Semi-Single Room Dormitory 2",capacity:1,price4Weeks:159e4,currency:"KRW"},{name:"Couple Room Balcony",capacity:2,price4Weeks:129e4,currency:"KRW"},{name:"Room for 2 Balcony",capacity:2,price4Weeks:119e4,currency:"KRW"},{name:"Room for 2 No Balcony",capacity:2,price4Weeks:109e4,currency:"KRW"},{name:"Room for 4 Balcony",capacity:4,price4Weeks:89e4,currency:"KRW"},{name:"Room for 4 No Balcony",capacity:4,price4Weeks:79e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ê¸ â©100,000 (ë±ë¡ ì 1í ë©ë¶, íë¶ ë¶ê°)",amount:1e5},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"2026ë
6ì 29ì¼ ~ 8ì 22ì¼ ì±ì기 기ê°, ì£¼ë¹ 50,000ì ì¶ê°."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP",name:"SSP I-card",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR-I Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension 1st (8 weeks)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"VISA Extension 2nd (12 weeks)",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension 3rd (16 weeks)",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"VISA Extension 4th (20 weeks)",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"VISA Extension 5th (24 weeks)",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Utility Bill",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Maintenance",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Deposit (refundable)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"Student ID card",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"Laundry Fee",amount:1200,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"êµì¬ë¹",name:"Class Materials (ì½ì¤ë³ ìì´, 900~1,900)",amount:900,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
(Manila\xb7Clark)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"기í",name:"Odd week (Arrival and Graduation)",amount:8e3,currency:"PHP",chargeUnit:"per_odd_week",trigger:"odd_week"}],picks:{recCombo:{course:"ESL TEP 9 (TEP 9)",dorm:"Room for 1 Balcony"}}},{id:"lslc",schoolCode:"LSLC",name:"LSLC (La Salle Language Center)",region:"bacolod",regionLabel:"ë°ì½ë¡ë",schoolType:"general",minWeeks:1,courses:[{name:"ESL Regular (6 hrs)",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H",price4Weeks:91e4,currency:"KRW"},{name:"ESL Intensive (7 hrs)",classDetails:"1:1 5H + 그룹 2H + ìµì
1H = ì´ 8H",price4Weeks:96e4,currency:"KRW"},{name:"TOEIC / TOEFL / IELTS / BUSINESS",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H",price4Weeks:1e6,currency:"KRW"},{name:"TESOL",price4Weeks:1e6,currency:"KRW",classDetails:"그룹 4H + ì¤ìµ 5í(ë§ì§ë§ì£¼) + 1:1 ESL(ì í) = ì´ 8H"},{name:"IELTS Guarantee (LIG)",classDetails:"1:1 4H + 그룹 2H + ìµì
1H = ì´ 7H",price4Weeks:12e5,currency:"KRW",note:"12주 ì ì©. Single 6,900ì²ì / Twin 6,450ì²ì / Triple 6,150ì²ì (í©ì°ê°, 12주 ì´ì¡). 4주 íì° ìì
ë£ 120ë§ì."}
111],dormitories:[{name:"Single",capacity:1,price4Weeks:11e5,currency:"KRW"},{name:"Twin",capacity:2,price4Weeks:95e4,currency:"KRW"},{name:"Triple",capacity:3,price4Weeks:85e4,currency:"KRW"}],registrationFee:{note:"ë±ë¡ê¸ 100,000ì (1í, íë¶ ë¶ê°)",amount:1e5,currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"S.S.P",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"Visa 1st Extension",amount:4360,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"Visa 2nd Extension",amount:9990,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"Visa 3rd Extension",amount:10690,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"Visa 4th Extension",amount:14350,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"Visa 5th Extension",amount:15850,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Electricity Fee",amount:1500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Water Fee",amount:200,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Dorm Deposit",amount:2500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"ID Fee",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"Text Book",amountText:"â±200~400 (ê¶ë¹)",currency:"PHP",trigger:"enrollment"}]},{id:"mk",schoolCode:"MK",name:"MK Language Training Center",region:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",schoolType:"general",minWeeks:1,courses:[{name:"ESL Basic",classDetails:"1:1 3H + 1:5 2H = ì´ 5H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:8e5,currency:"KRW"},{name:"ESL Standard",classDetails:"1:1 4H + 1:5 2H = ì´ 6H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:9e5,currency:"KRW"},{name:"ESL Premium",classDetails:"1:1 5H + 1:5 2H = ì´ 7H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:105e4,currency:"KRW"},{name:"ESL Intensive",classDetails:"1:1 7H = ì´ 7H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:12e5,currency:"KRW"},{name:"IELTS",classDetails:"1:1 4H + 1:5 2H = ì´ 6H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:11e5,currency:"KRW"},{name:"IELTS Guarantee",classDetails:"1:1 6H + 1:5 2H = ì´ 8H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:13e5,currency:"KRW"},{name:"TESOL",classDetails:"ì ê·ìì
+ WVSU 8H (4주 ì½ì¤)",price4Weeks:45e4,currency:"KRW",note:"WVSU SSP ë³ë íì"},{name:"Business Course",classDetails:"1:1 4H + 1:5 2H = ì´ 6H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:11e5,currency:"KRW"},{name:"Survival Course",classDetails:"1:1 4H + 1:5 2H = ì´ 6H (+ ì ë
ì¤í°ë 2H ììµ)",price4Weeks:11e5,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:11e5,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:85e4,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:75e4,currency:"KRW"},{name:"4ì¸ì¤ (ê°ì¡±)",capacity:4,price4Weeks:7e5,currency:"KRW"}],picks:{lowest:{course:"ESL Basic",dorm:"3ì¸ì¤"}},registrationFee:{note:"ë±ë¡ë¹ 15ë§ì",amount:15e4,currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:7500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP",name:"SSP I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4300,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA 1st",amount:5040,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"VISA 2nd",amount:6420,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA 3rd",amount:4330,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"VISA 4th",amount:4330,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"VISA 5th",amount:4330,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amount:0,currency:"PHP",chargeUnit:"per_usage",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:200,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:250,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"기ìì¬ ë³´ì¦ê¸",amount:100,currency:"USD",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"기ìì¬ í¤ ë³´ì¦ê¸",amount:150,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ ì¼ë¡ì¼ë¡ ê³µí (1ì¸)",amount:1700,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ ì¹¼ë¦¬ë³´ ê³µí (1ì¸)",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"MK ID Card",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹ 250~400)",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹ (8kgë¹ 150)",amount:150,currency:"PHP",chargeUnit:"per_person",trigger:"usage"},{category:"ECC/기ííê°",name:"CRTV",amount:1800,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over",triggerWeeks:25},{category:"ECC/기ííê°",name:"ECC",amount:1e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over",triggerWeeks:25}]},{id:"monol_golf",schoolCode:"MONOL_GOLF",name:"Monol 골í íë¡ê·¸ë¨",region:"baguio",regi
111onLabel:"ë°ê¸°ì¤",schoolType:"camp",minWeeks:4,courses:[],dormitories:[],registrationFee:{note:"í¨í¤ì§ì í¬í¨",amount:0,currency:"KRW"},surcharges:[],localFees:[],packages:[{name:"골í íë¡ê·¸ë¨ (4주)",weeks:4,price:32e5,allInclusive:!0,includes:"ì¤í¬ë¦° 골í ì¤íëì¤ 1ë1 ë ì¨ ì£¼1í + ì¼ì¸ ì°ìµì¥ 그룹ë ì¨ ì£¼2í + ì¤ì íëë ì¨ 4주ì 2í, ì¬íìì´\xb7골íìì´ ì¤ì ìì´ ìì
2íì, ì¤í
ë¤ë â¦",note:"íêµì¸ í°ì¹íë¡ì í¨ê»íë 골í ë ì¨. ì¤í
ë¤ë 1ì¸ì¤ ì¬ì©. íê³µë£ì ì¬íì ë³´íì ì ì¸í 모ë íì§ë¹ì© í¬í¨(í½ì
, ìë© ë±)."}]},{id:"monol",schoolCode:"MONOL",name:"Monol ì´íì",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:2,courses:[{name:"LEAP 5",classDetails:"1:1 5H = ì´ 5H (+ ìµì
그룹 4H ì í)",price4Weeks:145e4,currency:"KRW"},{name:"IELTS 5",classDetails:"1:1 5H = ì´ 5H (+ ìµì
그룹 4H(Speaking\xb7Listening\xb7Reading\xb7Writing task1\xb7task2) ì í)",price4Weeks:125e4,currency:"KRW"},{name:"ESL 5",classDetails:"1:1 5H = ì´ 5H (+ ìµì
그룹 4H(Speaking2\xb7Listening2\xb7Reading1) ì í)",price4Weeks:11e5,currency:"KRW"},{name:"ESL 4",classDetails:"1:1 4H = ì´ 4H (+ ìµì
그룹 4H(Speaking2\xb7Listening1\xb7Reading1) ì í)",price4Weeks:93e4,currency:"KRW"},{name:"ESL 3",classDetails:"1:1 3H = ì´ 3H (+ ìµì
그룹 4H(Speaking1\xb7Listening1\xb7Reading1) ì í)",price4Weeks:76e4,currency:"KRW"},{name:"Senior ESL",classDetails:"1:1 3H = ì´ 3H (+ ìµì
그룹 4H ì í)",price4Weeks:85e4,currency:"KRW"}],dormitories:[{name:"í리미ì 1ì¸ì¤",capacity:1,price4Weeks:14e5,currency:"KRW"},{name:"ì¤í
ë¤ë 1ì¸ì¤",capacity:1,price4Weeks:109e4,currency:"KRW"},{name:"ì¸ë¯¸ 1ì¸ì¤",capacity:1,price4Weeks:99e4,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:83e4,currency:"KRW"},{name:"4ì¸ì¤ (캡ì)",capacity:4,price4Weeks:75e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ê¸ â©100,000",amount:1e5},surcharges:[{label:"ì±ì기 ì¶ê° ìê¸",amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ìì°¨ì§. 2026.6.29~8.22, ì£¼ë¹ 50,000ì."}],localFees:[{category:"í½ì
/ìë©",name:"í½ì
ë¹",currency:"PHP",amountText:"ìë´ ì ìë´"},{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 5~8주",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 9~12주",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 13~16주",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 17~20주",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ 21~24주",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì¢
í© ê´ë¦¬ë¹",amount:5e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸ (íë¶ê°ë¥)",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦",amount:0,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"}]},{id:"pilaedu",schoolCode:"PILAEDU",name:"PILAedu (Philippine International Language Academy)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Trial ESL (1:1 3H + 그룹 1H + ìµì
2H)",price4Weeks:7e5,currency:"KRW",classDetails:"1:1 3H + 그룹 1H + ìµì
2H = ì´ 6H"},{name:"Lite ESL (1:1 4H + 그룹 2H + ìµì
2H)",price4Weeks:9e5,currency:"KRW",classDetails:"1:1 4H + 그룹 2H + ìµì
2H = ì´ 8H"},{name:"Regular ESL (1:1 5H + 그룹 3H + ìµì
2H)",price4Weeks:11e5,
111currency:"KRW",classDetails:"1:1 5H + 그룹 3H + ìµì
2H = ì´ 10H"},{name:"Intensive ESL (1:1 6H + 그룹 3H + ìµì
2H)",price4Weeks:125e4,currency:"KRW",classDetails:"1:1 6H + 그룹 3H + ìµì
2H = ì´ 11H"},{name:"Business (1:1 5H + 그룹 3H + ìµì
2H)",price4Weeks:12e5,currency:"KRW",classDetails:"1:1 5H + 그룹 3H + ìµì
2H = ì´ 10H"},{name:"IELTS/TOEFL (1:1 5H + 그룹 3H + ìµì
2H)",price4Weeks:14e5,currency:"KRW",classDetails:"1:1 5H + 그룹 3H + ìµì
2H = ì´ 10H"}],dormitories:[{name:"Single B (Dorm w/ T/B)",capacity:1,price4Weeks:2e6,currency:"KRW"},{name:"Twin B (Dorm w/ T/B)",capacity:2,price4Weeks:16e5,currency:"KRW"},{name:"Single C (Dorm w/ T/B)",capacity:1,price4Weeks:15e5,currency:"KRW"},{name:"Quad B (Dorm w/o T/B)",capacity:4,price4Weeks:125e4,currency:"KRW"},{name:"Quad C (Dorm w/o T/B)",capacity:4,price4Weeks:105e4,currency:"KRW"},{name:"Single A (Condo)",capacity:1,price4Weeks:25e5,currency:"KRW"},{name:"Twin A (Condo)",capacity:2,price4Weeks:19e5,currency:"KRW"}],registrationFee:{note:"ë±ë¡ë¹ 13ë§ì.",amount:13e4,currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:8e3,currency:"PHP",chargeUnit:"per_person"},{category:"SSP",name:"SSP I-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ë¹ìì°ì¥",name:"VISA I-Card (ACR)",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (ëì )",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì¢
í©ê´ë¦¬ë¹ (Miscellaneous)",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기/ìë",amount:3500,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
(í¸ë)",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"ID ë°ê¸",amount:500,currency:"PHP",chargeUnit:"per_person"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹ 500)",amount:500,currency:"PHP",chargeUnit:"per_person"},{category:"ECC/기ííê°",name:"ECC",amount:2e3,currency:"PHP",chargeUnit:"per_person"},{category:"ì¸íë¹",name:"ì¸íë¹ (1kgë¹ 100)",amount:100,currency:"PHP",chargeUnit:"per_person"}]},{id:"philinter",schoolCode:"PHILINTER",name:"Philinter Academy",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"Intensive ESL",price4Weeks:1e3,currency:"USD",classDetails:"1:1 4H + SGC 1H + Connecting 2H + Evening Study 2H = ì´ 9H (+ BGC 1H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 11H)"},{name:"General ESL",price4Weeks:870,currency:"USD",classDetails:"1:1 3H + SGC 1H + Connecting 2H = ì´ 6H (+ BGC 2H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 9H)"},{name:"IPS (Intensive Power Speaking)",price4Weeks:1100,currency:"USD",classDetails:"1:1 4H + SGC 2H + Connecting 2H = ì´ 8H (+ Evening Study 2H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 11H)"},{name:"Light ESL",price4Weeks:750,currency:"USD",classDetails:"1:1 2H + SGC 2H = ì´ 4H (+ BGC 1H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 6H)"},{name:"Speaking (Premium)",price4Weeks:1400,currency:"USD",note:"8주 ì ì© (Premium).",classDetails:"그룹 4H = ì´ 4H"},{name:"Booster Speaking",price4Weeks:1400,currency:"USD",note:"4주 ì ì©.",classDetails:"그룹 4H = ì´ 4H"},{name:"IELTS Intensive",price4Weeks:1120,currency:"USD",classDetails:"1:1 4H + SGC 4H = ì´ 8H (+ Evening Study 2H ì í)"},{name:"IELTS Guarantee 12주",price4Weeks:1350,currency:"USD",classDetails:"1:1 4H + SGC 4H = ì´ 8H (+ EVENING ACTIVITY 2H ìµì
\xb7 ìµë 10H)",note:"12주 ì ì©."},{name:"IELTS Guarantee 8주",price4Weeks:1530,currency:"USD",classDetails:"1:1 4H + SGC 4H = ì´ 8H (+ EVENING ACTIVITY 2H ìµì
\xb7 ìµë 10H)",note:"8주 ì ì©."},{name:"TOEIC Regular",price4Weeks:1040,currency:"USD",classDetails:"1:1 4H + SGC 2H + BGC 2H = ì´ 8H (+ EVENING ACTIVITY 1H ìµì
\xb7 ìµë 9H)"},{name:"TOEIC Guarantee 12주",price4Weeks:1200,currency:"USD",classDetails:"1:1 4H + ì그룹 2H + ë그룹 2H = ì´ 8H",note:"12주 ì ì©."},{name:"Focus Industry",price4Weeks:1190,currency:"USD",classDetails:"1:1 3H(ì ê³µ elective) + SGC 2H + Connecting 2H = ì´ 7H (+ BGC 1H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 9H)"},{name:"Basic Business",price4Weeks:1060,currency:"USD",classDetails:"1:1 3H + SGC 2H + Connecting 2H = ì´ 7H (+ BGC 1H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 9H)"},{name:"Advanced Business",price4Weeks:1110,currency:"USD",classDetails:"1:1 3H + SGC 2H + Connecting 2H = ì´ 7H (+ BGC 1H\xb7EVENING ACTIVITY 1H ìµì
\xb7 ìµë 9H)"}],dormitories:[{name:"1ì¸ì¤ (Single)",capacity:1,price4Weeks:1400,currency:"USD"},{name:"2ì¸ì¤ (Double)",capacity:2,price4Weeks:970,currency:"USD"},{name:"3ì¸ì¤ (Triple)",capacity:3,price4Weeks:810,currency:"USD"},{name:"AZON ì½ë 1ì¸ì¤",capacity:1,price4Weeks:1690,currency:"USD"},{name:"AZON ì½ë 2ì¸ì¤",capacity:2,price4Weeks:1100,currency:"USD"},{name:"AZON ì½ë 3ì¸ì¤",capacity:3,price4Weeks:890,currency:"USD"}],registrationFee:{amount:120,currency:"USD"}
111,surcharges:[{amountPerWeek:40,startDate:"2026-07-06",endDate:"2026-08-30",currency:"USD",note:"ì±ì기 ìì°¨ì§. ì£¼ë¹ 40 USD."}],hintCourse:"í루 ìì
ìê° ì ì, ë¶ë´ ìë ê³¼ì ìì£¼ë¡ ê³¨ë¼ëë ¸ì´ì.",picks:{recCourses:["Light ESL","General ESL","Intensive ESL"]},localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"SSP ACR I-Card",amount:4500,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"Tourist ACR I-Card",amount:4e3,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥ (5-8주)",amount:5140,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (9-12주)",amount:6920,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (13-16주)",amount:4440,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (17-20주)",amount:4950,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (21-24주)",amount:5450,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸",amount:250,currency:"PHP",chargeUnit:"per_week"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸",amountByWeeks:{4:5e3,8:9e3,12:13e3},currency:"PHP"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:550,currency:"PHP",chargeUnit:"per_week"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amountByWeeks:{4:3e3,8:4e3,12:5e3},currency:"PHP"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"},{category:"íìì¦/ì¬ì§",name:"School ID Card",amount:400,currency:"PHP",chargeUnit:"per_person"}]},{id:"qqenglish_bfc",schoolCode:"QQENGLISH_BFC",name:"QQ English Beach Front Campus (BFC)",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:2,courses:[{name:"1:1 4ìê°",price4Weeks:784,currency:"USD",note:"1:1 ìì
4ìê°",classDetails:"1:1 4H = ì´ 4H"},{name:"1:1 4ìê° + 그룹 2ìê°",price4Weeks:884,currency:"USD",note:"1:1 ìì
4ìê° + 그룹ìì
2ìê°",classDetails:"1:1 4H + 그룹 2H(BFC ì ì©) = ì´ 6H"},{name:"1:1 6ìê°",price4Weeks:1078,currency:"USD",note:"1:1 ìì
6ìê°",classDetails:"1:1 6H = ì´ 6H"},{name:"1:1 6ìê° + 그룹 2ìê°",price4Weeks:1178,currency:"USD",note:"1:1 ìì
6ìê° + 그룹ìì
2ìê°",classDetails:"1:1 6H + 그룹 2H = ì´ 8H"},{name:"1:1 8ìê°",price4Weeks:1437,currency:"USD",note:"1:1 ìì
8ìê°",classDetails:"1:1 8H = ì´ 8H"}],dormitories:[{name:"캡ì 기ìì¬ (ì±ì¸ë§)",price4Weeks:351,currency:"USD"},{name:"íµí (ìì ìì)",price4Weeks:0,currency:"USD"},{name:"í¸í
(ì¸ë¶ í¸í
)",price4Weeks:1350,currency:"USD"}],registrationFee:{note:"ë±ë¡ê¸ $150",amount:150,currency:"USD"},surcharges:[{label:"í¼í¬ìì¦ ì¶ê°ë¹ (6,7,8ì)",amountPerWeek:37.5,startDate:"2026-06-01",endDate:"2026-08-31",currency:"USD",note:"í¼í¬ìì¦(6,7,8ì) ìì
ë£ ì¶ê°. 모ë ì½ì¤ ëì¼íê² 4ì£¼ë¹ $150 ì¶ê° (ì£¼ë¹ $37.50). 기ìì¬/ìì¬ë ë ê·¤ë¬ì ëì¼."}],localFees:[{category:"SSP",name:"SSP",amount:10440,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"I-Card (ACR I-Card)",amount:3200,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension Fee",amount:4460,currency:"PHP",chargeUnit:"per_month",trigger:"monthly",triggerWeeks:5},{category:"íìì¦/ì¬ì§",name:"Student ID",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ECC/기ííê°",name:"ECC íì¤ ì²ë¦¬",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"6months_plus",triggerWeeks:25},{category:"ECC/기ííê°",name:"ECC ê¸´ê¸ ì²ë¦¬",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"6months_plus",triggerWeeks:25}]},{id:"qqenglish_itp",schoolCode:"QQENGLISH_ITP",name:"QQ English IT Park",regi
111on:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:2,courses:[{name:"1:1 4ìê°",price4Weeks:784,currency:"USD",note:"1:1 ìì
4ìê°",classDetails:"1:1 4H = ì´ 4H"},{name:"1:1 4ìê° + 그룹 2ìê°",price4Weeks:884,currency:"USD",note:"1:1 ìì
4ìê° + 그룹ìì
2ìê°",classDetails:"1:1 6H + 그룹 2H = ì´ 8H"},{name:"1:1 6ìê°",price4Weeks:1078,currency:"USD",note:"1:1 ìì
6ìê°",classDetails:"1:1 6H = ì´ 6H"},{name:"1:1 6ìê° + 그룹 2ìê°",price4Weeks:1178,currency:"USD",note:"1:1 ìì
6ìê° + 그룹ìì
2ìê°",classDetails:"1:1 6H + 그룹 2H = ì´ 8H"},{name:"1:1 8ìê°",price4Weeks:1437,currency:"USD",note:"1:1 ìì
8ìê°",classDetails:"1:1 8H = ì´ 8H"}],dormitories:[{name:"íµí (ìì ìì)",price4Weeks:0,currency:"USD"},{name:"캡ì 기ìì¬ (ì±ì¸ë§)",price4Weeks:351,currency:"USD"},{name:"í¸í
(ì¸ë¶ í¸í
)",price4Weeks:1350,currency:"USD"}],registrationFee:{currency:"USD",amount:150,note:"ë±ë¡ê¸ $150"},surcharges:[{label:"í¼í¬ìì¦ ì¶ê°ë¹ (6,7,8ì)",amountPerWeek:37.5,startDate:"2026-06-01",endDate:"2026-08-31",currency:"USD",note:"í¼í¬ìì¦(6,7,8ì) ìì
ë£ ì¶ê°. 모ë ì½ì¤ ëì¼íê² 4ì£¼ë¹ $150 ì¶ê° (ì£¼ë¹ $37.50). 기ìì¬/ìì¬ë ë ê·¤ë¬ì ëì¼."}],localFees:[{category:"SSP",name:"SSP",amount:10440,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"I-Card (ACR I-Card)",amount:3200,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"VISA Extension Fee",amount:4460,currency:"PHP",chargeUnit:"per_month",trigger:"monthly",triggerWeeks:5},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì ê¸°ì¸ (캡ì 기ìì¬ ì´ì© ì)",amount:100,currency:"PHP",chargeUnit:"per_day",trigger:"capsule_dorm"},{category:"íìì¦/ì¬ì§",name:"Student ID",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ECC/기ííê°",name:"ECC íì¤ ì²ë¦¬",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"6months_plus",triggerWeeks:25},{category:"ECC/기ííê°",name:"ECC ê¸´ê¸ ì²ë¦¬",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"6months_plus",triggerWeeks:25}]},{id:"smeag_capital",schoolCode:"SMEAG_CAPITAL",name:"SMEAG Capital Campus",region:"cebu",regionLabel:"ì¸ë¶",schoolType:"general",minWeeks:1,courses:[{name:"ESL",classDetails:"1:1 4H + 1:4 2H + ì¤íì
2H + ì´ë¸ë ì¤í르í 2H = ì´ 10H",price4Weeks:84e4,currency:"KRW"},{name:"IELTS",classDetails:"1:1 4H + 1:4 2H + ì¤íì
1H + 1:8 2H + ì´ë¸ë ì¤í르í 1H = ì´ 10H (ì
문 기ì¤)",price4Weeks:114e4,currency:"KRW"},{name:"TOEFL",classDetails:"1:1 4H + 1:4 2H + ì¤íì
1H + 1:8 2H + ì´ë¸ë ì¤í르í 1H = ì´ 10H (ì
문 기ì¤)",price4Weeks:114e4,currency:"KRW"},{name:"TOEIC",classDetails:"1:1 4H + 1:4 2H + ì¤íì
2H + ì´ë¸ë ì¤í르í 2H = ì´ 10H (ì
문 기ì¤)",price4Weeks:108e4,currency:"KRW"},{name:"Speaking Master",classDetails:"1:1 4H + 1:4 2H + ì¤íì
2H + ì´ë¸ë ì¤í르í 2H = ì´ 10H",price4Weeks:114e4,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤",price4Weeks:119e4,currency:"KRW",capacity:1},{name:"2ì¸ì¤",price4Weeks:102e4,currency:"KRW",capacity:2},{name:"3ì¸ì¤",price4Weeks:89e4,currency:"KRW",capacity:3},{name:"4ì¸ì¤",price4Weeks:79e4,currency:"KRW",capacity:4},{name:"5ì¸ì¤",price4Weeks:73e4,currency:"KRW",capacity:5},{name:"ì¸ë¶ 1ì¸ì¤",price4Weeks:143e4,currency:"KRW",capacity:1},{name:"ì¸ë¶ 2ì¸ì¤",price4Weeks:126e4,currency:"KRW",capacity:2}],registrationFee:{amount:1e5,currency:"KRW"},surcharges:[],picks:{lowest:{course:"ESL",dorm:"5ì¸ì¤"}},priceNote:"2027ë
ë¹ì© ì¸ì ìì ",localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person"},{category:"ACR I-CARD",name:"SSP I-Card",amount:4300,currency:"PHP",chargeUnit:"per_person"},{category:"ë¹ìì°ì¥",name:"VISA I-Card",amount:4300,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"1ì°¨ ë¹ìì°ì¥",amount:5130,currency:"PHP",chargeUnit:"per_person",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (ëì )",amount:11530,currency:"PHP",chargeUnit:"per_person",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (ëì )",amount:15960,currency:"PHP",chargeUnit:"per_person",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (ëì )",amount:20390,currency:"PHP",chargeUnit:"per_person",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (ëì )",amount:24820,currency:"PHP",chargeUnit:"per_person",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ê´ë¦¬ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기\xb7ìë",amount:2400,currency:"PHP",chargeUnit:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person"},{category:"í½ì
/ìë©",name:"í½ì
ë¹",amount:1200,currency:"PHP",chargeUnit:"per_person"}],packages:[]},{id:"talk",schoolCode:"TALK",name:"TALK Academy (í í¬ ì´íì)",region:"clark",regi
111onLabel:"í´ë½",schoolType:"general",minWeeks:1,courses:[{name:"1 CLASS",price4Weeks:22e4,currency:"KRW",note:"1:1 1íì. 1주 55,000ì.",classDetails:"ì´ 1íì(1êµì 40ë¶)"},{name:"1 GROUP",price4Weeks:11e4,currency:"KRW",note:"그룹 1íì. 1주 ë¶ê°.",classDetails:"ì´ 1íì(1êµì 40ë¶)"},{name:"TALK4",price4Weeks:88e4,currency:"KRW",note:"1:1 4íì. 4주 88ë§ì.",classDetails:"1:1 4íì = ì´ 4íì"},{name:"TALK6",price4Weeks:132e4,currency:"KRW",note:"1:1 6íì. 4주 132ë§ì.",classDetails:"1:1 6íì = ì´ 6íì"},{name:"TALK4 Hybrid A",price4Weeks:11e5,currency:"KRW",note:"1주 ë¶ê°. 4주 110ë§ì.",classDetails:"1:1 4íì + 그룹 2íì = ì´ 6íì"},{name:"TALK6 Hybrid A",price4Weeks:154e4,currency:"KRW",note:"1주 ë¶ê°. 4주 154ë§ì.",classDetails:"1:1 6íì + 그룹 2íì = ì´ 8íì"},{name:"TALK4 Hybrid J",price4Weeks:11e5,currency:"KRW",note:"1주 ë¶ê°. 4주 110ë§ì.",classDetails:"1:1 4íì + 그룹 2íì = ì´ 6íì"},{name:"TALK6 Hybrid J",price4Weeks:154e4,currency:"KRW",note:"1주 ë¶ê°. 4주 154ë§ì.",classDetails:"1:1 6íì + 그룹 2íì = ì´ 8íì"},{name:"SENIOR",price4Weeks:9e5,currency:"KRW",note:"ìëì´ ê³¼ì . 4주 90ë§ì.",classDetails:"1:1 4íì(1êµì 40ë¶) = ì´ 4íì"},{name:"TALK GOLF",price4Weeks:44e4,currency:"KRW",note:"골í ê³¼ì . 4주 44ë§ì.",classDetails:"1:1 2íì(1êµì 40ë¶) = ì´ 2íì"},{name:"BUSINESS",price4Weeks:132e4,currency:"KRW",note:"ë¹ì¦ëì¤ ê³¼ì . 4주 132ë§ì.",classDetails:"1:1 6íì = ì´ 6íì"},{name:"INTERNSHIP",price4Weeks:0,currency:"KRW",note:"4주 180ë§ì / 8주 340ë§ìë§ ì¡´ì¬ (í¹ì 기ê°). price4Weeksë ìì¤í
ê³ì°ì ì¬ì© ë¶ê° â ì´ìì ìë 견ì .",classDetails:"1:1 260ìê° + OJT 60ìê°"},{name:"BARISTA (8주ë¶í° ë±ë¡ ê°ë¥)",price4Weeks:37e5,currency:"KRW",note:"8주ë¶í° ë±ë¡ ê°ë¥. 8주 370ë§ì(í¹ì ê¸°ê° ê³¼ì ).",classDetails:"1:1 260ìê° + OJT 60ìê°"},{name:"TOEIC",price4Weeks:154e4,currency:"KRW",note:"TOEIC ê³¼ì . 4주 154ë§ì.",classDetails:"1:1 6íì + 그룹 1íì = ì´ 7íì"},{name:"IELTS",price4Weeks:165e4,currency:"KRW",note:"IELTS ê³¼ì . 4주 165ë§ì.",classDetails:"1:1 6íì + 그룹 1íì = ì´ 7íì"}],dormitories:[{name:"1ì¸ì¤ ì±ì¸ (~2026.8.28)",capacity:1,price4Weeks:12e5,currency:"KRW"},{name:"2ì¸ì¤ ì±ì¸ (~2026.8.28)",capacity:2,price4Weeks:8e5,currency:"KRW"},{name:"1ì¸ì¤ ì±ì¸ (2026.8.31~)",capacity:1,price4Weeks:12e5,currency:"KRW"},{name:"2ì¸ì¤ ì±ì¸ (2026.8.31~)",capacity:2,price4Weeks:132e4,currency:"KRW"},{name:"3+1ì¸ì¤ ì±ì¸ (2026.8.31~)",capacity:1,price4Weeks:9e5,currency:"KRW"},{name:"4ì¸ì¤ ì±ì¸ (2026.8.31~)",capacity:4,price4Weeks:8e5,currency:"KRW"},{name:"ê°ì¡± 2ì¸ì¤ (~2026.8.28)",capacity:2,price4Weeks:16e5,currency:"KRW"},{name:"ê°ì¡± 3ì¸ì¤ (~2026.8.28)",capacity:3,price4Weeks:19e5,currency:"KRW"},{name:"ê°ì¡± 4ì¸ì¤ (~2026.8.28)",capacity:4,price4Weeks:22e5,currency:"KRW"},{name:"ê°ì¡± 2ì¸ì¤ (2026.8.31~12.31)",capacity:2,price4Weeks:16e5,currency:"KRW"},{name:"ê°ì¡± 3ì¸ì¤ (2026.8.31~12.31)",capacity:3,price4Weeks:19e5,currency:"KRW"},{name:"ê°ì¡± 4ì¸ì¤ (2026.8.31~12.31)",capacity:4,price4Weeks:22e5,currency:"KRW"},{name:"ê°ì¡± 2ì¸ì¤ (2027.1.4~)",capacity:2,price4Weeks:278e4,currency:"KRW"},{name:"ê°ì¡± 3ì¸ì¤ (2027.1.4~)",capacity:3,price4Weeks:362e4,currency:"KRW"},{name:"ê°ì¡± 4ì¸ì¤ (2027.1.4~)",capacity:4,price4Weeks:446e4,currency:"KRW"}],picks:{recCombo:{course:"SENIOR",dorm:"1ì¸ì¤ ì±ì¸ (2026.8.31~)"}},registrationFee:{currency:"KRW",amount:1e5,note:"ì¸ë¹ ë±ë¡ê¸ 10ë§ì ë³ë."},surcharges:[],localFees:[{category:"기í",name:"ìì¬ 1ì (ì í\xb7ì ì² ì)",currency:"PHP",amountByWeeks:{4:8e3,8:16e3,12:24e3},excludeFromTotal:!0},{category:"기í",name:"ìì¬ 2ì (ì í\xb7ì ì² ì)",currency:"PHP",amountByWeeks:{4:15e3,8:3e4,12:45e3},excludeFromTotal:!0},{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:0,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:8},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (8주)",amount:5130,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:4},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (12주)",amount:11540,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:8},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (16주)",amount:16080,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:12},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (20주)",amount:20620,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:16},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (24주)",amount:26600,currency:"PHP",chargeUnit:"per_person",trigger:"over_weeks",triggerWeeks:20},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìì ì½ë ê´ë¦¬ë¹",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"per_4weeks"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기\xb7ìë\xb7ì¸í°ë·ë¹ (1ì¸ 3,500/2ì¸ 3,000/3ì¸ 2,500/4ì¸ 2,000)",amount:3500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"per_4weeks"},{category:"ë³´ì¦ê¸",name:"ìì ë³´ì¦ê¸ (ì±ì¸ 5,000/ê°ì¡± 10,000)",amount:5e3,currency:"PHP",chargeUnit:"flat",trigger:"always"}
111,{category:"í½ì
/ìë©",name:"í´ë½ê³µí í½ì
ë¹ (ì±ì¸ 1,000/ê°ì¡± 500, ì¸ë¹)",amount:1e3,currency:"PHP",chargeUnit:"flat",trigger:"always"},{category:"íìì¦/ì¬ì§",name:"ìì´ë",amount:500,currency:"PHP",chargeUnit:"per_person",trigger:"always"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹ 170~500, ë³´ì¦ê¸ ì°¨ê°)",amount:500,currency:"PHP",chargeUnit:"per_person",trigger:"always"}]},{id:"talk_camp_adult",schoolCode:"TALK_CAMP_ADULT",name:"TALK Academy ì±ì¸ 2주 ë¨ê¸° ìº í",region:"clark",regionLabel:"í´ë½",schoolType:"camp",minWeeks:2,courses:[],dormitories:[],registrationFee:{amount:0,note:"í¨í¤ì§ì í¬í¨.",currency:"KRW"},surcharges:[],localFees:[],packages:[{name:"ì±ì¸ 2주 ë¨ê¸° ìº í - ì±ê¸ë£¸",weeks:2,price:25e5,allInclusive:!0,includes:"SSP (Special Study Permit), ì 문 ê°ì¬ìì ìì´ ìì
ì¼ 6íì, 모ë êµì¬ ë° íìµ ìë£, í¸ìí 기ìì¬ ìë°, ê³µí í½ì
ë° ìë© ìâ¦",note:"ìí 2주 ê¸°ì¤ 250ë§ì. 모ë ë¹ì©ì´ í¬í¨ë ì¬ì¸ì í¨í¤ì§."},{name:"ì±ì¸ 2주 ë¨ê¸° ìº í - ëë¸ë£¸",weeks:2,price:23e5,allInclusive:!0,includes:"SSP (Special Study Permit), ì 문 ê°ì¬ìì ìì´ ìì
ì¼ 6íì, 모ë êµì¬ ë° íìµ ìë£, í¸ìí 기ìì¬ ìë°, ê³µí í½ì
ë° ìë© ìâ¦",note:"ìí 2주 ê¸°ì¤ 230ë§ì. 모ë ë¹ì©ì´ í¬í¨ë ì¬ì¸ì í¨í¤ì§."}]},{id:"wales",schoolCode:"WALES",name:"WALES ì´íì",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:4,courses:[{name:"EEP LITE",classDetails:"1:1 3íì = ì´ 3íì",price4Weeks:9e5,currency:"KRW"},{name:"EEP",classDetails:"1:1 4íì + 그룹 1íì = ì´ 5íì",price4Weeks:11e5,currency:"KRW"},{name:"INFINITY LITE",classDetails:"1:1 3íì + 그룹 1íì = ì´ 4íì",price4Weeks:105e4,currency:"KRW"},{name:"INFINITY INTENSIVE",classDetails:"1:1 5íì + 그룹 3íì = ì´ 8íì",price4Weeks:14e5,currency:"KRW"},{name:"INFINITY STANDARD",classDetails:"1:1 4íì + 그룹 2íì = ì´ 6íì",price4Weeks:12e5,currency:"KRW"},{name:"INFINITY PRO",classDetails:"1:1 4íì + 그룹 3íì = ì´ 7íì",price4Weeks:165e4,currency:"KRW"},{name:"Pearson Test of English (PTE)",classDetails:"1:1 5íì + 그룹 2íì = ì´ 7íì",price4Weeks:165e4,currency:"KRW"},{name:"IELTS",classDetails:"1:1 5íì + 그룹 2íì = ì´ 7íì",price4Weeks:165e4,currency:"KRW"},{name:"IELTS GUARANTEE (ë³´ì¥ë°)",classDetails:"1:1 6íì + 그룹 2íì = ì´ 8íì",price4Weeks:182e4,currency:"KRW",note:"ë³´ì¥ë°. 12주 546ë§ / 16주 728ë§ / 20주 910ë§ / 24주 1092ë§ì. 12주 ì´ì ë±ë¡ íì. ë±ë¡ê¸ â©200,000. 4주 íì°ê° 182ë§ì (12주\xf73 기ì¤)."}],dormitories:[{name:"ì½ë ì¸ë¯¸ì±ê¸ 1ì¸ì¤",capacity:1,price4Weeks:195e4,currency:"KRW"},{name:"ì½ë í¨ë°ë¦¬(3)",capacity:3,price4Weeks:16e5,currency:"KRW"},{name:"ì½ë í¨ë°ë¦¬(4)",capacity:4,price4Weeks:147e4,currency:"KRW"},{name:"ë¡ì´ í리미ì ì¤íëì¤ 1ì¸ì¤",capacity:1,price4Weeks:22e5,currency:"KRW"},{name:"ë¡ì´ í리미ì ì¤íëì¤ 2ì¸ì¤",capacity:2,price4Weeks:15e5,currency:"KRW"},{name:"ë¡ì´ í리미ì ì¤íëì¤ í¨ë°ë¦¬(3)",capacity:3,price4Weeks:125e4,currency:"KRW"},{name:"ìì´í 1ì¸ì¤(ë² ëë¤)",capacity:1,price4Weeks:16e5,currency:"KRW"},{name:"ìì´í 1ì¸ì¤",capacity:1,price4Weeks:145e4,currency:"KRW"},{name:"ìì´í 2ì¸ì¤",capacity:2,price4Weeks:13e5,currency:"KRW"},{name:"ë¡ì´ ì¤íëì¤ 1ì¸ì¤",capacity:1,price4Weeks:165e4,currency:"KRW"},{name:"ë¡ì´ ì¤íëì¤ í¨ë°ë¦¬(2)",capacity:2,price4Weeks:125e4,currency:"KRW"},{name:"í리미ì ì¤íëì¤ 1ì¸ì¤",capacity:1,price4Weeks:235e4,currency:"KRW"},{name:"í리미ì ì¤íëì¤ 2ì¸ì¤",capacity:2,price4Weeks:165e4,currency:"KRW"},{name:"í리미ì ì¤íëì¤ í¨ë°ë¦¬(3)",capacity:3,price4Weeks:14e5,currency:"KRW"},{name:"ì¤íëì¤ 1ì¸ì¤",capacity:1,price4Weeks:18e5,currency:"KRW"},{name:"ì¤íëì¤ í¨ë°ë¦¬(2)",capacity:2,price4Weeks:1375e3,currency:"KRW"}],picks:{lowest:{course:"EEP LITE",dorm:"ìì´í 2ì¸ì¤"},recDorms:["ìì´í 1ì¸ì¤","ì½ë ì¸ë¯¸ì±ê¸ 1ì¸ì¤","ë¡ì´ ì¤íëì¤ 1ì¸ì¤","ì¤íëì¤ 1ì¸ì¤","í리미ì ì¤íëì¤ 1ì¸ì¤"]},registrationFee:{amount:1e5,note:"ë±ë¡ê¸ KRW 100,000",currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP",amount:12300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over_59days",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (6주)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (8주)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (12주)",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (16주)",amount:15300,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (20주)",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (24주)",amount:24140,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:25},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Management Fee",amount:1e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"Electricity & Water",amount:3500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"Dormitory Deposit",amount:5e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"Student ID Card",amount:300,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"}]},{id:"we_academy",schoolCode:"WE_ACADEMY",name:"WE Woori (WOORI)",regi
111on:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",schoolType:"general",minWeeks:4,courses:[{name:"ESL A course",classDetails:"1:1 3H + ì그룹 2H = ì´ 5H (+ ì¼ê°ë¬´ë£ 2H(17:30~19:00, ê¸ì ì¸) (ì ê· 50ë¶/ì¼ê° 45ë¶) ì í)",price4Weeks:66e4,currency:"KRW"},{name:"ESL B course",classDetails:"1:1 4H + ì그룹 1H = ì´ 5H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:73e4,currency:"KRW"},{name:"ESL C course",classDetails:"1:1 4H + ì그룹 2H = ì´ 6H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:78e4,currency:"KRW"},{name:"ESL D course",classDetails:"1:1 5H + ì그룹 2H = ì´ 7H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:95e4,currency:"KRW"},{name:"TOEIC course",classDetails:"1:1 4H + ì그룹 2H = ì´ 6H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:9e5,currency:"KRW"},{name:"Business course",classDetails:"1:1 4H + ì그룹 2H = ì´ 6H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:9e5,currency:"KRW"},{name:"IELTS course",classDetails:"1:1 4H + ì그룹 2H = ì´ 6H (+ ì¼ê°ë¬´ë£ 2H(ê¸ì ì¸) ì í)",price4Weeks:12e5,currency:"KRW"},{name:"ë³´í¸ì ì½ì¤ (Guardian)",classDetails:"1:1 3H = ì´ 3H",price4Weeks:56e4,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:93e4,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:67e4,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:63e4,currency:"KRW"},{name:"ê°ì¡±ì¤",price4Weeks:67e4,currency:"KRW"}],registrationFee:{amount:0,note:"ë±ë¡ê¸ ë³ë ìì (ìì
ë£+기ìì¬ í©ì°íì í¬í¨ëì´ ìì)",currency:"KRW"},surcharges:[],localFees:[{category:"SSP",name:"SSP ë°ê¸ë¹",amount:6500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"59ì¼ ë¹ì (30ì¼ ë¬´ë¹ì + 29ì¼)",amount:5130,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"2ì°¨ ë¹ìì°ì¥ (30ì¼)",amount:6300,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"3ì°¨ ë¹ìì°ì¥ (30ì¼)",amount:3400,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"4ì°¨ ë¹ìì°ì¥ (30ì¼)",amount:3400,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"5ì°¨ ë¹ìì°ì¥ (30ì¼)",amount:3400,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸(íì§ â± ë©ë¶)",amountText:"기본 â±500 + 1KWë¹ â±22",currency:"PHP",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìëì¸(íì§ â± ë©ë¶)",amount:500,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"기ìì¬ ë³´ì¦ê¸",amount:2e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"í½ì
ë¹ (ì¼ë¡ì¼ë¡, 무ë£)",amount:0,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"ì
íë¹",amount:1e3,currency:"PHP",chargeUnit:"per_month",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìì¦ ë°ê¸ë¹",amount:650,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (íì§ â± ë©ë¶)",amount:180,currency:"PHP",chargeUnit:"per_book",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹ì©(íì§ì§ë¶)",amount:150,currency:"PHP",chargeUnit:"per_usage",trigger:"usage"},{category:"ECC/기ííê°",name:"CRTV (6ê°ì ì´ì ì²´ë¥ì)",amount:2500,currency:"PHP",chargeUnit:"per_person",trigger:"stay_over",triggerWeeks:25},{category:"ë³´í",name:"ì¬íë³´í (íì)",amount:0,currency:"KRW",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹",currency:"PHP",amountText:"â±150~450 (ê¶ë¹)"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"공공ìì¤ ì ì§ë¹",amountByWeeks:{4:1e3,8:2e3,12:2e3},currency:"PHP"},{category:"í½ì
/ìë©",name:"ê³µíì¸ (칼리보 ê³µí ì)",currency:"PHP",amountText:"â±780",excludeFromTotal:!0},{category:"í½ì
/ìë©",name:"í½ì
ë¹ (칼리보)",amount:4e3,currency:"PHP",chargeUnit:"per_person"},{category:"기í",name:"ì¸íë¹ (1í 5kg)",amount:150,currency:"PHP",chargeUnit:"per_usage"}]},{id:"coco",schoolCode:"COCO",name:"ë³´ë¼ì¹´ì´ ì½ì½ ì´íì (COCO English Academy)",regi
111on:"boracay",regionLabel:"ë³´ë¼ì¹´ì´",schoolType:"general",minWeeks:1,courses:[{name:"General ESL",classDetails:"1:1 4H + 그룹 2H = ì´ 6H",price4Weeks:1e6,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 800,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."},{name:"Power ESL",classDetails:"1:1 5H = ì´ 5H",price4Weeks:105e4,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 840,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."},{name:"Intensive ESL",classDetails:"1:1 5H + 그룹 2H = ì´ 7H",price4Weeks:11e5,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 880,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."},{name:"Super Intensive ESL",classDetails:"1:1 6H + 그룹 2H = ì´ 8H",price4Weeks:125e4,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 1,000,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."},{name:"IELTS Course",classDetails:"1:1 5H + 그룹 2H = ì´ 7H",price4Weeks:125e4,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 1,000,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."},{name:"Lite ESL",classDetails:"1:1 3H = ì´ 3H",price4Weeks:9e5,currency:"KRW",note:"ì±ì기 ê°ê²©. ë¹ì기: 720,000ì. surchargesì ë¹ì기 í ì¸(20%)ì¼ë¡ ìë ì ì©."}],dormitories:[{name:"Deluxe 1ì¸ì¤ (ì±ì¸)",capacity:1,price4Weeks:17e5,currency:"KRW"},{name:"Deluxe 2ì¸ì¤ (ì±ì¸)",capacity:2,price4Weeks:11e5,currency:"KRW"},{name:"Deluxe 3ì¸ì¤",capacity:3,price4Weeks:95e4,currency:"KRW"},{name:"Premier 4ì¸ì¤",capacity:4,price4Weeks:1e6,currency:"KRW"},{name:"Premier 5ì¸ì¤",capacity:5,price4Weeks:9e5,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ê¸ 100,000ì. ìì
ì ë£ì§ ìê³ ììë§ íë ì¸ìë ë¶ê³¼ëë©°, ì¬ë±ë¡ íìì ë©´ì .",amount:1e5},surcharges:[{label:"ë¹ì기 íë¡ëª¨ì
í ì¸",amountPerWeek:0,startDate:"2026-03-01",endDate:"2026-06-27",currency:"KRW",note:"ë¹ì기 기ê°: 2026.3.1~6.27 & 2026.8.23~2027.1.2. ì½ì¤+기ìì¬ ëª¨ë ì ê·ê°ì 80% ì ì© (20% í ì¸). ë¹ì기 íë¡ëª¨ì
ì 기ìì¬ìì í¨ê» ì§ë´ë íììê²ë§ ì ì©."},{label:"ë¹ì기 íë¡ëª¨ì
í ì¸ (íë°ê¸°)",amountPerWeek:0,startDate:"2026-08-23",endDate:"2027-01-02",currency:"KRW",note:"ë¹ì기 íë°ê¸°. ì½ì¤+기ìì¬ ëª¨ë ì ê·ê°ì 80% ì ì© (20% í ì¸)."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"SSP E-CARD",name:"SSP E-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (8주)",amount:5100,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (12주)",amount:11500,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (16주)",amount:15900,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (20주)",amount:20300,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ë¹ (24주)",amount:24700,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸&ìëì¸ (1ì¸ì¤)",amount:1200,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기ì¸&ìëì¸ (2~5ì¸ì¤)",amount:800,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì ê¸°ì¸ ì´ê³¼ë¶",amount:20,currency:"PHP",chargeUnit:"per_kwh",trigger:"usage"},{category:"ë³´ì¦ê¸",name:"ëíì§ (ë³´ì¦ê¸)",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"ìë¹ì¤ ë¹ì© (ì í¸ë¦¬í°/ê´ë¦¬ë¹/ì²ìë¹/ì
í)",amount:800,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"ê³µí í½ì
ìë¹ì¤",amount:1200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"í½ì
/ìë©",name:"ê³µí ì¼ë© ìë¹ì¤",amount:1e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íì ID ì¹´ë",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹",amount:300,currency:"PHP",chargeUnit:"per_book",trigger:"enrollment"},{category:"ì¸íë¹",name:"ì¸íë¹",amount:300,currency:"PHP",chargeUnit:"per_load",trigger:"usage"},{category:"êµì¬ë¹",name:"êµì¬ë¹",currency:"PHP",amountText:"â±300~500 (ì½ì¤ ìì´)"}]},{id:"eroom",schoolCode:"EROOM",name:"ì´ë£¸ ì´íì (E-Room Language Center)",region:"bacolod",regionLabel:"ë°ì½ë¡ë",schoolType:"general",minWeeks:1,courses:[{name:"GUARDIAN (íë¶ëª¨)",classDetails:"1:1 3H + ìµì
1H = ì´ 4H",price4Weeks:58e4,currency:"KRW"},{name:"FLEXIBLE",classDetails:"1:1 3H + 1:4 1H + ìµì
1H = ì´ 5H",price4Weeks:62e4,currency:"KRW"},{name:"LIGHT",classDetails:"1:1 4H + 1:4 1H + ìµì
1H = ì´ 6H",price4Weeks:72e4,currency:"KRW"},{name:"REGULAR",classDetails:"1:1 5H + 1:4 1H + ìµì
1H = ì´ 7H",price4Weeks:82e4,currency:"KRW"},{name:"INTENSIVE",classDetails:"1:1 6H + 1:4 1H + ìµì
1H = ì´ 8H",price4Weeks:92e4,currency:"KRW"},{name:"POWER SPEAKING",classDetails:"1:1 7H + 1:4 1H + ìµì
1H = ì´ 9H",price4Weeks:102e4,currency:"KRW"},{name:"IELTS/TOEIC LIGHT",classDetails:"1:1 4H + 1:4 1H + ìµì
1H = ì´ 6H",price4Weeks:86e4,currency:"KRW"},{name:"IELTS/TOEIC REGULAR",classDetails:"1:1 5H + 1:4 1H + ìµì
1H = ì´ 7H",price4Weeks:96e4,currency:"KRW"},{name:"IELTS/TOEIC INTENSIVE",classDetails:"1:1 6H + 1:4 1H + ìµì
1H = ì´ 8H",price4Weeks:106e4,currency:"KRW"}
111,{name:"IELTS/TOEIC POWER",classDetails:"1:1 7H + 1:4 1H + ìµì
1H = ì´ 9H",price4Weeks:116e4,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤",capacity:1,price4Weeks:97e4,currency:"KRW"},{name:"2ì¸ì¤",capacity:2,price4Weeks:82e4,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:72e4,currency:"KRW"},{name:"4ì¸ì¤",capacity:4,price4Weeks:62e4,currency:"KRW"}],registrationFee:{amount:1e5,note:"ì
íê¸ 100,000ì",currency:"KRW"},surcharges:[],localFees:[{category:"í½ì
/ìë©",name:"í½ì
ë¹ (ê°ëì¸ ì½ì¤ 무ë£)",amount:3e4,currency:"KRW",chargeUnit:"per_person"},{category:"SSP",name:"SSP",amount:7200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"ACR I-CARD",amount:4010,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (4주 í)",amount:4360,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (8주 í)",amount:5630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (12주 í)",amount:3660,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (16주 í)",amount:3660,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ (20주 í)",amount:3660,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì ê¸°ì¸ (4주ë¹)",currency:"PHP",amountText:"ì½ 500~1,000"},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ìë ë° ê´ë¦¬ë¹",amount:500,currency:"PHP",chargeUnit:"per_week",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"기ìì¬ë³´ì¦ê¸",amount:3e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"íìID ë°ê¸ë¹",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"êµì¬ë¹",name:"êµì¬ë¹ (ê¶ë¹)",currency:"PHP",amountText:"250~450"}]},{id:"pines_main",schoolCode:"PINES_MAIN",name:"íì¸ì¤ ë©ì¸ ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"íì ì¤í¼í¹",classDetails:"1:1 4H + 4:1 4H = ì´ 8H",price4Weeks:108e4,currency:"KRW"},{name:"ì¸í
ìë¸ ESL",classDetails:"1:1 5H + 4:1 2H = ì´ 7H",price4Weeks:118e4,currency:"KRW"},{name:"ë¼ì´í¸ ESL4",classDetails:"1:1 4H(ìëì´ ì¶ì²) = ì´ 4H",price4Weeks:93e4,currency:"KRW"},{name:"íì ESL5",classDetails:"1:1 5H = ì´ 5H",price4Weeks:113e4,currency:"KRW",note:"2과목 ë³ê²½ ê°ë¥ (ìë´ íì)"},{name:"íì ESL7",classDetails:"1:1 7H = ì´ 7H",price4Weeks:138e4,currency:"KRW",note:"2과목 ë³ê²½ ê°ë¥ (ìë´ íì)"},{name:"ë³´í¸ì (ìì
미ì í ê°ë¥)",classDetails:"1:1 3H = ì´ 3H",price4Weeks:83e4,currency:"KRW",note:"ìì
미ë±ë¡ ê°ë¥. 1ìê° ìì
ìë ê°ë¥."},{name:"í ìµ / í ì¤",classDetails:"1:1 4H + 4:1 4H = ì´ 8H",price4Weeks:113e4,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤ A",capacity:1,price4Weeks:145e4,currency:"KRW"},{name:"1ì¸ì¤ B",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"1ì¸ì¤ C",capacity:1,price4Weeks:115e4,currency:"KRW"},{name:"2ì¸ì¤ A",capacity:2,price4Weeks:104e4,currency:"KRW"},{name:"2ì¸ì¤ B",capacity:2,price4Weeks:98e4,currency:"KRW"},{name:"3ì¸ì¤",capacity:3,price4Weeks:88e4,currency:"KRW"},{name:"4ì¸ì¤",capacity:4,price4Weeks:81e4,currency:"KRW"},{name:"6ì¸ì¤",capacity:6,price4Weeks:69e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ê¸ 10ë§ì",amount:1e5},surcharges:[{amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ì±ì기 ìì°¨ì§."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"기í",name:"íì§ë¹ì© (í¬ì¸í¸ ì°¨ê° ìì¤í
)",currency:"PHP",amountText:"SSP\xb7í½ì
\xb7ì 기ìë\xb7í¬ì¸í¸ â í¬ì¸í¸ ì°¨ê°(ê°ê²© ìë´ ìë´)"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (~12주)",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (~16주)",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (~20주)",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (~24주)",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기/ìë (4주ë¹)",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"ìì´ë ì¹´ë",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"}]},{id:"pines_chapis",schoolCode:"PINES_CHAPIS",name:"íì¸ì¤ ì°¨í¼ì¤ ìº í¼ì¤ (IELTS)",regi
111on:"baguio",regionLabel:"ë°ê¸°ì¤",schoolType:"general",minWeeks:1,courses:[{name:"PRE ìì´ìì¸ ",classDetails:"1:1 4H + 4:1 4H = ì´ 8H",price4Weeks:115e4,currency:"KRW"},{name:"ìì´ìì¸ ",classDetails:"1:1 4H + 4:1 3H = ì´ 7H",price4Weeks:12e5,currency:"KRW"},{name:"ìì´ìì¸ ë³´ì¥ 8주",classDetails:"1:1 5H + 4:1 2H = ì´ 7H",price4Weeks:1655e3,currency:"KRW",note:"ìì´ìì¸ ë³´ì¥ 8주. 8주 ì´ì¡ 331ë§ì. 4주 íì°ê° 165.5ë§ì. 1:1 5H + 4:1 2H."},{name:"ìì´ìì¸ ë³´ì¥ 12주",classDetails:"1:1 5H + 4:1 2H = ì´ 7H",price4Weeks:152e4,currency:"KRW",note:"ìì´ìì¸ ë³´ì¥ 12주. 12주 ì´ì¡ 456ë§ì. 4주 íì°ê° 152ë§ì. 1:1 5H + 4:1 2H."},{name:"ìì´ìì¸ ì¸í
ìë¸",classDetails:"1:1 6H = ì´ 6H",price4Weeks:135e4,currency:"KRW"}],dormitories:[{name:"1ì¸ì¤ A (IELTS)",capacity:1,price4Weeks:145e4,currency:"KRW"},{name:"1ì¸ì¤ B (IELTS)",capacity:1,price4Weeks:135e4,currency:"KRW"},{name:"2ì¸ì¤ A (IELTS)",capacity:2,price4Weeks:104e4,currency:"KRW"},{name:"3ì¸ì¤ (IELTS)",capacity:3,price4Weeks:79e4,currency:"KRW"},{name:"4ì¸ì¤ (IELTS)",capacity:4,price4Weeks:71e4,currency:"KRW"}],registrationFee:{currency:"KRW",note:"ë±ë¡ê¸ 10ë§ì",amount:1e5},surcharges:[{amountPerWeek:5e4,startDate:"2026-06-29",endDate:"2026-08-22",currency:"KRW",note:"ë°ê¸°ì¤ ì±ì기 ìì°¨ì§."}],localFees:[{category:"SSP",name:"SSP",amount:7800,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ACR I-CARD",name:"SSP I-CARD",amount:4500,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 1ì°¨ (5~8주)",amount:4940,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:5},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 2ì°¨ (~12주)",amount:11150,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:9},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 3ì°¨ (~16주)",amount:15390,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:13},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 4ì°¨ (~20주)",amount:19630,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:17},{category:"ë¹ìì°ì¥",name:"ë¹ìì°ì¥ 5ì°¨ (~24주)",amount:23870,currency:"PHP",chargeUnit:"cumulative",trigger:"stay_over",triggerWeeks:21},{category:"ì 기\xb7ìë\xb7ê´ë¦¬ë¹",name:"ì 기/ìë (4주ë¹)",amount:3e3,currency:"PHP",chargeUnit:"per_4weeks",trigger:"enrollment"},{category:"ë³´ì¦ê¸",name:"ë³´ì¦ê¸",amount:4e3,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"},{category:"íìì¦/ì¬ì§",name:"ìì´ë ì¹´ë",amount:200,currency:"PHP",chargeUnit:"per_person",trigger:"enrollment"}]}]},9417:function(e,t,r){"use strict";r.d(t,{x:function(){return i},z:function(){return n}});let n={eedu_eco:{title:"A&J e-Edu eco",campus:"ì´ìë ì´íì",imgName:"AJ_e-Edu_eco"},bcebu:{title:"B'CEBU",campus:"ë¹ì¸ë¶ ì´íì"},beci_eop:{title:"BECI eop",campus:"ë² ì¨ ì´íì ì´ì¤í¼ ìº í¼ì¤",imgName:"BECI eop"},beci_city:{title:"BECI CITY",campus:"ë² ì¨ ì´íì ìí° ìº í¼ì¤",imgName:"BECI"},blue_ocean:{title:"Cebu Blue Ocean",campus:"ë¸ë£¨ì¤ì
ì´íì"},cella_uni:{title:"CELLA",campus:"ì
ë¼ ì´íì ì¤í르í ìº í¼ì¤",imgName:"CELLA sparta"},cella_premium:{title:"CELLA",campus:"ì
ë¼ ì´íì í리미ì ìº í¼ì¤",imgName:"CELLA premium"},cg_banilad:{title:"CG Banilad",campus:"ì¨ì§ ì´íì ë°ëë¼ë ìº í¼ì¤",imgName:"cg banilad"},cg_sparta:{title:"CG Sparta",campus:"ì¨ì§ ì´íì ì¤í르í ìº í¼ì¤",imgName:"cg sparta"},cia:{title:"CIA",campus:"ì¨ìì´ìì´ ì´íì",abbr:"Cebu International Academy"},cij:{title:"CIJ",campus:"ì¨ìì´ì ì´ ì´íì"},cns_senior_camp:{title:"CNS",campus:"ìëì´ ìº í"},cns:{title:"CNS",campus:"ì¨ììì¤ ì´íì",abbr:"Choice and Success"},cpi:{title:"CPI",campus:"ì¨í¼ìì´ ì´íì",abbr:"Cebu Pelis Institute"},cpils:{title:"CPILS",campus:"ì¨íì¦ ì´íì"},clark_we:{title:"WE",campus:"ììì¹´ë°ë¯¸ ì´íì",imgName:"Clark WE Academy"},eg_academy:{title:"EG",campus:"ì´ì§ ì´íì",imgName:"EG Academy"},elsa:{title:"ELSA",campus:"ìì¬ ì´íì",abbr:"Interactive Learning School"},ev_academy:{title:"EV",campus:"ì´ë¸ì´ ì´íì",imgName:"EV Academy"},ev_lamer:{title:"EV",campus:"ì´ë¸ì´ ì´íì ë¼ë©ë¥´ ìº í¼ì¤",imgName:"EV Academy LaMer"},english_fella_1:{title:"English Fella",campus:"ìê¸ë¦¬ì¬ í ë¼ ì´íì 1ìº í¼ì¤",imgName:"English Fella Campus 1 Sparta"},english_fella_2:{title:"English Fella",campus:"ìê¸ë¦¬ì¬ í ë¼ ì´íì 2ìº í¼ì¤",imgName:"English Fella Campus 2 Classic"},gitc:{title:"GITC",campus:"ì§ìì´í°ì¨ ì´íì",abbr:"Green International Technical College"},glant:{title:"GLANT",campus:"ê¸ëí¸ ì´íì"},glc:{title:"GLC",campus:"ì§ìì¨ ì´íì",abbr:"Global Language Cebu"},gs:{title:"GS",campus:"ì§ìì¤ ì´íì",abbr:"Global Standard"},hana:{title:"HANA",campus:"íë ì´íì",imgName:"HANA Academy"},help_clark:{title:"HELP",campus:"í¬í ì´íì"},ibreeze:{title:"I.BREEZE",campus:"ìì´ë¸ë¦¬ì¦ ì´íì"},ims:{title:"IMS",campus:"ìì´ì ìì¤ ì´íì",imgName:"IMS Academy"},jic_challenger:{title:"JIC",campus:"ì ì´ìì´ì¨ ì´íì ì±ë¦°ì ìº í¼ì¤"},jic_premium:{title:"JIC",campus:"ì ì´ìì´ì¨ ì´íì í리미ì ìº í¼ì¤"},lslc:{title:"LSLC",campus:"ììì¤ìì¨ ì´íì",abbr:"La Salle Language Center"},mk:{title:"MK",campus:"ì ì¼ì´ ì´íì"},monol_golf:{title:"Monol",campus:"골í íë¡ê·¸ë¨"},monol:{title:"Monol",campus:"모ë ì´íì"},pilaedu:{title:"PILAedu",campus:"íë¼ìë ì´íì",abbr:"Philippine International Language Academy"},philinter:{title:"Philinter",campus:"íì¸í° ì´íì"},qqenglish_bfc:{title:"QQ English",campus:"íí ì´íì ë§í ìº í¼ì¤",imgName:"QQ English Beach Front"},qqenglish_itp:{title:"QQ English",campus:"íí ì´íì ì¨í° ìº í¼ì¤",imgName:"QQ English IT Park"},smeag_capital:{title:"SMEAG",campus:"ì¤ë©ê·¸ ì´íì"},talk:{title:"TALK",campus:"í í¬ ì´íì"},talk_camp_adult:{title:"TALK",campus:"ì±ì¸ 2주 ë¨ê¸° ìº í"},wales:{title:"WALES",campus:"ì¨ì¼ì¦ ì´íì"},we_academy:{title:"WE Woori",campus:"ì ì°ë¦¬ ì´íì",abbr:"WOORI",imgName:"WE Academy"},coco:{title:"COCO",campus:"ì½ì½ ì´íì",imgName:"Boracay COCO"},eroom:{title:"E-Room",campus:"ì´ë£¸ ì´íì"},pines_main:{title:"Pines",campus:"íì¸ì¤ ì´íì ë©ì¸ ìº í¼ì¤"},pines_chapis:{title:"Pines",campus:"íì¸ì¤ ì´íì ìì´ìì¸ ìº í¼ì¤"}};function i(e,t){var r;return null!==(r=n[e])&&void 0!==r?r:{title:t}}},9918:function(e,t,r){"use strict";r.d(t,{Ri:function(){return c},UL:function(){return a},fh:function(){return i},j$:function(){return n},lX:function(){return l},v7:function(){return u},y0:function(){return s}});let n=["high","mid","low"],i={high:"ì 그룹",mid:"ì¤ ê·¸ë£¹",low:"í 그룹"},a={high:"ëª©ë¡ ë§¨ ìì ë
¸ì¶ë©ëë¤. ê°ì¥ 먼ì ë³´ì¬ì£¼ê³ ì¶ì íì.",mid:"ì 그룹 ë¤ìì ë
¸ì¶ë©ëë¤.",low:"ëª©ë¡ ë§ì§ë§ì ë
¸ì¶ë©ëë¤."},s={high:["blue_ocean","english_fella_2","ev_lamer","jic_premium","pilaedu","smeag_capital","wales","bcebu","beci_city","cij","cns","mk","monol","talk","cella_premium"],mid:["cia","ev_academy","ibreeze","pines_main","eedu_eco","beci_eop","cpi","help_clark","cg_banilad","coco","qqenglish_bfc","qqenglish_itp"],low:["english_fella_1","jic_challenger","pines_chapis","cella_uni","cg_sparta","cpils","eroom","eg_academy","elsa","gitc","glant","glc","gs","hana","ims","lslc","philinter","clark_we","we_academy"]},o=()=>({high:[],mid:[],low:[]});function c(e){var t;let r=new Map,i=0;for(let a of n)for(let n of null!==(t=e[a])&&void 0!==t?t:[])r.has(n)||r.set(n,i++);return r}function u(e){var t;let r=new Set,i=o();for(let a of n)for(let n of null!==(t=null==e?void 0:e[a])&&void 0!==t?t:[])r.has(n)||(r.add(n),i[a].push(n));return i}function l(e){let t=o();for(let i of n){var r;let n=[...null!==(r=e[i])&&void 0!==r?r:[]];for(let e=n.length-1;e>0;e--){let t=Math.floor(Math.random()*(e+1));[n[e],n[t]]=[n[t],n[e]]}t[i]=n}return t}},6e3:function(e,t,r){"use strict";r.d(t,{Ez:function(){return a},OD:function(){return n},Sx:function(){return i}});let n=e=>e.active&&e.use.senior,i=()=>a.filter(e=>e.use.sim&&"cebu"===e.region),a=[{id:"eedu_eco",masterKey:"eedu_eco",name:"A&J e-Edu ìì½ ìº í¼ì¤",region:"baguio",regi
111onLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í","주ëì´"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ì´ìë ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"bcebu",masterKey:"bcebu",name:"B'CEBU",nameEn:"Bcebu \xb7 Cebu City (ì
íì¤í르í)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ë¹ì¸ë¶ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"beci_eop",masterKey:"beci_eop",name:"BECI EOPìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ë² ì¨ ì´íì ì´ì¤í¼ ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"beci_city",masterKey:"beci_city",name:"BECI ìí°ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ë² ì¨ ì´íì ìí° ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"blue_ocean",masterKey:"blue_ocean",name:"CEBU BLUE OCEAN",nameEn:"Blue Ocean \xb7 Mactan (ë§íì¬ ë¦¬ì¡°í¸)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ë¸ë£¨ì¤ì
ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cella_uni",masterKey:"cella_uni",name:"CELLA ì ë ì¤í르í ìº í¼ì¤",nameEn:"CELLA Uni \xb7 Talamban (íëë°)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°"],programType:"í¼í©í(ì¤í르í)",priceCurrency:"KRW",nameKo:"ì
ë¼ ì´íì ì¤í르í ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cella_premium",masterKey:"cella_premium",name:"CELLA í리미ì ìº í¼ì¤",nameEn:"CELLA Premium \xb7 Banilad (ë°ëë¼ë)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ì
ë¼ ì´íì í리미ì ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cg_banilad",masterKey:"cg_banilad",name:"CG (Banilad ìº í¼ì¤)",nameEn:"CG Banilad \xb7 Banilad (ë°ëë¼ë)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì¨ì§ ì´íì ë°ëë¼ë ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cg_sparta",masterKey:"cg_sparta",name:"CG (Sparta ìº í¼ì¤)",nameEn:"CG Sparta \xb7 Talisay (í리ì¬ì´, ì¸ë¶ ì¸ê³½)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±","ìº í","주ëì´"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì¨ì§ ì´íì ì¤í르í ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cia",masterKey:"cia",name:"CIA (Cebu International Academy)",nameEn:"CIA \xb7 Mabolo (ë§ë³¼ë¡)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°"],programType:"í¼í©í(ì¸ë¯¸ì¤í르í)",priceCurrency:"KRW",nameKo:"ì¨ìì´ìì´ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cij",masterKey:"cij",name:"CIJ Academy & School",nameEn:"CIJ Academy \xb7 Cebu City ì¸ê³½ (ì±ì¸ìº í¼ì¤)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì¨ìì´ì ì´ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cns_senior_camp",masterKey:"cns",name:"CNS ìëì´ ìº í",region:"baguio",regi
111onLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ìëì´ ìº í",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cns",masterKey:"cns",name:"CNS ì´íì (Choice and Success)",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","ìëì´ ì½ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},nameKo:"ì¨ììì¤ ì´íì",budgetRange:[1,2,3],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cpi",masterKey:"cpi",name:"CPI (Cebu Pelis Institute)",nameEn:"CPI \xb7 Banilad ì¸ê³½ (ììì¥ ìì¤)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì¨í¼ìì´ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"cpils",masterKey:"cpils",name:"CPILS",nameEn:"CPILS \xb7 Cebu City",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì¨íì¦ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"clark_we",masterKey:"we_academy",name:"WE",region:"clark",regionLabel:"í´ë½",tags:["í´ë½","골í","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ììì¹´ë°ë¯¸ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"eg_academy",masterKey:"eg",name:"EG (EG ì´íì)",region:"clark",regionLabel:"í´ë½",tags:["í´ë½","골í","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì´ì§ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"elsa",masterKey:"elsa",name:"ELSA (Interactive Learning School)",nameEn:"ELSA \xb7 ì¸ë¶ì¬ ë¶ìª½ í´ë³ (ëíë¶ì¤)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","골í","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±","주ëì´"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ìì¬ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"ev_academy",masterKey:"ev",name:"EV",nameEn:"EV Academy Main \xb7 Lahug (ë¼í¸ê·¸)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°"],programType:"í¨í¤ì§ì¬ì¸ì",priceCurrency:"KRW",nameKo:"ì´ë¸ì´ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"ev_lamer",masterKey:"ev_lamer",name:"EV La Mer Campus",nameEn:"EV LaMer \xb7 Mactan (ë§í)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","ìëì´ ì½ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì´ë¸ì´ ì´íì ë¼ë©ë¥´ ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"english_fella_1",masterKey:"english_fella_1",name:"English Fella (1ìº í¼ì¤ (ì¤í르í))",nameEn:"English Fella 1 \xb7 Talamban (íëë°)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê³ ë±ë¨ë
"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ìê¸ë¦¬ì¬ í ë¼ ì´íì 1ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"english_fella_2",masterKey:"english_fella_2",name:"English Fella (2ìº í¼ì¤ (J-ì¤í르í/í´ëì))",nameEn:"English Fella 2 \xb7 Talamban (íëë°)",regi
111on:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±","주ëì´"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ìê¸ë¦¬ì¬ í ë¼ ì´íì 2ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"gitc",masterKey:"gitc",name:"GITC (Green International Technical College)",region:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",tags:["ì¼ë¡ì¼ë¡","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","주ëì´","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì§ìì´í°ì¨ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"glant",masterKey:"glant",name:"GLANT English Academy",nameEn:"Glant \xb7 Banilad (ë°ëë¼ë, íµíê°ë¥)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ê¸ëí¸ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"glc",masterKey:"glc",name:"GLC (Global Language Cebu)",nameEn:"GLC \xb7 Cebu City (ì¼ë³¸ê³)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì§ìì¨ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"gs",masterKey:"gs",name:"GS ì´íì (Global Standard)",region:"clark",regionLabel:"í´ë½",tags:["í´ë½","골í","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì§ìì¤ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"hana",masterKey:"hana",name:"HANA (íë ì´íì)",region:"clark",regionLabel:"í´ë½",tags:["í´ë½","ìëì´ ì½ì¤","골í"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"íë ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"help_clark",masterKey:"help_clark",name:"HELP English (í¬íì´íì)",region:"clark",regionLabel:"í´ë½",tags:["í´ë½","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"í¬í ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"ibreeze",masterKey:"ibreeze",name:"I.BREEZE International Language Center",nameEn:"I Breeze \xb7 Mabolo (ë§ë³¼ë¡, ììë¼ëª° ì¸ê·¼)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í(Semi Sparta)",priceCurrency:"KRW",nameKo:"ìì´ë¸ë¦¬ì¦ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"ims",masterKey:"ims",name:"IMS",nameEn:"IMS Banilad \xb7 Banilad (ë°ëë¼ë ì¤ì¬)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","ìëì´ ì½ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"both",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ìì´ì ìì¤ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"jic_challenger",masterKey:"jic_challenger",name:"JIC Challenger Campus",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì ì´ìì´ì¨ ì´íì ì±ë¦°ì ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"jic_premium",masterKey:"jic_premium",name:"JIC Premium Campus",regi
111on:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","ìëì´ ì½ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ì ì´ìì´ì¨ ì´íì í리미ì ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"lslc",masterKey:"lslc",name:"LSLC (La Salle Language Center)",region:"bacolod",regionLabel:"ë°ì½ë¡ë",tags:["ë°ì½ë¡ë","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ììì¤ìì¨ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"mk",masterKey:"mk",name:"MK Language Training Center",region:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",tags:["ì¼ë¡ì¼ë¡","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì ì¼ì´ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"monol_golf",masterKey:"monol",name:"Monol 골í íë¡ê·¸ë¨",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","골í","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"골í íë¡ê·¸ë¨",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"monol",masterKey:"monol",name:"Monol ì´íì",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","ìëì´ ì½ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},nameKo:"모ë ì´íì",budgetRange:[1,2,3,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"pilaedu",masterKey:"pilaedu",name:"PILAedu (Philippine International Language Academy)",nameEn:"PILAedu \xb7 Cebu City",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±","주ëì´"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"íë¼ìë ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"philinter",masterKey:"philinter",name:"Philinter Academy",nameEn:"PHILINTER \xb7 Mactan (ë§íê³µí 10ë¶)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"USD",nameKo:"íì¸í° ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"qqenglish_bfc",masterKey:"qqenglish_bfc",name:"QQ English Beach Front Campus (BFC)",nameEn:"QQEnglish Mactan \xb7 BFC (ë§í)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ê°ì¡±","ìº í","주ëì´"],programType:"ë¶ë¦¬í",priceCurrency:"USD",nameKo:"íí ì´íì ë§í ìº í¼ì¤",budgetRange:[1,2,3],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"qqenglish_itp",masterKey:"qqenglish_itp",name:"QQ English IT Park",nameEn:"QQEnglish IT Park \xb7 IT Park (ITíí¬)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±","ìº í","주ëì´"],programType:"ë¶ë¦¬í",priceCurrency:"USD",nameKo:"íí ì´íì ì¨í° ìº í¼ì¤",budgetRange:[1,2,3],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"smeag_capital",masterKey:"smeag_capital",name:"SMEAG Capital Campus",nameEn:"SMEAG Capital \xb7 Capitol (ìºí¼í¨)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!0},carrier:"globe",programCategories:["ì¼ë°","ê°ì¡±"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ì¤ë©ê·¸ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"talk",masterKey:"talk",name:"TALK Academy (í í¬ ì´íì)",region:"clark",regi
111onLabel:"í´ë½",tags:["í´ë½","ìëì´ ì½ì¤","골í"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"í í¬ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"talk_camp_adult",masterKey:"talk",name:"TALK Academy ì±ì¸ 2주 ë¨ê¸° ìº í",region:"clark",regionLabel:"í´ë½",tags:["í´ë½"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},nameKo:"ì±ì¸ 2주 ë¨ê¸° ìº í",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"wales",masterKey:"wales",name:"WALES ì´íì",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"í¼í©í",priceCurrency:"KRW",nameKo:"ì¨ì¼ì¦ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"we_academy",masterKey:"we_woori",name:"WE Woori (WOORI)",region:"iloilo",regionLabel:"ì¼ë¡ì¼ë¡",tags:["ì¼ë¡ì¼ë¡","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì ì°ë¦¬ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"coco",masterKey:"coco",name:"ë³´ë¼ì¹´ì´ ì½ì½ ì´íì (COCO English Academy)",region:"boracay",regionLabel:"ë³´ë¼ì¹´ì´",tags:["ë³´ë¼ì¹´ì´","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì½ì½ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"eroom",masterKey:"eroom",name:"ì´ë£¸ ì´íì (E-Room Language Center)",region:"bacolod",regionLabel:"ë°ì½ë¡ë",tags:["ë°ì½ë¡ë","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"ì´ë£¸ ì´íì",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"pines_main",masterKey:"pines_main",name:"íì¸ì¤ ë©ì¸ ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!0,use:{senior:!0,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"íì¸ì¤ ì´íì ë©ì¸ ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2,3,4],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"pines_chapis",masterKey:"pines_ielts",name:"íì¸ì¤ ì°¨í¼ì¤ ìº í¼ì¤ (IELTS)",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤","1ì¸ì¤"],imageUrl:"",active:!1,use:{senior:!0,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",nameKo:"íì¸ì¤ ì´íì ìì´ìì¸ ìº í¼ì¤",budgetRange:[1,2,3,4,5],studyRange:[1,2],locationRange:[1,2,3,4],mealRange:[1,2,3]},{id:"smeag_encanto",masterKey:"smeag_encanto",name:"SMEAG ì칸í ìº í¼ì¤",nameEn:"SMEAG Encanto \xb7 Mactan (ë§í, J Park ì)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"smart",programCategories:["ì¼ë°","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"izam_city",masterKey:"izam_city",name:"ìì´ì¼ ìí° ìº í¼ì¤",nameEn:"IZAM City \xb7 AS Fortuna (AS í¬ë¥´í¬ë)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"globe",programCategories:["ê°ì¡±","주ëì´","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"izam_mactan",masterKey:"izam_mactan",name:"ìì´ì¼ ë§í ìº í¼ì¤",nameEn:"IZAM Mactan \xb7 Mactan (ë§í, ë°©ì¹¼)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"smart",programCategories:["ê°ì¡±","주ëì´"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"ciec",masterKey:"ciec",name:"CIEC",nameEn:"CIEC \xb7 Talamban (íëë°)",regi
111on:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"both",programCategories:["주ëì´","ê°ì¡±","ë³´í¸ì","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"jjes",masterKey:"jjes",name:"JJES",nameEn:"JJES \xb7 Cebu City",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"both",programCategories:["ìº í"],programType:"ìº íì¬ì¸ì",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"banana_kids",masterKey:"banana_kids",name:"ë°ëëí¤ì¦",nameEn:"BANANA KIDS \xb7 Mactan (ë§í, ê°ì¡±ì°ì)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"smart",programCategories:["ê°ì¡±","ìº í"],budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"joyful",masterKey:"joyful",name:"ì¡°ì´í",nameEn:"JOYFUL \xb7 Mactan (ë§í í°ì¤ì¸ í¸í
)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"smart",programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"sk119",masterKey:"sk119",name:"SK119",nameEn:"SK119 Academy \xb7 Banilad (ë°ëë¼ë ë¶ì´)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"both",programCategories:["ìº í","주ëì´","ê°ì¡±"],programType:"í¨í¤ì§í",priceCurrency:"í¼ì¬",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"jungle",masterKey:"jungle",name:"ì ê¸",nameEn:"Jungle \xb7 Mactan (ë§í ì¤ì¬)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"smart",programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"friends",masterKey:"efriends",name:"FRIENDS",nameEn:"FRIENDS \xb7 Cebu City (ìê·ëª¨ ì¤í르í)",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"globe",programCategories:["ìº í"],programType:"ìº íì¬ì¸ì",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"edu_talk",masterKey:"edu_talk",name:"ìëí¡",nameEn:"EDU TALK \xb7 Cebu City",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!0},carrier:"globe",programCategories:["ìº í"],programType:"í¼í©í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"beci_sparta",masterKey:"beci_sparta",name:"API BECI ì¤í르í ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"cia_camp",masterKey:"cia_camp",name:"CIA ìº í",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"cij_junior",masterKey:"cij_junior",name:"CIJ 주ëì´ ìº í¼ì¤",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"eedu_main",masterKey:"eedu_main",name:"A&J e-Edu ë©ì¸ ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"monol_sparta",masterKey:"monol_sparta",name:"모ë ì¤í르í ìº í¼ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"smeag_tarlac",masterKey:"smeag_tarlac",name:"SMEAG ë¸ë½ ìº í¼ì¤",region:"clark",regi
111onLabel:"í´ë½",tags:["í´ë½"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"í¼í©í",priceCurrency:"í¼ì¬",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"emo",masterKey:"emo",name:"EMO ìì´ì ì¹ì",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["주ëì´"],programType:"íµíí",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"mj",masterKey:"mj",name:"MJ ê¸ë¡ë² ìì¹´ë°ë¯¸",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"besta",masterKey:"besta",name:"BESTA ë³´í",region:"bohol",regionLabel:"ë³´í",tags:["ë³´í"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"lgo",masterKey:"lgo",name:"LGO ë³´í ìº í",region:"bohol",regionLabel:"ë³´í",tags:["ë³´í"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"ìº í ì¬ì¸ì",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"pj_academy",masterKey:"pj_academy",name:"PJ ìì¹´ë°ë¯¸",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"spc",masterKey:"spc",name:"SPCF í´ë½ ëíë¶ì¤",region:"clark",regionLabel:"í´ë½",tags:["í´ë½"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"baekakgwan",masterKey:"baekakgwan",name:"ë°±ì ê´ ìê¸ë¦¬ì¬ ìì¹´ë°ë¯¸",region:"clark",regionLabel:"í´ë½",tags:["í´ë½"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"bela",masterKey:"bela",name:"ë²¨ë¼ ì´íì",region:"clark",regionLabel:"í´ë½",tags:["í´ë½"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°","ê°ì¡±","ìº í"],programType:"í¼í©í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"btes",masterKey:"btes",name:"BTES",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"cega",masterKey:"cega",name:"CEGA",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"cwa",masterKey:"cwa",name:"CWA",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"help_baguio",masterKey:"help_baguio",name:"HELP ë°ê¸°ì¤",region:"baguio",regionLabel:"ë°ê¸°ì¤",tags:["ë°ê¸°ì¤"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ì¼ë°"],programType:"ë¶ë¦¬í",priceCurrency:"KRW",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]},{id:"lcic",masterKey:"lcic",name:"LCIC ë§í",region:"cebu",regionLabel:"ì¸ë¶",tags:["ì¸ë¶"],imageUrl:"",active:!0,use:{senior:!1,sim:!1},programCategories:["ìº í"],programType:"í¨í¤ì§í",priceCurrency:"USD",budgetRange:[],studyRange:[],locationRange:[],mealRange:[]}]},5559:function(e,t,r){"use strict";r.d(t,{l2:function(){return o},I8:function(){return l},db:function(){return c},tO:function(){return u}});var n=r(2238);/** 112 * @license 113 * Copyright 2020 Google LLC 114 * 115 * Licensed under the Apache License, Version 2.0 (the "License"); 116 * you may not use this file except in compliance with the License. 117 * You may obtain a copy of the License at 118 * 119 * http://www.apache.org/licenses/LICENSE-2.0 120 * 121 * Unless required by applicable law or agreed to in writing, softw
121are 122 * distributed under the License is distributed on an "AS IS" BASIS, 123 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124 * See the License for the specific language governing permissions and 125 * limitations under the License. 126 */(0,n.KN)("firebase","10.14.1","app");var i=r(6650),a=r(109),s=r(1517);let o=(0,n.C6)().length?(0,n.Mq)():(0,n.ZF)({apiKey:"AIzaSyCDIJ4_gDqDnRC4cRgbu6RAieySjZsNuGU",authDomain:"senioruhak.firebaseapp.com",projectId:"senioruhak",storageBucket:"senioruhak.firebasestorage.app",messagingSenderId:"933706216660",appId:"1:933706216660:web:2467e3145e0c10de6d3741",measurementId:"G-45C5SKB76J"}),c=(()=>{try{return(0,a.LV)(o,{ignoreUndefinedProperties:!0})}catch(e){return(0,a.ad)(o)}})(),u=(0,i.cF)(o),l=(0,s.v0)(o)},4713:function(e,t,r){"use strict";r.d(t,{O:function(){return s},d:function(){return i}});let n={"https://open.kakao.com/":"http://pf.kakao.com/_tlGfX/chat","https://pf.kakao.com/_ejnfX":"http://pf.kakao.com/_tlGfX/chat","https://www.youtube.com/results?search_query=í리í+ìëì´+ì´íì°ì":"https://www.youtube.com/@%EC%8B%9C%EB%8B%88%EC%96%B4%EC%9C%A0%ED%95%99","https://www.youtube.com/results?search_query=%ED%95%84%EB%A6%AC%ED%95%80+%EC%8B%9C%EB%8B%88%EC%96%B4+%EC%96%B4%ED%95%99%EC%97%B0%EC%88%98":"https://www.youtube.com/@%EC%8B%9C%EB%8B%88%EC%96%B4%EC%9C%A0%ED%95%99"};function i(e){return e&&n[e]?n[e]:e}let a=new Set(["CJeS5C-qta0","rqdFixKdrOo","-G0AQTCePcs","Ov3MV6QCeOQ"]);function s(e){if(!e||!e.length)return null;let t=e.filter(e=>!a.has(e.id));return t.length?t:null}},3228:function(e,t,r){"use strict";r.d(t,{AW:function(){return C},CB:function(){return D},DJ:function(){return H},JO:function(){return S},Rr:function(){return b},SZ:function(){return R},qg:function(){return E},yl:function(){return W},zP:function(){return I}});var n=r(5893),i=r(9008),a=r.n(i),s=r(7294),o=r(7827),c=r(6628),u=r(175),l=r(9417),h=r(9918),g=r(7363),d=r(7049),m=r(9464),p=r(155),y=r(2491),f=r(4813),v=r(9701),_=r(4713);let w={settings:null,home:null,pages:null,schools:null,schoolOrder:null,loaded:!1},k=(0,s.createContext)(w);function P(e){var t;return"fulfilled"===e.status&&null!==(t=e.value)&&void 0!==t?t:null}function b(e){let{children:t}=e,[r,i]=(0,s.useState)(w);return(0,s.useEffect)(()=>{let e=!0;return Promise.allSettled([(0,o.ri)(),(0,o.h8)(),(0,o.yL)(),(0,o.J7)(),(0,o.kf)()]).then(t=>{let[r,n,a,s,o]=t;e&&i({settings:P(r),home:P(n),pages:P(a),schools:P(s),schoolOrder:P(o),loaded:!0})}),()=>{e=!1}},[]),(0,n.jsx)(k.Provider,{value:r,children:t})}let E=()=>(0,s.useContext)(k);function R(){let{schools:e,schoolOrder:t,loaded:r}=E();return(0,s.useMemo)(()=>{let n=(0,h.Ri)((0,h.v7)(null!=t?t:h.y0)),i=new Map((null!=e?e:[]).map(e=>[e.id,e])),a=c._.map(e=>{var t,r,n,a,s,o,c;let u=i.get(e.id);return u?{...e,name:u.name||e.name,region:u.region||e.region,regionLabel:u.regionLabel||e.regionLabel,schoolType:u.schoolType||e.schoolType,minWeeks:null!==(t=u.minWeeks)&&void 0!==t?t:e.minWeeks,courses:null!==(r=u.courses)&&void 0!==r?r:e.courses,dormitories:null!==(n=u.dormitories)&&void 0!==n?n:e.dormitories,packages:null!==(a=u.packages)&&void 0!==a?a:e.packages,localFees:null!==(s=u.localFees)&&void 0!==s?s:e.localFees,registrationFee:null!==(o=u.registrationFee)&&void 0!==o?o:e.registrationFee,surcharges:null!==(c=u.surcharges)&&void 0!==c?c:e.surcharges}:e}),s=a.filter(e=>{var t;return(null===(t=i.get(e.id))||void 0===t?void 0:t.active)!==!1}),o=s.filter(e=>{var t;return!u.mb.has(e.id)&&(null===(t=i.get(e.id))||void 0===t?void 0:t.marqueeVisible)!==!1});return{all:a,visible:s,marquee:o,adminOf:e=>i.get(e),orderIndexOf:e=>{var t;return null!==(t=n.get(e))&&void 0!==t?t:Number.MAX_SAFE_INTEGER},metaOf:(e,t)=>{var r;let n=(0,l.x)(e,t);return{...n,...null===(r=i.get(e))||void 0===r?void 0:r.meta,campus:n.campus}},brochuresOf:e=>{var t;let r=null===(t=i.get(e))||void 0===t?void 0:t.brochures;return r&&r.length?r:(0,g.O)(e)},loaded:r}},[e,t,r])}function S(e,t){if(!t||0===t.length)return e;let r=new Map(e.map(e=>[e.id,e]));return t.map(e=>({...r.get(e.id),...e}))}function I(){var e,t,r,n,i,a,s;let{pages:o}=E();return{checklist:null!==(e=null==o?void 0:o.checklist)&&void 0!==e?e:d.th,regions:null!==(t=null==o?void 0:o.regions)&&void 0!==t?t:m.U,why:null!==(r=null==o?void 0:o.why)&&void 0!==r?r:m.o,faq:null!==(n=null==o?void 0:o.faq)&&void 0!==n?n:p.Z,activities:null!==(i=null==o?void 0:o.activities)&&void 0!==i?i:y.D,quiz:null!==(a=null==o?void 0:o.quiz)&&void 0!==a?a:f.mI,quizResults:null!==(s=null==o?void 0:o.quizResults)&&void 0!==s?s:f.oj}}
126let T={companyName:"ìëì´ì í",phoneDisplay:"02-532-0542",phoneTel:"tel:025320542",kakaoUrl:"http://pf.kakao.com/_tlGfX/chat",kakaoId:"",youtubeUrl:"https://www.youtube.com/@%EC%8B%9C%EB%8B%88%EC%96%B4%EC%9C%A0%ED%95%99",naverBlogUrl:"https://blog.naver.com/senioruhak",email:"",businessHours:"",address:"",bizRegNo:""};function C(){let{settings:e}=E(),t=null==e?void 0:e.contact,r=(null==t?void 0:t.phoneDisplay)||T.phoneDisplay;return{companyName:(null==t?void 0:t.companyName)||T.companyName,phoneDisplay:r,phoneTel:function(e,t){let r=(e||"").replace(/[^\d+]/g,"");return r?"tel:".concat(r):t||T.phoneTel}(r,null==t?void 0:t.phoneTel),kakaoUrl:(0,_.d)(null==t?void 0:t.kakaoUrl)||T.kakaoUrl,kakaoId:(null==t?void 0:t.kakaoId)||T.kakaoId,youtubeUrl:(0,_.d)(null==t?void 0:t.youtubeUrl)||T.youtubeUrl,naverBlogUrl:(null==t?void 0:t.naverBlogUrl)||T.naverBlogUrl,email:(null==t?void 0:t.email)||T.email,businessHours:(null==t?void 0:t.businessHours)||T.businessHours,address:(null==t?void 0:t.address)||T.address,bizRegNo:(null==t?void 0:t.bizRegNo)||T.bizRegNo}}function H(){let{settings:e}=E(),t=null==e?void 0:e.headerNav;return t&&t.length?t:v.e}function W(e){var t;let{settings:r}=E(),n=null==r?void 0:null===(t=r.metas)||void 0===t?void 0:t.find(t=>t.page===e);return n?{title:n.title,desc:n.desc}:null}let A={geo:{siteSummary:"ìëì´ì íì 31ë
ì íµì í리í ìëì´ ì ì© ì´íì°ì ì 문 기ê´ì¼ë¡, ìë´ë¶í° ì¶êµ\xb7ììê¹ì§ 무ë£ë¡ ëë°í©ëë¤. ì¸ë¶\xb7ë°ê¸°ì¤\xb7í´ë½\xb7ì¼ë¡ì¼ë¡\xb7ë³´ë¼ì¹´ì´ ì§ìì ìëì´ í¹í ì´íìì ìë´í©ëë¤.",brandEntity:"ìëì´ì í = í리í ìëì´(30~70ë) ì ì© ì´íì°ì ì 문 기ê´",keyFacts:["31ë
ì íµì ìëì´ ì´íì°ì ì 문","ìë´\xb7ìì ë¬´ë£ ëë°","í리í ì ì ìëì´ í¹í ì´íì ì í´","ìì´ë³´\xb71:1 ë§ì¶¤ ìì
ì¤ì¬"]},aeo:{faqSchemaEnabled:!0,orgSchemaEnabled:!0,answerSnippets:[{q:"ìëì´ë í리í ì´íì°ìê° ê°ë¥íê°ì?",a:"ë¤. 30~70ë ìëì´ ì ì© ì½ì¤ì ìì´ë³´ ë°ì´ ìì´, ìì´ê° ì²ìì´ì
ë 1:1 ë§ì¶¤ ìì
ì¼ë¡ ììíì¤ ì ììµëë¤."},{q:"ë¹ì©ì ì¼ë§ì¸ê°ì?",a:"ìì í¬í¨ 4주 ê¸°ì¤ ì½ 150ë§~400ë§ìì´ë©°, ìì íì
\xb7ìì
ìê°\xb7ì기\xb7íë¡ëª¨ì
ì ë°ë¼ ë¬ë¼ì§ëë¤."}]}};function D(){var e,t,r,i,s;let{settings:o}=E(),c={...T,...null!==(t=null==o?void 0:o.contact)&&void 0!==t?t:{}},u=null!==(r=null==o?void 0:o.geo)&&void 0!==r?r:A.geo,l=null!==(i=null==o?void 0:o.aeo)&&void 0!==i?i:A.aeo,h=[];return((!l||l.orgSchemaEnabled)&&h.push({"@type":"Organization",name:c.companyName,description:(null==u?void 0:u.brandEntity)||(null==u?void 0:u.siteSummary)||void 0,email:c.email||void 0,telephone:c.phoneDisplay||void 0,address:c.address||void 0,sameAs:[c.youtubeUrl,c.kakaoUrl,c.naverBlogUrl].filter(Boolean),knowsAbout:(null==u?void 0:null===(s=u.keyFacts)||void 0===s?void 0:s.length)?u.keyFacts:void 0}),(null==l?void 0:l.faqSchemaEnabled)&&(null===(e=l.answerSnippets)||void 0===e?void 0:e.length)&&h.push({"@type":"FAQPage",mainEntity:l.answerSnippets.filter(e=>e.q&&e.a).map(e=>({"@type":"Question",name:e.q,acceptedAnswer:{"@type":"Answer",text:e.a}}))}),h.length)?(0,n.jsx)(a(),{children:(0,n.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify({"@context":"https://schema.org","@graph":h})}})}):null}},7827:function(e,t,r){"use strict";r.d(t,{$6:function(){return eG},$x:function(){return N},BJ:function(){return eA},BT:function(){return W},Bk:function(){return ef},Bv:function(){return U},C7:function(){return G},Ck:function(){return el},DO:function(){return ee},D_:function(){return eC},Dr:function(){return J},F4:function(){return ei},GQ:function(){return eU},H:function(){return e0},HI:function(){return A},Hl:function(){return c},I0:function(){return tg},IB:function(){return eo},Ix:function(){return p},J1:function(){return eW},J7:function(){return v},JF:function(){return eB},Lz:function(){return ts},Nx:function(){return eu},OS:function(){return h},OZ:function(){return ex},Oj:function(){return tn},PL:function(){return eT},PS:function(){return eL},Pq:function(){return D},Qv:function(){return eY},Rd:function(){return j},Ro:function(){return ez},S5:function(){return L},SE:function(){return e5},T8:function(){return e1},V4:function(){return M},Wf:function(){return eF},Wt:function(){return x},Wy:function(){return f},YK:function(){return td},YQ:function(){return tt},__:function(){return eJ},_e:function(){return ev},a2:function(){return ec},aZ:function(){return es},aj:function(){return ti},ao:function(){return y},c3:function(){return ey},cE:function(){return eZ},cM:function(){return et},dV:function(){return eH},dW:function(){return eO},e7:function(){return Z},fp:function(){return eI},g1:function(){return S},gw:function(){return e3},h8:function(){return C},hj:function(){return eQ},ht:function(){return te},iK:function(){return eh},k8:function(){return tl},kf:function(){return O},kw:function(){return e9},mi:function(){return eX},mv:function(){return q},n7:function(){return ta},o1:function(){return tm},p1:function(){return tr},q9:function(){return e6},qg:function(){return e2},rF:function(){return b},rc:function(){return tc},rd:function(){return eV},ri:function(){return V},rp:function(){return eM},s2:function(){return tu},s8:function(){return ed},sY:function(){return eg},t9:function(){return e$},tW:function(){return ej},tw:function(){return th},u9:function(){return F},uO:function(){return I},vN:function(){return eK},wS:function(){return k},wd:function(){return ea},x2:function(){return E},xB:function(){return eD},xQ:function(){return eN},xv:function(){return en},y8:function(){return T},yC:function(){return R},yL:function(){return K},yv:function(){return e8},zQ:function(){return B},zl:function(){return Y},zq:function(){return P}});var n=r(6650),i=r(109),a=r(7004),s=r(5559),o=r(6e3);let c="firebase",u="firebase"===c,l=[{key:"school",label:"íì"},{key:"dorm",label:"기ìì¬"},{key:"facility",label:"ìì¤"},{key:"food",label:"ìì"}],h=e=>e.galleryCats&&e.galleryCats.length?e.galleryCats:l,g=e=>"seniorstudy:".concat(e);function d(e,t){try{let r=window.localStorage.getItem(g(e));return r?JSON.parse(r):t}catch(e){return t}}function m(e,t){try{window.localStorage.setItem(g(e),JSON.stringify(t))}catch(e){alert("ë¡ì»¬ ì ì¥ ì©ëì ì´ê³¼íì´ì. ì´ë¯¸ì§ ì©ëì ì¤ì´ê±°ë, ìë² ì°ê²° í ì¬ì©íì¸ì.")}}async function p(e,t,r){if(u){let i=(0,n.iH)(s.tO,e);return new Promise((e,a)=>{let s=(0,n.B0)(i,t,{contentType:t.type});s.on("state_changed",e=>null==r?void 0:r(Math.round(e.bytesTransferred/e.totalBytes*100)),a,async()=>e(await (0,n.Jt)(s.snapshot.ref)))})}null==r||r(20);let i=await new Promise((e,r)=>{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=r,n.readAsDataURL(t)});return null==r||r(100),i}async function y(e){if(u)try{await (0,n.oq)((0,n.iH)(s.tO,e))}catch(e){}}
126async function f(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"schoolsFull",e.id),e);return}let t=d("schoolsFull",[]),r=t.findIndex(t=>t.id===e.id);r>=0?t[r]=e:t.push(e),m("schoolsFull",t)}async function v(){return u?(await (0,i.PL)((0,i.hJ)(s.db,"schoolsFull"))).docs.map(e=>e.data()):d("schoolsFull",[])}let _="schoolsMaster",w=(e,t)=>{var r,n;return{masterKey:null!==(r=e.masterKey)&&void 0!==r?r:"",name:e.name,nameEn:null!==(n=e.nameEn)&&void 0!==n?n:"",...e.nameKo?{nameKo:e.nameKo}:{},region:e.region,regionLabel:e.regionLabel,use:{senior:e.use.senior,sim:e.use.sim},...e.carrier?{carrier:e.carrier}:{},...e.programCategories?{programCategories:e.programCategories}:{},...e.programType?{programType:e.programType}:{},...e.priceCurrency?{priceCurrency:e.priceCurrency}:{},closed:!1,updatedAt:Date.now(),updatedBy:t}};async function k(){return $("íì ë§ì¤í° ì¡°í"),(await (0,i.PL)((0,i.hJ)(s.db,_))).docs.map(e=>({...e.data(),id:e.id})).sort((e,t)=>e.name.localeCompare(t.name,"ko"))}async function P(e){var t,r;$("íì ë§ì¤í° ì ì¥");let{id:n,...a}=e;await (0,i.pl)((0,i.JU)(s.db,_,n),{...a,updatedAt:Date.now(),updatedBy:null!==(r=null===(t=s.I8.currentUser)||void 0===t?void 0:t.uid)&&void 0!==r?r:""},{merge:!0})}async function b(e){$("íì ë§ì¤í° ìì "),await (0,i.oe)((0,i.JU)(s.db,_,e))}async function E(){$("íì ë§ì¤í° ì¡°í");let e=new Set((await (0,i.PL)((0,i.hJ)(s.db,_))).docs.map(e=>e.id));return o.Ez.filter(t=>!e.has(t.id)).map(e=>e.id)}async function R(e){var t,r,n;let a;$("íì ë§ì¤í° ìë");let c=null!==(r=null===(t=s.I8.currentUser)||void 0===t?void 0:t.uid)&&void 0!==r?r:"",u=new Set((await (0,i.PL)((0,i.hJ)(s.db,_))).docs.map(e=>e.id)),l=o.Ez.length,h=0,g=0,d=0,m=0;for(let t of o.Ez){if(u.has(t.id))g++;else try{await (0,i.pl)((0,i.JU)(s.db,_,t.id),w(t,c)),h++}catch(e){d++,a||(a=(null==e?void 0:e.message)||String(e))}m++,null==e||null===(n=e.onProgress)||void 0===n||n.call(e,m,l)}return{total:l,created:h,skipped:g,failed:d,firstError:a}}async function S(e){let t;$("íì ë§ì¤í° íë¡ê·¸ë¨ ì ë³´ ë기í");let r=new Set((await (0,i.PL)((0,i.hJ)(s.db,_))).docs.map(e=>e.id)),n=o.Ez.filter(e=>r.has(e.id)&&(e.programCategories||e.programType||e.priceCurrency)),a=n.length,c=0,u=0,l=0;for(let r of n){var h;try{await (0,i.pl)((0,i.JU)(s.db,_,r.id),{...r.programCategories?{programCategories:r.programCategories}:{},...r.programType?{programType:r.programType}:{},...r.priceCurrency?{priceCurrency:r.priceCurrency}:{}},{merge:!0}),c++}catch(e){u++,t||(t=(null==e?void 0:e.message)||String(e))}l++,null==e||null===(h=e.onProgress)||void 0===h||h.call(e,l,a)}return{total:a,created:c,skipped:0,failed:u,firstError:t}}async function I(e){let t;$("íì ë§ì¤í° íê¸ í기 ë기í");let r=new Map((await (0,i.PL)((0,i.hJ)(s.db,_))).docs.map(e=>[e.id,e.data()])),n=o.Ez.filter(e=>e.nameKo&&r.has(e.id)&&!r.get(e.id).nameKo),a=n.length,c=0,u=0,l=0;for(let r of n){var h;try{await (0,i.pl)((0,i.JU)(s.db,_,r.id),{nameKo:r.nameKo},{merge:!0}),c++}catch(e){u++,t||(t=(null==e?void 0:e.message)||String(e))}l++,null==e||null===(h=e.onProgress)||void 0===h||h.call(e,l,a)}return{total:a,created:c,skipped:0,failed:u,firstError:t}}async function T(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"config","home"),e);return}m("home",e)}async function C(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","home"));return e.exists()?e.data():null}return d("home",null)}async function H(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"config","weekend"),e);return}m("weekend",e)}async function W(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","weekend"));return e.exists()?e.data():null}return d("weekend",null)}async function A(e){var t;let r=null!==(t=await W())&&void 0!==t?t:{events:[]};await H({...r,events:e})}async function D(e){var t;let r=null!==(t=await W())&&void 0!==t?t:{events:[]};await H({...r,home:e})}async function U(e){var t;let r=null!==(t=await W())&&void 0!==t?t:{events:[]};await H({...r,site:e})}async function L(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"config","schoolOrder"),e);return}m("schoolOrder",e)}async function O(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","schoolOrder"));return e.exists()?e.data():null}return d("schoolOrder",null)}async function N(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"config","pages"),e);return}m("pages",e)}async function K(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","pages"));return e.exists()?e.data():null}return d("pages",null)}async function x(){return u?(await (0,i.PL)((0,i.hJ)(s.db,"leads"))).docs.map(e=>({...e.data(),id:e.id})).sort((e,t)=>
126t.createdAt-e.createdAt):d("leads",[]).sort((e,t)=>t.createdAt-e.createdAt)}async function M(e,t){if(u){await (0,i.pl)((0,i.JU)(s.db,"leads",e),t,{merge:!0});return}let r=d("leads",[]),n=r.findIndex(t=>t.id===e);n>=0&&(r[n]={...r[n],...t},m("leads",r))}async function F(e){if(u){await (0,i.oe)((0,i.JU)(s.db,"leads",e));return}m("leads",d("leads",[]).filter(t=>t.id!==e))}async function B(e){if(u){await (0,i.pl)((0,i.JU)(s.db,"config","settings"),e);return}m("settings",e)}async function V(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","settings"));return e.exists()?e.data():null}return d("settings",null)}let q={titleTemplate:"[{service}] ì 문ì",bodyTemplate:"{name} \xb7 {message}",bannerImageUrl:"",largeIconUrl:""};async function j(e){let t={...e,updatedAt:Date.now()};if(u){await (0,i.pl)((0,i.JU)(s.db,"config","push"),t);return}m("push",t)}async function G(){if(u){let e=await (0,i.QT)((0,i.JU)(s.db,"config","push"));return e.exists()?e.data():null}return d("push",null)}let z="consult";function $(e){if(!u)throw Error("".concat(e,"ë ìë²(Firebase) ì°ê²°ì´ íìí©ëë¤. NEXT_PUBLIC_STORAGE=firebase ë¡ ì¤ííì¸ì."))}let J={enabled:!1,allowIps:[]},Q=e=>(Array.isArray(e)?e:[]).map(e=>"string"==typeof e?{ip:e}:e).filter(e=>e&&"string"==typeof e.ip);function X(e){try{let t=JSON.parse(e).categories||[];return{cats:t.length,items:t.reduce((e,t)=>{var r;return e+((null===(r=t.items)||void 0===r?void 0:r.length)||0)},0)}}catch(e){return{cats:0,items:0}}}async function Y(){$("ìë´ ëì°ë¯¸ ë°ì´í° ì¡°í");let[e,t]=await Promise.all([(0,i.QT)((0,i.JU)(s.db,z,"data")),(0,i.QT)((0,i.JU)(s.db,z,"backup"))]);if(!e.exists())return null;let r=e.data().json||"";return{savedAt:e.data().savedAt||"",size:r.length,...X(r),backupSavedAt:t.exists()&&t.data().savedAt||""}}async function Z(){$("ìë´ ëì°ë¯¸ ë°ì´í° ë´ë ¤ë°ê¸°");let e=await (0,i.QT)((0,i.JU)(s.db,z,"data"));if(!e.exists())throw Error("ì ì¥ë ë°ì´í°ê° ìì§ ììµëë¤.");return e.data().json||""}async function ee(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;return $("ë²ì ëª©ë¡ ì¡°í"),(await (0,i.PL)((0,i.IO)((0,i.hJ)(s.db,z,"history","meta"),(0,i.Xo)("savedAt","desc"),(0,i.b9)(e)))).docs.map(e=>{var t,r,n;let i=e.data();return{savedAt:i.savedAt||e.id,size:i.size||0,cats:null!==(t=i.cats)&&void 0!==t?t:0,items:null!==(r=i.items)&&void 0!==r?r:0,kind:null!==(n=i.kind)&&void 0!==n?n:"auto",by:i.by}})}async function et(e){$("ë²ì ë´ì© ì¡°í");let t=await (0,i.QT)((0,i.JU)(s.db,z,"history","snap",e));if(!t.exists())throw Error("ê·¸ ë²ì ì ë´ì©ì ì°¾ì§ ëª»íìµëë¤.");return t.data().json||""}async function er(e,t,r,n){await (0,i.pl)((0,i.JU)(s.db,z,"history","snap",t),{json:e,savedAt:t}),await (0,i.pl)((0,i.JU)(s.db,z,"history","meta",t),{savedAt:t,size:e.length,...X(e),kind:r,by:n})}async function en(e,t){let r=await et(e);JSON.parse(r);let n=await (0,i.QT)((0,i.JU)(s.db,z,"data"));n.exists()&&await (0,i.pl)((0,i.JU)(s.db,z,"backup"),n.data());let a=new Date().toISOString();return await (0,i.pl)((0,i.JU)(s.db,z,"data"),{json:r,savedAt:a}),await er(r,a,"restore",t),a}async function ei(e){$("ìë ë°±ì
");let t=await (0,i.QT)((0,i.JU)(s.db,z,"data"));if(!t.exists())throw Error("ë°±ì
í ë°ì´í°ê° ìì§ ììµëë¤.");let r=t.data().json||"",n=new Date().toISOString();return await er(r,n,"manual",e),n}async function ea(e,t){$("íì¼ìì ë³µì");let r=JSON.parse(e);if(!r||!Array.isArray(r.categories))throw Error("categories ë°°ì´ì´ ììµëë¤. ìë´ ëì°ë¯¸ ë°ì´í° íì¼ì´ ë§ëì§ íì¸íì¸ì.");let n=JSON.stringify(r),a=await (0,i.QT)((0,i.JU)(s.db,z,"data"));a.exists()&&await (0,i.pl)((0,i.JU)(s.db,z,"backup"),a.data());let o=new Date().toISOString();return await (0,i.pl)((0,i.JU)(s.db,z,"data"),{json:n,savedAt:o}),await er(n,o,"restore",t),o}async function es(e){for(let t of($("ë²ì ìì "),e))await (0,i.oe)((0,i.JU)(s.db,z,"history","snap",t)),await (0,i.oe)((0,i.JU)(s.db,z,"history","meta",t))}async function eo(){$("ì ê·¼ ì í ì¤ì ì¡°í");let e=await (0,i.QT)((0,i.JU)(s.db,z,"access"));if(!e.exists())return null;let t=e.data();return{...J,...t,allowIps:Q(t.allowIps)}}async function ec(e,t){$("ì ê·¼ ì í ì¤ì ì ì¥"),await (0,i.pl)((0,i.JU)(s.db,z,"access"),{...e,updatedAt:Date.now(),updatedBy:t})}async function eu(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100;return $("ì ê·¼ ì ì² ì¡°í"),(await (0,i.PL)((0,i.IO)((0,i.hJ)(s.db,z,"requests","entries"),(0,i.Xo)("at","desc"),(0,i.b9)(e)))).docs.map(e=>{let t=e.data();return{id:e.id,at:t.at||"",ip:t.ip||"",ua:t.ua||"",place:t.place||"",status:t.status||"pending",decidedAt:t.decidedAt,decidedBy:t.decidedBy}})}async function el(e,t,r){if($("ì ê·¼ ì ì² ì²ë¦¬"),t&&e.ip&&"unknown"!==e.ip){var n;let t=null!==(n=await eo())&&void 0!==n?n:J;t.allowIps.some(t=>t.ip===e.ip)||await ec({...t,allowIps:[...t.allowIps,{ip:e.ip,note:e.place}]},r)}await (0,i.pl)((0,i.JU)(s.db,z,"requests","entries",e.id),{status:t?"approved":"rejected",decidedAt:Date.now(),decidedBy:r},{merge:!0})}async function eh(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;return $("ì ê·¼ ê¸°ë¡ ì¡°í"),(await (0,i.PL)((0,i.IO)((0,i.hJ)(s.db,z,"logs","entries"),(0,i.Xo)("at","desc"),(0,i.b9)(e)))).docs.map(e=>{let t=e.data();return{id:e.id,at:t.at||"",ip:t.ip||"",allowed:!1!==t.allowed,ua:t.ua||""}})}function eg(){return JSON.stringify({_exportedAt:new Date().toISOString(),banners:d("banners",[]),schools:d("schools",[]),icons:d("icons",[]),metas:d("metas",[]),home:d("home",null),schoolsFull:d("schoolsFull",[]),pages:d("pages",null),settings:d("settings",null),schoolOrder:d("schoolOrder",null),leads:d("leads",[]),weekend:d("weekend",null)},null,2)}function ed(e){let t=JSON.parse(e);t.banners&&m("banners",t.banners),t.schools&&m("schools",t.schools),t.icons&&m("icons",t.icons),t.metas&&m("metas",t.metas),t.home&&m("home",t.home),t.schoolsFull&&m("schoolsFull",t.schoolsFull),t.pages&&m("pages",t.pages),t.settings&&m("settings",t.settings),t.schoolOrder&&m("schoolOrder",t.schoolOrder),t.leads&&m("leads",t.leads),t.weekend&&m("weekend",t.weekend)}let em="hojuVisa",ep={city:"",title:"",desc:"",note:"",href:"",hlColor:"blue"},ey={priceOld:"99,000",priceNew:"49,000",products:[{city:"ìëë",title:"ILSC\nì¤íë° ì¤ì© í¨í¤ì§",desc:"ILSCë í¸ì£¼ë¥¼ ëííë ëí ì´íì!\n주ê°ë° ëë¹ ë¶ë´ì ì¤ì¸ ì¤í íë¡ê·¸ë¨ì¼ë¡ í¨ì¨ì ì¸ ì°ìê° ê°ë¥í©ëë¤.",note:"â» ìì ë° ê³µí í½
126ì
ì ë³ë ì ì²ì´ íìí©ëë¤.",href:"",hlColor:"blue"},{city:"ë¸ë¦¬ì¦ë²",title:"Imagine\në§ì¶¤í í¨í¤ì§",desc:"주 3ì¼ ëë 주 5ì¼ ìì
ì ì¼ì ê³¼ ìì°ì ë§ê² ì íí ì ìë ì ì°í íë¡ê·¸ë¨ì
ëë¤.",note:"â» ìì ë° ê³µí í½ì
ì ë³ë ì ì²ì´ íìí©ëë¤.",href:"",hlColor:"blue"}]};async function ef(){$("ë¹ì ëë© ë¬¸êµ¬ ì¡°í");let e=await (0,i.QT)((0,i.JU)(s.db,em,"landing"));if(!e.exists())return{...ey};let t=e.data(),r=Array.isArray(t.products)?t.products.map(e=>({...ep,...e})):[];return{...ey,...t,products:r}}async function ev(e,t){$("ë¹ì ëë© ë¬¸êµ¬ ì ì¥"),await (0,i.pl)((0,i.JU)(s.db,em,"landing"),{...e,updatedAt:Date.now(),updatedBy:t})}let e_="plApplications",ew="plPosts",ek="plUsers",eP="plMileage",eb="philjaLocal",eE=e=>(0,a.V1)((0,a.$C)(s.l2,"us-central1"),e),eR=e=>e&&"function"==typeof e.toMillis?e.toMillis():"number"==typeof e?e:0,eS=e=>e.map(e=>{let t=e.data();return{...t,id:e.id,created_at:eR(t.created_at),updated_at:eR(t.updated_at)}});async function eI(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};$("íì íì§ìë¹ì¤ ì ì² ì¡°í");let r=null!==(e=t.limit)&&void 0!==e?e:50;if(t.deliverDate){let e=[...t.cat?[(0,i.ar)("cat","==",t.cat)]:[],...t.city?[(0,i.ar)("city","==",t.city)]:[]],[n,a]=await Promise.all([(0,i.PL)((0,i.IO)((0,i.hJ)(s.db,e_),...e,(0,i.ar)("deliver_date","==",t.deliverDate),(0,i.b9)(r+1))),(0,i.PL)((0,i.IO)((0,i.hJ)(s.db,e_),...e,(0,i.ar)("dates","array-contains",t.deliverDate),(0,i.b9)(r+1)))]),o=new Set;return{items:[...eS(n.docs),...eS(a.docs)].filter(e=>!o.has(e.id)&&(o.add(e.id),!0)).sort((e,t)=>t.created_at-e.created_at).slice(0,r),nextCursor:null}}if(t.buyDate)return{items:eS((await (0,i.PL)((0,i.IO)((0,i.hJ)(s.db,e_),...t.cat?[(0,i.ar)("cat","==",t.cat)]:[],(0,i.ar)("buy_dates","array-contains",t.buyDate),(0,i.b9)(r+1)))).docs).filter(e=>"canceled"!==e.status).sort((e,t)=>t.created_at-e.created_at).slice(0,r),nextCursor:null};let n=(0,i.IO)((0,i.hJ)(s.db,e_),...t.status?[(0,i.ar)("status","==",t.status)]:[],...t.cat?[(0,i.ar)("cat","==",t.cat)]:[],...t.city?[(0,i.ar)("city","==",t.city)]:[],...t.rentalOpen?[(0,i.ar)("rental_open","==",!0)]:[],...t.sinceMs?[(0,i.ar)("created_at",">=",i.EK.fromMillis(t.sinceMs))]:[],(0,i.Xo)("created_at","desc"),...t.cursor?[(0,i.TQ)(i.EK.fromMillis(t.cursor))]:[],(0,i.b9)(r+1)),a=eS((await (0,i.PL)(n)).docs),o=a.length>r,c=o?a.slice(0,r):a;return{items:c,nextCursor:o&&c.length?c[c.length-1].created_at:null}}async function eT(e){$("íì íì§ìë¹ì¤ íµê³");let t=(0,i.hJ)(s.db,e_);return(await (0,i.Yp)(e?(0,i.IO)(t,(0,i.ar)("status","==",e)):(0,i.IO)(t))).data().count}async function eC(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};$("ì ì² ìí ë³ê²½"),await eE("plSetApplicationStatus")({id:e,status:t,stage:r,...n})}async function eH(e,t){$("ì ì² ë©ëª¨ ì ì¥"),await (0,i.pl)((0,i.JU)(s.db,e_,e),{...t,updated_at:(0,i.Bt)()},{merge:!0})}async function eW(e,t,r){$("í목 ë°°ì¡ ê³í ì ì¥");let n=await eE("plSetItemPlan")({id:e,itemId:t,patch:r});return{plan:n.data.plan,dates:n.data.dates,status:n.data.status}}async function eA(e){$("ë°°ì¡ ë£¨í¸ ì¡°í");let t=await (0,i.QT)((0,i.JU)(s.db,"plRoutes",e)),r=t.exists()?t.data():{};return{mactan:Array.isArray(r.mactan)?r.mactan:[],cebu:Array.isArray(r.cebu)?r.cebu:[],updated_at:eR(r.updated_at),updated_by:"string"==typeof r.updated_by?r.updated_by:void 0}}async function eD(e,t,r){$("ë°°ì¡ ë£¨í¸ ë³ê²½");let n=await eE("plSetRoute")({date:e,school:t,route:r});return{mactan:n.data.route.mactan,cebu:n.data.route.cebu}}async function eU(e,t,r){return $("ì ì°¨ ìì ì ì¥"),(await eE("plSetRouteOrder")({date:e,route:t,schools:r})).data.count}async function eL(e){if($("í목 ë°°ì¡ ê³í ì¼ê´ ì ì¥"),!e.length)return 0;if(e.length>400)throw Error("í ë²ì 400ê°ê¹ì§ë§ ë°ê¿ ì ììµëë¤");return(await eE("plSetItemPlanMany")({items:e})).data.updated}async function eO(e,t,r){return $("구ë
íì°¨ ì²ë¦¬"),(await eE("plSetRound")({id:e,date:t,action:r})).data.dates}async function eN(e,t,r,n){return $("í목 ìí ë³ê²½"),(await eE("plSetItemStatus")({id:e,itemId:t,status:r,reason:n})).data}async function eK(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return $("ë³´ì¦ê¸ ì ì¥"),(await eE("plSetRental")({id:e,deposit:t,depositReturned:r})).data}async function ex(e,t,r){return $("ë°ë© íì"),(await eE("plSetItemReturned")({id:e,itemId:t,returned:r})).data}async function eM(e){return $("ììì¦ ë°ì¡"),(await eE("plSendRentalReceipt")({id:e})).data}async function eF(e){return $("ë미 ì ì² ìì±"),(await eE("plSeedDemoApplications")(void 0===e?{}:{count:e})).data}async function eB(){return $("ë미 ì ì² ìì "),(await eE("plDeleteDemoApplications")()).data}async function eV(e,t){await eq([e],t)}async function eq(e,t){if($("ë°°ì¡ì¼\xb7ëì ì ì¥"),!e.length)return 0;if(e.length>400)throw Error("í ë²ì 400ê±´ê¹ì§ë§ ë°ê¿ ì ììµëë¤");return(await eE("plSetDelivery")({ids:e,...t})).data.updated}async function ej(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};$("ê²ì물 ê²í ëê¸°ì´ ì¡°í");let n=null!==(t=r.limit)&&void 0!==t?t:50,a=(0,i.IO)((0,i.hJ)(s.db,ew),(0,i.ar)("status","==",e),...r.kind?[(0,i.ar)("kind","==",r.kind)]:[],(0,i.Xo)("submitted_at","desc"),...r.cursor?[(0,i.TQ)(i.EK.fromMillis(r.cursor))]:[],(0,i.b9)(n+1)),o=(await (0,i.PL)(a)).docs.map(e=>{let t=e.data();return{...t,id:e.id,submitted_at:eR(t.submitted_at),reviewed_at:t.reviewed_at?eR(t.reviewed_at):null,deleted_at:t.deleted_at?eR(t.deleted_at):null}}),c=o.length>n,u=c?o.slice(0,n):o;return{items:u,nextCursor:c&&u.length?u[u.length-1].submitted_at:null}}async function eG(e){return $("ê²ì물 ê²í íµê³"),(await (0,i.Yp)((0,i.IO)((0,i.hJ)(s.db,ew),(0,i.ar)("status","==",e)))).data().count}async function ez(e,t){$("ê²ì물 ì¹ì¸"),await eE("plModeratePost")({id:e,action:"approve",cat:t})}async function e$(e,t){$("ê²ì물 ë°ë ¤"),await eE("plModeratePost")({id:e,action:"reject",reason:t})}async function eJ(e){$("ê²ì물 ìì "),await eE("plModeratePost")({id:e,action:"delete"})}async function eQ(e){var t;$("ë§ì¼ë¦¬ì§ ìì¡ ì¡°í");let r=await (0,i.QT)((0,i.JU)(s.db,eP,e));if(!r.exists())return null;let n=r.data();return{balance:null!==(t=n.balance)&&void 0!==t?t:0,updated_at:eR(n.updated_at)}}async function eX(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};$("ë§ì¼ë¦¬ì§ ìì¡ ëª©ë¡ ì¡°í");let r=null!==(e=t.limit)&&void 0!==e?e:50,n=(0,i.IO)((0,i.hJ)(s.db,eP),(0,i.Xo)("updated_at","desc"),...t.curs
126or?[(0,i.TQ)(i.EK.fromMillis(t.cursor))]:[],(0,i.b9)(r+1)),a=(await (0,i.PL)(n)).docs.map(e=>{var t;let r=e.data();return{uid:e.id,balance:null!==(t=r.balance)&&void 0!==t?t:0,updated_at:eR(r.updated_at)}}),o=a.length>r,c=o?a.slice(0,r):a;return{items:c,nextCursor:o&&c.length?c[c.length-1].updated_at:null}}async function eY(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};$("ë§ì¼ë¦¬ì§ ë´ì ì¡°í");let n=null!==(t=r.limit)&&void 0!==t?t:50,a=(0,i.IO)((0,i.hJ)(s.db,eP,e,"entries"),(0,i.Xo)("at","desc"),...r.cursor?[(0,i.TQ)(i.EK.fromMillis(r.cursor))]:[],(0,i.b9)(n+1)),o=(await (0,i.PL)(a)).docs.map(e=>{var t,r,n;let i=e.data();return{id:e.id,amount:null!==(t=i.amount)&&void 0!==t?t:0,reason:null!==(r=i.reason)&&void 0!==r?r:"",at:eR(i.at),by:null!==(n=i.by)&&void 0!==n?n:"",...i.svc?{svc:i.svc}:{}}}),c=o.length>n,u=c?o.slice(0,n):o;return{items:u,nextCursor:c&&u.length?u[u.length-1].at:null}}async function eZ(e){return $("ë§ì¼ë¦¬ì§ ì¡°ì "),(await eE("plAdjustMileage")(e)).data}let e1={simRegions:[],simPlans:[],simFaqs:[],rates:[{id:"default",label:"기본 (모ë íë©´)",krwPerPhp:25}],banner:{on:!0,text:"",href:""},doneTemplates:[]};async function e0(){$("íì íì§ìë¹ì¤ ì½í ì¸ ì¡°í");let e=await (0,i.QT)((0,i.JU)(s.db,"config",eb));return e.exists()?{...e1,...e.data()}:e1}async function e4(e){$("íì íì§ìë¹ì¤ ì½í ì¸ ì ì¥"),await (0,i.pl)((0,i.JU)(s.db,"config",eb),e)}async function e2(e){await e4({...await e0(),simRegions:e})}async function e5(e){await e4({...await e0(),simPlans:e})}async function e3(e){await e4({...await e0(),simFaqs:e})}async function e6(e){await e4({...await e0(),rates:e})}async function e9(e){await e4({...await e0(),banner:e})}async function e8(e){await e4({...await e0(),doneTemplates:e})}function e7(e,t,r){let n=new Map((null!=t?t:[]).map(e=>[e.id,e]));return e.map(e=>{let t=n.get(e.id);if(!t)return e;let i={};for(let n of r)void 0===e[n]&&void 0!==t[n]&&(i[n]=t[n]);return Object.keys(i).length?{...e,...i}:e})}async function te(e){let t=await e0(),r=e7(e,t.rentalItems,["stock","hidden","sold"]);await e4({...t,rentalItems:r,rentalItemsAt:Date.now()})}async function tt(e){let t=await e0(),r=e7(e,t.shopItems,["hidden","sold"]);await e4({...t,shopItems:r,shopItemsAt:Date.now()})}async function tr(e){let t=await e0(),r=(e,t)=>e7(e,t,["hidden","sold"]);await e4({...t,rentalSetItems:r(e.rentalSetItems,t.rentalSetItems),buySetItems:r(e.buySetItems,t.buySetItems),souvenirSetItems:r(e.souvenirSetItems,t.souvenirSetItems),setItemsAt:Date.now()})}async function tn(e){await e4({...await e0(),packOpts:e,packOptsAt:Date.now()})}async function ti(e){await e4({...await e0(),subPlans:e,subPlansAt:Date.now()})}async function ta(e){let t=await e0();await e4({...t,banchanItems:e7(e.banchanItems,t.banchanItems,["hidden"]),fruitItems:e7(e.fruitItems,t.fruitItems,["hidden"]),subItemsAt:Date.now()})}async function ts(e){let t=await e0(),r=e7(e,t.tourItems,["hidden"]);await e4({...t,tourItems:r,tourItemsAt:Date.now()})}let to="plSettings",tc={account:{bank:"",number:"",holder:""}};async function tu(){$("ì림 ì¤ì ì¡°í");let e=await (0,i.QT)((0,i.JU)(s.db,to,"notify"));return e.exists()?{...tc,...e.data()}:tc}async function tl(e){$("ì림 ì¤ì ì ì¥"),await (0,i.pl)((0,i.JU)(s.db,to,"notify"),e,{merge:!0})}async function th(e){$("íì ì¡°í");let t=await (0,i.QT)((0,i.JU)(s.db,ek,e));if(!t.exists())return null;let r=t.data();return{...r,uid:t.id,created_at:eR(r.created_at)}}async function tg(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};$("íì ëª©ë¡ ì¡°í");let r=null!==(e=t.limit)&&void 0!==e?e:50,n=(0,i.IO)((0,i.hJ)(s.db,ek),(0,i.Xo)("created_at","desc"),...t.cursor?[(0,i.TQ)(i.EK.fromMillis(t.cursor))]:[],(0,i.b9)(r+1)),a=(await (0,i.PL)(n)).docs.map(e=>{let t=e.data();return{...t,uid:e.id,created_at:eR(t.created_at)}}),o=a.length>r,c=o?a.slice(0,r):a;return{items:c,nextCursor:o&&c.length?c[c.length-1].created_at:null}}async function td(){return $("íì íµê³"),(await (0,i.Yp)((0,i.hJ)(s.db,ek))).data().count}function tm(e){return["image/jpeg","image/jpg","image/png","image/webp"].includes(e.type)?e.size>5242880?"íì¼ í¬ê¸°ë 5MB ì´íì¬ì¼ í©ëë¤":null:"JPG, PNG, WebP íì¼ë§ ì ë¡ë ê°ë¥í©ëë¤"}},9244:function(e,t,r){"use strict";let n,i,a,s;r.r(t),r.d(t,{default:function(){return M}});var o=r(5893),c=r(7294),u=r(2238),l=r(3333),h=r(4444),g=r(8463);r(7578);/** 127 * @license 128 * Copyright 2019 Google LLC 129 * 130 * Licensed under the Apache License, Version 2.0 (the "License");
131 * you may not use this file except in compliance with the License. 132 * You may obtain a copy of the License at 133 * 134 * http://www.apache.org/licenses/LICENSE-2.0 135 * 136 * Unless required by applicable law or agreed to in writing, software 137 * distributed under the License is distributed on an "AS IS" BASIS, 138 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139 * See the License for the specific language governing permissions and 140 * limitations under the License. 141 */let d="analytics",m="https://www.googletagmanager.com/gtag/js",p=new l.Yd("@firebase/analytics"),y=new h.LL("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}."});/** 142 * @license 143 * Copyright 2019 Google LLC 144 * 145 * Licensed under the Apache License, Version 2.0 (the "License"); 146 * you may not use this file except in compliance with the License. 147 * You may obtain a copy of the License at 148 * 149 * http://www.apache.org/licenses/LICENSE-2.0 150 * 151 * Unless required by applicable law or agreed to in writing, software 152 * distributed under the License is distributed on an "AS IS" BASIS, 153 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 154 * See the License for the specific language governing permissions and 155 * limitations under the License. 156 */function f(e){if(!e.startsWith(m)){let t=y.create("invalid-gtag-resource",{gtagURL:e});return p.warn(t.message),""}return e}function v(e){return Promise.all(e.map(e=>e.catch(e=>e)))}async function _(e,t,r,n,i,a){let s=n[i];try{if(s)await t[s];else{let e=(await v(r)).find(e=>e.measurementId===i);e&&await t[e.appId]}}catch(e){p.error(e)}e("config",i,a)}async function w(e,t,r,n,i){try{let a=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);let n=await v(r);for(let r of e){let e=n.find(e=>e.measurementId===r),i=e&&t[e.appId];if(i)a.push(i);else{a=[];break}}}0===a.length&&(a=Object.values(t)),await Promise.all(a),e("event",n,i||{})}catch(e){p.error(e)}}class k{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]}}let P=new k;async function b(e){var t;let{appId:r,apiKey:n}=e,i={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":n})},a="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig".replace("{app-id}",r),s=await fetch(a,i);if(200!==s.status&&304!==s.status){let e="";try{let r=await s.json();(null===(t=r.error)||void 0===t?void 0:t.message)&&(e=r.error.message)}catch(e){}throw y.create("config-fetch-failed",{httpStatus:s.status,responseMessage:e})}return s.json()}async function E(e,t=P,r){let{appId:n,apiKey:i,measurementId:a}=e.options;if(!n)throw y.create("no-app-id");if(!i){if(a)return{measurementId:a,appId:n};throw y.create("no-api-key")}let s=t.getThrottleMetadata(n)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new S;return setTimeout(async()=>{o.abort()},void 0!==r?r:6e4),R({appId:n,apiKey:i,measurementId:a},s,o,t)}async function R(e,{throttleEndTimeMillis:t,backoffCount:r},n,i=P){var a;let{appId:s,measurementId:o}=e;try{await new Promise((e,r)=>{let i=setTimeout(e,Math.max(t-Date.now(),0));n.addEventListener(()=>{clearTimeout(i),r(y.create("fetch-throttle",{throttleEndTimeMillis:t}))})})}catch(e){if(o)return p.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}
156]`),{appId:s,measurementId:o};throw e}try{let t=await b(e);return i.deleteThrottleMetadata(s),t}catch(u){if(!function(e){if(!(e instanceof h.ZR)||!e.customData)return!1;let t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(u)){if(i.deleteThrottleMetadata(s),o)return p.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${null==u?void 0:u.message}]`),{appId:s,measurementId:o};throw u}let t=503===Number(null===(a=null==u?void 0:u.customData)||void 0===a?void 0:a.httpStatus)?(0,h.$s)(r,i.intervalMillis,30):(0,h.$s)(r,i.intervalMillis),c={throttleEndTimeMillis:Date.now()+t,backoffCount:r+1};return i.setThrottleMetadata(s,c),p.debug(`Calling attemptFetch again in ${t} millis`),R(e,c,n,i)}}class S{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function I(e,t,r,n,i){if(i&&i.global){e("event",r,n);return}{let i=await t;e("event",r,Object.assign(Object.assign({},n),{send_to:i}))}}/** 157 * @license 158 * Copyright 2020 Google LLC 159 * 160 * Licensed under the Apache License, Version 2.0 (the "License"); 161 * you may not use this file except in compliance with the License. 162 * You may obtain a copy of the License at 163 * 164 * http://www.apache.org/licenses/LICENSE-2.0 165 * 166 * Unless required by applicable law or agreed to in writing, software 167 * distributed under the License is distributed on an "AS IS" BASIS, 168 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 169 * See the License for the specific language governing permissions and 170 * limitations under the License. 171 */async function T(){if(!(0,h.hl)())return p.warn(y.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await (0,h.eu)()}catch(e){return p.warn(y.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}async function C(e,t,r,a,s,o,c){var u;let l=E(e);l.then(t=>{r[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&p.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.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=>p.error(e)),t.push(l);let h=T().then(e=>e?a.getId():void 0),[g,d]=await Promise.all([l,h]);!function(e){for(let t of Object.values(window.document.getElementsByTagName("script")))if(t.src&&t.src.includes(m)&&t.src.includes(e))return t;return null}(o)&&function(e,t){var r,n;let i;let a=(r="firebase-js-sdk-policy",n={createScriptURL:f},window.trustedTypes&&(i=window.trustedTypes.createPolicy(r,n)),i),s=document.createElement("script"),o=`${m}?l=${e}&id=${t}`;s.src=a?null==a?void 0:a.createScriptURL(o):o,s.async=!0,document.head.appendChild(s)}(o,g.measurementId),i&&(s("consent","default",i),i=void 0),s("js",new Date);let y=null!==(u=null==c?void 0:c.config)&&void 0!==u?u:{};return y.origin="firebase",y.update=!0,null!=d&&(y.firebase_id=d),s("config",g.measurementId,y),n&&(s("set",n),n=void 0),g.measurementId}/** 172 * @license 173 * Copyright 2019 Google LLC 174 * 175 * Licensed under the Apache License, Version 2.0 (the "License"); 176 * you may not use this file except in compliance with the License. 177 * You may obtain a copy of the License at 178 * 179 * http://www.apache.org/licenses/LICENSE-2.0 180 * 181 * Unless required by applicable law or agreed to in writing, software 182 * distributed under the License is distributed on an "AS IS" BASIS, 183 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 184 * See the License for the specific language governing permissions and 185 * limitations under the License. 186 */class H{constructor(e){this.app=e}_delete(){return delete W[this.app.options.appId],Promise.resolve()}}let W={},A=[],D={},U="dataLayer",L=!1,O="@firebase/analytics",N="0.10.8";(0,u.Xd)(new g.wA(d,(e,{options:t})=>(function(e,t,r){!function(){let e=[];
186if((0,h.ru)()&&e.push("This is a browser extension environment."),(0,h.zI)()||e.push("Cookies are not available."),e.length>0){let t=e.map((e,t)=>`(${t+1}) ${e}`).join(" "),r=y.create("invalid-analytics-context",{errorInfo:t});p.warn(r.message)}}();let n=e.options.appId;if(!n)throw y.create("no-app-id");if(!e.options.apiKey){if(e.options.measurementId)p.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.`);else throw y.create("no-api-key")}if(null!=W[n])throw y.create("already-exists",{id:n});if(!L){var i,o;let e,t;e=[],Array.isArray(window[U])?e=window[U]:window[U]=e;let{wrappedGtag:r,gtagCore:n}=(i="gtag",t=function(...e){window[U].push(arguments)},window[i]&&"function"==typeof window[i]&&(t=window[i]),window[i]=(o=t,async function(e,...t){try{if("event"===e){let[e,r]=t;await w(o,W,A,e,r)}else if("config"===e){let[e,r]=t;await _(o,W,A,D,e,r)}else if("consent"===e){let[e,r]=t;o("consent",e,r)}else if("get"===e){let[e,r,n]=t;o("get",e,r,n)}else if("set"===e){let[e]=t;o("set",e)}else o(e,...t)}catch(e){p.error(e)}}),{gtagCore:t,wrappedGtag:window[i]});s=r,a=n,L=!0}return W[n]=C(e,A,D,t,a,U,r),new H(e)})(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t),"PUBLIC")),(0,u.Xd)(new g.wA("analytics-internal",function(e){try{let t=e.getProvider(d).getImmediate();return{logEvent:(e,r,n)=>{var i;return i=t,void(i=(0,h.m9)(i),I(s,W[i.app.options.appId],e,r,n).catch(e=>p.error(e)))}}}catch(e){throw y.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),(0,u.KN)(O,N),(0,u.KN)(O,N,"esm2017");var K=r(5559),x=r(3228);function M(e){let{Component:t,pageProps:r}=e;return(0,c.useEffect)(()=>{!function(e=(0,u.Mq)()){e=(0,h.m9)(e);let t=(0,u.qX)(e,d);t.isInitialized()?t.getImmediate():function(e,t={}){let r=(0,u.qX)(e,d);if(r.isInitialized()){let e=r.getImmediate();if((0,h.vZ)(t,r.getOptions()))return e;throw y.create("already-initialized")}return r.initialize({options:t})}(e)}(K.l2)},[]),(0,o.jsxs)(x.Rr,{children:[(0,o.jsx)(x.CB,{}),(0,o.jsx)(t,{...r})]})}r(9311)},9311:function(){},9008:function(e,t,r){e.exports=r(7828)},4155:function(e){var t,r,n,i=e.exports={};function a(){throw Error("setTimeout has not been defined")}function s(){throw Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:a}catch(e){t=a}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var c=[],u=!1,l=-1;function h(){u&&n&&(u=!1,n.length?c=n.concat(c):l=-1,c.length&&g())}function g(){if(!u){var e=o(h);u=!0;for(var t=c.length;t;){for(n=c,c=[];++l<t;)n&&n[l].run();l=-1,t=c.length}n=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function m(){}i.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new d(e,t)),1!==c.length||u||o(g)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=m,i.addListener=m,i.once=m,i.off=m,i.removeListener=m,i.removeAllListeners=m,i.emit=m,i.prependListener=m,i.prependOnceListener=m,i.listeners=function(e){return[]},i.binding=function(e){throw Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw Error("process.chdir is not supported")},i.umask=function(){return 0}},2238:function(e,t,r){"use strict";r.d(t,{C6:function(){return R},Jn:function(){return P},KN:function(){return S},Mq:function(){return E},Xd:function(){return f},ZF:function(){return b},qX:function(){return v},rh:function(){return _}});var n=r(8463),i=r(3333),a=r(4444),s=r(6531);/** 187 * @license 188 * Copyright 2019 Google LLC 189 * 190 * Licensed under the Apache License, Version 2.0 (the "License");
191 * you may not use this file except in compliance with the License. 192 * You may obtain a copy of the License at 193 * 194 * http://www.apache.org/licenses/LICENSE-2.0 195 * 196 * Unless required by applicable law or agreed to in writing, software 197 * distributed under the License is distributed on an "AS IS" BASIS, 198 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 199 * See the License for the specific language governing permissions and 200 * limitations under the License. 201 */class o{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(e=>{if(!function(e){let t=e.getComponent();return(null==t?void 0:t.type)==="VERSION"}(e))return null;{let t=e.getImmediate();return`${t.library}/${t.version}`}}).filter(e=>e).join(" ")}}let c="@firebase/app",u="0.10.13",l=new i.Yd("@firebase/app"),h="[DEFAULT]",g={[c]:"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-preview":"fire-vertex","fire-js":"fire-js",firebase:"fire-js-all"},d=new Map,m=new Map,p=new Map;function y(e,t){try{e.container.addComponent(t)}catch(r){l.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,r)}}function f(e){let t=e.name;if(p.has(t))return l.debug(`There were multiple attempts to register component ${t}.`),!1;for(let r of(p.set(t,e),d.values()))y(r,e);for(let t of m.values())y(t,e);return!0}function v(e,t){let r=e.container.getProvider("heartbeat").getImmediate({optional:!0});return r&&r.triggerHeartbeat(),e.container.getProvider(t)}function _(e){return void 0!==e.settings}let w=new a.LL("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.","invali
201d-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."});/** 202 * @license 203 * Copyright 2019 Google LLC 204 * 205 * Licensed under the Apache License, Version 2.0 (the "License"); 206 * you may not use this file except in compliance with the License. 207 * You may obtain a copy of the License at 208 * 209 * http://www.apache.org/licenses/LICENSE-2.0 210 * 211 * Unless required by applicable law or agreed to in writing, software 212 * distributed under the License is distributed on an "AS IS" BASIS, 213 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 214 * See the License for the specific language governing permissions and 215 * limitations under the License. 216 */class k{constructor(e,t,r){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new n.wA("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 w.create("app-deleted",{appName:this._name})}}/** 217 * @license 218 * Copyright 2019 Google LLC 219 * 220 * Licensed under the Apache License, Version 2.0 (the "License"); 221 * you may not use this file except in compliance with the License. 222 * You may obtain a copy of the License at 223 * 224 * http://www.apache.org/licenses/LICENSE-2.0 225 * 226 * Unless required by applicable law or agreed to in writing, software 227 * distributed under the License is distributed on an "AS IS" BASIS, 228 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 229 * See the License for the specific language governing permissions and 230 * limitations under the License. 231 */let P="10.14.1";function b(e,t={}){let r=e;"object"!=typeof t&&(t={name:t});let i=Object.assign({name:h,automaticDataCollectionEnabled:!1},t),s=i.name;if("string"!=typeof s||!s)throw w.create("bad-app-name",{appName:String(s)});if(r||(r=(0,a.aH)()),!r)throw w.create("no-options");let o=d.get(s);if(o){if((0,a.vZ)(r,o.options)&&(0,a.vZ)(i,o.config))return o;throw w.create("duplicate-app",{appName:s})}let c=new n.H0(s);for(let e of p.values())c.addComponent(e);let u=new k(r,i,c);return d.set(s,u),u}function E(e=h){let t=d.get(e);if(!t&&e===h&&(0,a.aH)())return b();if(!t)throw w.create("no-app",{appName:e});return t}function R(){return Array.from(d.values())}function S(e,t,r){var i;let a=null!==(i=g[e])&&void 0!==i?i:e;r&&(a+=`-${r}`);let s=a.match(/\s|\//),o=t.match(/\s|\//);if(s||o){let e=[`Unable to register library "${a}" with version "${t}":`];s&&e.push(`library name "${a}" contains illegal characters (whitespace or "/")`),s&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),l.warn(e.join(" "));return}f(new n.wA(`${a}-version`,()=>({library:a,version:t}),"VERSION"))}let I="firebase-heartbeat-store",T=null;function C(){return T||(T=(0,s.X3)("firebase-heartbeat-database",1,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(I)}catch(e){console.warn(e)}}}).catch(e=>{throw w.create("idb-open",{originalErrorMessage:e.message})})),T}async function H(e){try{let t=(await C()).transaction(I),r=await t.objectStore(I).get(A(e));return await t.done,r}catch(e){if(e instanceof a.ZR)l.warn(e.message);else{let t=w.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});l.warn(t.message)}}}async function W(e,t){try{let r=(await C()).transaction(I,"readwrite"),n=r.objectStore(I);await n.put(t,A(e)),await r.done}catch(e){if(e instanceof a.ZR)l.warn(e.message);else{let t=w.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});l.warn(t.message)}}}function A(e){return`${e.name}!${e.options.appId}`}class D{constructor(e){this.container=e,this._heartbeatsCache=null;let t=this.container.getProvider("app").getImmediate();this._storage=new L(t),this._heartbeatsCachePromise=this._storage.read().then(e=>(this._heartbeatsCache=e,e))}async triggerHeartbeat(){var e,t;try{let r=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),n=U();if((null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)==null&&(this._heartbeatsCache=await this._heartbeatsCachePromise,(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)==null)||this._heartbeatsCache.lastSentHeartbeatDate===n||this._heartbeatsCache.heartbeats.some(e=>e.date===n))return;return this._heartbeatsCache.heartbeats.push({date:n,agent:r}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(e=>{let t=new Date(e.date).valueOf();return Date.now()-t<=2592e6}),this._storage.overwrite(this._heartbeatsCache)}catch(e){l.warn(e)}}async getHeartbeatsHeader(){var e;try{if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)==null||0===this._heartbeatsCache.heartbeats.length)return"";let t=U(),{heartbeatsToSend:r,unsentEntries:n}=function(e,t=1024){let r=[],n=e.slice();for(let i of e){let e=r.find(e=>e.agent===i.agent);if(e){if(e.dates.push(i.date),O(r)>t){e.dates.pop();break}}else if(r.push({agent:i.agent,dates:[i.date]}),O(r)>t){r.pop();break}n=n.slice(1)}return{heartbeatsToSend:r,unsentEntries:n}}(this._heartbeatsCache.heartbeats),i=(0,a.L)(JSON.stringify({version:2,heartbeats:r}));return this._heartbeatsCache.lastSentHeartbeatDate=t,n.length>0?(this._heartbeatsCache.heartbeats=n,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}catch(e){return l.warn(e),""}}}function U(){return new Date().toISOString().substring(0,10)}class L{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!(0,a.hl)()&&(0,a.eu)().then(()=>!0).catch(()=>!1)}async read(){if(!await this._canUseIndexedDBPromise)return{heartbeats:[]};{let e=await H(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){let r=await this.read();return W(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:r.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){let r=await this.read();return W(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:r.lastSentHeartbeatDate,heartbeats:[...r.heartbeats,...e.heartbeats]})}}}function O(e){return(0,a.L)(JSON.stringify({version:2,heartbeats:e})).length}f(new n.wA("platform-logger",e=>new o(e),"PRIVATE")),f(new n.wA("heartbeat",e=>new D(e),"PRIVATE")),S(c,u,""),S(c,u,"esm2017"),S("fire-js","")},8463:function(e,t,r){"use strict";r.d(t,{H0:function(){return o},wA:function(){return i}});var n=r(4444);class i{constructor(e,t,r){this.name=e,this.instanceFactory=t,this.type=r,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}}/** 232 * @license 233 * Copyright 2019 Google LLC 234 * 235 * Licensed under the Apache License, Version 2.0 (the "License");
236 * you may not use this file except in compliance with the License. 237 * You may obtain a copy of the License at 238 * 239 * http://www.apache.org/licenses/LICENSE-2.0 240 * 241 * Unless required by applicable law or agreed to in writing, software 242 * distributed under the License is distributed on an "AS IS" BASIS, 243 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 244 * See the License for the specific language governing permissions and 245 * limitations under the License. 246 */let a="[DEFAULT]";/** 247 * @license 248 * Copyright 2019 Google LLC 249 * 250 * Licensed under the Apache License, Version 2.0 (the "License"); 251 * you may not use this file except in compliance with the License. 252 * You may obtain a copy of the License at 253 * 254 * http://www.apache.org/licenses/LICENSE-2.0 255 * 256 * Unless required by applicable law or agreed to in writing, software 257 * distributed under the License is distributed on an "AS IS" BASIS, 258 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 259 * See the License for the specific language governing permissions and 260 * limitations under the License. 261 */class s{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){let t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){let e=new n.BH;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{let r=this.getOrInitializeService({instanceIdentifier:t});r&&e.resolve(r)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;let r=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),n=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(e){if(n)return null;throw e}else{if(n)return null;throw Error(`Service ${this.name} is not available`)}}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:a})}catch(e){}for(let[e,t]of this.instancesDeferred.entries()){let r=this.normalizeInstanceIdentifier(e);try{let e=this.getOrInitializeService({instanceIdentifier:r});t.resolve(e)}catch(e){}}}}clearInstance(e=a){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){let 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=a){return this.instances.has(e)}getOptions(e=a){return this.instancesOptions.get(e)||{}}initialize(e={}){let{options:t={}}=e,r=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);let n=this.getOrInitializeService({instanceIdentifier:r,options:t});for(let[e,t]of this.instancesDeferred.entries())r===this.normalizeInstanceIdentifier(e)&&t.resolve(n);return n}onInit(e,t){var r;let n=this.normalizeInstanceIdentifier(t),i=null!==(r=this.onInitCallbacks.get(n))&&void 0!==r?r:new Set;i.add(e),this.onInitCallbacks.set(n,i);let a=this.instances.get(n);return a&&e(a,n),()=>{i.delete(e)}}invokeOnInitCallbacks(e,t){let r=this.onInitCallbacks.get(t);if(r)for(let n of r)try{n(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let r=this.instances.get(e);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:e===a?void 0:e,options:t}),this.instances.set(e,r),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(r,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,r)}catch(e){}return r||null}normalizeInstanceIdentifier(e=a){return this.component?this.component.multipleInstances?e:a:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}/** 262 * @license 263 * Copyright 2019 Google LLC 264 * 265 * Licensed under the Apache License, Version 2.0 (the "License");
266 * you may not use this file except in compliance with the License. 267 * You may obtain a copy of the License at 268 * 269 * http://www.apache.org/licenses/LICENSE-2.0 270 * 271 * Unless required by applicable law or agreed to in writing, software 272 * distributed under the License is distributed on an "AS IS" BASIS, 273 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 274 * See the License for the specific language governing permissions and 275 * limitations under the License. 276 */class o{constructor(e){this.name=e,this.providers=new Map}addComponent(e){let t=this.getProvider(e.name);if(t.isComponentSet())throw Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);let t=new s(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}},7578:function(e,t,r){"use strict";var n=r(2238),i=r(8463),a=r(4444),s=r(6531);let o="@firebase/installations",c="0.6.9",u=`w:${c}`,l="FIS_v2",h=new a.LL("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 g(e){return e instanceof a.ZR&&e.code.includes("request-failed")}/** 277 * @license 278 * Copyright 2019 Google LLC 279 * 280 * Licensed under the Apache License, Version 2.0 (the "License"); 281 * you may not use this file except in compliance with the License. 282 * You may obtain a copy of the License at 283 * 284 * http://www.apache.org/licenses/LICENSE-2.0 285 * 286 * Unless required by applicable law or agreed to in writing, software 287 * distributed under the License is distributed on an "AS IS" BASIS, 288 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 289 * See the License for the specific language governing permissions and 290 * limitations under the License. 291 */function d({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function m(e){return{token:e.token,requestStatus:2,expiresIn:Number(e.expiresIn.replace("s","000")),creationTime:Date.now()}}async function p(e,t){let r=(await t.json()).error;return h.create("request-failed",{requestName:e,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function y({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}async function f(e){let t=await e();return t.status>=500&&t.status<600?e():t}/** 292 * @license 293 * Copyright 2019 Google LLC 294 * 295 * Licensed under the Apache License, Version 2.0 (the "License"); 296 * you may not use this file except in compliance with the License. 297 * You may obtain a copy of the License at 298 * 299 * http://www.apache.org/licenses/LICENSE-2.0 300 * 301 * Unless required by applicable law or agreed to in writing, software 302 * distributed under the License is distributed on an "AS IS" BASIS, 303 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 304 * See the License for the specific language governing permissions and 305 * limitations under the License. 306 */async function v({appConfig:e,heartbeatServiceProvider:t},{fid:r}){let n=d(e),i=y(e),a=t.getImmediate({optional:!0});if(a){let e=await a.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}let s={method:"POST",headers:i,body:JSON.stringify({fid:r,authVersion:l,appId:e.appId,sdkVersion:u})},o=await f(()=>fetch(n,s));if(o.ok){let e=await o.json();return{fid:e.fid||r,registrationStatus:2,refreshToken:e.refreshToken,authToken:m(e.authToken)}}throw await p("Create Installation",o)}/** 307 * @license 308 * Copyright 2019 Google LLC 309 * 310 * Licensed under the Apache License, Version 2.0 (the "License");
311 * you may not use this file except in compliance with the License. 312 * You may obtain a copy of the License at 313 * 314 * http://www.apache.org/licenses/LICENSE-2.0 315 * 316 * Unless required by applicable law or agreed to in writing, software 317 * distributed under the License is distributed on an "AS IS" BASIS, 318 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 319 * See the License for the specific language governing permissions and 320 * limitations under the License. 321 */function _(e){return new Promise(t=>{setTimeout(t,e)})}/** 322 * @license 323 * Copyright 2019 Google LLC 324 * 325 * Licensed under the Apache License, Version 2.0 (the "License"); 326 * you may not use this file except in compliance with the License. 327 * You may obtain a copy of the License at 328 * 329 * http://www.apache.org/licenses/LICENSE-2.0 330 * 331 * Unless required by applicable law or agreed to in writing, software 332 * distributed under the License is distributed on an "AS IS" BASIS, 333 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 334 * See the License for the specific language governing permissions and 335 * limitations under the License. 336 */let w=/^[cdef][\w-]{21}$/;/** 337 * @license 338 * Copyright 2019 Google LLC 339 * 340 * Licensed under the Apache License, Version 2.0 (the "License"); 341 * you may not use this file except in compliance with the License. 342 * You may obtain a copy of the License at 343 * 344 * http://www.apache.org/licenses/LICENSE-2.0 345 * 346 * Unless required by applicable law or agreed to in writing, software 347 * distributed under the License is distributed on an "AS IS" BASIS, 348 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 349 * See the License for the specific language governing permissions and 350 * limitations under the License. 351 */function k(e){return`${e.appName}!${e.appId}`}/** 352 * @license 353 * Copyright 2019 Google LLC 354 * 355 * Licensed under the Apache License, Version 2.0 (the "License"); 356 * you may not use this file except in compliance with the License. 357 * You may obtain a copy of the License at 358 * 359 * http://www.apache.org/licenses/LICENSE-2.0 360 * 361 * Unless required by applicable law or agreed to in writing, software 362 * distributed under the License is distributed on an "AS IS" BASIS, 363 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 364 * See the License for the specific language governing permissions and 365 * limitations under the License. 366 */let P=new Map;function b(e,t){let r=k(e);E(r,t),function(e,t){let r=(!R&&"BroadcastChannel"in self&&((R=new BroadcastChannel("[Firebase] FID Change")).onmessage=e=>{E(e.data.key,e.data.fid)}),R);r&&r.postMessage({key:e,fid:t}),0===P.size&&R&&(R.close(),R=null)}(r,t)}function E(e,t){let r=P.get(e);if(r)for(let e of r)e(t)}let R=null,S="firebase-installations-store",I=null;function T(){return I||(I=(0,s.X3)("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(S)}})),I}async function C(e,t){let r=k(e),n=(await T()).transaction(S,"readwrite"),i=n.objectStore(S),a=await i.get(r);return await i.put(t,r),await n.done,a&&a.fid===t.fid||b(e,t.fid),t}async function H(e){let t=k(e),r=(await T()).transaction(S,"readwrite");await r.objectStore(S).delete(t),await r.done}async function W(e,t){let r=k(e),n=(await T()).transaction(S,"readwrite"),i=n.objectStore(S),a=await i.get(r),s=t(a);return void 0===s?await i.delete(r):await i.put(s,r),await n.done,s&&(!a||a.fid!==s.fid)&&b(e,s.fid),s}/** 367 * @license 368 * Copyright 2019 Google LLC 369 * 370 * Licensed under the Apache License, Version 2.0 (the "License"); 371 * you may not use this file except in compliance with the License. 372 * You may obtain a copy of the License at 373 * 374 * http://www.apache.org/licenses/LICENSE-2.0 375 * 376 * Unless required by applicable law or agreed to in writing, software 377 * distributed under the License is distributed on an "AS IS" BASIS, 378 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 379 * See the License for the specific language governing permissions and 380 * limitations under the License. 381 */async function A(e){let t;let r=await W(e.appConfig,r=>{let n=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(h.create("app-offline"))};let r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=D(e,r);return{installationEntry:r,registrationPromise:n}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:U(e)}:{installationEntry:t}}(e,O(r||{fid:function(){try{let e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;let t=btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22);return w.test(t)?t:""}catch(e){return""}}(),registrationStatus:0}));return t=n.registrationPromise,n.installationEntry});
381return""===r.fid?{installationEntry:await t}:{installationEntry:r,registrationPromise:t}}async function D(e,t){try{let r=await v(e,t);return C(e.appConfig,r)}catch(r){throw g(r)&&409===r.customData.serverCode?await H(e.appConfig):await C(e.appConfig,{fid:t.fid,registrationStatus:0}),r}}async function U(e){let t=await L(e.appConfig);for(;1===t.registrationStatus;)await _(100),t=await L(e.appConfig);if(0===t.registrationStatus){let{installationEntry:t,registrationPromise:r}=await A(e);return r||t}return t}function L(e){return W(e,e=>{if(!e)throw h.create("installation-not-found");return O(e)})}function O(e){return 1===e.registrationStatus&&e.registrationTime+1e4<Date.now()?{fid:e.fid,registrationStatus:0}:e}/** 382 * @license 383 * Copyright 2019 Google LLC 384 * 385 * Licensed under the Apache License, Version 2.0 (the "License"); 386 * you may not use this file except in compliance with the License. 387 * You may obtain a copy of the License at 388 * 389 * http://www.apache.org/licenses/LICENSE-2.0 390 * 391 * Unless required by applicable law or agreed to in writing, software 392 * distributed under the License is distributed on an "AS IS" BASIS, 393 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 394 * See the License for the specific language governing permissions and 395 * limitations under the License. 396 */async function N({appConfig:e,heartbeatServiceProvider:t},r){let n=function(e,{fid:t}){return`${d(e)}/${t}/authTokens:generate`}(e,r),i=function(e,{refreshToken:t}){let r=y(e);return r.append("Authorization",`${l} ${t}`),r}(e,r),a=t.getImmediate({optional:!0});if(a){let e=await a.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}let s={method:"POST",headers:i,body:JSON.stringify({installation:{sdkVersion:u,appId:e.appId}})},o=await f(()=>fetch(n,s));if(o.ok)return m(await o.json());throw await p("Generate Auth Token",o)}/** 397 * @license 398 * Copyright 2019 Google LLC 399 * 400 * Licensed under the Apache License, Version 2.0 (the "License"); 401 * you may not use this file except in compliance with the License. 402 * You may obtain a copy of the License at 403 * 404 * http://www.apache.org/licenses/LICENSE-2.0 405 * 406 * Unless required by applicable law or agreed to in writing, software 407 * distributed under the License is distributed on an "AS IS" BASIS, 408 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 409 * See the License for the specific language governing permissions and 410 * limitations under the License. 411 */async function K(e,t=!1){let r;let n=await W(e.appConfig,n=>{var i;if(!B(n))throw h.create("not-registered");let a=n.authToken;if(!t&&2===(i=a).requestStatus&&!function(e){let t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+36e5}(i))return n;if(1===a.requestStatus)return r=x(e,t),n;{if(!navigator.onLine)throw h.create("app-offline");let t=function(e){let t={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},e),{authToken:t})}(n);return r=F(e,t),t}});return r?await r:n.authToken}async function x(e,t){let r=await M(e.appConfig);for(;1===r.authToken.requestStatus;)await _(100),r=await M(e.appConfig);let n=r.authToken;return 0===n.requestStatus?K(e,t):n}function M(e){return W(e,e=>{var t;if(!B(e))throw h.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+1e4<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}async function F(e,t){try{let r=await N(e,t),n=Object.assign(Object.assign({},t),{authToken:r});return await C(e.appConfig,n),r}catch(r){if(g(r)&&(401===r.customData.serverCode||404===r.customData.serverCode))await H(e.appConfig);else{let r=Object.assign(Object.assign({},t),{authToken:{requestStatus:0}});await C(e.appConfig,r)}throw r}}function B(e){return void 0!==e&&2===e.registrationStatus}/** 412 * @license 413 * Copyright 2019 Google LLC 414 * 415 * Licensed under the Apache License, Version 2.0 (the "License"); 416 * you may not use this file except in compliance with the License. 417 * You may obtain a copy of the License at 418 * 419 * http://www.apache.org/licenses/LICENSE-2.0 420 * 421 * Unless required by applicable law or agreed to in writing, softw
421are 422 * distributed under the License is distributed on an "AS IS" BASIS, 423 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 424 * See the License for the specific language governing permissions and 425 * limitations under the License. 426 */async function V(e){let{installationEntry:t,registrationPromise:r}=await A(e);return r?r.catch(console.error):K(e).catch(console.error),t.fid}/** 427 * @license 428 * Copyright 2019 Google LLC 429 * 430 * Licensed under the Apache License, Version 2.0 (the "License"); 431 * you may not use this file except in compliance with the License. 432 * You may obtain a copy of the License at 433 * 434 * http://www.apache.org/licenses/LICENSE-2.0 435 * 436 * Unless required by applicable law or agreed to in writing, software 437 * distributed under the License is distributed on an "AS IS" BASIS, 438 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 439 * See the License for the specific language governing permissions and 440 * limitations under the License. 441 */async function q(e,t=!1){return await j(e),(await K(e,t)).token}async function j(e){let{registrationPromise:t}=await A(e);t&&await t}function G(e){return h.create("missing-app-config-values",{valueName:e})}/** 442 * @license 443 * Copyright 2020 Google LLC 444 * 445 * Licensed under the Apache License, Version 2.0 (the "License"); 446 * you may not use this file except in compliance with the License. 447 * You may obtain a copy of the License at 448 * 449 * http://www.apache.org/licenses/LICENSE-2.0 450 * 451 * Unless required by applicable law or agreed to in writing, software 452 * distributed under the License is distributed on an "AS IS" BASIS, 453 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 454 * See the License for the specific language governing permissions and 455 * limitations under the License. 456 */let z="installations";(0,n.Xd)(new i.wA(z,e=>{let t=e.getProvider("app").getImmediate(),r=/** 457 * @license 458 * Copyright 2019 Google LLC 459 * 460 * Licensed under the Apache License, Version 2.0 (the "License"); 461 * you may not use this file except in compliance with the License. 462 * You may obtain a copy of the License at 463 * 464 * http://www.apache.org/licenses/LICENSE-2.0 465 * 466 * Unless required by applicable law or agreed to in writing, software 467 * distributed under the License is distributed on an "AS IS" BASIS, 468 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 469 * See the License for the specific language governing permissions and 470 * limitations under the License. 471 */function(e){if(!e||!e.options)throw G("App Configuration");if(!e.name)throw G("App Name");for(let t of["projectId","apiKey","appId"])if(!e.options[t])throw G(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),i=(0,n.qX)(t,"heartbeat");return{app:t,appConfig:r,heartbeatServiceProvider:i,_delete:()=>Promise.resolve()}},"PUBLIC")),(0,n.Xd)(new i.wA("installations-internal",e=>{let t=e.getProvider("app").getImmediate(),r=(0,n.qX)(t,z).getImmediate();return{getId:()=>V(r),getToken:e=>q(r,e)}},"PRIVATE")),(0,n.KN)(o,c),(0,n.KN)(o,c,"esm2017")},3333:function(e,t,r){"use strict";var n,i;r.d(t,{Yd:function(){return l},in:function(){return n}});/** 472 * @license 473 * Copyright 2017 Google LLC 474 * 475 * Licensed under the Apache License, Version 2.0 (the "License"); 476 * you may not use this file except in compliance with the License. 477 * You may obtain a copy of the License at 478 * 479 * http://www.apache.org/licenses/LICENSE-2.0 480 * 481 * Unless required by applicable law or agreed to in writing, software 482 * distributed under the License is distributed on an "AS IS" BASIS, 483 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 484 * See the License for the specific language governing permissions and 485 * limitations under the License. 486 */let a=[];(i=n||(n={}))[i.DEBUG=0]="DEBUG",i[i.VERBOSE=1]="VERBOSE",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.SILENT=5]="SILENT";let s={debug:n.DEBUG,verbose:n.VERBOSE,info:n.INFO,warn:n.WARN,error:n.ERROR,silent:n.SILENT},o=n.INFO,c={[n.DEBUG]:"log",[n.VERBOSE]:"log",[n.INFO]:"info",[n.WARN]:"warn",[n.ERROR]:"error"},u=(e,t,...r)=>{if(t<e.logLevel)return;let n=new Date().toISOString(),i=c[t];if(i)console[i](`[${n}] ${e.name}:`,...r);
486else throw Error(`Attempted to log a message with an invalid logType (value: ${t})`)};class l{constructor(e){this.name=e,this._logLevel=o,this._logHandler=u,this._userLogHandler=null,a.push(this)}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in n))throw TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?s[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw 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,n.DEBUG,...e),this._logHandler(this,n.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,n.VERBOSE,...e),this._logHandler(this,n.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,n.INFO,...e),this._logHandler(this,n.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,n.WARN,...e),this._logHandler(this,n.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,n.ERROR,...e),this._logHandler(this,n.ERROR,...e)}}},1517:function(e,t,r){"use strict";r.d(t,{hJ:function(){return eX},v0:function(){return rc},Aj:function(){return tt},w$:function(){return te},e5:function(){return e7},rh:function(){return tA},w7:function(){return tr}});var n,i=r(2238),a=r(4444),s=r(3333);function o(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)0>t.indexOf(n[i])&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}"function"==typeof SuppressedError&&SuppressedError;var c=r(8463);function u(){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."}}let l=new a.LL("auth","Firebase",u()),h=new s.Yd("@firebase/auth");function g(e,...t){h.logLevel<=s.in.ERROR&&h.error(`Auth (${i.Jn}): ${e}`,...t)}/** 487 * @license 488 * Copyright 2020 Google LLC 489 * 490 * Licensed under the Apache License, Version 2.0 (the "License"); 491 * you may not use this file except in compliance with the License. 492 * You may obtain a copy of the License at 493 * 494 * http://www.apache.org/licenses/LICENSE-2.0 495 * 496 * Unless required by applicable law or agreed to in writing, software 497 * distributed under the License is distributed on an "AS IS" BASIS, 498 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 499 * See the License for the specific language governing permissions and 500 * limitations under the License. 501 */function d(e,...t){throw f(e,...t)}function m(e,...t){return f(e,...t)}function p(e,t,r){let n=Object.assign(Object.assign({},u()),{[t]:r});return new a.LL("auth","Firebase",n).create(t,{appName:e.name})}function y(e){return p(e,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function f(e,...t){if("string"!=typeof e){let r=t[0],n=[...t.slice(1)];return n[0]&&(n[0].appName=e.name),e._errorFactory.create(r,...n)}return l.create(e,...t)}function v(e,t,...r){if(!e)throw f(t,...r)}function _(e){let t="INTERNAL ASSERTION FAILED: "+e;throw g(t),Error(t)}/** 502 * @license 503 * Copyright 2020 Google LLC 504 * 505 * Licensed under the Apache License, Version 2.0 (the "License"); 506 * you may not use this file except in compliance with the License. 507 * You may obtain a copy of the License at 508 * 509 * http://www.apache.org/licenses/LICENSE-2.0 510 * 511 * Unless required by applicable law or agreed to in writing, software 512 * distributed under the License is distributed on an "AS IS" BASIS, 513 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 514 * See the License for the specific language governing permissions and 515 * limitations under the License. 516 */function w(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.href)||""}function k(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.protocol)||null}/** 517 * @license 518 * Copyright 2020 Google LLC 519 * 520 * Licensed under the Apache License, Version 2.0 (the "License");
521 * you may not use this file except in compliance with the License. 522 * You may obtain a copy of the License at 523 * 524 * http://www.apache.org/licenses/LICENSE-2.0 525 * 526 * Unless required by applicable law or agreed to in writing, software 527 * distributed under the License is distributed on an "AS IS" BASIS, 528 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 529 * See the License for the specific language governing permissions and 530 * limitations under the License. 531 */class P{constructor(e,t){var r;this.shortDelay=e,this.longDelay=t,r="Short delay should be less than long delay!",t>e||_(r),this.isMobile=(0,a.uI)()||(0,a.b$)()}get(){return!("undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&("http:"===k()||"https:"===k()||(0,a.ru)()||"connection"in navigator))||navigator.onLine?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}/** 532 * @license 533 * Copyright 2020 Google LLC 534 * 535 * Licensed under the Apache License, Version 2.0 (the "License"); 536 * you may not use this file except in compliance with the License. 537 * You may obtain a copy of the License at 538 * 539 * http://www.apache.org/licenses/LICENSE-2.0 540 * 541 * Unless required by applicable law or agreed to in writing, software 542 * distributed under the License is distributed on an "AS IS" BASIS, 543 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 544 * See the License for the specific language governing permissions and 545 * limitations under the License. 546 */function b(e,t){var r,n;r=e.emulator,n="Emulator should always be set here",r||_(n);let{url:i}=e.emulator;return t?`${i}${t.startsWith("/")?t.slice(1):t}`:i}/** 547 * @license 548 * Copyright 2020 Google LLC 549 * 550 * Licensed under the Apache License, Version 2.0 (the "License"); 551 * you may not use this file except in compliance with the License. 552 * You may obtain a copy of the License at 553 * 554 * http://www.apache.org/licenses/LICENSE-2.0 555 * 556 * Unless required by applicable law or agreed to in writing, software 557 * distributed under the License is distributed on an "AS IS" BASIS, 558 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 559 * See the License for the specific language governing permissions and 560 * limitations under the License. 561 */class E{static initialize(e,t,r){this.fetchImpl=e,t&&(this.headersImpl=t),r&&(this.responseImpl=r)}static fetch(){return this.fetchImpl?this.fetchImpl:"undefined"!=typeof self&&"fetch"in self?self.fetch:"undefined"!=typeof globalThis&&globalThis.fetch?globalThis.fetch:"undefined"!=typeof fetch?fetch:void _("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){return this.headersImpl?this.headersImpl:"undefined"!=typeof self&&"Headers"in self?self.Headers:"undefined"!=typeof globalThis&&globalThis.Headers?globalThis.Headers:"undefined"!=typeof Headers?Headers:void _("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){return this.responseImpl?this.responseImpl:"undefined"!=typeof self&&"Response"in self?self.Response:"undefined"!=typeof globalThis&&globalThis.Response?globalThis.Response:"undefined"!=typeof Response?Response:void _("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}/** 562 * @license 563 * Copyright 2020 Google LLC 564 * 565 * Licensed under the Apache License, Version 2.0 (the "License"); 566 * you may not use this file except in compliance with the License. 567 * You may obtain a copy of the License at 568 * 569 * http://www.apache.org/licenses/LICENSE-2.0 570 * 571 * Unless required by applicable law or agreed to in writing, software 572 * distributed under the License is distributed on an "AS IS" BASIS, 573 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 574 * See the License for the specific language governing permissions and 575 * limitations under the License. 576 */let R={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVA
576LID_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"},S=new P(3e4,6e4);function I(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function T(e,t,r,n,i={}){return C(e,i,async()=>{let i={},s={};n&&("GET"===t?s=n:i={body:JSON.stringify(n)});let o=(0,a.xO)(Object.assign({key:e.config.apiKey},s)).slice(1),c=await e._getAdditionalHeaders();c["Content-Type"]="application/json",e.languageCode&&(c["X-Firebase-Locale"]=e.languageCode);let u=Object.assign({method:t,headers:c},i);return(0,a.L_)()||(u.referrerPolicy="no-referrer"),E.fetch()(W(e,e.config.apiHost,r,o),u)})}async function C(e,t,r){e._canInitEmulator=!1;let n=Object.assign(Object.assign({},R),t);try{let t=new A(e),i=await Promise.race([r(),t.promise]);t.clearNetworkTimeout();let a=await i.json();if("needConfirmation"in a)throw D(e,"account-exists-with-different-credential",a);if(i.ok&&!("errorMessage"in a))return a;{let[t,r]=(i.ok?a.errorMessage:a.error.message).split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===t)throw D(e,"credential-already-in-use",a);if("EMAIL_EXISTS"===t)throw D(e,"email-already-in-use",a);if("USER_DISABLED"===t)throw D(e,"user-disabled",a);let s=n[t]||t.toLowerCase().replace(/[_\s]+/g,"-");if(r)throw p(e,s,r);d(e,s)}}catch(t){if(t instanceof a.ZR)throw t;d(e,"network-request-failed",{message:String(t)})}}async function H(e,t,r,n,i={}){let a=await T(e,t,r,n,i);return"mfaPendingCredential"in a&&d(e,"multi-factor-auth-required",{_serverResponse:a}),a}function W(e,t,r,n){let i=`${t}${r}?${n}`;return e.config.emulator?b(e.config,i):`${e.config.apiScheme}://${i}`}class A{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(m(this.auth,"network-request-failed")),S.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function D(e,t,r){let n={appName:e.name};r.email&&(n.email=r.email),r.phoneNumber&&(n.phoneNumber=r.phoneNumber);let i=m(e,t,n);return i.customData._tokenResponse=r,i}function U(e){return void 0!==e&&void 0!==e.enterprise}class L{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],void 0===e.recaptchaKey)throw 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(let 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)}}async function O(e,t){return T(e,"GET","/v2/recaptchaConfig",I(e,t))}/** 577 * @license 578 * Copyright 2020 Google LLC 579 * 580 * Licensed under the Apache License, Version 2.0 (the "License");
581 * you may not use this file except in compliance with the License. 582 * You may obtain a copy of the License at 583 * 584 * http://www.apache.org/licenses/LICENSE-2.0 585 * 586 * Unless required by applicable law or agreed to in writing, software 587 * distributed under the License is distributed on an "AS IS" BASIS, 588 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 589 * See the License for the specific language governing permissions and 590 * limitations under the License. 591 */async function N(e,t){return T(e,"POST","/v1/accounts:delete",t)}async function K(e,t){return T(e,"POST","/v1/accounts:lookup",t)}/** 592 * @license 593 * Copyright 2020 Google LLC 594 * 595 * Licensed under the Apache License, Version 2.0 (the "License"); 596 * you may not use this file except in compliance with the License. 597 * You may obtain a copy of the License at 598 * 599 * http://www.apache.org/licenses/LICENSE-2.0 600 * 601 * Unless required by applicable law or agreed to in writing, software 602 * distributed under the License is distributed on an "AS IS" BASIS, 603 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 604 * See the License for the specific language governing permissions and 605 * limitations under the License. 606 */function x(e){if(e)try{let t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}async function M(e,t=!1){let r=(0,a.m9)(e),n=await r.getIdToken(t),i=B(n);v(i&&i.exp&&i.auth_time&&i.iat,r.auth,"internal-error");let s="object"==typeof i.firebase?i.firebase:void 0,o=null==s?void 0:s.sign_in_provider;return{claims:i,token:n,authTime:x(F(i.auth_time)),issuedAtTime:x(F(i.iat)),expirationTime:x(F(i.exp)),signInProvider:o||null,signInSecondFactor:(null==s?void 0:s.sign_in_second_factor)||null}}function F(e){return 1e3*Number(e)}function B(e){let[t,r,n]=e.split(".");if(void 0===t||void 0===r||void 0===n)return g("JWT malformed, contained fewer than 3 sections"),null;try{let e=(0,a.tV)(r);if(!e)return g("Failed to decode base64 JWT payload"),null;return JSON.parse(e)}catch(e){return g("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}function V(e){let t=B(e);return v(t,"internal-error"),v(void 0!==t.exp,"internal-error"),v(void 0!==t.iat,"internal-error"),Number(t.exp)-Number(t.iat)}/** 607 * @license 608 * Copyright 2020 Google LLC 609 * 610 * Licensed under the Apache License, Version 2.0 (the "License"); 611 * you may not use this file except in compliance with the License. 612 * You may obtain a copy of the License at 613 * 614 * http://www.apache.org/licenses/LICENSE-2.0 615 * 616 * Unless required by applicable law or agreed to in writing, software 617 * distributed under the License is distributed on an "AS IS" BASIS, 618 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 619 * See the License for the specific language governing permissions and 620 * limitations under the License. 621 */async function q(e,t,r=!1){if(r)return t;try{return await t}catch(t){throw t instanceof a.ZR&&function({code:e}){return"auth/user-disabled"===e||"auth/user-token-expired"===e}(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}/** 622 * @license 623 * Copyright 2020 Google LLC 624 * 625 * Licensed under the Apache License, Version 2.0 (the "License"); 626 * you may not use this file except in compliance with the License. 627 * You may obtain a copy of the License at 628 * 629 * http://www.apache.org/licenses/LICENSE-2.0 630 * 631 * Unless required by applicable law or agreed to in writing, software 632 * distributed under the License is distributed on an "AS IS" BASIS, 633 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 634 * See the License for the specific language governing permissions and 635 * limitations under the License. 636 */class j{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){var t;if(!e)return this.errorBackoff=3e4,Math.max(0,(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5);{let e=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),e}}schedule(e=!1){if(!this.isRunning)return;let t=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){(null==e?void 0:e.code)==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}}/** 637 * @license 638 * Copyright 2020 Google LLC 639 * 640 * Licensed under the Apache License, Version 2.0 (the "License");
641 * you may not use this file except in compliance with the License. 642 * You may obtain a copy of the License at 643 * 644 * http://www.apache.org/licenses/LICENSE-2.0 645 * 646 * Unless required by applicable law or agreed to in writing, software 647 * distributed under the License is distributed on an "AS IS" BASIS, 648 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 649 * See the License for the specific language governing permissions and 650 * limitations under the License. 651 */class G{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=x(this.lastLoginAt),this.creationTime=x(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}/** 652 * @license 653 * Copyright 2019 Google LLC 654 * 655 * Licensed under the Apache License, Version 2.0 (the "License"); 656 * you may not use this file except in compliance with the License. 657 * You may obtain a copy of the License at 658 * 659 * http://www.apache.org/licenses/LICENSE-2.0 660 * 661 * Unless required by applicable law or agreed to in writing, software 662 * distributed under the License is distributed on an "AS IS" BASIS, 663 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 664 * See the License for the specific language governing permissions and 665 * limitations under the License. 666 */async function z(e){var t;let r=e.auth,n=await e.getIdToken(),i=await q(e,K(r,{idToken:n}));v(null==i?void 0:i.users.length,r,"internal-error");let a=i.users[0];e._notifyReloadListener(a);let s=(null===(t=a.providerUserInfo)||void 0===t?void 0:t.length)?J(a.providerUserInfo):[],o=[...e.providerData.filter(e=>!s.some(t=>t.providerId===e.providerId)),...s],c=e.isAnonymous,u=!(e.email&&a.passwordHash)&&!(null==o?void 0:o.length);Object.assign(e,{uid:a.localId,displayName:a.displayName||null,photoURL:a.photoUrl||null,email:a.email||null,emailVerified:a.emailVerified||!1,phoneNumber:a.phoneNumber||null,tenantId:a.tenantId||null,providerData:o,metadata:new G(a.createdAt,a.lastLoginAt),isAnonymous:!!c&&u})}async function $(e){let t=(0,a.m9)(e);await z(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}function J(e){return e.map(e=>{var{providerId:t}=e,r=o(e,["providerId"]);return{providerId:t,uid:r.rawId||"",displayName:r.displayName||null,email:r.email||null,phoneNumber:r.phoneNumber||null,photoURL:r.photoUrl||null}})}/** 667 * @license 668 * Copyright 2020 Google LLC 669 * 670 * Licensed under the Apache License, Version 2.0 (the "License"); 671 * you may not use this file except in compliance with the License. 672 * You may obtain a copy of the License at 673 * 674 * http://www.apache.org/licenses/LICENSE-2.0 675 * 676 * Unless required by applicable law or agreed to in writing, software 677 * distributed under the License is distributed on an "AS IS" BASIS, 678 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 679 * See the License for the specific language governing permissions and 680 * limitations under the License. 681 */async function Q(e,t){let r=await C(e,{},async()=>{let r=(0,a.xO)({grant_type:"refresh_token",refresh_token:t}).slice(1),{tokenApiHost:n,apiKey:i}=e.config,s=W(e,n,"/v1/token",`key=${i}`),o=await e._getAdditionalHeaders();return o["Content-Type"]="application/x-www-form-urlencoded",E.fetch()(s,{method:"POST",headers:o,body:r})});return{accessToken:r.access_token,expiresIn:r.expires_in,refreshToken:r.refresh_token}}async function X(e,t){return T(e,"POST","/v2/accounts:revokeToken",I(e,t))}/** 682 * @license 683 * Copyright 2020 Google LLC 684 * 685 * Licensed under the Apache License, Version 2.0 (the "License"); 686 * you may not use this file except in compliance with the License. 687 * You may obtain a copy of the License at 688 * 689 * http://www.apache.org/licenses/LICENSE-2.0 690 * 691 * Unless required by applicable law or agreed to in writing, software 692 * distributed under the License is distributed on an "AS IS" BASIS, 693 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 694 * See the License for the specific language governing permissions and 695 * limitations under the License. 696 */class Y{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){v(e.idToken,"internal-error"),v(void 0!==e.idToken,"internal-error"),v(void 0!==e.refreshToken,"internal-error");
696let t="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):V(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){v(0!==e.length,"internal-error");let t=V(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return t||!this.accessToken||this.isExpired?(v(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){let{accessToken:r,refreshToken:n,expiresIn:i}=await Q(e,t);this.updateTokensAndExpiration(r,n,Number(i))}updateTokensAndExpiration(e,t,r){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*r}static fromJSON(e,t){let{refreshToken:r,accessToken:n,expirationTime:i}=t,a=new Y;return r&&(v("string"==typeof r,"internal-error",{appName:e}),a.refreshToken=r),n&&(v("string"==typeof n,"internal-error",{appName:e}),a.accessToken=n),i&&(v("number"==typeof i,"internal-error",{appName:e}),a.expirationTime=i),a}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 Y,this.toJSON())}_performRefresh(){return _("not implemented")}}/** 697 * @license 698 * Copyright 2020 Google LLC 699 * 700 * Licensed under the Apache License, Version 2.0 (the "License"); 701 * you may not use this file except in compliance with the License. 702 * You may obtain a copy of the License at 703 * 704 * http://www.apache.org/licenses/LICENSE-2.0 705 * 706 * Unless required by applicable law or agreed to in writing, software 707 * distributed under the License is distributed on an "AS IS" BASIS, 708 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 709 * See the License for the specific language governing permissions and 710 * limitations under the License. 711 */function Z(e,t){v("string"==typeof e||void 0===e,"internal-error",{appName:t})}class ee{constructor(e){var{uid:t,auth:r,stsTokenManager:n}=e,i=o(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new j(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=r,this.stsTokenManager=n,this.accessToken=n.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 G(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){let t=await q(this,this.stsTokenManager.getToken(this.auth,e));return v(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return M(this,e)}reload(){return $(this)}_assign(e){this!==e&&(v(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){let t=new ee(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){v(!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 r=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),r=!0),t&&await z(this),await this.auth._persistUserIfCurrent(this),r&&this.auth._notifyListenersIfCurrent(this)}async delete(){if((0,i.rh)(this.auth.app))return Promise.reject(y(this.auth));let e=await this.getIdToken();return await q(this,N(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,isA
711nonymous: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 r,n,i,a,s,o,c,u;let l=null!==(r=t.displayName)&&void 0!==r?r:void 0,h=null!==(n=t.email)&&void 0!==n?n:void 0,g=null!==(i=t.phoneNumber)&&void 0!==i?i:void 0,d=null!==(a=t.photoURL)&&void 0!==a?a:void 0,m=null!==(s=t.tenantId)&&void 0!==s?s:void 0,p=null!==(o=t._redirectEventId)&&void 0!==o?o:void 0,y=null!==(c=t.createdAt)&&void 0!==c?c:void 0,f=null!==(u=t.lastLoginAt)&&void 0!==u?u:void 0,{uid:_,emailVerified:w,isAnonymous:k,providerData:P,stsTokenManager:b}=t;v(_&&b,e,"internal-error");let E=Y.fromJSON(this.name,b);v("string"==typeof _,e,"internal-error"),Z(l,e.name),Z(h,e.name),v("boolean"==typeof w,e,"internal-error"),v("boolean"==typeof k,e,"internal-error"),Z(g,e.name),Z(d,e.name),Z(m,e.name),Z(p,e.name),Z(y,e.name),Z(f,e.name);let R=new ee({uid:_,auth:e,email:h,emailVerified:w,displayName:l,isAnonymous:k,photoURL:d,phoneNumber:g,tenantId:m,stsTokenManager:E,createdAt:y,lastLoginAt:f});return P&&Array.isArray(P)&&(R.providerData=P.map(e=>Object.assign({},e))),p&&(R._redirectEventId=p),R}static async _fromIdTokenResponse(e,t,r=!1){let n=new Y;n.updateFromServerResponse(t);let i=new ee({uid:t.localId,auth:e,stsTokenManager:n,isAnonymous:r});return await z(i),i}static async _fromGetAccountInfoResponse(e,t,r){let n=t.users[0];v(void 0!==n.localId,"internal-error");let i=void 0!==n.providerUserInfo?J(n.providerUserInfo):[],a=!(n.email&&n.passwordHash)&&!(null==i?void 0:i.length),s=new Y;s.updateFromIdToken(r);let o=new ee({uid:n.localId,auth:e,stsTokenManager:s,isAnonymous:a});return Object.assign(o,{uid:n.localId,displayName:n.displayName||null,photoURL:n.photoUrl||null,email:n.email||null,emailVerified:n.emailVerified||!1,phoneNumber:n.phoneNumber||null,tenantId:n.tenantId||null,providerData:i,metadata:new G(n.createdAt,n.lastLoginAt),isAnonymous:!(n.email&&n.passwordHash)&&!(null==i?void 0:i.length)}),o}}/** 712 * @license 713 * Copyright 2020 Google LLC 714 * 715 * Licensed under the Apache License, Version 2.0 (the "License"); 716 * you may not use this file except in compliance with the License. 717 * You may obtain a copy of the License at 718 * 719 * http://www.apache.org/licenses/LICENSE-2.0 720 * 721 * Unless required by applicable law or agreed to in writing, software 722 * distributed under the License is distributed on an "AS IS" BASIS, 723 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 724 * See the License for the specific language governing permissions and 725 * limitations under the License. 726 */let et=new Map;function er(e){var t,r;t="Expected a class definition",e instanceof Function||_(t);let n=et.get(e);return n?(r="Instance stored in cache mismatched with class",n instanceof e||_(r)):(n=new e,et.set(e,n)),n}/** 727 * @license 728 * Copyright 2019 Google LLC 729 * 730 * Licensed under the Apache License, Version 2.0 (the "License"); 731 * you may not use this file except in compliance with the License. 732 * You may obtain a copy of the License at 733 * 734 * http://www.apache.org/licenses/LICENSE-2.0 735 * 736 * Unless required by applicable law or agreed to in writing, software 737 * distributed under the License is distributed on an "AS IS" BASIS, 738 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 739 * See the License for the specific language governing permissions and 740 * limitations under the License. 741 */class en{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){let t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}/** 742 * @license 743 * Copyright 2019 Google LLC 744 * 745 * Licensed under the Apache License, Version 2.0 (the "License");
746 * you may not use this file except in compliance with the License. 747 * You may obtain a copy of the License at 748 * 749 * http://www.apache.org/licenses/LICENSE-2.0 750 * 751 * Unless required by applicable law or agreed to in writing, software 752 * distributed under the License is distributed on an "AS IS" BASIS, 753 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 754 * See the License for the specific language governing permissions and 755 * limitations under the License. 756 */function ei(e,t,r){return`firebase:${e}:${t}:${r}`}en.type="NONE";class ea{constructor(e,t,r){this.persistence=e,this.auth=t,this.userKey=r;let{config:n,name:i}=this.auth;this.fullUserKey=ei(this.userKey,n.apiKey,i),this.fullPersistenceKey=ei("persistence",n.apiKey,i),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){let e=await this.persistence._get(this.fullUserKey);return e?ee._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)return;let t=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,t)return this.setCurrentUser(t)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,r="authUser"){if(!t.length)return new ea(er(en),e,r);let n=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e),i=n[0]||er(en),a=ei(r,e.config.apiKey,e.name),s=null;for(let r of t)try{let t=await r._get(a);if(t){let n=ee._fromJSON(e,t);r!==i&&(s=n),i=r;break}}catch(e){}let o=n.filter(e=>e._shouldAllowMigration);return i._shouldAllowMigration&&o.length&&(i=o[0],s&&await i._set(a,s.toJSON()),await Promise.all(t.map(async e=>{if(e!==i)try{await e._remove(a)}catch(e){}}))),new ea(i,e,r)}}/** 757 * @license 758 * Copyright 2020 Google LLC 759 * 760 * Licensed under the Apache License, Version 2.0 (the "License"); 761 * you may not use this file except in compliance with the License. 762 * You may obtain a copy of the License at 763 * 764 * http://www.apache.org/licenses/LICENSE-2.0 765 * 766 * Unless required by applicable law or agreed to in writing, software 767 * distributed under the License is distributed on an "AS IS" BASIS, 768 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 769 * See the License for the specific language governing permissions and 770 * limitations under the License. 771 */function es(e){let t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(el(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";{if(t.includes("edge/"))return"Edge";if(eo(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(eg(t))return"Blackberry";if(ed(t))return"Webos";if(ec(t))return"Safari";if((t.includes("chrome/")||eu(t))&&!t.includes("edge/"))return"Chrome";if(eh(t))return"Android";let r=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);if((null==r?void 0:r.length)===2)return r[1]}return"Other"}function eo(e=(0,a.z$)()){return/firefox\//i.test(e)}function ec(e=(0,a.z$)()){let t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function eu(e=(0,a.z$)()){return/crios\//i.test(e)}function el(e=(0,a.z$)()){return/iemobile/i.test(e)}function eh(e=(0,a.z$)()){return/android/i.test(e)}function eg(e=(0,a.z$)()){return/blackberry/i.test(e)}function ed(e=(0,a.z$)()){return/webos/i.test(e)}function em(e=(0,a.z$)()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function ep(e=(0,a.z$)()){return em(e)||eh(e)||ed(e)||eg(e)||/windows phone/i.test(e)||el(e)}/** 772 * @license 773 * Copyright 2020 Google LLC 774 * 775 * Licensed under the Apache License, Version 2.0 (the "License"); 776 * you may not use this file except in compliance with the License. 777 * You may obtain a copy of the License at 778 * 779 * http://www.apache.org/licenses/LICENSE-2.0 780 * 781 * Unless required by applicable law or agreed to in writing, softw
781are 782 * distributed under the License is distributed on an "AS IS" BASIS, 783 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 784 * See the License for the specific language governing permissions and 785 * limitations under the License. 786 */function ey(e,t=[]){let r;switch(e){case"Browser":r=es((0,a.z$)());break;case"Worker":r=`${es((0,a.z$)())}-${e}`;break;default:r=e}let n=t.length?t.join(","):"FirebaseCore-web";return`${r}/JsCore/${i.Jn}/${n}`}/** 787 * @license 788 * Copyright 2022 Google LLC 789 * 790 * Licensed under the Apache License, Version 2.0 (the "License"); 791 * you may not use this file except in compliance with the License. 792 * You may obtain a copy of the License at 793 * 794 * http://www.apache.org/licenses/LICENSE-2.0 795 * 796 * Unless required by applicable law or agreed to in writing, software 797 * distributed under the License is distributed on an "AS IS" BASIS, 798 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 799 * See the License for the specific language governing permissions and 800 * limitations under the License. 801 */class ef{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){let r=t=>new Promise((r,n)=>{try{let n=e(t);r(n)}catch(e){n(e)}});r.onAbort=t,this.queue.push(r);let n=this.queue.length-1;return()=>{this.queue[n]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;let t=[];try{for(let r of this.queue)await r(e),r.onAbort&&t.push(r.onAbort)}catch(e){for(let e of(t.reverse(),t))try{e()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==e?void 0:e.message})}}}/** 802 * @license 803 * Copyright 2023 Google LLC 804 * 805 * Licensed under the Apache License, Version 2.0 (the "License"); 806 * you may not use this file except in compliance with the License. 807 * You may obtain a copy of the License at 808 * 809 * http://www.apache.org/licenses/LICENSE-2.0 810 * 811 * Unless required by applicable law or agreed to in writing, software 812 * distributed under the License is distributed on an "AS IS" BASIS, 813 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 814 * See the License for the specific language governing permissions and 815 * limitations under the License. 816 */async function ev(e,t={}){return T(e,"GET","/v2/passwordPolicy",I(e,t))}class e_{constructor(e){var t,r,n,i;let a=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=null!==(t=a.minPasswordLength)&&void 0!==t?t:6,a.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=a.maxPasswordLength),void 0!==a.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=a.containsLowercaseCharacter),void 0!==a.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=a.containsUppercaseCharacter),void 0!==a.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=a.containsNumericCharacter),void 0!==a.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=a.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=null!==(n=null===(r=e.allowedNonAlphanumericCharacters)||void 0===r?void 0:r.join(""))&&void 0!==n?n:"",this.forceUpgradeOnSignin=null!==(i=e.forceUpgradeOnSignin)&&void 0!==i&&i,this.schemaVersion=e.schemaVersion}validatePassword(e){var t,r,n,i,a,s;let o={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,o),this.validatePasswordCharacterOptions(e,o),o.isValid&&(o.isValid=null===(t=o.meetsMinPasswordLength)||void 0===t||t),o.isValid&&(o.isValid=null===(r=o.meetsMaxPasswordLength)||void 0===r||r),o.isValid&&(o.isValid=null===(n=o.containsLowercaseLetter)||void 0===n||n),o.isValid&&(o.isValid=null===(i=o.containsUppercaseLetter)||void 0===i||i),o.isValid&&(o.isValid=null===(a=o.containsNumericCharacter)||void 0===a||a),o.isValid&&(o.isValid=null===(s=o.containsNonAlphanumericCharacter)||void 0===s||s),o}validatePasswordLengthOptions(e,t){let r=this.customStrengthOptions.minPasswordLength,n=this.customStrengthOptions.maxPasswordLength;r&&(t.meetsMinPasswordLength=e.length>=r),n&&(t.meetsMaxPasswordLength=e.length<=n)}validatePasswordCharacterOptions(e,t){let r;this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);for(let n=0;n<e.length;n++)r=e.charAt(n),this.updatePasswordCharacterOptionsStatuses(t,r>="a"&&r<="z",r>="A"&&r<="Z",r>="0"&&r<="9",this.allowedNonAlphanumericCharacters.includes(r))}updatePasswordCharacterOptionsStatuses(e,t,r,n,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=r)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=n)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=i))}}/** 817 * @license 818 * Copyright 2020 Google LLC 819 * 820 * Licensed under the Apache License, Version 2.0 (the "License");
821 * you may not use this file except in compliance with the License. 822 * You may obtain a copy of the License at 823 * 824 * http://www.apache.org/licenses/LICENSE-2.0 825 * 826 * Unless required by applicable law or agreed to in writing, software 827 * distributed under the License is distributed on an "AS IS" BASIS, 828 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 829 * See the License for the specific language governing permissions and 830 * limitations under the License. 831 */class ew{constructor(e,t,r,n){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=r,this.config=n,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new eP(this),this.idTokenSubscription=new eP(this),this.beforeStateQueue=new ef(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=l,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=n.sdkClientVersion}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=er(t)),this._initializationPromise=this.queue(async()=>{var r,n;if(!this._deleted&&(this.persistenceManager=await ea.create(this,e),!this._deleted)){if(null===(r=this._popupRedirectResolver)||void 0===r?void 0:r._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(t),this.lastNotifiedUid=(null===(n=this.currentUser)||void 0===n?void 0:n.uid)||null,this._deleted||(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;let e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{let t=await K(this,{idToken:e}),r=await ee._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(r)}catch(e){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",e),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){var t;if((0,i.rh)(this.app)){let e=this.app.settings.authIdToken;return e?new Promise(t=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(e).then(t,t))}):this.directlySetCurrentUser(null)}let r=await this.assertedPersistence.getCurrentUser(),n=r,a=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();let r=null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId,i=null==n?void 0:n._redirectEventId,s=await this.tryRedirectSignIn(e);(!r||r===i)&&(null==s?void 0:s.user)&&(n=s.user,a=!0)}if(!n)return this.directlySetCurrentUser(null);if(!n._redirectEventId){if(a)try{await this.beforeStateQueue.runMiddleware(n)}catch(e){n=r,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return n?this.reloadAndSetCurrentUserOrClear(n):this.directlySetCurrentUser(null)}return(v(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===n._redirectEventId)?this.directlySetCurrentUser(n):this.reloadAndSetCurrentUserOrClear(n)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await z(e)}catch(e){if((null==e?void 0:e.code)!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;let e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}
831async updateCurrentUser(e){if((0,i.rh)(this.app))return Promise.reject(y(this));let t=e?(0,a.m9)(e):null;return t&&v(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&&v(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(0,i.rh)(this.app)?Promise.reject(y(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return(0,i.rh)(this.app)?Promise.reject(y(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(er(e))})}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();let t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){let e=new e_(await ev(this));null===this.tenantId?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new a.LL("auth","Firebase",e())}onAuthStateChanged(e,t,r){return this.registerStateListener(this.authStateSubscription,e,t,r)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,r){return this.registerStateListener(this.idTokenSubscription,e,t,r)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{let r=this.onAuthStateChanged(()=>{r(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){let t={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(t.tenantId=this.tenantId),await X(this,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){let r=await this.getOrInitRedirectPersistenceManager(t);return null===e?r.removeCurrentUser():r.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){let t=e&&er(e)||this._popupRedirectResolver;v(t,this,"argument-error"),this.redirectPersistenceManager=await ea.create(this,[er(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var t,r;return(this._isInitialized&&await this.queue(async()=>{}),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e)?this._currentUser:(null===(r=this.redirectUser)||void 0===r?void 0:r._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,t;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);let r=null!==(t=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==t?t:null;this.lastNotifiedUid!==r&&(this.lastNotifiedUid=r,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,r,n){if(this._deleted)return()=>{};let i="function"==typeof t?t:t.next.bind(t),a=!1,s=this._isInitialized?Promise.resolve():this._initializationPromise;if(v(s,this,"internal-error"),s.then(()=>{a||i(this.currentUser)}),"function"==typeof t){let i=e.addObserver(t,r,n);return()=>{a=!0,i()}}{let r=e.addObserver(t);return()=>{a=!0,r()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return v(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ey(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;let t={"X-Client-Version":this.clientVersion};this.app.options.appId&&(t["X-Firebase-gmpid"]=this.app.options.appId);let r=await (null===(e=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===e?void 0:e.getHeartbeatsHeader());r&&(t["X-Firebase-Client"]=r);let n=await this._getAppCheckToken();return n&&(t["X-Firebase-AppCheck"]=n),t}async _getAppCheckToken(){var e;let t=await (null===(e=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===e?void 0:e.getToken());return(null==t?void 0:t.error)&&function(e,...t){h.logLevel<=s.in.WARN&&h.warn(`Auth (${i.Jn}): ${e}`,...t)}(`Error while retrieving App Check token: ${t.error}`),null==t?void 0:t.token}}function ek(e){return(0,a.m9)(e)}class eP{constructor(e){this.auth=e,this.observer=null,this.addObserver=(0,a.ne)(e=>this.observer=e)}get next(){return v(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}/** 832 * @license 833 * Copyright 2020 Google LLC 834 * 835 * Licensed under the Apache License, Version 2.0 (the "License");
836 * you may not use this file except in compliance with the License. 837 * You may obtain a copy of the License at 838 * 839 * http://www.apache.org/licenses/LICENSE-2.0 840 * 841 * Unless required by applicable law or agreed to in writing, software 842 * distributed under the License is distributed on an "AS IS" BASIS, 843 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 844 * See the License for the specific language governing permissions and 845 * limitations under the License. 846 */let eb={async loadJS(){throw Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function eE(e){return`__${e}${Math.floor(1e6*Math.random())}`}class eR{constructor(e){this.type="recaptcha-enterprise",this.auth=ek(e)}async verify(e="verify",t=!1){async function r(e){if(!t){if(null==e.tenantId&&null!=e._agentRecaptchaConfig)return e._agentRecaptchaConfig.siteKey;if(null!=e.tenantId&&void 0!==e._tenantRecaptchaConfigs[e.tenantId])return e._tenantRecaptchaConfigs[e.tenantId].siteKey}return new Promise(async(t,r)=>{O(e,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(n=>{if(void 0===n.recaptchaKey)r(Error("recaptcha Enterprise site key undefined"));else{let r=new L(n);return null==e.tenantId?e._agentRecaptchaConfig=r:e._tenantRecaptchaConfigs[e.tenantId]=r,t(r.siteKey)}}).catch(e=>{r(e)})})}function n(t,r,n){let i=window.grecaptcha;U(i)?i.enterprise.ready(()=>{i.enterprise.execute(t,{action:e}).then(e=>{r(e)}).catch(()=>{r("NO_RECAPTCHA")})}):n(Error("No reCAPTCHA enterprise script loaded."))}return new Promise((e,i)=>{r(this.auth).then(r=>{if(!t&&U(window.grecaptcha))n(r,e,i);else{var a;if("undefined"==typeof window){i(Error("RecaptchaVerifier is only supported in browser"));return}let t=eb.recaptchaEnterpriseScript;0!==t.length&&(t+=r),(a=t,eb.loadJS(a)).then(()=>{n(r,e,i)}).catch(e=>{i(e)})}}).catch(e=>{i(e)})})}}async function eS(e,t,r,n=!1){let i;let a=new eR(e);try{i=await a.verify(r)}catch(e){i=await a.verify(r,!0)}let s=Object.assign({},t);return n?Object.assign(s,{captchaResp:i}):Object.assign(s,{captchaResponse:i}),Object.assign(s,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(s,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),s}async function eI(e,t,r,n){var i;if(null===(i=e._getRecaptchaConfig())||void 0===i||!i.isProviderEnabled("EMAIL_PASSWORD_PROVIDER"))return n(e,t).catch(async i=>{if("auth/missing-recaptcha-token"!==i.code)return Promise.reject(i);{console.log(`${r} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);let i=await eS(e,t,r,"getOobCode"===r);return n(e,i)}});{let i=await eS(e,t,r,"getOobCode"===r);return n(e,i)}}function eT(e){let t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function eC(e){if(!e)return null;let t=Number(e);return isNaN(t)?null:t}/** 847 * @license 848 * Copyright 2020 Google LLC 849 * 850 * Licensed under the Apache License, Version 2.0 (the "License"); 851 * you may not use this file except in compliance with the License. 852 * You may obtain a copy of the License at 853 * 854 * http://www.apache.org/licenses/LICENSE-2.0 855 * 856 * Unless required by applicable law or agreed to in writing, software 857 * distributed under the License is distributed on an "AS IS" BASIS, 858 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 859 * See the License for the specific language governing permissions and 860 * limitations under the License. 861 */class eH{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return _("not implemented")}_getIdTokenResponse(e){return _("not implemented")}_linkToIdToken(e,t){return _("not implemented")}_getReauthenticationResolver(e){return _("not implemented")}}async function eW(e,t){return T(e,"POST","/v1/accounts:signUp",t)}/** 862 * @license 863 * Copyright 2020 Google LLC 864 * 865 * Licensed under the Apache License, Version 2.0 (the "License"); 866 * you may not use this file except in compliance with the License. 867 * You may obtain a copy of the License at 868 * 869 * http://www.apache.org/licenses/LICENSE-2.0 870 * 871 * Unless required by applicable law or agreed to in writing, softw
871are 872 * distributed under the License is distributed on an "AS IS" BASIS, 873 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 874 * See the License for the specific language governing permissions and 875 * limitations under the License. 876 */async function eA(e,t){return H(e,"POST","/v1/accounts:signInWithPassword",I(e,t))}async function eD(e,t){return T(e,"POST","/v1/accounts:sendOobCode",I(e,t))}async function eU(e,t){return eD(e,t)}/** 877 * @license 878 * Copyright 2020 Google LLC 879 * 880 * Licensed under the Apache License, Version 2.0 (the "License"); 881 * you may not use this file except in compliance with the License. 882 * You may obtain a copy of the License at 883 * 884 * http://www.apache.org/licenses/LICENSE-2.0 885 * 886 * Unless required by applicable law or agreed to in writing, software 887 * distributed under the License is distributed on an "AS IS" BASIS, 888 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 889 * See the License for the specific language governing permissions and 890 * limitations under the License. 891 */async function eL(e,t){return H(e,"POST","/v1/accounts:signInWithEmailLink",I(e,t))}async function eO(e,t){return H(e,"POST","/v1/accounts:signInWithEmailLink",I(e,t))}/** 892 * @license 893 * Copyright 2020 Google LLC 894 * 895 * Licensed under the Apache License, Version 2.0 (the "License"); 896 * you may not use this file except in compliance with the License. 897 * You may obtain a copy of the License at 898 * 899 * http://www.apache.org/licenses/LICENSE-2.0 900 * 901 * Unless required by applicable law or agreed to in writing, software 902 * distributed under the License is distributed on an "AS IS" BASIS, 903 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 904 * See the License for the specific language governing permissions and 905 * limitations under the License. 906 */class eN extends eH{constructor(e,t,r,n=null){super("password",r),this._email=e,this._password=t,this._tenantId=n}static _fromEmailAndPassword(e,t){return new eN(e,t,"password")}static _fromEmailAndCode(e,t,r=null){return new eN(e,t,"emailLink",r)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){let t="string"==typeof e?JSON.parse(e):e;if((null==t?void 0:t.email)&&(null==t?void 0: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 eI(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signInWithPassword",eA);case"emailLink":return eL(e,{email:this._email,oobCode:this._password});default:d(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return eI(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",eW);case"emailLink":return eO(e,{idToken:t,email:this._email,oobCode:this._password});default:d(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}/** 907 * @license 908 * Copyright 2020 Google LLC 909 * 910 * Licensed under the Apache License, Version 2.0 (the "License"); 911 * you may not use this file except in compliance with the License. 912 * You may obtain a copy of the License at 913 * 914 * http://www.apache.org/licenses/LICENSE-2.0 915 * 916 * Unless required by applicable law or agreed to in writing, software 917 * distributed under the License is distributed on an "AS IS" BASIS, 918 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 919 * See the License for the specific language governing permissions and 920 * limitations under the License. 921 */async function eK(e,t){return H(e,"POST","/v1/accounts:signInWithIdp",I(e,t))}class ex extends eH{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){let t=new ex(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&&
921(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):d("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){let t="string"==typeof e?JSON.parse(e):e,{providerId:r,signInMethod:n}=t,i=o(t,["providerId","signInMethod"]);if(!r||!n)return null;let a=new ex(r,n);return a.idToken=i.idToken||void 0,a.accessToken=i.accessToken||void 0,a.secret=i.secret,a.nonce=i.nonce,a.pendingToken=i.pendingToken||null,a}_getIdTokenResponse(e){return eK(e,this.buildRequest())}_linkToIdToken(e,t){let r=this.buildRequest();return r.idToken=t,eK(e,r)}_getReauthenticationResolver(e){let t=this.buildRequest();return t.autoCreate=!1,eK(e,t)}buildRequest(){let e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{let t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=(0,a.xO)(t)}return e}}/** 922 * @license 923 * Copyright 2020 Google LLC 924 * 925 * Licensed under the Apache License, Version 2.0 (the "License"); 926 * you may not use this file except in compliance with the License. 927 * You may obtain a copy of the License at 928 * 929 * http://www.apache.org/licenses/LICENSE-2.0 930 * 931 * Unless required by applicable law or agreed to in writing, software 932 * distributed under the License is distributed on an "AS IS" BASIS, 933 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 934 * See the License for the specific language governing permissions and 935 * limitations under the License. 936 */async function eM(e,t){return T(e,"POST","/v1/accounts:sendVerificationCode",I(e,t))}async function eF(e,t){return H(e,"POST","/v1/accounts:signInWithPhoneNumber",I(e,t))}async function eB(e,t){let r=await H(e,"POST","/v1/accounts:signInWithPhoneNumber",I(e,t));if(r.temporaryProof)throw D(e,"account-exists-with-different-credential",r);return r}let eV={USER_NOT_FOUND:"user-not-found"};async function eq(e,t){return H(e,"POST","/v1/accounts:signInWithPhoneNumber",I(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),eV)}/** 937 * @license 938 * Copyright 2020 Google LLC 939 * 940 * Licensed under the Apache License, Version 2.0 (the "License"); 941 * you may not use this file except in compliance with the License. 942 * You may obtain a copy of the License at 943 * 944 * http://www.apache.org/licenses/LICENSE-2.0 945 * 946 * Unless required by applicable law or agreed to in writing, software 947 * distributed under the License is distributed on an "AS IS" BASIS, 948 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 949 * See the License for the specific language governing permissions and 950 * limitations under the License. 951 */class ej extends eH{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new ej({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new ej({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return eF(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return eB(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return eq(e,this._makeVerificationRequest())}_makeVerificationRequest(){let{temporaryProof:e,phoneNumber:t,verificationId:r,verificationCode:n}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:r,code:n}}toJSON(){let e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){"string"==typeof e&&(e=JSON.parse(e));let{verificationId:t,verificationCode:r,phoneNumber:n,temporaryProof:i}=e;return r||t||n||i?new ej({verificationId:t,verificationCode:r,phoneNumber:n,temporaryProof:i}):null}}class eG{constructor(e){var t,r,n,i,s,o;let c=(0,a.zd)((0,a.pd)(e)),u=null!==(t=c.apiKey)&&void 0!==t?t:null,l=null!==(r=c.oobCode)&&void 0!==r?r:null,h=/** 952 * @license 953 * Copyright 2020 Google LLC 954 * 955 * Licensed under the Apache License, Version 2.0 (the "License");
956 * you may not use this file except in compliance with the License. 957 * You may obtain a copy of the License at 958 * 959 * http://www.apache.org/licenses/LICENSE-2.0 960 * 961 * Unless required by applicable law or agreed to in writing, software 962 * distributed under the License is distributed on an "AS IS" BASIS, 963 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 964 * See the License for the specific language governing permissions and 965 * limitations under the License. 966 */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!==(n=c.mode)&&void 0!==n?n:null);v(u&&l&&h,"argument-error"),this.apiKey=u,this.operation=h,this.code=l,this.continueUrl=null!==(i=c.continueUrl)&&void 0!==i?i:null,this.languageCode=null!==(s=c.languageCode)&&void 0!==s?s:null,this.tenantId=null!==(o=c.tenantId)&&void 0!==o?o:null}static parseLink(e){let t=function(e){let t=(0,a.zd)((0,a.pd)(e)).link,r=t?(0,a.zd)((0,a.pd)(t)).deep_link_id:null,n=(0,a.zd)((0,a.pd)(e)).deep_link_id;return(n?(0,a.zd)((0,a.pd)(n)).link:null)||n||r||t||e}(e);try{return new eG(t)}catch(e){return null}}}/** 967 * @license 968 * Copyright 2020 Google LLC 969 * 970 * Licensed under the Apache License, Version 2.0 (the "License"); 971 * you may not use this file except in compliance with the License. 972 * You may obtain a copy of the License at 973 * 974 * http://www.apache.org/licenses/LICENSE-2.0 975 * 976 * Unless required by applicable law or agreed to in writing, software 977 * distributed under the License is distributed on an "AS IS" BASIS, 978 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 979 * See the License for the specific language governing permissions and 980 * limitations under the License. 981 */class ez{constructor(){this.providerId=ez.PROVIDER_ID}static credential(e,t){return eN._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){let r=eG.parseLink(t);return v(r,"argument-error"),eN._fromEmailAndCode(e,r.code,r.tenantId)}}ez.PROVIDER_ID="password",ez.EMAIL_PASSWORD_SIGN_IN_METHOD="password",ez.EMAIL_LINK_SIGN_IN_METHOD="emailLink";/** 982 * @license 983 * Copyright 2020 Google LLC 984 * 985 * Licensed under the Apache License, Version 2.0 (the "License"); 986 * you may not use this file except in compliance with the License. 987 * You may obtain a copy of the License at 988 * 989 * http://www.apache.org/licenses/LICENSE-2.0 990 * 991 * Unless required by applicable law or agreed to in writing, software 992 * distributed under the License is distributed on an "AS IS" BASIS, 993 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 994 * See the License for the specific language governing permissions and 995 * limitations under the License. 996 */class e${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}}/** 997 * @license 998 * Copyright 2019 Google LLC 999 * 1000 * Licensed under the Apache License, Version 2.0 (the "License"); 1001 * you may not use this file except in compliance with the License. 1002 * You may obtain a copy of the License at 1003 * 1004 * http://www.apache.org/licenses/LICENSE-2.0 1005 * 1006 * Unless required by applicable law or agreed to in writing, software 1007 * distributed under the License is distributed on an "AS IS" BASIS, 1008 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1009 * See the License for the specific language governing permissions and 1010 * limitations under the License. 1011 */class eJ extends e${constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}/** 1012 * @license 1013 * Copyright 2020 Google LLC 1014 * 1015 * Licensed under the Apache License, Version 2.0 (the "License");
1016 * you may not use this file except in compliance with the License. 1017 * You may obtain a copy of the License at 1018 * 1019 * http://www.apache.org/licenses/LICENSE-2.0 1020 * 1021 * Unless required by applicable law or agreed to in writing, software 1022 * distributed under the License is distributed on an "AS IS" BASIS, 1023 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1024 * See the License for the specific language governing permissions and 1025 * limitations under the License. 1026 */class eQ extends eJ{constructor(){super("facebook.com")}static credential(e){return ex._fromParams({providerId:eQ.PROVIDER_ID,signInMethod:eQ.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return eQ.credentialFromTaggedObject(e)}static credentialFromError(e){return eQ.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return eQ.credential(e.oauthAccessToken)}catch(e){return null}}}eQ.FACEBOOK_SIGN_IN_METHOD="facebook.com",eQ.PROVIDER_ID="facebook.com";/** 1027 * @license 1028 * Copyright 2020 Google LLC 1029 * 1030 * Licensed under the Apache License, Version 2.0 (the "License"); 1031 * you may not use this file except in compliance with the License. 1032 * You may obtain a copy of the License at 1033 * 1034 * http://www.apache.org/licenses/LICENSE-2.0 1035 * 1036 * Unless required by applicable law or agreed to in writing, software 1037 * distributed under the License is distributed on an "AS IS" BASIS, 1038 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1039 * See the License for the specific language governing permissions and 1040 * limitations under the License. 1041 */class eX extends eJ{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return ex._fromParams({providerId:eX.PROVIDER_ID,signInMethod:eX.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return eX.credentialFromTaggedObject(e)}static credentialFromError(e){return eX.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthIdToken:t,oauthAccessToken:r}=e;if(!t&&!r)return null;try{return eX.credential(t,r)}catch(e){return null}}}eX.GOOGLE_SIGN_IN_METHOD="google.com",eX.PROVIDER_ID="google.com";/** 1042 * @license 1043 * Copyright 2020 Google LLC 1044 * 1045 * Licensed under the Apache License, Version 2.0 (the "License"); 1046 * you may not use this file except in compliance with the License. 1047 * You may obtain a copy of the License at 1048 * 1049 * http://www.apache.org/licenses/LICENSE-2.0 1050 * 1051 * Unless required by applicable law or agreed to in writing, software 1052 * distributed under the License is distributed on an "AS IS" BASIS, 1053 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1054 * See the License for the specific language governing permissions and 1055 * limitations under the License. 1056 */class eY extends eJ{constructor(){super("github.com")}static credential(e){return ex._fromParams({providerId:eY.PROVIDER_ID,signInMethod:eY.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return eY.credentialFromTaggedObject(e)}static credentialFromError(e){return eY.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return eY.credential(e.oauthAccessToken)}catch(e){return null}}}eY.GITHUB_SIGN_IN_METHOD="github.com",eY.PROVIDER_ID="github.com";/** 1057 * @license 1058 * Copyright 2020 Google LLC 1059 * 1060 * Licensed under the Apache License, Version 2.0 (the "License"); 1061 * you may not use this file except in compliance with the License. 1062 * You may obtain a copy of the License at 1063 * 1064 * http://www.apache.org/licenses/LICENSE-2.0 1065 * 1066 * Unless required by applicable law or agreed to in writing, software 1067 * distributed under the License is distributed on an "AS IS" BASIS, 1068 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1069 * See the License for the specific language governing permissions and 1070 * limitations under the License. 1071 */class eZ extends eJ{constructor(){super("twitter.com")}static credential(e,t){return ex._fromParams({providerId:eZ.PROVIDER_ID,signInMethod:eZ.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return eZ.credentialFromTaggedObject(e)}static credentialFromError(e){return eZ.credentialFromTaggedObject(e.customData||{})}
1071static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{oauthAccessToken:t,oauthTokenSecret:r}=e;if(!t||!r)return null;try{return eZ.credential(t,r)}catch(e){return null}}}eZ.TWITTER_SIGN_IN_METHOD="twitter.com",eZ.PROVIDER_ID="twitter.com";/** 1072 * @license 1073 * Copyright 2020 Google LLC 1074 * 1075 * Licensed under the Apache License, Version 2.0 (the "License"); 1076 * you may not use this file except in compliance with the License. 1077 * You may obtain a copy of the License at 1078 * 1079 * http://www.apache.org/licenses/LICENSE-2.0 1080 * 1081 * Unless required by applicable law or agreed to in writing, software 1082 * distributed under the License is distributed on an "AS IS" BASIS, 1083 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1084 * See the License for the specific language governing permissions and 1085 * limitations under the License. 1086 */class e1{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,r,n=!1){return new e1({user:await ee._fromIdTokenResponse(e,r,n),providerId:e0(r),_tokenResponse:r,operationType:t})}static async _forOperation(e,t,r){return await e._updateTokensIfNecessary(r,!0),new e1({user:e,providerId:e0(r),_tokenResponse:r,operationType:t})}}function e0(e){return e.providerId?e.providerId:"phoneNumber"in e?"phone":null}/** 1087 * @license 1088 * Copyright 2020 Google LLC 1089 * 1090 * Licensed under the Apache License, Version 2.0 (the "License"); 1091 * you may not use this file except in compliance with the License. 1092 * You may obtain a copy of the License at 1093 * 1094 * http://www.apache.org/licenses/LICENSE-2.0 1095 * 1096 * Unless required by applicable law or agreed to in writing, software 1097 * distributed under the License is distributed on an "AS IS" BASIS, 1098 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1099 * See the License for the specific language governing permissions and 1100 * limitations under the License. 1101 */class e4 extends a.ZR{constructor(e,t,r,n){var i;super(t.code,t.message),this.operationType=r,this.user=n,Object.setPrototypeOf(this,e4.prototype),this.customData={appName:e.name,tenantId:null!==(i=e.tenantId)&&void 0!==i?i:void 0,_serverResponse:t.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(e,t,r,n){return new e4(e,t,r,n)}}function e2(e,t,r,n){return("reauthenticate"===t?r._getReauthenticationResolver(e):r._getIdTokenResponse(e)).catch(r=>{if("auth/multi-factor-auth-required"===r.code)throw e4._fromErrorAndOperation(e,r,t,n);throw r})}async function e5(e,t,r=!1){let n=await q(e,t._linkToIdToken(e.auth,await e.getIdToken()),r);return e1._forOperation(e,"link",n)}/** 1102 * @license 1103 * Copyright 2019 Google LLC 1104 * 1105 * Licensed under the Apache License, Version 2.0 (the "License"); 1106 * you may not use this file except in compliance with the License. 1107 * You may obtain a copy of the License at 1108 * 1109 * http://www.apache.org/licenses/LICENSE-2.0 1110 * 1111 * Unless required by applicable law or agreed to in writing, software 1112 * distributed under the License is distributed on an "AS IS" BASIS, 1113 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1114 * See the License for the specific language governing permissions and 1115 * limitations under the License. 1116 */async function e3(e,t,r=!1){let{auth:n}=e;if((0,i.rh)(n.app))return Promise.reject(y(n));let a="reauthenticate";try{let i=await q(e,e2(n,a,t,e),r);v(i.idToken,n,"internal-error");let s=B(i.idToken);v(s,n,"internal-error");let{sub:o}=s;return v(e.uid===o,n,"user-mismatch"),e1._forOperation(e,a,i)}catch(e){throw(null==e?void 0:e.code)==="auth/user-not-found"&&d(n,"user-mismatch"),e}}/** 1117 * @license 1118 * Copyright 2020 Google LLC 1119 * 1120 * Licensed under the Apache License, Version 2.0 (the "License"); 1121 * you may not use this file except in compliance with the License. 1122 * You may obtain a copy of the License at 1123 * 1124 * http://www.apache.org/licenses/LICENSE-2.0 1125 * 1126 * Unless required by applicable law or agreed to in writing, software 1127 * distributed under the License is distributed on an "AS IS" BASIS, 1128 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1129 * See the License for the specific language governing permissions and 1130 * limitations under the License. 1131 */async function e6(e,t,r=!1){if((0,i.rh)(e.app))return Promise.reject(y(e));let n="signIn",a=await e2(e,n,t),s=await e1._fromIdTokenResponse(e,n,a);return r||await e._updateCurrentUser(s.user),s}async function e9(e,t){return e6(ek(e),t)}/** 1132 * @license 1133 * Copyright 2020 Google LLC 1134 * 1135 * Licensed under the Apache License, Version 2.0 (the "License");
1136 * you may not use this file except in compliance with the License. 1137 * You may obtain a copy of the License at 1138 * 1139 * http://www.apache.org/licenses/LICENSE-2.0 1140 * 1141 * Unless required by applicable law or agreed to in writing, software 1142 * distributed under the License is distributed on an "AS IS" BASIS, 1143 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1144 * See the License for the specific language governing permissions and 1145 * limitations under the License. 1146 */async function e8(e){let t=ek(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}function e7(e,t,r){return(0,i.rh)(e.app)?Promise.reject(y(e)):e9((0,a.m9)(e),ez.credential(t,r)).catch(async t=>{throw"auth/password-does-not-meet-requirements"===t.code&&e8(e),t})}async function te(e,t){let r=(0,a.m9)(e),n={requestType:"VERIFY_EMAIL",idToken:await e.getIdToken()};if(t){var i,s;i=r.auth,v((null===(s=t.url)||void 0===s?void 0:s.length)>0,i,"invalid-continue-uri"),v(void 0===t.dynamicLinkDomain||t.dynamicLinkDomain.length>0,i,"invalid-dynamic-link-domain"),n.continueUrl=t.url,n.dynamicLinkDomain=t.dynamicLinkDomain,n.canHandleCodeInApp=t.handleCodeInApp,t.iOS&&(v(t.iOS.bundleId.length>0,i,"missing-ios-bundle-id"),n.iOSBundleId=t.iOS.bundleId),t.android&&(v(t.android.packageName.length>0,i,"missing-android-pkg-name"),n.androidInstallApp=t.android.installApp,n.androidMinimumVersionCode=t.android.minimumVersion,n.androidPackageName=t.android.packageName)}let{email:o}=await eU(r.auth,n);o!==e.email&&await e.reload()}function tt(e,t,r,n){return(0,a.m9)(e).onAuthStateChanged(t,r,n)}function tr(e){return(0,a.m9)(e).signOut()}new WeakMap;let tn="__sak";/** 1147 * @license 1148 * Copyright 2019 Google LLC 1149 * 1150 * Licensed under the Apache License, Version 2.0 (the "License"); 1151 * you may not use this file except in compliance with the License. 1152 * You may obtain a copy of the License at 1153 * 1154 * http://www.apache.org/licenses/LICENSE-2.0 1155 * 1156 * Unless required by applicable law or agreed to in writing, software 1157 * distributed under the License is distributed on an "AS IS" BASIS, 1158 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1159 * See the License for the specific language governing permissions and 1160 * limitations under the License. 1161 */class ti{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{if(!this.storage)return Promise.resolve(!1);return this.storage.setItem(tn,"1"),this.storage.removeItem(tn),Promise.resolve(!0)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){let t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}class ta extends ti{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=ep(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(let t of Object.keys(this.listeners)){let r=this.storage.getItem(t),n=this.localCache[t];r!==n&&e(t,n,r)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((e,t,r)=>{this.notifyListeners(e,r)});return}let r=e.key;t?this.detachListener():this.stopPolling();let n=()=>{let e=this.storage.getItem(r);(t||this.localCache[r]!==e)&&this.notifyListeners(r,e)},i=this.storage.getItem(r);(0,a.w1)()&&10===document.documentMode&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(n,10):n()}notifyListeners(e,t){this.localCache[e]=t;let r=this.listeners[e];if(r)for(let e of Array.from(r))e(t?JSON.parse(t):t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,r)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:r}),!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){let t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}ta.type="LOCAL";/** 1162 * @license 1163 * Copyright 2020 Google LLC 1164 * 1165 * Licensed under the Apache License, Version 2.0 (the "License");
1166 * you may not use this file except in compliance with the License. 1167 * You may obtain a copy of the License at 1168 * 1169 * http://www.apache.org/licenses/LICENSE-2.0 1170 * 1171 * Unless required by applicable law or agreed to in writing, software 1172 * distributed under the License is distributed on an "AS IS" BASIS, 1173 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1174 * See the License for the specific language governing permissions and 1175 * limitations under the License. 1176 */class ts extends ti{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}ts.type="SESSION";/** 1177 * @license 1178 * Copyright 2019 Google LLC 1179 * 1180 * Licensed under the Apache License, Version 2.0 (the "License"); 1181 * you may not use this file except in compliance with the License. 1182 * You may obtain a copy of the License at 1183 * 1184 * http://www.apache.org/licenses/LICENSE-2.0 1185 * 1186 * Unless required by applicable law or agreed to in writing, software 1187 * distributed under the License is distributed on an "AS IS" BASIS, 1188 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1189 * See the License for the specific language governing permissions and 1190 * limitations under the License. 1191 */class to{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){let t=this.receivers.find(t=>t.isListeningto(e));if(t)return t;let r=new to(e);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){let{eventId:t,eventType:r,data:n}=e.data,i=this.handlersMap[r];if(!(null==i?void 0:i.size))return;e.ports[0].postMessage({status:"ack",eventId:t,eventType:r});let a=Array.from(i).map(async t=>t(e.origin,n)),s=await Promise.all(a.map(async e=>{try{let t=await e;return{fulfilled:!0,value:t}}catch(e){return{fulfilled:!1,reason:e}}}));e.ports[0].postMessage({status:"done",eventId:t,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)}}/** 1192 * @license 1193 * Copyright 2020 Google LLC 1194 * 1195 * Licensed under the Apache License, Version 2.0 (the "License"); 1196 * you may not use this file except in compliance with the License. 1197 * You may obtain a copy of the License at 1198 * 1199 * http://www.apache.org/licenses/LICENSE-2.0 1200 * 1201 * Unless required by applicable law or agreed to in writing, software 1202 * distributed under the License is distributed on an "AS IS" BASIS, 1203 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1204 * See the License for the specific language governing permissions and 1205 * limitations under the License. 1206 */function tc(e="",t=10){let r="";for(let e=0;e<t;e++)r+=Math.floor(10*Math.random());return e+r}to.receivers=[];/** 1207 * @license 1208 * Copyright 2019 Google LLC 1209 * 1210 * Licensed under the Apache License, Version 2.0 (the "License"); 1211 * you may not use this file except in compliance with the License. 1212 * You may obtain a copy of the License at 1213 * 1214 * http://www.apache.org/licenses/LICENSE-2.0 1215 * 1216 * Unless required by applicable law or agreed to in writing, software 1217 * distributed under the License is distributed on an "AS IS" BASIS, 1218 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1219 * See the License for the specific language governing permissions and 1220 * limitations under the License. 1221 */class tu{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,r=50){let n,i;let a="undefined"!=typeof MessageChannel?new MessageChannel:null;if(!a)throw Error("connection_unavailable");return new Promise((s,o)=>{let c=tc("",20);a.port1.start();let u=setTimeout(()=>{o(Error("unsupported_event"))},r);i={messageChannel:a,onMessage(e){if(e.data.eventId===c)switch(e.data.status){case"ack":clearTimeout(u),n=setTimeout(()=>{o(Error("timeout"))},3e3);break;case"done":clearTimeout(n),s(e.data.response);break;default:clearTimeout(u),clearTimeout(n),o(Error("invalid_response"))}}},this.handlers.add(i),a.port1.addEventListener("message",i.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[a.port2])}).finally(()=>{i&&this.removeMessageHandler(i)})}}/** 1222 * @license 1223 * Copyright 2020 Google LLC 1224 * 1225 * Licensed under the Apache License, Version 2.0 (the "License");
1226 * you may not use this file except in compliance with the License. 1227 * You may obtain a copy of the License at 1228 * 1229 * http://www.apache.org/licenses/LICENSE-2.0 1230 * 1231 * Unless required by applicable law or agreed to in writing, software 1232 * distributed under the License is distributed on an "AS IS" BASIS, 1233 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1234 * See the License for the specific language governing permissions and 1235 * limitations under the License. 1236 */function tl(){return window}/** 1237 * @license 1238 * Copyright 2020 Google LLC. 1239 * 1240 * Licensed under the Apache License, Version 2.0 (the "License"); 1241 * you may not use this file except in compliance with the License. 1242 * You may obtain a copy of the License at 1243 * 1244 * http://www.apache.org/licenses/LICENSE-2.0 1245 * 1246 * Unless required by applicable law or agreed to in writing, software 1247 * distributed under the License is distributed on an "AS IS" BASIS, 1248 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1249 * See the License for the specific language governing permissions and 1250 * limitations under the License. 1251 */function th(){return void 0!==tl().WorkerGlobalScope&&"function"==typeof tl().importScripts}async function tg(){if(!(null==navigator?void 0:navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}/** 1252 * @license 1253 * Copyright 2019 Google LLC 1254 * 1255 * Licensed under the Apache License, Version 2.0 (the "License"); 1256 * you may not use this file except in compliance with the License. 1257 * You may obtain a copy of the License at 1258 * 1259 * http://www.apache.org/licenses/LICENSE-2.0 1260 * 1261 * Unless required by applicable law or agreed to in writing, software 1262 * distributed under the License is distributed on an "AS IS" BASIS, 1263 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1264 * See the License for the specific language governing permissions and 1265 * limitations under the License. 1266 */let td="firebaseLocalStorageDb",tm="firebaseLocalStorage",tp="fbase_key";class ty{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 tf(e,t){return e.transaction([tm],t?"readwrite":"readonly").objectStore(tm)}function tv(){let e=indexedDB.open(td,1);return new Promise((t,r)=>{e.addEventListener("error",()=>{r(e.error)}),e.addEventListener("upgradeneeded",()=>{let t=e.result;try{t.createObjectStore(tm,{keyPath:tp})}catch(e){r(e)}}),e.addEventListener("success",async()=>{let r=e.result;r.objectStoreNames.contains(tm)?t(r):(r.close(),await new ty(indexedDB.deleteDatabase(td)).toPromise(),t(await tv()))})})}async function t_(e,t,r){return new ty(tf(e,!0).put({[tp]:t,value:r})).toPromise()}async function tw(e,t){let r=tf(e,!1).get(t),n=await new ty(r).toPromise();return void 0===n?null:n.value}function tk(e,t){return new ty(tf(e,!0).delete(t)).toPromise()}class tP{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 tv()),this.db}async _withRetries(e){let t=0;for(;;)try{let t=await this._openDb();return await e(t)}catch(e){if(t++>3)throw e;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return th()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=to._getInstance(th()?self:null),this.receiver._subscribe("keyChanged",async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)})),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t;if(this.activeServiceWorker=await tg(),!this.activeServiceWorker)return;this.sender=new tu(this.activeServiceWorker);let r=await this.sender._send("ping",{},800);r&&(null===(e=r[0])||void 0===e?void 0:e.fulfilled)&&(null===(t=r[0])||void 0===t?void 0:t.value.includes("keyChanged"))&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){var t;if(this.sender&&this.activeServiceWorker&&((null===(t=null==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;let e=await tv();return await t_(e,tn,"1"),await tk(e,tn),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite(async()=>(await this._withRetries(r=>t_(r,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){let t=await this._withRetries(t=>tw(t,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>tk(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){let e=await this._withRetries(e=>new ty(tf(e,!1).getAll()).toPromise());if(!e||0!==this.pendingWrites)return[];let t=[],r=new Set;if(0!==e.length)for(let{fbase_key:n,value:i}of e)r.add(n),JSON.stringify(this.localCache[n])!==JSON.stringify(i)&&(this.notifyListeners(n,i),t.push(n));for(let e of Object.keys(this.localCache))this.localCache[e]&&!r.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}notifyListeners(e,t){this.localCache[e]=t;let r=this.listeners[e];if(r)for(let e of Array.from(r))e(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()}}async function tb(e,t,r){var n,i,a;let s=await r.verify();try{let o;if(v("string"==typeof s,e,"argument-error"),v("recaptcha"===r.type,e,"argument-error"),o="string"==typeof t?{phoneNumber:t}
1266:t,"session"in o){let t=o.session;if("phoneNumber"in o)return v("enroll"===t.type,e,"internal-error"),(await (i={idToken:t.credential,phoneEnrollmentInfo:{phoneNumber:o.phoneNumber,recaptchaToken:s}},T(e,"POST","/v2/accounts/mfaEnrollment:start",I(e,i)))).phoneSessionInfo.sessionInfo;{v("signin"===t.type,e,"internal-error");let r=(null===(n=o.multiFactorHint)||void 0===n?void 0:n.uid)||o.multiFactorUid;return v(r,e,"missing-multi-factor-info"),(await (a={mfaPendingCredential:t.credential,mfaEnrollmentId:r,phoneSignInInfo:{recaptchaToken:s}},T(e,"POST","/v2/accounts/mfaSignIn:start",I(e,a)))).phoneResponseInfo.sessionInfo}}{let{sessionInfo:t}=await eM(e,{phoneNumber:o.phoneNumber,recaptchaToken:s});return t}}finally{r._reset()}}tP.type="LOCAL",eE("rcb"),new P(3e4,6e4);/** 1267 * @license 1268 * Copyright 2020 Google LLC 1269 * 1270 * Licensed under the Apache License, Version 2.0 (the "License"); 1271 * you may not use this file except in compliance with the License. 1272 * You may obtain a copy of the License at 1273 * 1274 * http://www.apache.org/licenses/LICENSE-2.0 1275 * 1276 * Unless required by applicable law or agreed to in writing, software 1277 * distributed under the License is distributed on an "AS IS" BASIS, 1278 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1279 * See the License for the specific language governing permissions and 1280 * limitations under the License. 1281 */class tE{constructor(e){this.providerId=tE.PROVIDER_ID,this.auth=ek(e)}verifyPhoneNumber(e,t){return tb(this.auth,e,(0,a.m9)(t))}static credential(e,t){return ej._fromVerification(e,t)}static credentialFromResult(e){return tE.credentialFromTaggedObject(e)}static credentialFromError(e){return tE.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;let{phoneNumber:t,temporaryProof:r}=e;return t&&r?ej._fromTokenResponse(t,r):null}}/** 1282 * @license 1283 * Copyright 2021 Google LLC 1284 * 1285 * Licensed under the Apache License, Version 2.0 (the "License"); 1286 * you may not use this file except in compliance with the License. 1287 * You may obtain a copy of the License at 1288 * 1289 * http://www.apache.org/licenses/LICENSE-2.0 1290 * 1291 * Unless required by applicable law or agreed to in writing, software 1292 * distributed under the License is distributed on an "AS IS" BASIS, 1293 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1294 * See the License for the specific language governing permissions and 1295 * limitations under the License. 1296 */function tR(e,t){return t?er(t):(v(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}tE.PROVIDER_ID="phone",tE.PHONE_SIGN_IN_METHOD="phone";/** 1297 * @license 1298 * Copyright 2019 Google LLC 1299 * 1300 * Licensed under the Apache License, Version 2.0 (the "License"); 1301 * you may not use this file except in compliance with the License. 1302 * You may obtain a copy of the License at 1303 * 1304 * http://www.apache.org/licenses/LICENSE-2.0 1305 * 1306 * Unless required by applicable law or agreed to in writing, software 1307 * distributed under the License is distributed on an "AS IS" BASIS, 1308 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1309 * See the License for the specific language governing permissions and 1310 * limitations under the License. 1311 */class tS extends eH{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return eK(e,this._buildIdpRequest())}_linkToIdToken(e,t){return eK(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return eK(e,this._buildIdpRequest())}_buildIdpRequest(e){let t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function tI(e){return e6(e.auth,new tS(e),e.bypassAuthState)}function tT(e){let{auth:t,user:r}=e;return v(r,t,"internal-error"),e3(r,new tS(e),e.bypassAuthState)}async function tC(e){let{auth:t,user:r}=e;return v(r,t,"internal-error"),e5(r,new tS(e),e.bypassAuthState)}/** 1312 * @license 1313 * Copyright 2020 Google LLC 1314 * 1315 * Licensed under the Apache License, Version 2.0 (the "License");
1316 * you may not use this file except in compliance with the License. 1317 * You may obtain a copy of the License at 1318 * 1319 * http://www.apache.org/licenses/LICENSE-2.0 1320 * 1321 * Unless required by applicable law or agreed to in writing, software 1322 * distributed under the License is distributed on an "AS IS" BASIS, 1323 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1324 * See the License for the specific language governing permissions and 1325 * limitations under the License. 1326 */class tH{constructor(e,t,r,n,i=!1){this.auth=e,this.resolver=r,this.user=n,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}})}async onAuthEvent(e){let{urlResponse:t,sessionId:r,postBody:n,tenantId:i,error:a,type:s}=e;if(a){this.reject(a);return}let o={auth:this.auth,requestUri:t,sessionId:r,tenantId:i||void 0,postBody:n||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(s)(o))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return tI;case"linkViaPopup":case"linkViaRedirect":return tC;case"reauthViaPopup":case"reauthViaRedirect":return tT;default:d(this.auth,"internal-error")}}resolve(e){var t,r;t=this.pendingPromise,r="Pending promise was never set",t||_(r),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){var t,r;t=this.pendingPromise,r="Pending promise was never set",t||_(r),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}/** 1327 * @license 1328 * Copyright 2020 Google LLC 1329 * 1330 * Licensed under the Apache License, Version 2.0 (the "License"); 1331 * you may not use this file except in compliance with the License. 1332 * You may obtain a copy of the License at 1333 * 1334 * http://www.apache.org/licenses/LICENSE-2.0 1335 * 1336 * Unless required by applicable law or agreed to in writing, software 1337 * distributed under the License is distributed on an "AS IS" BASIS, 1338 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1339 * See the License for the specific language governing permissions and 1340 * limitations under the License. 1341 */let tW=new P(2e3,1e4);async function tA(e,t,r){if((0,i.rh)(e.app))return Promise.reject(m(e,"operation-not-supported-in-this-environment"));let n=ek(e);!function(e,t,r){if(!(t instanceof r))throw r.name!==t.constructor.name&&d(e,"argument-error"),p(e,"argument-error",`Type of ${t.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}(e,t,e$);let a=tR(n,r);return new tD(n,"signInViaPopup",t,a).executeNotNull()}class tD extends tH{constructor(e,t,r,n,i){super(e,t,n,i),this.provider=r,this.authWindow=null,this.pollId=null,tD.currentPopupAction&&tD.currentPopupAction.cancel(),tD.currentPopupAction=this}async executeNotNull(){let e=await this.execute();return v(e,this.auth,"internal-error"),e}async onExecution(){var e,t;e=1===this.filter.length,t="Popup operations only handle one event",e||_(t);let r=tc();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],r),this.authWindow.associatedEvent=r,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(m(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(m(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,tD.currentPopupAction=null}pollUserCancellation(){let e=()=>{var t,r;if(null===(r=null===(t=this.authWindow)||void 0===t?void 0:t.window)||void 0===r?void 0:r.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(m(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,tW.get())};e()}}tD.currentPopupAction=null;let tU=new Map;class tL extends tH{constructor(e,t,r=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,r),this.eventId=null}async execute(){let e=tU.get(this.auth._key());if(!e){try{let t=await tO(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(t)}catch(t){e=()=>Promise.reject(t)}tU.set(this.auth._key(),e)}return this.bypassAuthState||tU.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);
1341if("unknown"===e.type){this.resolve(null);return}if(e.eventId){let t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}}async function tO(e,t){let r=ei("pendingRedirect",t.config.apiKey,t.name),n=er(e._redirectPersistence);if(!await n._isAvailable())return!1;let i=await n._get(r)==="true";return await n._remove(r),i}function tN(e,t){tU.set(e._key(),t)}async function tK(e,t,r=!1){if((0,i.rh)(e.app))return Promise.reject(y(e));let n=ek(e),a=tR(n,t),s=new tL(n,a,r),o=await s.execute();return o&&!r&&(delete o.user._redirectEventId,await n._persistUserIfCurrent(o.user),await n._setRedirectUser(null,t)),o}class tx{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach(r=>{this.isEventForConsumer(e,r)&&(t=!0,this.sendToConsumer(e,r),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return tF(e);default:return!1}}(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){var r;if(e.error&&!tF(e)){let n=(null===(r=e.error.code)||void 0===r?void 0:r.split("auth/")[1])||"internal-error";t.onError(m(this.auth,n))}else t.onAuthEvent(e)}isEventForConsumer(e,t){let r=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&r}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=6e5&&this.cachedEventUids.clear(),this.cachedEventUids.has(tM(e))}saveEventToCache(e){this.cachedEventUids.add(tM(e)),this.lastProcessedEventTime=Date.now()}}function tM(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function tF({type:e,error:t}){return"unknown"===e&&(null==t?void 0:t.code)==="auth/no-auth-event"}/** 1342 * @license 1343 * Copyright 2020 Google LLC 1344 * 1345 * Licensed under the Apache License, Version 2.0 (the "License"); 1346 * you may not use this file except in compliance with the License. 1347 * You may obtain a copy of the License at 1348 * 1349 * http://www.apache.org/licenses/LICENSE-2.0 1350 * 1351 * Unless required by applicable law or agreed to in writing, software 1352 * distributed under the License is distributed on an "AS IS" BASIS, 1353 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354 * See the License for the specific language governing permissions and 1355 * limitations under the License. 1356 */async function tB(e,t={}){return T(e,"GET","/v1/projects",t)}/** 1357 * @license 1358 * Copyright 2020 Google LLC 1359 * 1360 * Licensed under the Apache License, Version 2.0 (the "License"); 1361 * you may not use this file except in compliance with the License. 1362 * You may obtain a copy of the License at 1363 * 1364 * http://www.apache.org/licenses/LICENSE-2.0 1365 * 1366 * Unless required by applicable law or agreed to in writing, software 1367 * distributed under the License is distributed on an "AS IS" BASIS, 1368 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1369 * See the License for the specific language governing permissions and 1370 * limitations under the License. 1371 */let tV=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,tq=/^https?/;async function tj(e){if(e.config.emulator)return;let{authorizedDomains:t}=await tB(e);for(let e of t)try{if(function(e){let t=w(),{protocol:r,hostname:n}=new URL(t);if(e.startsWith("chrome-extension://")){let i=new URL(e);return""===i.hostname&&""===n?"chrome-extension:"===r&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===r&&i.hostname===n}if(!tq.test(r))return!1;if(tV.test(e))return n===e;let i=e.replace(/\./g,"\\.");return RegExp("^(.+\\."+i+"|"+i+")$","i").test(n)}(e))return}catch(e){}d(e,"unauthorized-domain")}/** 1372 * @license 1373 * Copyright 2020 Google LLC. 1374 * 1375 * Licensed under the Apache License, Version 2.0 (the "License");
1376 * you may not use this file except in compliance with the License. 1377 * You may obtain a copy of the License at 1378 * 1379 * http://www.apache.org/licenses/LICENSE-2.0 1380 * 1381 * Unless required by applicable law or agreed to in writing, software 1382 * distributed under the License is distributed on an "AS IS" BASIS, 1383 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1384 * See the License for the specific language governing permissions and 1385 * limitations under the License. 1386 */let tG=new P(3e4,6e4);function tz(){let e=tl().___jsl;if(null==e?void 0:e.H){for(let t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t<e.CP.length;t++)e.CP[t]=null}}let t$=null,tJ=new P(5e3,15e3),tQ={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},tX=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function tY(e){let t=await (t$=t$||new Promise((t,r)=>{var n,i,a,s;function o(){tz(),gapi.load("gapi.iframes",{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{tz(),r(m(e,"network-request-failed"))},timeout:tG.get()})}if(null===(i=null===(n=tl().gapi)||void 0===n?void 0:n.iframes)||void 0===i?void 0:i.Iframe)t(gapi.iframes.getContext());else if(null===(a=tl().gapi)||void 0===a?void 0:a.load)o();else{let t=eE("iframefcb");return tl()[t]=()=>{gapi.load?o():r(m(e,"network-request-failed"))},(s=`${eb.gapiScript}?onload=${t}`,eb.loadJS(s)).catch(e=>r(e))}}).catch(e=>{throw t$=null,e})),r=tl().gapi;return v(r,e,"internal-error"),t.open({where:document.body,url:function(e){let t=e.config;v(t.authDomain,e,"auth-domain-config-required");let r=t.emulator?b(t,"emulator/auth/iframe"):`https://${e.config.authDomain}/__/auth/iframe`,n={apiKey:t.apiKey,appName:e.name,v:i.Jn},s=tX.get(e.config.apiHost);s&&(n.eid=s);let o=e._getFrameworks();return o.length&&(n.fw=o.join(",")),`${r}?${(0,a.xO)(n).slice(1)}`}(e),messageHandlersFilter:r.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:tQ,dontclear:!0},t=>new Promise(async(r,n)=>{await t.restyle({setHideOnLeave:!1});let i=m(e,"network-request-failed"),a=tl().setTimeout(()=>{n(i)},tJ.get());function s(){tl().clearTimeout(a),r(t)}t.ping(s).then(s,()=>{n(i)})}))}/** 1387 * @license 1388 * Copyright 2020 Google LLC. 1389 * 1390 * Licensed under the Apache License, Version 2.0 (the "License"); 1391 * you may not use this file except in compliance with the License. 1392 * You may obtain a copy of the License at 1393 * 1394 * http://www.apache.org/licenses/LICENSE-2.0 1395 * 1396 * Unless required by applicable law or agreed to in writing, software 1397 * distributed under the License is distributed on an "AS IS" BASIS, 1398 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1399 * See the License for the specific language governing permissions and 1400 * limitations under the License. 1401 */let tZ={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class t1{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}let t0=encodeURIComponent("fac");async function t4(e,t,r,n,s,o){v(e.config.authDomain,e,"auth-domain-config-required"),v(e.config.apiKey,e,"invalid-api-key");let c={apiKey:e.config.apiKey,appName:e.name,authType:r,redirectUrl:n,v:i.Jn,eventId:s};if(t instanceof e$)for(let[r,n]of(t.setDefaultLanguage(e.languageCode),c.providerId=t.providerId||"",(0,a.xb)(t.getCustomParameters())||(c.customParameters=JSON.stringify(t.getCustomParameters())),Object.entries(o||{})))c[r]=n;if(t instanceof eJ){let e=t.getScopes().filter(e=>""!==e);e.length>0&&(c.scopes=e.join(","))}for(let t of(e.tenantId&&(c.tid=e.tenantId),Object.keys(c)))void 0===c[t]&&delete c[t];let u=await e._getAppCheckToken(),l=u?`#${t0}=${encodeURIComponent(u)}`:"";return`${function({config:e}){return e.emulator?b(e,"emulator/auth/handler"):`https://${e.authDomain}/__/auth/handler`}(e)}?${(0,a.xO)(c).slice(1)}${l}`}/** 1402 * @license 1403 * Copyright 2020 Google LLC 1404 * 1405 * Licensed under the Apache License, Version 2.0 (the "License");
1406 * you may not use this file except in compliance with the License. 1407 * You may obtain a copy of the License at 1408 * 1409 * http://www.apache.org/licenses/LICENSE-2.0 1410 * 1411 * Unless required by applicable law or agreed to in writing, software 1412 * distributed under the License is distributed on an "AS IS" BASIS, 1413 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1414 * See the License for the specific language governing permissions and 1415 * limitations under the License. 1416 */let t2="webStorageSupport";class t5{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=ts,this._completeRedirectFn=tK,this._overrideRedirectResult=tN}async _openPopup(e,t,r,n){var i,s,o;s=null===(i=this.eventManagers[e._key()])||void 0===i?void 0:i.manager,o="_initialize() not called before _openPopup()",s||_(o);let c=await t4(e,t,r,w(),n);return function(e,t,r,n=500,i=600){let s=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-n)/2,0).toString(),c="",u=Object.assign(Object.assign({},tZ),{width:n.toString(),height:i.toString(),top:s,left:o}),l=(0,a.z$)().toLowerCase();r&&(c=eu(l)?"_blank":r),eo(l)&&(t=t||"http://localhost",u.scrollbars="yes");let h=Object.entries(u).reduce((e,[t,r])=>`${e}${t}=${r},`,"");if(function(e=(0,a.z$)()){var t;return em(e)&&!!(null===(t=window.navigator)||void 0===t?void 0:t.standalone)}(l)&&"_self"!==c)return function(e,t){let r=document.createElement("a");r.href=e,r.target=t;let n=document.createEvent("MouseEvent");n.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),r.dispatchEvent(n)}(t||"",c),new t1(null);let g=window.open(t||"",c,h);v(g,e,"popup-blocked");try{g.focus()}catch(e){}return new t1(g)}(e,c,tc())}async _openRedirect(e,t,r,n){var i;return await this._originValidation(e),i=await t4(e,t,r,w(),n),tl().location.href=i,new Promise(()=>{})}_initialize(e){let t=e._key();if(this.eventManagers[t]){var r;let{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(r="If manager is not set, promise should be",n||_(r),n)}let n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(e){let t=await tY(e),r=new tx(e);return t.register("authEvent",t=>(v(null==t?void 0:t.authEvent,e,"invalid-auth-event"),{status:r.onEvent(t.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:r},this.iframes[e._key()]=t,r}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(t2,{type:t2},r=>{var n;let i=null===(n=null==r?void 0:r[0])||void 0===n?void 0:n[t2];void 0!==i&&t(!!i),d(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){let t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=tj(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return ep()||ec()||em()}}class t3{constructor(e){this.factorId=e}_process(e,t,r){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,r);case"signin":return this._finalizeSignIn(e,t.credential);default:return _("unexpected MultiFactorSessionType")}}}class t6 extends t3{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new t6(e)}_finalizeEnroll(e,t,r){return T(e,"POST","/v2/accounts/mfaEnrollment:finalize",I(e,{idToken:t,displayName:r,phoneVerificationInfo:this.credential._makeVerificationRequest()}))}_finalizeSignIn(e,t){return T(e,"POST","/v2/accounts/mfaSignIn:finalize",I(e,{mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()}))}}class t9{constructor(){}static assertion(e){return t6._fromCredential(e)}}t9.FACTOR_ID="phone";class t8{static assertionForEnrollment(e,t){return t7._fromSecret(e,t)}static assertionForSignIn(e,t){return t7._fromEnrollmentId(e,t)}static async generateSecret(e){var t,r;v(void 0!==(null===(t=e.user)||void 0===t?void 0:t.auth),"internal-error");let n=await T(r=e.user.auth,"POST","/v2/accounts/mfaEnrollment:start",I(r,{idToken:e.credential,totpEnrollmentInfo:{}}));return re._fromStartTotpMfaEnrollmentResponse(n,e.user.auth)}}t8.FACTOR_ID="totp";class t7 extends t3{constructor(e,t,r){super("totp"),this.otp=e,this.enrollmentId=t,this.secret=r}static _fromSecret(e,t){return new t7(t,void 0,e)}static _fromEnrollmentId(e,t){return new t7(t,e)}async _finalizeEnroll(e,t,r){return v(void 0!==this.secret,e,"argument-error"),T(e,"POST","/v2/accounts/mfaEnrollment:finalize",I(e,{idToken:t,displayName:r,totpVerificationInfo:this.secret._makeTotpVerificationInfo(this.otp)}))}async _finalizeSignIn(e,t){v(void 0!==this.enrollmentId&&void 0!==this.otp,e,"argument-error");let r={verificationCode:this.otp};return T(e,"POST","/v2/accounts/mfaSignIn:finalize",I(e,{mfaPendingCredential:t,mfaEnrollmentId:this.enrollmentId,totpVerificationInfo:r}))}}class re{constructor(e,t,r,n,i,a,s){this.sessionInfo=a,this.auth=s,this.secretKey=e,this.hashingAlgorithm=t,this.co
1416deLength=r,this.codeIntervalSeconds=n,this.enrollmentCompletionDeadline=i}static _fromStartTotpMfaEnrollmentResponse(e,t){return new re(e.totpSessionInfo.sharedSecretKey,e.totpSessionInfo.hashingAlgorithm,e.totpSessionInfo.verificationCodeLength,e.totpSessionInfo.periodSec,new Date(e.totpSessionInfo.finalizeEnrollmentTime).toUTCString(),e.totpSessionInfo.sessionInfo,t)}_makeTotpVerificationInfo(e){return{sessionInfo:this.sessionInfo,verificationCode:e}}generateQrCodeUrl(e,t){var r;let n=!1;return(rt(e)||rt(t))&&(n=!0),n&&(rt(e)&&(e=(null===(r=this.auth.currentUser)||void 0===r?void 0:r.email)||"unknownuser"),rt(t)&&(t=this.auth.name)),`otpauth://totp/${t}:${e}?secret=${this.secretKey}&issuer=${t}&algorithm=${this.hashingAlgorithm}&digits=${this.codeLength}`}}function rt(e){return void 0===e||(null==e?void 0:e.length)===0}var rr="@firebase/auth",rn="1.7.9";/** 1417 * @license 1418 * Copyright 2020 Google LLC 1419 * 1420 * Licensed under the Apache License, Version 2.0 (the "License"); 1421 * you may not use this file except in compliance with the License. 1422 * You may obtain a copy of the License at 1423 * 1424 * http://www.apache.org/licenses/LICENSE-2.0 1425 * 1426 * Unless required by applicable law or agreed to in writing, software 1427 * distributed under the License is distributed on an "AS IS" BASIS, 1428 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1429 * See the License for the specific language governing permissions and 1430 * limitations under the License. 1431 */class ri{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(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;let t=this.auth.onIdTokenChanged(t=>{e((null==t?void 0:t.stsTokenManager.accessToken)||null)});this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();let t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){v(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}let ra=(0,a.Pz)("authIdTokenMaxAge")||300,rs=null,ro=e=>async t=>{let r=t&&await t.getIdTokenResult(),n=r&&(new Date().getTime()-Date.parse(r.issuedAtTime))/1e3;if(n&&n>ra)return;let i=null==r?void 0:r.token;rs!==i&&(rs=i,await fetch(e,{method:i?"POST":"DELETE",headers:i?{Authorization:`Bearer ${i}`}:{}}))};function rc(e=(0,i.Mq)()){let t=(0,i.qX)(e,"auth");if(t.isInitialized())return t.getImmediate();let r=/** 1432 * @license 1433 * Copyright 2020 Google LLC 1434 * 1435 * Licensed under the Apache License, Version 2.0 (the "License"); 1436 * you may not use this file except in compliance with the License. 1437 * You may obtain a copy of the License at 1438 * 1439 * http://www.apache.org/licenses/LICENSE-2.0 1440 * 1441 * Unless required by applicable law or agreed to in writing, software 1442 * distributed under the License is distributed on an "AS IS" BASIS, 1443 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1444 * See the License for the specific language governing permissions and 1445 * limitations under the License. 1446 */function(e,t){let r=(0,i.qX)(e,"auth");if(r.isInitialized()){let e=r.getImmediate(),n=r.getOptions();if((0,a.vZ)(n,null!=t?t:{}))return e;d(e,"already-initialized")}return r.initialize({options:t})}(e,{popupRedirectResolver:t5,persistence:[tP,ta,ts]}),n=(0,a.Pz)("authTokenSyncURL");if(n&&"boolean"==typeof isSecureContext&&isSecureContext){let e=new URL(n,location.origin);if(location.origin===e.origin){var s,o;let t=ro(e.toString());s=()=>t(r.currentUser),(0,a.m9)(r).beforeAuthStateChanged(t,s),o=e=>t(e),(0,a.m9)(r).onIdTokenChanged(o,void 0,void 0)}}let c=(0,a.q4)("auth");return c&&function(e,t,r){let n=ek(e);v(n._canInitEmulator,n,"emulator-config-failed"),v(/^https?:\/\//.test(t),n,"invalid-emulator-scheme");let i=eT(t),{host:a,port:s}=function(e){let t=eT(e),r=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!r)return{host:"",port:null};let n=r[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(n);if(i){let e=i[1];return{host:e,port:eC(n.substr(e.length+1))}}{let[e,t]=n.split(":");return{host:e,port:eC(t)}}}(t),o=null===s?"":`:${s}`;n.config.emulator={url:`${i}//${a}${o}/`},n.settings.appVerificationDisabledForTesting=!0,n.emulatorConfig=Object.freeze({host:a,port:s,protocol:i.replace(":",""),options:Object.freeze({disableWarnings:!1})}),function(){function e(){let e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}"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())}()}(r,`http://${c}`),r}eb={loadJS:e=>
1446new Promise((t,r)=>{var n,i;let a=document.createElement("script");a.setAttribute("src",e),a.onload=t,a.onerror=e=>{let t=m("internal-error");t.customData=e,r(t)},a.type="text/javascript",a.charset="UTF-8",(null!==(i=null===(n=document.getElementsByTagName("head"))||void 0===n?void 0:n[0])&&void 0!==i?i:document).appendChild(a)}),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="},n="Browser",(0,i.Xd)(new c.wA("auth",(e,{options:t})=>{let r=e.getProvider("app").getImmediate(),i=e.getProvider("heartbeat"),a=e.getProvider("app-check-internal"),{apiKey:s,authDomain:o}=r.options;v(s&&!s.includes(":"),"invalid-api-key",{appName:r.name});let c=new ew(r,i,a,{apiKey:s,authDomain:o,clientPlatform:n,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ey(n)});return function(e,t){let r=(null==t?void 0:t.persistence)||[],n=(Array.isArray(r)?r:[r]).map(er);(null==t?void 0:t.errorMap)&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(n,null==t?void 0:t.popupRedirectResolver)}(c,t),c},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,r)=>{e.getProvider("auth-internal").initialize()})),(0,i.Xd)(new c.wA("auth-internal",e=>new ri(ek(e.getProvider("auth").getImmediate())),"PRIVATE").setInstantiationMode("EXPLICIT")),(0,i.KN)(rr,rn,/** 1447 * @license 1448 * Copyright 2020 Google LLC 1449 * 1450 * Licensed under the Apache License, Version 2.0 (the "License"); 1451 * you may not use this file except in compliance with the License. 1452 * You may obtain a copy of the License at 1453 * 1454 * http://www.apache.org/licenses/LICENSE-2.0 1455 * 1456 * Unless required by applicable law or agreed to in writing, software 1457 * distributed under the License is distributed on an "AS IS" BASIS, 1458 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1459 * See the License for the specific language governing permissions and 1460 * limitations under the License. 1461 */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}}(n)),(0,i.KN)(rr,rn,"esm2017")},109:function(e,t,r){"use strict";r.d(t,{EK:function(){return Q},hJ:function(){return iz},oe:function(){return aq},JU:function(){return i$},Yp:function(){return aG},QT:function(){return ax},PL:function(){return aF},ad:function(){return iY},LV:function(){return iX},b9:function(){return aT},Xo:function(){return aS},IO:function(){return ak},Bt:function(){return az},pl:function(){return aB},TQ:function(){return aH},r7:function(){return aV},ar:function(){return ab}});var n,i,a,s,o,c,u,l,h,g,d,m,p,y,f=r(2238),v=r(8463),_=r(3333),w=r(4444),k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P={};(function(){function e(){this.blockSize=-1,this.blockSize=64,this.g=[,,,,],this.B=Array(this.blockSize),this.o=this.h=0,this.s()}function t(e,t,r){r||(r=0);var n=Array(16);if("string"==typeof t)for(var i=0;16>i;++i)n[i]=t.charCodeAt(r++)|t.charCodeAt(r++)<<8|t.charCodeAt(r++)<<16|t.charCodeAt(r++)<<24;else for(i=0;16>i;++i)n[i]=t[r++]|t[r++]<<8|t[r++]<<16|t[r++]<<24;t=e.g[0],r=e.g[1],i=e.g[2];var a=e.g[3],s=t+(a^r&(i^a))+n[0]+3614090360&4294967295;s=a+(i^(t=r+(s<<7&4294967295|s>>>25))&(r^i))+n[1]+3905402710&4294967295,s=i+(r^(a=t+(s<<12&4294967295|s>>>20))&(t^r))+n[2]+606105819&4294967295,s=r+(t^(i=a+(s<<17&4294967295|s>>>15))&(a^t))+n[3]+3250441966&4294967295,s=t+(a^(r=i+(s<<22&4294967295|s>>>10))&(i^a))+n[4]+4118548399&4294967295,s=a+(i^(t=r+(s<<7&4294967295|s>>>25))&(r^i))+n[5]+1200080426&4294967295,s=i+(r^(a=t+(s<<12&4294967295|s>>>20))&(t^r))+n[6]+2821735955&4294967295,s=r+(t^(i=a+(s<<17&4294967295|s>>>15))&(a^t))+n[7]+4249261313&4294967295,s=t+(a^(r=i+(s<<22&4294967295|s>>>10))&(i^a))+n[8]+1770035416&4294967295,s=a+(i^(t=r+(s<<7&4294967295|s>>>25))&(r^i))+n[9]+2336552879&4294967295,s=i+(r^(a=t+(s<<12&4294967295|s>>>20))&(t^r))+n[10]+4294925233&4294967295,s=r+(t^(i=a+(s<<17&4294967295|s>>>15))&(a^t))+n[11]+2304563134&4294967295,s=t+(a^(r=i+(s<<22&4294967295|s>>>10))&(i^a))+n[12]+1804603682&4294967295,s=a+(i^(t=r+(s<<7&4294967295|s>>>25))&(r^i))+n[13]+4254626195&4294967295,s=i+(r^(a=t+(s<<12&4294967295|s>>>20))&(t^r))+n[14]+2792965006&4294967295,s=r+(t^(i=a+(s<<17&4294967295|s>>>15))&(a^t))+n[15]+1236535329&4294967295,r=i+(s<<22&4294967295|s>>>10),s=t+(i^a&(r^i))+n[1]+4129170786&4294967295,t=r+(s<<5&4294967295|s>>>27),s=a+(r^i&(t^r))+n[6]+3225465664&4294967295,a=t+(s<<9&4294967295|s>>>23),s=i+(t^r&(a^t))+n[11]+643717713&4294967295,i=a+(s<<14&4294967295|s>>>18),s=r+(a^t&(i^a))+n[0]+3921069994&4294967295,r=i+(s<<20&4294967295|s>>>12),s=t+(i^a&(r^i))+n[5]+3593408605&4294967295,t=r+(s<<5&4294967295|s>>>27),s=a+(r^i&(t^r))+n[10]+38016083&4294967295,a=t+(s<<9&4294967295|s>>>23),s=i+(t^r&(a^t))+n[15]+3634488961&4294967295,i=a+(s<<14&4294967295|s>>>18),s=r+(a^t&(i^a))+n[4]+3889429448&4294967295,r=i+(s<<20&4294967295|s>>>12),s=t+(i^a&(r^i))+n[9]+568446438&4294967295,t=r+(s<<5&4294967295|s>>>27),s=a+(r^i&(t^r))+n[14]+3275163606&4294967295,a=t+(s<<9&4294967295|s>>>23),s=i+(t^r&(a^t))+n[3]+4107603335&4294967295,i=a+(s<<14&4294967295|s>>>18),s=r+(a^t&(i^a))+n[8]+1163531501&4294967295,r=i+(s<<20&4294967295|s>>>12),s=t+(i^a&(r^i))+n[13]+2850285829&4294967295,t=r+(s<<5&4294967295|s>>>27),s=a+(r^i&(t^r))+n[2]+4243563512&4294967295,a=t+(s<<9&4294967295|s>>>23),s=i+(t^r&(a^t))+n[7]+1735328473&4294967295,i=a+(s<<14&4294967295|s>>>18),s=r+(a^t&(i^a))+n[12]+2368359562&4294967295,s=t+((r=i+(s<<20&4294967295|s>>>12))^i^a)+n[5]+4294588738&4294967295,s=a+((t=r+(s<<4&4294967295|s>>>28))^r^i)+n[8]+2272392833&4294967295,s=i+((a=t+(s<<11&4294967295|s>>>21))^t^r)+n[11]+1839030562&4294967295,s=r+((i=a+(s<<16&4294967295|s>>>16))^a^t)+n[14]+4259657740&4294967295,s=t+((r=i+(s<<23&4294967295|s>>>9))^i^a)+n[1]+2763975236&4294967295,s=a+((t=r+(s<<4&4294967295|s>>>28))^r^i)+n[4]+1272893353&4294967295,s=i+((a=t+(s<<11&4294967295|s>>>21))^t^r)+n[7]+4139469664&4294967295,s=r+((i=a+(s<<16&4294967295|s>>>16))^a^t)+n[10]+3200236656&4294967295,s=t+((r=i+(s<<23&4294967295|s>>>9))^i^a)+n[13]+681279174&4294967295,s=a+((t=r+(s<<4&4294967295|s>>>28))^r^i)+n[0]+3936430074&4294967295,s=i+((a=t+(s<<11&4294967295|s>>>21))^t^r)+n[3]+3572445317&4294967295,s=r+((i=a+(s<<16&4294967295|s>>>16))^a^t)+n[6]+76029189&4294967295,s=t+((r=i+(s<<23&4294967295|s>>>9))^i^a)+n[9]+3654602809&4294967295,s=a+((t=r+(s<<4&4294967295|s>>>28))^r^i)+n[12]+3873151461&4294967295,s=i+((a=t+(s<<11&4294967295|s>>>21))^t^r)+n[15]+530742520&4294967295,s=r+((i=a+(s<<16&4294967295|s>>>16))^a^t)+n[2]+3299628645&4294967295,r=i+(s<<23&4294967295|s>>>9),s=t+(i^(r|~a))+n[0]+4096336452&4294967295,t=r+(s<<6&4294967295|s>>>26),s=a+(r^(t|~i))+n[7]+1126891415&4294967295,a=t+(s<<10&4294967295|s>>>22),s=i+(t^(a|~r))+n[14]+2878612391&4294967295,i=a+(s<<15&4294967295|s>>>17),s=r+(a^(i|~t))+n[5]+4237533241&4294967295,r=i+(s<<21&4294967295|s>>>11),s=t+(i^(r|~a))+n[12]+1700485571&4294967295,t=r+(s<<6&4294967295|s>>>26),s=a+(r^(t|~i))+n[3]+2399980690&4294967295,a=t+(s<<10&4294967295|s>>>22),s=i+(t^(a|~r))+n[10]+4293915773&4294967295,i=a+(s<<15&4294967295|s>>>17),s=r+(a^(i|~t))+n[1]+2240044497&4294967295,r=i+(s<<21&4294967295|s>>>11),s=t+(i^(r|~a))+n[8]+1873313359&4294967295,t=r+(s<<6&4294967295|s>>>26),s=a+(r^(t|~i))+n[15]+4264355552&4294967295,a=t+(s<<10&4294967295|s>>>22),s=i+(t^(a|~r))+n[6]+2734768916&4294967295,i=a+(s<<15&4294967295|s>>>17),s=r+(a^(i|~t))+n[13]+1309151649&4294967295,r=i+(s<<21&4294967295|s>>>11),s=t+(i^(r|~a))+n[4]+4149444226&4294967295,t=r+(s<<6&4294967295|s>>>26),s=a+(r^(t|~i))+n[11]+3174756917&4294967295,a=t+(s<<10&4294967295|s>>>22),s=i+(t^(a|~r))+n[2]+718787259&4294967295,i=a+(s<<15&4294967295|s>>>17),s=r+(a^(i|~t))+n[9]+3951481745&4294967295,e.g[0]=e.g[0]+t&4294967295,e.g[1]=e.g[1]+(i+(s<<21&4294967295|s>>>11))&4294967295,e.g[2]=e.g[2]+i&4294967295,e.g[3]=e.g[3]+a&4294967295}function r(e,t){this.h=t;for(var r=[],n=!0,i=e.length-1;0<=i;i--){var a=0|e[i];n&&a==t||(r[i]=a,n=!1)}this.g=r}!function(e,t){function r(){}r.prototype=t.prototype,e.D=t.prototype,e.prototype=new r,e.prototype.constructor=e,e.C=function(e,r,n){for(var i=Array(arguments.length-2),a=2;a<arguments.length;a++)i[a-2]=arguments[a];return t.prototype[r].apply(e,i)}}(e,function(){this.blockSize=-1}),e.prototype.s=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.o=this.h=0},e.prototype.u=function(e,r){void 0===r&&(r=e.length);for(var n=r-this.blockSize,i=this.B,a=this.h,s=0;s<r;){if(0==a)for(;s<=n;)t(this,e,s),s+=this.blockSize;if("string"==typeof e){for(;s<r;)if(i[a++]=e.charCodeAt(s++),a==this.blockSize){t(this,i),a=0;break}}else for(;s<r;)if(i[a++]=e[s++],a==this.blockSize){t(this,i),a=0;break}}this.h=a,this.o+=r},e.prototype.v=function(){var e=Array((56>this.h?this.blockSize:2*this.blockSize)-this.h);e[0]=128;for(var t=1;t<e.length-8;++t)e[t]=0;var r=8*this.o;for(t=e.length-8;t<e.length;++t)e[t]=255&r,r/=256;for(this.u(e),e=Array(16),t=r=0;4>t;++t)for(var n=0;32>n;n+=8)e[r++]=this.g[t]>>>n&255;return e};var a,s={};function o(e){var t;return -128<=e&&128>e?(t=function(e){return new r([0|e],0>e?-1:0)},Object.prototype.hasOwnProperty.call(s,e)?s[e]:s[e]=t(e)):new r([0|e],0>e?-1:0)}function c(e){if(isNaN(e)||!isFinite(e))return u;if(0>e)return m(c(-e));for(var t=[],n=1,i=0;e>=n;i++)t[i]=e/n|0,n*=4294967296;return new r(t,0)}var u=o(0),l=o(1),h=o(16777216);function g(e){if(0!=e.h)return!1;for(var t=0;t<e.g.length;t++)if(0!=e.g[t])return!1;return!0}function d(e){return -1==e.h}function m(e){for(var t=e.g.length,n=[],i=0;i<t;i++)n[i]=~e.g[i];return new r(n,~e.h).add(l)}function p(e,t){return e.add(m(t))}function y(e,t){for(;(65535&e[t])!=e[t];)e[t+1]+=e[t]>>>16,e[t]&=65535,t++}function f(e,t){this.g=e,this.h=t}function v(e,t){if(g(t))throw Error("division by zero");
1461if(g(e))return new f(u,u);if(d(e))return t=v(m(e),t),new f(m(t.g),m(t.h));if(d(t))return t=v(e,m(t)),new f(m(t.g),t.h);if(30<e.g.length){if(d(e)||d(t))throw Error("slowDivide_ only works with positive integers.");for(var r=l,n=t;0>=n.l(e);)r=_(r),n=_(n);var i=w(r,1),a=w(n,1);for(n=w(n,2),r=w(r,2);!g(n);){var s=a.add(n);0>=s.l(e)&&(i=i.add(r),a=s),n=w(n,1),r=w(r,1)}return t=p(e,i.j(t)),new f(i,t)}for(i=u;0<=e.l(t);){for(n=48>=(n=Math.ceil(Math.log(r=Math.max(1,Math.floor(e.m()/t.m())))/Math.LN2))?1:Math.pow(2,n-48),s=(a=c(r)).j(t);d(s)||0<s.l(e);)r-=n,s=(a=c(r)).j(t);g(a)&&(a=l),i=i.add(a),e=p(e,s)}return new f(i,e)}function _(e){for(var t=e.g.length+1,n=[],i=0;i<t;i++)n[i]=e.i(i)<<1|e.i(i-1)>>>31;return new r(n,e.h)}function w(e,t){var n=t>>5;t%=32;for(var i=e.g.length-n,a=[],s=0;s<i;s++)a[s]=0<t?e.i(s+n)>>>t|e.i(s+n+1)<<32-t:e.i(s+n);return new r(a,e.h)}(a=r.prototype).m=function(){if(d(this))return-m(this).m();for(var e=0,t=1,r=0;r<this.g.length;r++){var n=this.i(r);e+=(0<=n?n:4294967296+n)*t,t*=4294967296}return e},a.toString=function(e){if(2>(e=e||10)||36<e)throw Error("radix out of range: "+e);if(g(this))return"0";if(d(this))return"-"+m(this).toString(e);for(var t=c(Math.pow(e,6)),r=this,n="";;){var i=v(r,t).g,a=((0<(r=p(r,i.j(t))).g.length?r.g[0]:r.h)>>>0).toString(e);if(g(r=i))return a+n;for(;6>a.length;)a="0"+a;n=a+n}},a.i=function(e){return 0>e?0:e<this.g.length?this.g[e]:this.h},a.l=function(e){return d(e=p(this,e))?-1:g(e)?0:1},a.abs=function(){return d(this)?m(this):this},a.add=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],i=0,a=0;a<=t;a++){var s=i+(65535&this.i(a))+(65535&e.i(a)),o=(s>>>16)+(this.i(a)>>>16)+(e.i(a)>>>16);i=o>>>16,s&=65535,o&=65535,n[a]=o<<16|s}return new r(n,-2147483648&n[n.length-1]?-1:0)},a.j=function(e){if(g(this)||g(e))return u;if(d(this))return d(e)?m(this).j(m(e)):m(m(this).j(e));if(d(e))return m(this.j(m(e)));if(0>this.l(h)&&0>e.l(h))return c(this.m()*e.m());for(var t=this.g.length+e.g.length,n=[],i=0;i<2*t;i++)n[i]=0;for(i=0;i<this.g.length;i++)for(var a=0;a<e.g.length;a++){var s=this.i(i)>>>16,o=65535&this.i(i),l=e.i(a)>>>16,p=65535&e.i(a);n[2*i+2*a]+=o*p,y(n,2*i+2*a),n[2*i+2*a+1]+=s*p,y(n,2*i+2*a+1),n[2*i+2*a+1]+=o*l,y(n,2*i+2*a+1),n[2*i+2*a+2]+=s*l,y(n,2*i+2*a+2)}for(i=0;i<t;i++)n[i]=n[2*i+1]<<16|n[2*i];for(i=t;i<2*t;i++)n[i]=0;return new r(n,0)},a.A=function(e){return v(this,e).h},a.and=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],i=0;i<t;i++)n[i]=this.i(i)&e.i(i);return new r(n,this.h&e.h)},a.or=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],i=0;i<t;i++)n[i]=this.i(i)|e.i(i);return new r(n,this.h|e.h)},a.xor=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],i=0;i<t;i++)n[i]=this.i(i)^e.i(i);return new r(n,this.h^e.h)},e.prototype.digest=e.prototype.v,e.prototype.reset=e.prototype.s,e.prototype.update=e.prototype.u,i=P.Md5=e,r.prototype.add=r.prototype.add,r.prototype.multiply=r.prototype.j,r.prototype.modulo=r.prototype.A,r.prototype.compare=r.prototype.l,r.prototype.toNumber=r.prototype.m,r.prototype.toString=r.prototype.toString,r.prototype.getBits=r.prototype.i,r.fromNumber=c,r.fromString=function e(t,r){if(0==t.length)throw Error("number format error: empty string");if(2>(r=r||10)||36<r)throw Error("radix out of range: "+r);if("-"==t.charAt(0))return m(e(t.substring(1),r));if(0<=t.indexOf("-"))throw Error('number format error: interior "-" character');for(var n=c(Math.pow(r,8)),i=u,a=0;a<t.length;a+=8){var s=Math.min(8,t.length-a),o=parseInt(t.substring(a,a+s),r);8>s?(s=c(Math.pow(r,s)),i=i.j(s).add(c(o))):i=(i=i.j(n)).add(c(o))}return i},n=P.Integer=r}).apply(void 0!==k?k:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});var b="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},E={};(function(){var e,t,r,n="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,r){return e==Array.prototype||e==Object.prototype||(e[t]=r.value),e},i=function(e){e=["object"==typeof globalThis&&globalThis,e,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof b&&b];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")}(this);!function(e,t){if(t)e:{var r=i;e=e.split(".");for(var a=0;a<e.length-1;a++){var s=e[a];if(!(s in r))break e;r=r[s]}(t=t(a=r[e=e[e.length-1]]))!=a&&null!=t&&n(r,e,{configurable:!0,writable:!0,value:t})}}("Array.prototype.values",function(e){return e||function(){var e,t,r,n,i;return e=this,t=function(e,t){return t},e instanceof String&&(e+=""),r=0,n=!1,(i={next:function(){if(!n&&r<e.length){var i=r++;return{value:t(i,e[i]),done:!1}}return n=!0,{done:!0,value:void 0}}})[Symbol.iterator]=function(){return i},i}});var d=d||{},m=this||self;function p(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 y(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}function f(e,t,r){return e.call.apply(e.bind,arguments)}function v(e,t,r){if(!e)throw Error();if(2<arguments.length){var n=Array.prototype.slice.call(arguments,2);return function(){var r=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(r,n),e.apply(t,r)}}return function(){return e.apply(t,arguments)}}function _(e,t,r){return(_=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?f:v).apply(null,arguments)}
1461function w(e,t){var r=Array.prototype.slice.call(arguments,1);return function(){var t=r.slice();return t.push.apply(t,arguments),e.apply(this,t)}}function k(e,t){function r(){}r.prototype=t.prototype,e.aa=t.prototype,e.prototype=new r,e.prototype.constructor=e,e.Qb=function(e,r,n){for(var i=Array(arguments.length-2),a=2;a<arguments.length;a++)i[a-2]=arguments[a];return t.prototype[r].apply(e,i)}}function P(e){let t=e.length;if(0<t){let r=Array(t);for(let n=0;n<t;n++)r[n]=e[n];return r}return[]}function R(e,t){for(let t=1;t<arguments.length;t++){let r=arguments[t];if(p(r)){let t=e.length||0,n=r.length||0;e.length=t+n;for(let i=0;i<n;i++)e[t+i]=r[i]}else e.push(r)}}class S{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}}function I(e){return/^[\s\xa0]*$/.test(e)}function T(){var e=m.navigator;return e&&(e=e.userAgent)?e:""}function C(e){return C[" "](e),e}C[" "]=function(){};var H=-1!=T().indexOf("Gecko")&&!(-1!=T().toLowerCase().indexOf("webkit")&&-1==T().indexOf("Edge"))&&!(-1!=T().indexOf("Trident")||-1!=T().indexOf("MSIE"))&&-1==T().indexOf("Edge");function W(e,t,r){for(let n in e)t.call(r,e[n],n,e)}function A(e){let t={};for(let r in e)t[r]=e[r];return t}let D="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function U(e,t){let r,n;for(let t=1;t<arguments.length;t++){for(r in n=arguments[t])e[r]=n[r];for(let t=0;t<D.length;t++)r=D[t],Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}}class L{constructor(){this.h=this.g=null}add(e,t){let r=O.get();r.set(e,t),this.h?this.h.next=r:this.g=r,this.h=r}}var O=new S(()=>new N,e=>e.reset());class N{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 K,x=!1,M=new L,F=()=>{let e=m.Promise.resolve(void 0);K=()=>{e.then(B)}};var B=()=>{let e;for(var t;e=null,M.g&&(e=M.g,M.g=M.g.next,M.g||(M.h=null),e.next=null),t=e;){try{t.h.call(t.g)}catch(e){!function(e){m.setTimeout(()=>{throw e},0)}(e)}O.j(t),100>O.h&&(O.h++,t.next=O.g,O.g=t)}x=!1};function V(){this.s=this.s,this.C=this.C}function q(e,t){this.type=e,this.g=this.target=t,this.defaultPrevented=!1}V.prototype.s=!1,V.prototype.ma=function(){this.s||(this.s=!0,this.N())},V.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()},q.prototype.h=function(){this.defaultPrevented=!0};var j=function(){if(!m.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{let e=()=>{};m.addEventListener("test",e,t),m.removeEventListener("test",e,t)}catch(e){}return e}();function G(e,t){if(q.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 r=this.type=e.type,n=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.g=t,t=e.relatedTarget){if(H){e:{try{C(t.nodeName);var i=!0;break e}catch(e){}i=!1}i||(t=null)}}else"mouseover"==r?t=e.fromElement:"mouseout"==r&&(t=e.toElement);this.relatedTarget=t,n?(this.clientX=void 0!==n.clientX?n.clientX:n.pageX,this.clientY=void 0!==n.clientY?n.clientY:n.pageY,this.screenX=n.screenX||0,this.screenY=n.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:z[e.pointerType]||"",this.state=e.state,this.i=e,e.defaultPrevented&&G.aa.h.call(this)}}k(G,q);var z={2:"touch",3:"pen",4:"mouse"};G.prototype.h=function(){G.aa.h.call(this);var e=this.i;e.preventDefault?e.preventDefault():e.returnValue=!1};var $="closure_listenable_"+(1e6*Math.random()|0),J=0;function Q(e,t,r,n,i){this.listener=e,this.proxy=null,this.src=t,this.type=r,this.capture=!!n,this.ha=i,this.key=++J,this.da=this.fa=!1}function X(e){e.da=!0,e.listener=null,e.proxy=null,e.src=null,e.ha=null}function Y(e){this.src=e,this.g={},this.h=0}function Z(e,t){var r=t.type;if(r in e.g){var n,i=e.g[r],a=Array.prototype.indexOf.call(i,t,void 0);(n=0<=a)&&Array.prototype.splice.call(i,a,1),n&&(X(t),0==e.g[r].length&&(delete e.g[r],e.h--))}}function ee(e,t,r,n){for(var i=0;i<e.length;++i){var a=e[i];if(!a.da&&a.listener==t&&!!r==a.capture&&a.ha==n)return i}return -1}Y.prototype.add=function(e,t,r,n,i){var a=e.toString();(e=this.g[a])||(e=this.g[a]=[],this.h++);var s=ee(e,t,n,i);return -1<s?(t=e[s],r||(t.fa=!1)):((t=new Q(t,this.src,a,!!n,i)).fa=r,e.push(t)),t};var et="closure_lm_"+(1e6*Math.random()|0),er={};function en(e,t,r,n,i,a){if(!t)throw Error("Invalid event type");var s=y(i)?!!i.capture:!!i,o=eo(e);if(o||(e[et]=o=new Y(e)),(r=o.add(t,r,n,s,a)).proxy)return r;if(n=function e(t){return es.call(e.src,e.listener,t)},r.proxy=n,n.src=e,n.listener=r,e.addEventListener)j||(i=s),void 0===i&&(i=!1),e.addEventListener(t.toString(),n,i);else if(e.attachEvent)e.attachEvent(ea(t.toString()),n);else if(e.addListener&&e.removeListener)e.addListener(n);else throw Error("addEventListener and attachEvent are unavailable.");return r}function ei(e){if("number"!=typeof e&&e&&!e.da){var t=e.src;if(t&&t[$])Z(t.i,e);else{var r=e.type,n=e.proxy;t.removeEventListener?t.removeEventListener(r,n,e.capture):t.detachEvent?t.detachEvent(ea(r),n):t.addListener&&t.removeListener&&t.removeListener(n),(r=eo(t))?(Z(r,e),0==r.h&&(r.src=null,t[et]=null)):X(e)}}}function ea(e){return e in er?er[e]:er[e]="on"+e}function es(e,t){if(e.da)e=!0;else{t=new G(t,this);var r=e.listener,n=e.ha||e.src;e.fa&&ei(e),e=r.call(n,t)}return e}function eo(e){return(e=e[et])instanceof Y?e:null}var ec="__closure_events_fn_"+(1e9*Math.random()>>>0);function eu(e){return"function"==typeof e?e:(e[ec]||(e[ec]=function(t){return e.handleEvent(t)}),e[ec])}function el(){V.call(this),this.i=new Y(this),this.M=this,this.F=null}function eh(e,t){var r,n=e.F;if(n)for(r=[];n;n=n.F)r.push(n);if(e=e.M,n=t.type||t,"string"==typeof t)t=new q(t,e);else if(t instanceof q)t.target=t.target||e;else{var i=t;U(t=new q(n,e),i)}if(i=!0,r)for(var a=r.length-1;0<=a;a--){var s=t.g=r[a];i=eg(s,n,!0,t)&&i}if(i=eg(s=t.g=e,n,!0,t)&&i,i=eg(s,n,!1,t)&&i,r)for(a=0;a<r.length;a++)i=eg(s=t.g=r[a],n,!1,t)&&i}function eg(e,t,r,n){if(!(t=e.i.g[String(t)]))return!0;t=t.concat();for(var i=!0,a=0;a<t.length;++a){var s=t[a];if(s&&!s.da&&s.capture==r){var o=s.listener,c=s.ha||s.src;s.fa&&Z(e.i,s),i=!1!==o.call(c,n)&&i}}return i&&!n.defaultPrevented}function ed(e,t,r){if("function"==typeof e)r&&(e=_(e,r));else if(e&&"function"==typeof e.handleEvent)e=_(e.handleEvent,e);else throw Error("Invalid listener argument");return 2147483647<Number(t)?-1:m.setTimeout(e,t||0)}k(el,V),el.prototype[$]=!0,el.prototype.removeEventListener=function(e,t,r,n){!function e(t,r,n,i,a){if(Array.isArray(r))for(var s=0;s<r.length;s++)e(t,r[s],n,i,a);else(i=y(i)?!!i.capture:!!i,n=eu(n),t&&t[$])?(t=t.i,(r=String(r).toString())in t.g&&-1<(n=ee
1461(s=t.g[r],n,i,a))&&(X(s[n]),Array.prototype.splice.call(s,n,1),0==s.length&&(delete t.g[r],t.h--))):t&&(t=eo(t))&&(r=t.g[r.toString()],t=-1,r&&(t=ee(r,n,i,a)),(n=-1<t?r[t]:null)&&ei(n))}(this,e,t,r,n)},el.prototype.N=function(){if(el.aa.N.call(this),this.i){var e,t=this.i;for(e in t.g){for(var r=t.g[e],n=0;n<r.length;n++)X(r[n]);delete t.g[e],t.h--}}this.F=null},el.prototype.K=function(e,t,r,n){return this.i.add(String(e),t,!1,r,n)},el.prototype.L=function(e,t,r,n){return this.i.add(String(e),t,!0,r,n)};class em extends V{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=ed(()=>{t.g=null,t.i&&(t.i=!1,e(t))},t.l);let r=t.h;t.h=null,t.m.apply(null,r)}(this)}N(){super.N(),this.g&&(m.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function ep(e){V.call(this),this.h=e,this.g={}}k(ep,V);var ey=[];function ef(e){W(e.g,function(e,t){this.g.hasOwnProperty(t)&&ei(e)},e),e.g={}}ep.prototype.N=function(){ep.aa.N.call(this),ef(this)},ep.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")};var ev=m.JSON.stringify,e_=m.JSON.parse,ew=class{stringify(e){return m.JSON.stringify(e,void 0)}parse(e){return m.JSON.parse(e,void 0)}};function ek(){}function eP(e){return e.h||(e.h=e.i())}function eb(){}ek.prototype.h=null;var eE={OPEN:"a",kb:"b",Ja:"c",wb:"d"};function eR(){q.call(this,"d")}function eS(){q.call(this,"c")}k(eR,q),k(eS,q);var eI={},eT=null;function eC(){return eT=eT||new el}function eH(e){q.call(this,eI.La,e)}function eW(e){let t=eC();eh(t,new eH(t))}function eA(e,t){q.call(this,eI.STAT_EVENT,e),this.stat=t}function eD(e){let t=eC();eh(t,new eA(t,e))}function eU(e,t){q.call(this,eI.Ma,e),this.size=t}function eL(e,t){if("function"!=typeof e)throw Error("Fn must not be null and must be a function");return m.setTimeout(function(){e()},t)}function eO(){this.g=!0}function eN(e,t,r,n){e.info(function(){return"XMLHTTP TEXT ("+t+"): "+function(e,t){if(!e.g)return t;if(!t)return null;try{var r=JSON.parse(t);if(r){for(e=0;e<r.length;e++)if(Array.isArray(r[e])){var n=r[e];if(!(2>n.length)){var i=n[1];if(Array.isArray(i)&&!(1>i.length)){var a=i[0];if("noop"!=a&&"stop"!=a&&"close"!=a)for(var s=1;s<i.length;s++)i[s]=""}}}}return ev(r)}catch(e){return t}}(e,r)+(n?" "+n:"")})}eI.La="serverreachability",k(eH,q),eI.STAT_EVENT="statevent",k(eA,q),eI.Ma="timingevent",k(eU,q),eO.prototype.xa=function(){this.g=!1},eO.prototype.info=function(){};var eK={NO_ERROR:0,gb:1,tb:2,sb:3,nb:4,rb:5,ub:6,Ia:7,TIMEOUT:8,xb:9},ex={lb:"complete",Hb:"success",Ja:"error",Ia:"abort",zb:"ready",Ab:"readystatechange",TIMEOUT:"timeout",vb:"incrementaldata",yb:"progress",ob:"downloadprogress",Pb:"uploadprogress"};function eM(){}function eF(e,t,r,n){this.j=e,this.i=t,this.l=r,this.R=n||1,this.U=new ep(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 eB}function eB(){this.i=null,this.g="",this.h=!1}k(eM,ek),eM.prototype.g=function(){return new XMLHttpRequest},eM.prototype.i=function(){return{}},t=new eM;var eV={},eq={};function ej(e,t,r){e.L=1,e.v=ts(tt(t)),e.m=r,e.P=!0,eG(e,null)}function eG(e,t){e.F=Date.now(),e$(e),e.A=tt(e.v);var r=e.A,n=e.R;Array.isArray(n)||(n=[String(n)]),t_(r.i,"t",n),e.C=0,r=e.j.J,e.h=new eB,e.g=t3(e.j,r?t:null,!e.m),0<e.O&&(e.M=new em(_(e.Y,e,e.g),e.O)),t=e.U,r=e.g,n=e.ca;var i="readystatechange";Array.isArray(i)||(i&&(ey[0]=i.toString()),i=ey);for(var a=0;a<i.length;a++){var s=function e(t,r,n,i,a){if(i&&i.once)return function e(t,r,n,i,a){if(Array.isArray(r)){for(var s=0;s<r.length;s++)e(t,r[s],n,i,a);return null}return n=eu(n),t&&t[$]?t.L(r,n,y(i)?!!i.capture:!!i,a):en(t,r,n,!0,i,a)}(t,r,n,i,a);if(Array.isArray(r)){for(var s=0;s<r.length;s++)e(t,r[s],n,i,a);return null}return n=eu(n),t&&t[$]?t.K(r,n,y(i)?!!i.capture:!!i,a):en(t,r,n,!1,i,a)}(r,i[a],n||t.handleEvent,!1,t.h||t);if(!s)break;t.g[s.key]=s}t=e.H?A(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)),eW(),function(e,t,r,n,i,a){e.info(function(){if(e.g){if(a)for(var s="",o=a.split("&"),c=0;c<o.length;c++){var u=o[c].split("=");if(1<u.length){var l=u[0];u=u[1];var h=l.split("_");s=2<=h.length&&"type"==h[1]?s+(l+"=")+u+"&":s+(l+"=redacted&")}}else s=null}else s=a;return"XMLHTTP REQ ("+n+") [attempt "+i+"]: "+t+"\n"+r+"\n"+s})}(e.i,e.u,e.A,e.l,e.R,e.m)}function ez(e){return!!e.g&&"GET"==e.u&&2!=e.L&&e.j.Ca}function e$(e){e.S=Date.now()+e.I,eJ(e,e.I)}function eJ(e,t){if(null!=e.B)throw Error("WatchDog timer not null");e.B=eL(_(e.ba,e),t)}function eQ(e){e.B&&(m.clearTimeout(e.B),e.B=null)}function eX(e){0==e.j.G||e.J||t1(e.j,e)}function eY(e){eQ(e);var t=e.M;t&&"function"==typeof t.ma&&t.ma(),e.M=null,ef(e.U),e.g&&(t=e.g,e.g=null,t.abort(),t.ma())}function eZ(e,t){try{var r=e.j;if(0!=r.G&&(r.g==e||e5(r.h,e))){if(!e.K&&e5(r.h,e)&&3==r.G){try{var n=r.Da.g.parse(t)}catch(e){n=null}if(Array.isArray(n)&&3==n.length){var i=n;
1461if(0==i[0]){e:if(!r.u){if(r.g){if(r.g.F+3e3<e.F)tZ(r),tV(r);else break e}tQ(r),eD(18)}}else r.za=i[1],0<r.za-r.T&&37500>i[2]&&r.F&&0==r.v&&!r.C&&(r.C=eL(_(r.Za,r),6e3));if(1>=e2(r.h)&&r.ca){try{r.ca()}catch(e){}r.ca=void 0}}else t4(r,11)}else if((e.K||r.g==e)&&tZ(r),!I(t))for(i=r.Da.g.parse(t),t=0;t<i.length;t++){let o=i[t];if(r.T=o[0],o=o[1],2==r.G){if("c"==o[0]){r.K=o[1],r.ia=o[2];let t=o[3];null!=t&&(r.la=t,r.j.info("VER="+r.la));let i=o[4];null!=i&&(r.Aa=i,r.j.info("SVER="+r.Aa));let c=o[5];null!=c&&"number"==typeof c&&0<c&&(n=1.5*c,r.L=n,r.j.info("backChannelRequestTimeoutMs_="+n)),n=r;let u=e.g;if(u){let e=u.g?u.g.getResponseHeader("X-Client-Wire-Protocol"):null;if(e){var a=n.h;a.g||-1==e.indexOf("spdy")&&-1==e.indexOf("quic")&&-1==e.indexOf("h2")||(a.j=a.l,a.g=new Set,a.h&&(e3(a,a.h),a.h=null))}if(n.D){let e=u.g?u.g.getResponseHeader("X-HTTP-Session-Id"):null;e&&(n.ya=e,ta(n.I,n.D,e))}}if(r.G=3,r.l&&r.l.ua(),r.ba&&(r.R=Date.now()-e.F,r.j.info("Handshake RTT: "+r.R+"ms")),(n=r).qa=t5(n,n.J?n.ia:null,n.W),e.K){e6(n.h,e);var s=n.L;s&&(e.I=s),e.B&&(eQ(e),e$(e)),n.g=e}else tJ(n);0<r.i.length&&tj(r)}else"stop"!=o[0]&&"close"!=o[0]||t4(r,7)}else 3==r.G&&("stop"==o[0]||"close"==o[0]?"stop"==o[0]?t4(r,7):tB(r):"noop"!=o[0]&&r.l&&r.l.ta(o),r.v=0)}}eW(4)}catch(e){}}eF.prototype.ca=function(e){e=e.target;let t=this.M;t&&3==tK(e)?t.j():this.Y(e)},eF.prototype.Y=function(e){try{if(e==this.g)e:{let h=tK(this.g);var t=this.g.Ba();let g=this.g.Z();if(!(3>h)&&(3!=h||this.g&&(this.h.h||this.g.oa()||tx(this.g)))){this.J||4!=h||7==t||(8==t||0>=g?eW(3):eW(2)),eQ(this);var r=this.g.Z();this.X=r;t:if(ez(this)){var n=tx(this.g);e="";var i=n.length,a=4==tK(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){eY(this),eX(this);var s="";break t}this.h.i=new m.TextDecoder}for(t=0;t<i;t++)this.h.h=!0,e+=this.h.i.decode(n[t],{stream:!(a&&t==i-1)});n.length=0,this.h.g+=e,this.C=0,s=this.h.g}else s=this.g.oa();if(this.o=200==r,function(e,t,r,n,i,a,s){e.info(function(){return"XMLHTTP RESP ("+n+") [ attempt "+i+"]: "+t+"\n"+r+"\n"+a+" "+s})}(this.i,this.u,this.A,this.l,this.R,h,r),this.o){if(this.T&&!this.K){t:{if(this.g){var o,c=this.g;if((o=c.g?c.g.getResponseHeader("X-HTTP-Initial-Response"):null)&&!I(o)){var u=o;break t}}u=null}if(r=u)eN(this.i,this.l,r,"Initial handshake response via X-HTTP-Initial-Response"),this.K=!0,eZ(this,r);else{this.o=!1,this.s=3,eD(12),eY(this),eX(this);break e}}if(this.P){let e;for(r=!0;!this.J&&this.C<s.length;)if((e=function(e,t){var r=e.C,n=t.indexOf("\n",r);return -1==n?eq:isNaN(r=Number(t.substring(r,n)))?eV:(n+=1)+r>t.length?eq:(t=t.slice(n,n+r),e.C=n+r,t)}(this,s))==eq){4==h&&(this.s=4,eD(14),r=!1),eN(this.i,this.l,null,"[Incomplete Response]");break}else if(e==eV){this.s=4,eD(15),eN(this.i,this.l,s,"[Invalid Chunk]"),r=!1;break}else eN(this.i,this.l,e,null),eZ(this,e);if(ez(this)&&0!=this.C&&(this.h.g=this.h.g.slice(this.C),this.C=0),4!=h||0!=s.length||this.h.h||(this.s=1,eD(16),r=!1),this.o=this.o&&r,r){if(0<s.length&&!this.W){this.W=!0;var l=this.j;l.g==this&&l.ba&&!l.M&&(l.j.info("Great, no buffering proxy detected. Bytes received: "+s.length),tX(l),l.M=!0,eD(11))}}else eN(this.i,this.l,s,"[Invalid Chunked Response]"),eY(this),eX(this)}else eN(this.i,this.l,s,null),eZ(this,s);4==h&&eY(this),this.o&&!this.J&&(4==h?t1(this.j,this):(this.o=!1,e$(this)))}else(function(e){let t={};e=(e.g&&2<=tK(e)&&e.g.getAllResponseHeaders()||"").split("\r\n");for(let n=0;n<e.length;n++){if(I(e[n]))continue;var r=function(e){var t=1;e=e.split(":");let r=[];for(;0<t&&e.length;)r.push(e.shift()),t--;return e.length&&r.push(e.join(":")),r}(e[n]);let i=r[0];if("string"!=typeof(r=r[1]))continue;r=r.trim();let a=t[i]||[];t[i]=a,a.push(r)}!function(e,t){for(let r in e)t.call(void 0,e[r],r,e)}(t,function(e){return e.join(", ")})})(this.g),400==r&&0<s.indexOf("Unknown SID")?(this.s=3,eD(12)):(this.s=0,eD(13)),eY(this),eX(this)}}}catch(e){}finally{}},eF.prototype.cancel=function(){this.J=!0,eY(this)},eF.prototype.ba=function(){this.B=null;let e=Date.now();0<=e-this.S?(function(e,t){e.info(function(){return"TIMEOUT: "+t})}
1461(this.i,this.A),2!=this.L&&(eW(),eD(17)),eY(this),this.s=2,eX(this)):eJ(this,this.S-e)};var e1=class{constructor(e,t){this.g=e,this.map=t}};function e0(e){this.l=e||10,e=m.PerformanceNavigationTiming?0<(e=m.performance.getEntriesByType("navigation")).length&&("hq"==e[0].nextHopProtocol||"h2"==e[0].nextHopProtocol):!!(m.chrome&&m.chrome.loadTimes&&m.chrome.loadTimes()&&m.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 e4(e){return!!e.h||!!e.g&&e.g.size>=e.j}function e2(e){return e.h?1:e.g?e.g.size:0}function e5(e,t){return e.h?e.h==t:!!e.g&&e.g.has(t)}function e3(e,t){e.g?e.g.add(t):e.h=t}function e6(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function e9(e){if(null!=e.h)return e.i.concat(e.h.D);if(null!=e.g&&0!==e.g.size){let t=e.i;for(let r of e.g.values())t=t.concat(r.D);return t}return P(e.i)}function e8(e,t){if(e.forEach&&"function"==typeof e.forEach)e.forEach(t,void 0);else if(p(e)||"string"==typeof e)Array.prototype.forEach.call(e,t,void 0);else for(var r=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(p(e)||"string"==typeof e){var t=[];e=e.length;for(var r=0;r<e;r++)t.push(r);return t}for(let n in t=[],r=0,e)t[r++]=n;return t}}}(e),n=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(p(e)){for(var t=[],r=e.length,n=0;n<r;n++)t.push(e[n]);return t}for(n in t=[],r=0,e)t[r++]=e[n];return t}(e),i=n.length,a=0;a<i;a++)t.call(void 0,n[a],r&&r[a],e)}e0.prototype.cancel=function(){if(this.i=e9(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(let e of this.g.values())e.cancel();this.g.clear()}};var e7=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function te(e){if(this.g=this.o=this.j="",this.s=null,this.m=this.l="",this.h=!1,e instanceof te){this.h=e.h,tr(this,e.j),this.o=e.o,this.g=e.g,tn(this,e.s),this.l=e.l;var t=e.i,r=new tp;r.i=t.i,t.g&&(r.g=new Map(t.g),r.h=t.h),ti(this,r),this.m=e.m}else e&&(t=String(e).match(e7))?(this.h=!1,tr(this,t[1]||"",!0),this.o=to(t[2]||""),this.g=to(t[3]||"",!0),tn(this,t[4]),this.l=to(t[5]||"",!0),ti(this,t[6]||"",!0),this.m=to(t[7]||"")):(this.h=!1,this.i=new tp(null,this.h))}function tt(e){return new te(e)}function tr(e,t,r){e.j=r?to(t,!0):t,e.j&&(e.j=e.j.replace(/:$/,""))}function tn(e,t){if(t){if(isNaN(t=Number(t))||0>t)throw Error("Bad port number "+t);e.s=t}else e.s=null}function ti(e,t,r){var n,i;t instanceof tp?(e.i=t,n=e.i,(i=e.h)&&!n.j&&(ty(n),n.i=null,n.g.forEach(function(e,t){var r=t.toLowerCase();t!=r&&(tf(this,t),t_(this,r,e))},n)),n.j=i):(r||(t=tc(t,td)),e.i=new tp(t,e.h))}function ta(e,t,r){e.i.set(t,r)}function ts(e){return ta(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function to(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function tc(e,t,r){return"string"==typeof e?(e=encodeURI(e).replace(t,tu),r&&(e=e.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e):null}function tu(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}te.prototype.toString=function(){var e=[],t=this.j;t&&e.push(tc(t,tl,!0),":");var r=this.g;return(r||"file"==t)&&(e.push("//"),(t=this.o)&&e.push(tc(t,tl,!0),"@"),e.push(encodeURIComponent(String(r)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(r=this.s)&&e.push(":",String(r))),(r=this.l)&&(this.g&&"/"!=r.charAt(0)&&e.push("/"),e.push(tc(r,"/"==r.charAt(0)?tg:th,!0))),(r=this.i.toString())&&e.push("?",r),(r=this.m)&&e.push("#",tc(r,tm)),e.join("")};var tl=/[#\/\?@]/g,th=/[#\?:]/g,tg=/[#\?]/g,td=/[#\?@]/g,tm=/#/g;function tp(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function ty(e){e.g||(e.g=new Map,e.h=0,e.i&&function(e,t){if(e){e=e.split("&");for(var r=0;r<e.length;r++){var n=e[r].indexOf("="),i=null;if(0<=n){var a=e[r].substring(0,n);i=e[r].substring(n+1)}else a=e[r];t(a,i?decodeURIComponent(i.replace(/\+/g," ")):"")}}}(e.i,function(t,r){e.add(decodeURIComponent(t.replace(/\+/g," ")),r)}))}function tf(e,t){ty(e),t=tw(e,t),e.g.has(t)&&(e.i=null,e.h-=e.g.get(t).length,e.g.delete(t))}function tv(e,t){return ty(e),t=tw(e,t),e.g.has(t)}function t_(e,t,r){tf(e,t),0<r.length&&(e.i=null,e.g.set(tw(e,t),P(r)),e.h+=r.length)}function tw(e,t){return t=String(t),e.j&&(t=t.toLowerCase()),t}function tk(e,t,r,n,i){try{i&&(i.onload=null,i.onerror=null,i.onabort=null,i.ontimeout=null),n(r)}catch(e){}}function tP(){this.g=new ew}function tb(e){this.l=e.Ub||null,this.j=e.eb||!1}function tE(e,t){el.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 tR(e){e.j.read().then(e.Pa.bind(e)).catch(e.ga.bind(e))}function tS(e){e.readyState=4,e.l=null,e.j=null,e.v=null,tI(e)}function tI(e){e.onreadystatechange&&e.onreadystatechange.call(e)}function tT(e){let t="";return W(e,function(e,r){t+=r+":"+e+"\r\n"}),t}function tC(e,t,r){e:{for(n in r){var n=!1;break e}n=!0}n||(r=tT(r),"string"==typeof e?null!=r&&encodeURIComponent(String(r)):ta(e,t,r))}function tH(e){el.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}(r=tp.prototype).add=function(e,t){ty(this),this.i=null,e=tw(this,e);var r=this.g.get(e);return r||this.g.set(e,r=[]),r.push(t),this.h+=1,this},r.forEach=function(e,t){ty(this),this.g.forEach(function(r,n){r.forEach(function(r){e.call(t,r,n,this)},this)},this)},r.na=function(){ty(this);let e=Array.from(this.g.values()),t=Array.from(this.g.keys()),r=[];for(let n=0;n<t.length;n++){let i=e[n];for(let e=0;e<i.length;e++)r.push(t[n])}return r},r.V=function(e){ty(this);let t=[];if("string"==typeof e)tv(this,e)&&(t=t.concat(this.g.get(tw(this,e))));else{e=Array.from(this.g.values());for(let r=0;r<e.length;r++)t=t.concat(e[r])}return t},r.set=function(e,t){return ty(this),this.i=null,tv(this,e=tw(this,e))&&(this.h-=this.g.get(e).length),this.g.set(e,[t]),this.h+=1,this},r.get=function(e,t){return e&&0<(e=this.V(e)).length?String(e[0]):t},r.toString=function(){if(this.i)return this.i;if(!this.g)return"";let e=[],t=Array.from(this.g.keys());for(var r=0;r<t.length;r++){var n=t[r];let a=encodeURIComponent(String(n)),s=this.V(n);for(n=0;n<s.length;n++){var i=a;""!==s[n]&&(i+="="+encodeURIComponent(String(s[n]))),e.push(i)}}return this.i=e.join("&")},k(tb,ek),tb.prototype.g=function(){return new tE(this.l,this.j)},tb.prototype.i=(e={},function(){return e}),k(tE,el),(r=tE.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,tI(this)},r.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;let t={headers:this.u,method:this.B,credentials:this.m,cache:void 0};
1461e&&(t.body=e),(this.D||m).fetch(new Request(this.A,t)).then(this.Sa.bind(this),this.ga.bind(this))},r.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,tS(this)),this.readyState=0},r.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,tI(this)),this.g&&(this.readyState=3,tI(this),this.g))){if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Qa.bind(this),this.ga.bind(this));else if(void 0!==m.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;tR(this)}else e.text().then(this.Ra.bind(this),this.ga.bind(this))}},r.Pa=function(e){if(this.g){if(this.o&&e.value)this.response.push(e.value);else if(!this.o){var t=e.value?e.value:new Uint8Array(0);(t=this.v.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)}e.done?tS(this):tI(this),3==this.readyState&&tR(this)}},r.Ra=function(e){this.g&&(this.response=this.responseText=e,tS(this))},r.Qa=function(e){this.g&&(this.response=e,tS(this))},r.ga=function(){this.g&&tS(this)},r.setRequestHeader=function(e,t){this.u.append(e,t)},r.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},r.getAllResponseHeaders=function(){if(!this.h)return"";let e=[],t=this.h.entries();for(var r=t.next();!r.done;)e.push((r=r.value)[0]+": "+r[1]),r=t.next();return e.join("\r\n")},Object.defineProperty(tE.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}}),k(tH,el);var tW=/^https?$/i,tA=["POST","PUT"];function tD(e,t){e.h=!1,e.g&&(e.j=!0,e.g.abort(),e.j=!1),e.l=t,e.m=5,tU(e),tO(e)}function tU(e){e.A||(e.A=!0,eh(e,"complete"),eh(e,"error"))}function tL(e){if(e.h&&void 0!==d&&(!e.v[1]||4!=tK(e)||2!=e.Z())){if(e.u&&4==tK(e))ed(e.Ea,0,e);else if(eh(e,"readystatechange"),4==tK(e)){e.h=!1;try{let s=e.Z();switch(s){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var t,r,n=!0;break;default:n=!1}if(!(t=n)){if(r=0===s){var i=String(e.D).match(e7)[1]||null;!i&&m.self&&m.self.location&&(i=m.self.location.protocol.slice(0,-1)),r=!tW.test(i?i.toLowerCase():"")}t=r}if(t)eh(e,"complete"),eh(e,"success");else{e.m=6;try{var a=2<tK(e)?e.g.statusText:""}catch(e){a=""}e.l=a+" ["+e.Z()+"]",tU(e)}}finally{tO(e)}}}}function tO(e,t){if(e.g){tN(e);let r=e.g,n=e.v[0]?()=>{}:null;e.g=null,e.v=null,t||eh(e,"ready");try{r.onreadystatechange=n}catch(e){}}}function tN(e){e.I&&(m.clearTimeout(e.I),e.I=null)}function tK(e){return e.g?e.g.readyState:0}function tx(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 tM(e,t,r){return r&&r.internalChannelParams&&r.internalChannelParams[e]||t}function tF(e){this.Aa=0,this.i=[],this.j=new eO,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=tM("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=tM("baseRetryDelayMs",5e3,e),this.cb=tM("retryDelaySeedMs",1e4,e),this.Wa=tM("forwardChannelMaxRetries",2,e),this.wa=tM("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 e0(e&&e.concurrentRequestLimit),this.Da=new tP,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 tB(e){if(tq(e),3==e.G){var t=e.U++,r=tt(e.I);if(ta(r,"SID",e.K),ta(r,"RID",t),ta(r,"TYPE","terminate"),tz(e,r),(t=new eF(e,e.j,t)).L=2,t.v=ts(tt(r)),r=!1,m.navigator&&m.navigator.sendBeacon)try{r=m.navigator.sendBeacon(t.v.toString(),"")}catch(e){}!r&&m.Image&&((new Image).src=t.v,r=!0),r||(t.g=t3(t.j,null),t.g.ea(t.v)),t.F=Date.now(),e$(t)}t2(e)}function tV(e){e.g&&(tX(e),e.g.cancel(),e.g=null)}function tq(e){tV(e),e.u&&(m.clearTimeout(e.u),e.u=null),tZ(e),e.h.cancel(),e.s&&("number"==typeof e.s&&m.clearTimeout(e.s),e.s=null)}function tj(e){if(!e4(e.h)&&!e.s){e.s=!0;var t=e.Ga;K||F(),x||(K(),x=!0),M.add(t,e),e.B=0}}function tG(e,t){var r;r=t?t.l:e.U++;let n=tt(e.I);ta(n,"SID",e.K),ta(n,"RID",r),ta(n,"AID",e.T),tz(e,n),e.m&&e.o&&tC(n,e.m,e.o),r=new eF(e,e.j,r,e.B+1),null===e.m&&(r.H=e.o),t&&(e.i=t.D.concat(e.i)),t=t$(e,r,1e3),r.I=Math.round(.5*e.wa)+Math.round(.5*e.wa*Math.random()),e3(e.h,r),ej(r,n,t)}function tz(e,t){e.H&&W(e.H,function(e,r){ta(t,r,e)}
1461),e.l&&e8({},function(e,r){ta(t,r,e)})}function t$(e,t,r){r=Math.min(e.i.length,r);var n=e.l?_(e.l.Na,e.l,e):null;e:{var i=e.i;let t=-1;for(;;){let e=["count="+r];-1==t?0<r?(t=i[0].g,e.push("ofs="+t)):t=0:e.push("ofs="+t);let a=!0;for(let s=0;s<r;s++){let r=i[s].g,o=i[s].map;if(0>(r-=t))t=Math.max(0,i[s].g-100),a=!1;else try{!function(e,t,r){let n=r||"";try{e8(e,function(e,r){let i=e;y(e)&&(i=ev(e)),t.push(n+r+"="+encodeURIComponent(i))})}catch(e){throw t.push(n+"type="+encodeURIComponent("_badmap")),e}}(o,e,"req"+r+"_")}catch(e){n&&n(o)}}if(a){n=e.join("&");break e}}}return e=e.i.splice(0,r),t.D=e,n}function tJ(e){if(!e.g&&!e.u){e.Y=1;var t=e.Fa;K||F(),x||(K(),x=!0),M.add(t,e),e.v=0}}function tQ(e){return!e.g&&!e.u&&!(3<=e.v)&&(e.Y++,e.u=eL(_(e.Fa,e),t0(e,e.v)),e.v++,!0)}function tX(e){null!=e.A&&(m.clearTimeout(e.A),e.A=null)}function tY(e){e.g=new eF(e,e.j,"rpc",e.Y),null===e.m&&(e.g.H=e.o),e.g.O=0;var t=tt(e.qa);ta(t,"RID","rpc"),ta(t,"SID",e.K),ta(t,"AID",e.T),ta(t,"CI",e.F?"0":"1"),!e.F&&e.ja&&ta(t,"TO",e.ja),ta(t,"TYPE","xmlhttp"),tz(e,t),e.m&&e.o&&tC(t,e.m,e.o),e.L&&(e.g.I=e.L);var r=e.g;e=e.ia,r.L=1,r.v=ts(tt(t)),r.m=null,r.P=!0,eG(r,e)}function tZ(e){null!=e.C&&(m.clearTimeout(e.C),e.C=null)}function t1(e,t){var r=null;if(e.g==t){tZ(e),tX(e),e.g=null;var n=2}else{if(!e5(e.h,t))return;r=t.D,e6(e.h,t),n=1}if(0!=e.G){if(t.o){if(1==n){r=t.m?t.m.length:0,t=Date.now()-t.F;var i,a=e.B;eh(n=eC(),new eU(n,r)),tj(e)}else tJ(e)}else if(3==(a=t.s)||0==a&&0<t.X||!(1==n&&(i=t,!(e2(e.h)>=e.h.j-(e.s?1:0))&&(e.s?(e.i=i.D.concat(e.i),!0):1!=e.G&&2!=e.G&&!(e.B>=(e.Va?0:e.Wa))&&(e.s=eL(_(e.Ga,e,i),t0(e,e.B)),e.B++,!0)))||2==n&&tQ(e)))switch(r&&0<r.length&&((t=e.h).i=t.i.concat(r)),a){case 1:t4(e,5);break;case 4:t4(e,10);break;case 3:t4(e,6);break;default:t4(e,2)}}}function t0(e,t){let r=e.Ta+Math.floor(Math.random()*e.cb);return e.isActive()||(r*=2),r*t}function t4(e,t){if(e.j.info("Error code "+t),2==t){var r=_(e.fb,e),n=e.Xa;let t=!n;n=new te(n||"//www.google.com/images/cleardot.gif"),m.location&&"http"==m.location.protocol||tr(n,"https"),ts(n),t?function(e,t){let r=new eO;if(m.Image){let n=new Image;n.onload=w(tk,r,"TestLoadImage: loaded",!0,t,n),n.onerror=w(tk,r,"TestLoadImage: error",!1,t,n),n.onabort=w(tk,r,"TestLoadImage: abort",!1,t,n),n.ontimeout=w(tk,r,"TestLoadImage: timeout",!1,t,n),m.setTimeout(function(){n.ontimeout&&n.ontimeout()},1e4),n.src=e}else t(!1)}(n.toString(),r):function(e,t){let r=new eO,n=new AbortController,i=setTimeout(()=>{n.abort(),tk(r,"TestPingServer: timeout",!1,t)},1e4);fetch(e,{signal:n.signal}).then(e=>{clearTimeout(i),e.ok?tk(r,"TestPingServer: ok",!0,t):tk(r,"TestPingServer: server error",!1,t)}).catch(()=>{clearTimeout(i),tk(r,"TestPingServer: error",!1,t)})}(n.toString(),r)}else eD(2);e.G=0,e.l&&e.l.sa(t),t2(e),tq(e)}function t2(e){if(e.G=0,e.ka=[],e.l){let t=e9(e.h);(0!=t.length||0!=e.i.length)&&(R(e.ka,t),R(e.ka,e.i),e.h.i.length=0,P(e.i),e.i.length=0),e.l.ra()}}function t5(e,t,r){var n=r instanceof te?tt(r):new te(r);if(""!=n.g)t&&(n.g=t+"."+n.g),tn(n,n.s);else{var i=m.location;n=i.protocol,t=t?t+"."+i.hostname:i.hostname,i=+i.port;var a=new te(null);n&&tr(a,n),t&&(a.g=t),i&&tn(a,i),r&&(a.l=r),n=a}return r=e.D,t=e.ya,r&&t&&ta(n,r,t),ta(n,"VER",e.la),tz(e,n),n}function t3(e,t,r){if(t&&!e.J)throw Error("Can't create secondary domain capable XhrIo object.");return(t=new tH(e.Ca&&!e.pa?new tb({eb:r}):e.pa)).Ha(e.J),t}function t6(){}function t9(){}function t8(e,t){el.call(this),this.g=new tF(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)&&!I(e)&&(this.g.m=e),this.v=t&&t.supportsCrossDomainXhr||!1,this.u=t&&t.sendRawJson||!1,(t=t&&t.httpSessionIdParam)&&!I(t)&&(this.g.D=t,null!==(e=this.h)&&t in e&&t in(e=this.h)&&delete e[t]),this.j=new rt(this)}function t7(e){eR.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(let r in t){e=r;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 re(){eS.call(this),this.status=1}function rt(e){this.g=e}(r=tH.prototype).Ha=function(e){this.J=e},r.ea=function(e,r,n,i){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+e);r=r?r.toUpperCase():"GET",this.D=e,this.l="",this.m=0,this.A=!1,this.h=!0,this.g=this.o?this.o.g():t.g(),this.v=this.o?eP(this.o):eP(t),this.g.onreadystatechange=_(this.Ea,this);try{this.B=!0,this.g.open(r,String(e),!0),this.B=!1}catch(e){tD(this,e);return}if(e=n||"",n=new Map(this.headers),i){if(Object.getPrototypeOf(i)===Object.prototype)for(var a in i)n.set(a,i[a]);else if("function"==typeof i.keys&&"function"==typeof i.get)for(let e of i.keys())n.set(e,i.get(e));else throw Error("Unknown input type for opt_headers: "+String(i))}for(let[t,s]of(i=Array.from(n.keys()).find(e=>"content-type"==e.toLowerCase()),a=m.FormData&&e instanceof m.FormData,!(0<=Array.prototype.indexOf.call(tA,r,void 0))||i||a||n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),n))this.g.setRequestHeader(t,s);this.H&&(this.g.responseType=this.H),"withCredentials"in this.g&&this.g.withCredentials!==this.J&&(this.g.withCredentials=this.J);try{tN(this),this.u=!0,this.g.send(e),this.u=!1}catch(e){tD(this,e)}},r.abort=function(e){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.m=e||7,eh(this,"complete"),eh(this,"abort"),tO(this))},r.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),tO(this,!0)),tH.aa.N.call(this)},r.Ea=function(){this.s||(this.B||this.u||this.j?tL(this):this.bb())},r.bb=function(){tL(this)},r.isActive=function(){return!!this.g},r.Z=function(){try{return 2<tK(this)?this.g.status:-1}catch(e){return -1}},r.oa=function(){try{return this.g?this.g.responseText:""}catch(e){return""}},r.Oa=function(e){if(this.g){var t=this.g.responseText;
1461return e&&0==t.indexOf(e)&&(t=t.substring(e.length)),e_(t)}},r.Ba=function(){return this.m},r.Ka=function(){return"string"==typeof this.l?this.l:String(this.l)},(r=tF.prototype).la=8,r.G=1,r.connect=function(e,t,r,n){eD(0),this.W=e,this.H=t||{},r&&void 0!==n&&(this.H.OSID=r,this.H.OAID=n),this.F=this.X,this.I=t5(this,null,this.W),tj(this)},r.Ga=function(e){if(this.s){if(this.s=null,1==this.G){if(!e){this.U=Math.floor(1e5*Math.random()),e=this.U++;let i=new eF(this,this.j,e),a=this.o;if(this.S&&(a?U(a=A(a),this.S):a=this.S),null!==this.m||this.O||(i.H=a,a=null),this.P)e:{for(var t=0,r=0;r<this.i.length;r++){t:{var n=this.i[r];if("__data__"in n.map&&"string"==typeof(n=n.map.__data__)){n=n.length;break t}n=void 0}if(void 0===n)break;if(4096<(t+=n)){t=r;break e}if(4096===t||r===this.i.length-1){t=r+1;break e}}t=1e3}else t=1e3;t=t$(this,i,t),ta(r=tt(this.I),"RID",e),ta(r,"CVER",22),this.D&&ta(r,"X-HTTP-Session-Id",this.D),tz(this,r),a&&(this.O?t="headers="+encodeURIComponent(String(tT(a)))+"&"+t:this.m&&tC(r,this.m,a)),e3(this.h,i),this.Ua&&ta(r,"TYPE","init"),this.P?(ta(r,"$req",t),ta(r,"SID","null"),i.T=!0,ej(i,r,null)):ej(i,r,t),this.G=2}}else 3==this.G&&(e?tG(this,e):0==this.i.length||e4(this.h)||tG(this))}},r.Fa=function(){if(this.u=null,tY(this),this.ba&&!(this.M||null==this.g||0>=this.R)){var e=2*this.R;this.j.info("BP detection timer enabled: "+e),this.A=eL(_(this.ab,this),e)}},r.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,eD(10),tV(this),tY(this))},r.Za=function(){null!=this.C&&(this.C=null,tV(this),tQ(this),eD(19))},r.fb=function(e){e?(this.j.info("Successfully pinged google.com"),eD(2)):(this.j.info("Failed to ping google.com"),eD(1))},r.isActive=function(){return!!this.l&&this.l.isActive(this)},(r=t6.prototype).ua=function(){},r.ta=function(){},r.sa=function(){},r.ra=function(){},r.isActive=function(){return!0},r.Na=function(){},t9.prototype.g=function(e,t){return new t8(e,t)},k(t8,el),t8.prototype.m=function(){this.g.l=this.j,this.v&&(this.g.J=!0),this.g.connect(this.l,this.h||void 0)},t8.prototype.close=function(){tB(this.g)},t8.prototype.o=function(e){var t=this.g;if("string"==typeof e){var r={};r.__data__=e,e=r}else this.u&&((r={}).__data__=ev(e),e=r);t.i.push(new e1(t.Ya++,e)),3==t.G&&tj(t)},t8.prototype.N=function(){this.g.l=null,delete this.j,tB(this.g),delete this.g,t8.aa.N.call(this)},k(t7,eR),k(re,eS),k(rt,t6),rt.prototype.ua=function(){eh(this.g,"a")},rt.prototype.ta=function(e){eh(this.g,new t7(e))},rt.prototype.sa=function(e){eh(this.g,new re)},rt.prototype.ra=function(){eh(this.g,"b")},t9.prototype.createWebChannel=t9.prototype.g,t8.prototype.send=t8.prototype.o,t8.prototype.open=t8.prototype.m,t8.prototype.close=t8.prototype.close,g=E.createWebChannelTransport=function(){return new t9},h=E.getStatEventTarget=function(){return eC()},l=E.Event=eI,u=E.Stat={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},eK.NO_ERROR=0,eK.TIMEOUT=8,eK.HTTP_ERROR=6,c=E.ErrorCode=eK,ex.COMPLETE="complete",o=E.EventType=ex,eb.EventType=eE,eE.OPEN="a",eE.CLOSE="b",eE.ERROR="c",eE.MESSAGE="d",el.prototype.listen=el.prototype.K,s=E.WebChannel=eb,E.FetchXmlHttpFactory=tb,tH.prototype.listenOnce=tH.prototype.L,tH.prototype.getLastError=tH.prototype.Ka,tH.prototype.getLastErrorCode=tH.prototype.Ba,tH.prototype.getStatus=tH.prototype.Z,tH.prototype.getResponseJson=tH.prototype.Oa,tH.prototype.getResponseText=tH.prototype.oa,tH.prototype.send=tH.prototype.ea,tH.prototype.setWithCredentials=tH.prototype.Ha,a=E.XhrIo=tH}).apply(void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}),r(4155);var R=r(8764).lW;let S="@firebase/firestore";/** 1462 * @license 1463 * Copyright 2017 Google LLC 1464 * 1465 * Licensed under the Apache License, Version 2.0 (the "License"); 1466 * you may not use this file except in compliance with the License. 1467 * You may obtain a copy of the License at 1468 * 1469 * http://www.apache.org/licenses/LICENSE-2.0 1470 * 1471 * Unless required by applicable law or agreed to in writing, softw
1471are 1472 * distributed under the License is distributed on an "AS IS" BASIS, 1473 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1474 * See the License for the specific language governing permissions and 1475 * limitations under the License. 1476 */class I{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}}I.UNAUTHENTICATED=new I(null),I.GOOGLE_CREDENTIALS=new I("google-credentials-uid"),I.FIRST_PARTY=new I("first-party-uid"),I.MOCK_USER=new I("mock-user");/** 1477 * @license 1478 * Copyright 2017 Google LLC 1479 * 1480 * Licensed under the Apache License, Version 2.0 (the "License"); 1481 * you may not use this file except in compliance with the License. 1482 * You may obtain a copy of the License at 1483 * 1484 * http://www.apache.org/licenses/LICENSE-2.0 1485 * 1486 * Unless required by applicable law or agreed to in writing, software 1487 * distributed under the License is distributed on an "AS IS" BASIS, 1488 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1489 * See the License for the specific language governing permissions and 1490 * limitations under the License. 1491 */let T="10.14.0",C=new _.Yd("@firebase/firestore");function H(){return C.logLevel}function W(e,...t){if(C.logLevel<=_.in.DEBUG){let r=t.map(U);C.debug(`Firestore (${T}): ${e}`,...r)}}function A(e,...t){if(C.logLevel<=_.in.ERROR){let r=t.map(U);C.error(`Firestore (${T}): ${e}`,...r)}}function D(e,...t){if(C.logLevel<=_.in.WARN){let r=t.map(U);C.warn(`Firestore (${T}): ${e}`,...r)}}function U(e){if("string"==typeof e)return e;try{/** 1492 * @license 1493 * Copyright 2020 Google LLC 1494 * 1495 * Licensed under the Apache License, Version 2.0 (the "License"); 1496 * you may not use this file except in compliance with the License. 1497 * You may obtain a copy of the License at 1498 * 1499 * http://www.apache.org/licenses/LICENSE-2.0 1500 * 1501 * Unless required by applicable law or agreed to in writing, software 1502 * distributed under the License is distributed on an "AS IS" BASIS, 1503 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1504 * See the License for the specific language governing permissions and 1505 * limitations under the License. 1506 */return JSON.stringify(e)}catch(t){return e}}/** 1507 * @license 1508 * Copyright 2017 Google LLC 1509 * 1510 * Licensed under the Apache License, Version 2.0 (the "License"); 1511 * you may not use this file except in compliance with the License. 1512 * You may obtain a copy of the License at 1513 * 1514 * http://www.apache.org/licenses/LICENSE-2.0 1515 * 1516 * Unless required by applicable law or agreed to in writing, software 1517 * distributed under the License is distributed on an "AS IS" BASIS, 1518 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1519 * See the License for the specific language governing permissions and 1520 * limitations under the License. 1521 */function L(e="Unexpected state"){let t=`FIRESTORE (${T}) INTERNAL ASSERTION FAILED: `+e;throw A(t),Error(t)}/** 1522 * @license 1523 * Copyright 2017 Google LLC 1524 * 1525 * Licensed under the Apache License, Version 2.0 (the "License"); 1526 * you may not use this file except in compliance with the License. 1527 * You may obtain a copy of the License at 1528 * 1529 * http://www.apache.org/licenses/LICENSE-2.0 1530 * 1531 * Unless required by applicable law or agreed to in writing, software 1532 * distributed under the License is distributed on an "AS IS" BASIS, 1533 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1534 * See the License for the specific language governing permissions and 1535 * limitations under the License. 1536 */let O={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 N extends w.ZR{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}/** 1537 * @license 1538 * Copyright 2017 Google LLC 1539 * 1540 * Licensed under the Apache License, Version 2.0 (the "License");
1541 * you may not use this file except in compliance with the License. 1542 * You may obtain a copy of the License at 1543 * 1544 * http://www.apache.org/licenses/LICENSE-2.0 1545 * 1546 * Unless required by applicable law or agreed to in writing, software 1547 * distributed under the License is distributed on an "AS IS" BASIS, 1548 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1549 * See the License for the specific language governing permissions and 1550 * limitations under the License. 1551 */class K{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}/** 1552 * @license 1553 * Copyright 2017 Google LLC 1554 * 1555 * Licensed under the Apache License, Version 2.0 (the "License"); 1556 * you may not use this file except in compliance with the License. 1557 * You may obtain a copy of the License at 1558 * 1559 * http://www.apache.org/licenses/LICENSE-2.0 1560 * 1561 * Unless required by applicable law or agreed to in writing, software 1562 * distributed under the License is distributed on an "AS IS" BASIS, 1563 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1564 * See the License for the specific language governing permissions and 1565 * limitations under the License. 1566 */class x{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class M{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(I.UNAUTHENTICATED))}shutdown(){}}class F{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 B{constructor(e){this.t=e,this.currentUser=I.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){void 0===this.o||L();let r=this.i,n=e=>this.i!==r?(r=this.i,t(e)):Promise.resolve(),i=new K;this.o=()=>{this.i++,this.currentUser=this.u(),i.resolve(),i=new K,e.enqueueRetryable(()=>n(this.currentUser))};let a=()=>{let t=i;e.enqueueRetryable(async()=>{await t.promise,await n(this.currentUser)})},s=e=>{W("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.o&&(this.auth.addAuthTokenListener(this.o),a())};this.t.onInit(e=>s(e)),setTimeout(()=>{if(!this.auth){let e=this.t.getImmediate({optional:!0});e?s(e):(W("FirebaseAuthCredentialsProvider","Auth not yet detected"),i.resolve(),i=new K)}},0),a()}getToken(){let e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then(t=>this.i!==e?(W("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):t?("string"==typeof t.accessToken||L(),new x(t.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(){let e=this.auth&&this.auth.getUid();return null===e||"string"==typeof e||L(),new I(e)}}class V{constructor(e,t,r){this.l=e,this.h=t,this.P=r,this.type="FirstParty",this.user=I.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);let e=this.T();return e&&this.I.set("Authorization",e),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class q{constructor(e,t,r){this.l=e,this.h=t,this.P=r}getToken(){return Promise.resolve(new V(this.l,this.h,this.P))}start(e,t){e.enqueueRetryable(()=>t(I.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class j{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class G{constructor(e){this.A=e,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(e,t){void 0===this.o||L();let r=e=>{null!=e.error&&W("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);let r=e.token!==this.R;return this.R=e.token,W("FirebaseAppCheckTokenProvider",`Received ${r?"new":"existing"} token.`),r?t(e.token):Promise.resolve()};this.o=t=>{e.enqueueRetryable(()=>r(t))};let n=e=>{W("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.o&&this.appCheck.addTokenListener(this.o)};this.A.onInit(e=>n(e)),setTimeout(()=>{if(!this.appCheck){let e=this.A.getImmediate({optional:!0});e?n(e):W("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}},0)}getToken(){let e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?("string"==typeof e.token||L(),this.R=e.token,new j(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.o&&this.appCheck.removeTokenListener(this.o),this.o=void 0}}/** 1567 * @license 1568 * Copyright 2017 Google LLC 1569 * 1570 * Licensed under the Apache License, Version 2.0 (the "License");
1571 * you may not use this file except in compliance with the License. 1572 * You may obtain a copy of the License at 1573 * 1574 * http://www.apache.org/licenses/LICENSE-2.0 1575 * 1576 * Unless required by applicable law or agreed to in writing, software 1577 * distributed under the License is distributed on an "AS IS" BASIS, 1578 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1579 * See the License for the specific language governing permissions and 1580 * limitations under the License. 1581 */class z{static newId(){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=Math.floor(256/e.length)*e.length,r="";for(;r.length<20;){let n=/** 1582 * @license 1583 * Copyright 2020 Google LLC 1584 * 1585 * Licensed under the Apache License, Version 2.0 (the "License"); 1586 * you may not use this file except in compliance with the License. 1587 * You may obtain a copy of the License at 1588 * 1589 * http://www.apache.org/licenses/LICENSE-2.0 1590 * 1591 * Unless required by applicable law or agreed to in writing, software 1592 * distributed under the License is distributed on an "AS IS" BASIS, 1593 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1594 * See the License for the specific language governing permissions and 1595 * limitations under the License. 1596 */function(e){let t="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(40);if(t&&"function"==typeof t.getRandomValues)t.getRandomValues(r);else for(let e=0;e<40;e++)r[e]=Math.floor(256*Math.random());return r}(0);for(let i=0;i<n.length;++i)r.length<20&&n[i]<t&&(r+=e.charAt(n[i]%e.length))}return r}}function $(e,t){return e<t?-1:e>t?1:0}function J(e,t,r){return e.length===t.length&&e.every((e,n)=>r(e,t[n]))}/** 1597 * @license 1598 * Copyright 2017 Google LLC 1599 * 1600 * Licensed under the Apache License, Version 2.0 (the "License"); 1601 * you may not use this file except in compliance with the License. 1602 * You may obtain a copy of the License at 1603 * 1604 * http://www.apache.org/licenses/LICENSE-2.0 1605 * 1606 * Unless required by applicable law or agreed to in writing, software 1607 * distributed under the License is distributed on an "AS IS" BASIS, 1608 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1609 * See the License for the specific language governing permissions and 1610 * limitations under the License. 1611 */class Q{constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0||t>=1e9)throw new N(O.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800||e>=253402300800)throw new N(O.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return Q.fromMillis(Date.now())}static fromDate(e){return Q.fromMillis(e.getTime())}static fromMillis(e){let t=Math.floor(e/1e3);return new Q(t,Math.floor(1e6*(e-1e3*t)))}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?$(this.nanoseconds,e.nanoseconds):$(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(){return String(this.seconds- -62135596800).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}/** 1612 * @license 1613 * Copyright 2017 Google LLC 1614 * 1615 * Licensed under the Apache License, Version 2.0 (the "License"); 1616 * you may not use this file except in compliance with the License. 1617 * You may obtain a copy of the License at 1618 * 1619 * http://www.apache.org/licenses/LICENSE-2.0 1620 * 1621 * Unless required by applicable law or agreed to in writing, software 1622 * distributed under the License is distributed on an "AS IS" BASIS, 1623 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1624 * See the License for the specific language governing permissions and 1625 * limitations under the License. 1626 */class X{constructor(e){this.timestamp=e}static fromTimestamp(e){return new X(e)}static min(){return new X(new Q(0,0))}static max(){return new X(new Q(253402300799,999999999))}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}}/** 1627 * @license 1628 * Copyright 2017 Google LLC 1629 * 1630 * Licensed under the Apache License, Version 2.0 (the "License");
1631 * you may not use this file except in compliance with the License. 1632 * You may obtain a copy of the License at 1633 * 1634 * http://www.apache.org/licenses/LICENSE-2.0 1635 * 1636 * Unless required by applicable law or agreed to in writing, software 1637 * distributed under the License is distributed on an "AS IS" BASIS, 1638 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1639 * See the License for the specific language governing permissions and 1640 * limitations under the License. 1641 */class Y{constructor(e,t,r){void 0===t?t=0:t>e.length&&L(),void 0===r?r=e.length-t:r>e.length-t&&L(),this.segments=e,this.offset=t,this.len=r}get length(){return this.len}isEqual(e){return 0===Y.comparator(this,e)}child(e){let t=this.segments.slice(this.offset,this.limit());return e instanceof Y?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=void 0===e?1:e,this.construct(this.segments,this.offset+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,r=this.limit();t<r;t++)e(this.segments[t])}toArray(){return this.segments.slice(this.offset,this.limit())}static comparator(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++){let r=e.get(n),i=t.get(n);if(r<i)return -1;if(r>i)return 1}return e.length<t.length?-1:e.length>t.length?1:0}}class Z extends Y{construct(e,t,r){return new Z(e,t,r)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...e){let t=[];for(let r of e){if(r.indexOf("//")>=0)throw new N(O.INVALID_ARGUMENT,`Invalid segment (${r}). Paths must not contain // in them.`);t.push(...r.split("/").filter(e=>e.length>0))}return new Z(t)}static emptyPath(){return new Z([])}}let ee=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class et extends Y{construct(e,t,r){return new et(e,t,r)}static isValidIdentifier(e){return ee.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),et.isValidIdentifier(e)||(e="`"+e+"`"),e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new et(["__name__"])}static fromServerFormat(e){let t=[],r="",n=0,i=()=>{if(0===r.length)throw new N(O.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(r),r=""},a=!1;for(;n<e.length;){let t=e[n];if("\\"===t){if(n+1===e.length)throw new N(O.INVALID_ARGUMENT,"Path has trailing escape character: "+e);let t=e[n+1];if("\\"!==t&&"."!==t&&"`"!==t)throw new N(O.INVALID_ARGUMENT,"Path has invalid escape sequence: "+e);r+=t,n+=2}else"`"===t?a=!a:"."!==t||a?r+=t:i(),n++}if(i(),a)throw new N(O.INVALID_ARGUMENT,"Unterminated ` in path: "+e);return new et(t)}static emptyPath(){return new et([])}}/** 1642 * @license 1643 * Copyright 2017 Google LLC 1644 * 1645 * Licensed under the Apache License, Version 2.0 (the "License"); 1646 * you may not use this file except in compliance with the License. 1647 * You may obtain a copy of the License at 1648 * 1649 * http://www.apache.org/licenses/LICENSE-2.0 1650 * 1651 * Unless required by applicable law or agreed to in writing, software 1652 * distributed under the License is distributed on an "AS IS" BASIS, 1653 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1654 * See the License for the specific language governing permissions and 1655 * limitations under the License. 1656 */class er{constructor(e){this.path=e}static fromPath(e){return new er(Z.fromString(e))}static fromName(e){return new er(Z.fromString(e).popFirst(5))}static empty(){return new er(Z.emptyPath())}get collectionGroup(){return this.path.popLast().lastSegment()}hasCollectionId(e){return this.path.length>=2&&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===Z.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return Z.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new er(new Z(e.slice()))}}/** 1657 * @license 1658 * Copyright 2021 Google LLC 1659 * 1660 * Licensed under the Apache License, Version 2.0 (the "License");
1661 * you may not use this file except in compliance with the License. 1662 * You may obtain a copy of the License at 1663 * 1664 * http://www.apache.org/licenses/LICENSE-2.0 1665 * 1666 * Unless required by applicable law or agreed to in writing, software 1667 * distributed under the License is distributed on an "AS IS" BASIS, 1668 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1669 * See the License for the specific language governing permissions and 1670 * limitations under the License. 1671 */class en{constructor(e,t,r,n){this.indexId=e,this.collectionGroup=t,this.fields=r,this.indexState=n}}en.UNKNOWN_ID=-1;class ei{constructor(e,t,r){this.readTime=e,this.documentKey=t,this.largestBatchId=r}static min(){return new ei(X.min(),er.empty(),-1)}static max(){return new ei(X.max(),er.empty(),-1)}}class ea{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}/** 1672 * @license 1673 * Copyright 2017 Google LLC 1674 * 1675 * Licensed under the Apache License, Version 2.0 (the "License"); 1676 * you may not use this file except in compliance with the License. 1677 * You may obtain a copy of the License at 1678 * 1679 * http://www.apache.org/licenses/LICENSE-2.0 1680 * 1681 * Unless required by applicable law or agreed to in writing, software 1682 * distributed under the License is distributed on an "AS IS" BASIS, 1683 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1684 * See the License for the specific language governing permissions and 1685 * limitations under the License. 1686 */async function es(e){if(e.code!==O.FAILED_PRECONDITION||"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab."!==e.message)throw e;W("LocalStore","Unexpectedly lost primary lease")}/** 1687 * @license 1688 * Copyright 2017 Google LLC 1689 * 1690 * Licensed under the Apache License, Version 2.0 (the "License"); 1691 * you may not use this file except in compliance with the License. 1692 * You may obtain a copy of the License at 1693 * 1694 * http://www.apache.org/licenses/LICENSE-2.0 1695 * 1696 * Unless required by applicable law or agreed to in writing, software 1697 * distributed under the License is distributed on an "AS IS" BASIS, 1698 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1699 * See the License for the specific language governing permissions and 1700 * limitations under the License. 1701 */class eo{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(e,t){return this.callbackAttached&&L(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new eo((r,n)=>{this.nextCallback=t=>{this.wrapSuccess(e,t).next(r,n)},this.catchCallback=e=>{this.wrapFailure(t,e).next(r,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{let t=e();return t instanceof eo?t:eo.resolve(t)}catch(e){return eo.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):eo.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):eo.reject(t)}static resolve(e){return new eo((t,r)=>{t(e)})}static reject(e){return new eo((t,r)=>{r(e)})}static waitFor(e){return new eo((t,r)=>{let n=0,i=0,a=!1;e.forEach(e=>{++n,e.next(()=>{++i,a&&i===n&&t()},e=>r(e))}),a=!0,i===n&&t()})}static or(e){let t=eo.resolve(!1);for(let r of e)t=t.next(e=>e?eo.resolve(e):r());return t}static forEach(e,t){let r=[];return e.forEach((e,n)=>{r.push(t.call(this,e,n))}),this.waitFor(r)}static mapArray(e,t){return new eo((r,n)=>{let i=e.length,a=Array(i),s=0;for(let o=0;o<i;o++){let c=o;t(e[c]).next(e=>{a[c]=e,++s===i&&r(a)},e=>n(e))}})}static doWhile(e,t){return new eo((r,n)=>{let i=()=>{!0===e()?t().next(()=>{i()},n):r()};i()})}}function ec(e){return"IndexedDbTransactionError"===e.name}/** 1702 * @license 1703 * Copyright 2018 Google LLC 1704 * 1705 * Licensed under the Apache License, Version 2.0 (the "License");
1706 * you may not use this file except in compliance with the License. 1707 * You may obtain a copy of the License at 1708 * 1709 * http://www.apache.org/licenses/LICENSE-2.0 1710 * 1711 * Unless required by applicable law or agreed to in writing, software 1712 * distributed under the License is distributed on an "AS IS" BASIS, 1713 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1714 * See the License for the specific language governing permissions and 1715 * limitations under the License. 1716 */class eu{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(){let e=++this.previousValue;return this.se&&this.se(e),e}}function el(e){return 0===e&&1/e==-1/0}/** 1717 * @license 1718 * Copyright 2017 Google LLC 1719 * 1720 * Licensed under the Apache License, Version 2.0 (the "License"); 1721 * you may not use this file except in compliance with the License. 1722 * You may obtain a copy of the License at 1723 * 1724 * http://www.apache.org/licenses/LICENSE-2.0 1725 * 1726 * Unless required by applicable law or agreed to in writing, software 1727 * distributed under the License is distributed on an "AS IS" BASIS, 1728 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1729 * See the License for the specific language governing permissions and 1730 * limitations under the License. 1731 */function eh(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}function eg(e,t){for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(r,e[r])}function ed(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}eu.oe=-1;/** 1732 * @license 1733 * Copyright 2017 Google LLC 1734 * 1735 * Licensed under the Apache License, Version 2.0 (the "License"); 1736 * you may not use this file except in compliance with the License. 1737 * You may obtain a copy of the License at 1738 * 1739 * http://www.apache.org/licenses/LICENSE-2.0 1740 * 1741 * Unless required by applicable law or agreed to in writing, software 1742 * distributed under the License is distributed on an "AS IS" BASIS, 1743 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1744 * See the License for the specific language governing permissions and 1745 * limitations under the License. 1746 */class em{constructor(e,t){this.comparator=e,this.root=t||ey.EMPTY}insert(e,t){return new em(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,ey.BLACK,null,null))}remove(e){return new em(this.comparator,this.root.remove(e,this.comparator).copy(null,null,ey.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){let r=this.comparator(e,t.key);if(0===r)return t.value;r<0?t=t.left:r>0&&(t=t.right)}return null}indexOf(e){let t=0,r=this.root;for(;!r.isEmpty();){let n=this.comparator(e,r.key);if(0===n)return t+r.left.size;n<0?r=r.left:(t+=r.left.size+1,r=r.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(e){this.inorderTraversal((t,r)=>(e(t,r),!1))}toString(){let e=[];return this.inorderTraversal((t,r)=>(e.push(`${t}:${r}`),!1)),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new ep(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new ep(this.root,e,this.comparator,!1)}getReverseIterator(){return new ep(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new ep(this.root,e,this.comparator,!0)}}class ep{constructor(e,t,r,n){this.isReverse=n,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?r(e.key,t):1,t&&n&&(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(),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 this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;let e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class ey{constructor(e,t,r,n,i){this.key=e,this.value=t,this.color=null!=r?r:ey.RED,this.left=null!=n?n:ey.EMPTY,this.right=null!=i?i:ey.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,r,n,i){return new ey(null!=e?e:this.key,null!=t?t:this.value,
1746null!=r?r:this.color,null!=n?n: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,r){let n=this,i=r(e,n.key);return(n=i<0?n.copy(null,null,null,n.left.insert(e,t,r),null):0===i?n.copy(null,t,null,null,null):n.copy(null,null,null,null,n.right.insert(e,t,r))).fixUp()}removeMin(){if(this.left.isEmpty())return ey.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)).fixUp()}remove(e,t){let r,n=this;if(0>t(e,n.key))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 ey.EMPTY;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=(e=e.copy(null,null,null,null,e.right.rotateRight())).rotateLeft()).colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=(e=e.rotateRight()).colorFlip()),e}rotateLeft(){let e=this.copy(null,null,ey.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){let e=this.copy(null,null,ey.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){let 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(){return Math.pow(2,this.check())<=this.size+1}check(){if(this.isRed()&&this.left.isRed()||this.right.isRed())throw L();let e=this.left.check();if(e!==this.right.check())throw L();return e+(this.isRed()?0:1)}}ey.EMPTY=null,ey.RED=!0,ey.BLACK=!1,ey.EMPTY=new class{constructor(){this.size=0}get key(){throw L()}get value(){throw L()}get color(){throw L()}get left(){throw L()}get right(){throw L()}copy(e,t,r,n,i){return this}insert(e,t,r){return new ey(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}};/** 1747 * @license 1748 * Copyright 2017 Google LLC 1749 * 1750 * Licensed under the Apache License, Version 2.0 (the "License"); 1751 * you may not use this file except in compliance with the License. 1752 * You may obtain a copy of the License at 1753 * 1754 * http://www.apache.org/licenses/LICENSE-2.0 1755 * 1756 * Unless required by applicable law or agreed to in writing, software 1757 * distributed under the License is distributed on an "AS IS" BASIS, 1758 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1759 * See the License for the specific language governing permissions and 1760 * limitations under the License. 1761 */class ef{constructor(e){this.comparator=e,this.data=new em(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(e){this.data.inorderTraversal((t,r)=>(e(t),!1))}forEachInRange(e,t){let r=this.data.getIteratorFrom(e[0]);for(;r.hasNext();){let n=r.getNext();if(this.comparator(n.key,e[1])>=0)return;t(n.key)}}forEachWhile(e,t){let r;for(r=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();r.hasNext();)if(!e(r.getNext().key))return}firstAfterOrEqual(e){let t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new ev(this.data.getIterator())}getIteratorFrom(e){return new ev(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;
1761return t.size<e.size&&(t=e,e=this),e.forEach(e=>{t=t.add(e)}),t}isEqual(e){if(!(e instanceof ef)||this.size!==e.size)return!1;let t=this.data.getIterator(),r=e.data.getIterator();for(;t.hasNext();){let e=t.getNext().key,n=r.getNext().key;if(0!==this.comparator(e,n))return!1}return!0}toArray(){let e=[];return this.forEach(t=>{e.push(t)}),e}toString(){let e=[];return this.forEach(t=>e.push(t)),"SortedSet("+e.toString()+")"}copy(e){let t=new ef(this.comparator);return t.data=e,t}}class ev{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}/** 1762 * @license 1763 * Copyright 2020 Google LLC 1764 * 1765 * Licensed under the Apache License, Version 2.0 (the "License"); 1766 * you may not use this file except in compliance with the License. 1767 * You may obtain a copy of the License at 1768 * 1769 * http://www.apache.org/licenses/LICENSE-2.0 1770 * 1771 * Unless required by applicable law or agreed to in writing, software 1772 * distributed under the License is distributed on an "AS IS" BASIS, 1773 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1774 * See the License for the specific language governing permissions and 1775 * limitations under the License. 1776 */class e_{constructor(e){this.fields=e,e.sort(et.comparator)}static empty(){return new e_([])}unionWith(e){let t=new ef(et.comparator);for(let e of this.fields)t=t.add(e);for(let r of e)t=t.add(r);return new e_(t.toArray())}covers(e){for(let t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return J(this.fields,e.fields,(e,t)=>e.isEqual(t))}}/** 1777 * @license 1778 * Copyright 2023 Google LLC 1779 * 1780 * Licensed under the Apache License, Version 2.0 (the "License"); 1781 * you may not use this file except in compliance with the License. 1782 * You may obtain a copy of the License at 1783 * 1784 * http://www.apache.org/licenses/LICENSE-2.0 1785 * 1786 * Unless required by applicable law or agreed to in writing, software 1787 * distributed under the License is distributed on an "AS IS" BASIS, 1788 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1789 * See the License for the specific language governing permissions and 1790 * limitations under the License. 1791 */class ew extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}/** 1792 * @license 1793 * Copyright 2020 Google LLC 1794 * 1795 * Licensed under the Apache License, Version 2.0 (the "License"); 1796 * you may not use this file except in compliance with the License. 1797 * You may obtain a copy of the License at 1798 * 1799 * http://www.apache.org/licenses/LICENSE-2.0 1800 * 1801 * Unless required by applicable law or agreed to in writing, software 1802 * distributed under the License is distributed on an "AS IS" BASIS, 1803 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1804 * See the License for the specific language governing permissions and 1805 * limitations under the License. 1806 */class ek{constructor(e){this.binaryString=e}static fromBase64String(e){return new ek(function(e){try{return atob(e)}catch(e){throw"undefined"!=typeof DOMException&&e instanceof DOMException?new ew("Invalid base64 string: "+e):e}}(e))}static fromUint8Array(e){return new ek(function(e){let t="";for(let r=0;r<e.length;++r)t+=String.fromCharCode(e[r]);return t}(e))}[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 btoa(this.binaryString)}toUint8Array(){return function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t}(this.binaryString)}approximateByteSize(){return 2*this.binaryString.length}compareTo(e){return $(this.binaryString,e.binaryString)}isEqual(e){return this.binaryString===e.binaryString}}ek.EMPTY_BYTE_STRING=new ek("");let eP=new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);function eb(e){if(e||L(),"string"==typeof e){let t=0,r=eP.exec(e);if(r||L(),r[1]){let e=r[1];t=Number(e=(e+"000000000").substr(0,9))}return{seconds:Math.floor(new Date(e).getTime()/1e3),nanos:t}}return{seconds:eE(e.seconds),nanos:eE(e.nanos)}}function eE(e){return"number"==typeof e?e:"string"==typeof e?Number(e):0}function eR(e){return"string"==typeof e?ek.fromBase64String(e):ek.fromUint8Array(e)}/** 1807 * @license 1808 * Copyright 2020 Google LLC 1809 * 1810 * Licensed under the Apache License, Version 2.0 (the "License");
1811 * you may not use this file except in compliance with the License. 1812 * You may obtain a copy of the License at 1813 * 1814 * http://www.apache.org/licenses/LICENSE-2.0 1815 * 1816 * Unless required by applicable law or agreed to in writing, software 1817 * distributed under the License is distributed on an "AS IS" BASIS, 1818 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1819 * See the License for the specific language governing permissions and 1820 * limitations under the License. 1821 */function eS(e){var t,r;return"server_timestamp"===(null===(r=((null===(t=null==e?void 0:e.mapValue)||void 0===t?void 0:t.fields)||{}).__type__)||void 0===r?void 0:r.stringValue)}function eI(e){let t=e.mapValue.fields.__previous_value__;return eS(t)?eI(t):t}function eT(e){let t=eb(e.mapValue.fields.__local_write_time__.timestampValue);return new Q(t.seconds,t.nanos)}/** 1822 * @license 1823 * Copyright 2017 Google LLC 1824 * 1825 * Licensed under the Apache License, Version 2.0 (the "License"); 1826 * you may not use this file except in compliance with the License. 1827 * You may obtain a copy of the License at 1828 * 1829 * http://www.apache.org/licenses/LICENSE-2.0 1830 * 1831 * Unless required by applicable law or agreed to in writing, software 1832 * distributed under the License is distributed on an "AS IS" BASIS, 1833 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1834 * See the License for the specific language governing permissions and 1835 * limitations under the License. 1836 */class eC{constructor(e,t,r,n,i,a,s,o,c){this.databaseId=e,this.appId=t,this.persistenceKey=r,this.host=n,this.ssl=i,this.forceLongPolling=a,this.autoDetectLongPolling=s,this.longPollingOptions=o,this.useFetchStreams=c}}class eH{constructor(e,t){this.projectId=e,this.database=t||"(default)"}static empty(){return new eH("","")}get isDefaultDatabase(){return"(default)"===this.database}isEqual(e){return e instanceof eH&&e.projectId===this.projectId&&e.database===this.database}}/** 1837 * @license 1838 * Copyright 2020 Google LLC 1839 * 1840 * Licensed under the Apache License, Version 2.0 (the "License"); 1841 * you may not use this file except in compliance with the License. 1842 * You may obtain a copy of the License at 1843 * 1844 * http://www.apache.org/licenses/LICENSE-2.0 1845 * 1846 * Unless required by applicable law or agreed to in writing, software 1847 * distributed under the License is distributed on an "AS IS" BASIS, 1848 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1849 * See the License for the specific language governing permissions and 1850 * limitations under the License. 1851 */let eW={mapValue:{fields:{__type__:{stringValue:"__max__"}}}};function eA(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?eS(e)?4:ez(e)?9007199254740991:ej(e)?10:11:L()}function eD(e,t){if(e===t)return!0;let r=eA(e);if(r!==eA(t))return!1;switch(r){case 0:case 9007199254740991:return!0;case 1:return e.booleanValue===t.booleanValue;case 4:return eT(e).isEqual(eT(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;let r=eb(e.timestampValue),n=eb(t.timestampValue);return r.seconds===n.seconds&&r.nanos===n.nanos}(e,t);case 5:return e.stringValue===t.stringValue;case 6:return eR(e.bytesValue).isEqual(eR(t.bytesValue));case 7:return e.referenceValue===t.referenceValue;case 8:return eE(e.geoPointValue.latitude)===eE(t.geoPointValue.latitude)&&eE(e.geoPointValue.longitude)===eE(t.geoPointValue.longitude);case 2:return function(e,t){if("integerValue"in e&&"integerValue"in t)return eE(e.integerValue)===eE(t.integerValue);if("doubleValue"in e&&"doubleValue"in t){let r=eE(e.doubleValue),n=eE(t.doubleValue);return r===n?el(r)===el(n):isNaN(r)&&isNaN(n)}return!1}(e,t);case 9:return J(e.arrayValue.values||[],t.arrayValue.values||[],eD);case 10:case 11:return function(e,t){let r=e.mapValue.fields||{},n=t.mapValue.fields||{};if(eh(r)!==eh(n))return!1;for(let e in r)if(r.hasOwnProperty(e)&&(void 0===n[e]||!eD(r[e],n[e])))return!1;return!0}(e,t);default:return L()}}function eU(e,t){return void 0!==(e.values||[]).find(e=>eD(e,t))}function eL(e,t){if(e===t)return 0;let r=eA(e),n=eA(t);if(r!==n)return $(r,n);switch(r){case 0:case 9007199254740991:return 0;case 1:return $(e.booleanValue,t.booleanValue);case 2:return function(e,t){let r=eE(e.integerValue||e.doubleValue),n=eE(t.integerValue||t.doubleValue);return r<n?-1:r>n?1:r===n?0:isNaN(r)?isNaN(n)?0:-1:1}(e,t);case 3:return eO(e.timestampValue,t.timestampValue);case 4:return eO(eT(e),eT(t));case 5:return $(e.stringValue,t.stringValue);case 6:return function(e,t){let r=eR(e),n=eR(t);return r.compareTo(n)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){let r=e.split("/"),n=t.split("/");for(let e=0;e<r.length&&e<n.length;e++){let t=$(r[e],n[e]);if(0!==t)return t}return $(r.length,n.length)}(e.referenceValue,t.referenceValue);case 8:return function(e,t){let r=$(eE(e.latitude),eE(t.latitude));return 0!==r?r:$(eE(e.longitude),eE(t.longitude))}(e.geoPointValue,t.geoPointValue);case 9:return eN(e.arrayValue,t.arrayValue);case 10:return function(e,t){var r,n,i,a;let s=e.fields||{},o=t.fields||{},c=null===(r=s.value)||void 0===r?void 0:r.arrayValue,u=null===(n=o.value)||void 0===n?void 0:n.arrayValue,l=$((null===(i=null==c?void 0:c.values)||void 0===i?void 0:i.length)||0,(null===(a=null==u?void 0:u.values)||void 0===a?void 0:a.length)||0);return 0!==l?l:eN(c,u)}(e.mapValue,t.mapValue);case 11:return function(e,t){if(e===eW.mapValue&&t===eW.mapValue)return 0;if(e===eW.mapValue)return 1;if(t===eW.mapValue)return -1;let r=e.fields||{},n=Object.keys(r),i=t.fields||{},a=Object.keys(i);n.sort(),a.sort();for(let e=0;e<n.length&&e<a.length;++e){let t=$(n[e],a[e]);if(0!==t)return t;let s=eL(r[n[e]],i[a[e]]);if(0!==s)return s}return $(n.length,a.length)}(e.mapValue,t.mapValue);default:throw L()}}function eO(e,t){if("string"==typeof e&&"string"==typeof t&&e.length===t.length)return $(e,t);let r=eb(e),n=eb(t),i=$(r.seconds,n.seconds);return 0!==i?i:$(r.nanos,n.nanos)}function eN(e,t){let r=e.values||[],n=t.values||[];for(let e=0;e<r.length&&e<n.length;++e){let t=eL(r[e],n[e]);if(t)return t}return $(r.length,n.length)}function eK(e){var t,r;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){let t=eb(e);return`time(${t.seconds},${t.nanos})`}(e.timestampValue):"stringValue"in e?e.stringValue:"bytesValue"in e?eR(e.bytesValue).toBase64():"referenceValue"in e?(t=e.referenceValue,er.fromName(t).toString()):"geoPointValue"in e?(r=e.geoPointValue,`geo(${r.latitude},${r.longitude})`):"arrayValue"in e?function(e){let t="[",r=!0;for(let n of e.values||[])r?r=!1:t+=",",t+=eK(n);return t+"]"}(e.arrayValue):"mapValue"in e?function(e){let t=Object.keys(e.fields||{}).sort(),r="{",n=!0;for(let i of t)n?n=!1:r+=",",r+=`${i}:${eK(e.fields[i])}`;return r+"}"}(e.mapValue):L()}function ex(e,t){return{referenceValue:`projects/${e.projectId}/databases/${e.database}/documents/${t.path.canonicalString()}`}}function eM(e){return!!e&&"integerValue"in e}function eF(e){return!!e&&"arrayValue"in e}function eB(e){return!!e&&"nullValue"in e}function eV(e){return!!e&&"doubleValue"in e&&isNaN(Number(e.doubleValue))}function eq(e){return!!e&&"mapValue"in e}function ej(e){var t,r;return"__vector__"===(null===(r=((null===(t=null==e?void 0:e.mapValue)||void 0===t?void 0:t.fields)||{}).__type__)||void 0===r?void 0:r.stringValue)}function eG(e){if(e.geoPointValue)return{geoPointValue:Object.assign({},e.geoPointValue)};if(e.timestampValue&&"object"==typeof e.timestampValue)return{timestampValue:Object.assign({},e.timestampValue)};if(e.mapValue){let t={mapValue:{fields:{}}};return eg(e.mapValue.fields,(e,r)=>t.mapValue.fields[e]=eG(r)),t}if(e.arrayValue){let t={arrayValue:{values:[]}};for(let r=0;r<(e.arrayValue.values||[]).length;++r)t.arrayValue.values[r]=eG(e.arrayValue.values[r]);return t}return Object.assign({},e)}function ez(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}/** 1852 * @license 1853 * Copyright 2017 Google LLC 1854 * 1855 * Licensed under the Apache License, Version 2.0 (the "License");
1856 * you may not use this file except in compliance with the License. 1857 * You may obtain a copy of the License at 1858 * 1859 * http://www.apache.org/licenses/LICENSE-2.0 1860 * 1861 * Unless required by applicable law or agreed to in writing, software 1862 * distributed under the License is distributed on an "AS IS" BASIS, 1863 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1864 * See the License for the specific language governing permissions and 1865 * limitations under the License. 1866 */class e${constructor(e){this.value=e}static empty(){return new e$({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let r=0;r<e.length-1;++r)if(!eq(t=(t.mapValue.fields||{})[e.get(r)]))return null;return(t=(t.mapValue.fields||{})[e.lastSegment()])||null}}set(e,t){this.getFieldsMap(e.popLast())[e.lastSegment()]=eG(t)}setAll(e){let t=et.emptyPath(),r={},n=[];e.forEach((e,i)=>{if(!t.isImmediateParentOf(i)){let e=this.getFieldsMap(t);this.applyChanges(e,r,n),r={},n=[],t=i.popLast()}e?r[i.lastSegment()]=eG(e):n.push(i.lastSegment())});let i=this.getFieldsMap(t);this.applyChanges(i,r,n)}delete(e){let t=this.field(e.popLast());eq(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return eD(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let r=0;r<e.length;++r){let n=t.mapValue.fields[e.get(r)];eq(n)&&n.mapValue.fields||(n={mapValue:{fields:{}}},t.mapValue.fields[e.get(r)]=n),t=n}return t.mapValue.fields}applyChanges(e,t,r){for(let n of(eg(t,(t,r)=>e[t]=r),r))delete e[n]}clone(){return new e$(eG(this.value))}}/** 1867 * @license 1868 * Copyright 2017 Google LLC 1869 * 1870 * Licensed under the Apache License, Version 2.0 (the "License"); 1871 * you may not use this file except in compliance with the License. 1872 * You may obtain a copy of the License at 1873 * 1874 * http://www.apache.org/licenses/LICENSE-2.0 1875 * 1876 * Unless required by applicable law or agreed to in writing, software 1877 * distributed under the License is distributed on an "AS IS" BASIS, 1878 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1879 * See the License for the specific language governing permissions and 1880 * limitations under the License. 1881 */class eJ{constructor(e,t,r,n,i,a,s){this.key=e,this.documentType=t,this.version=r,this.readTime=n,this.createTime=i,this.data=a,this.documentState=s}static newInvalidDocument(e){return new eJ(e,0,X.min(),X.min(),X.min(),e$.empty(),0)}static newFoundDocument(e,t,r,n){return new eJ(e,1,t,X.min(),r,n,0)}static newNoDocument(e,t){return new eJ(e,2,t,X.min(),X.min(),e$.empty(),0)}static newUnknownDocument(e,t){return new eJ(e,3,t,X.min(),X.min(),e$.empty(),2)}convertToFoundDocument(e,t){return this.createTime.isEqual(X.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=e$.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=e$.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=X.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 eJ&&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 eJ(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}})`}}
1881/** 1882 * @license 1883 * Copyright 2022 Google LLC 1884 * 1885 * Licensed under the Apache License, Version 2.0 (the "License"); 1886 * you may not use this file except in compliance with the License. 1887 * You may obtain a copy of the License at 1888 * 1889 * http://www.apache.org/licenses/LICENSE-2.0 1890 * 1891 * Unless required by applicable law or agreed to in writing, software 1892 * distributed under the License is distributed on an "AS IS" BASIS, 1893 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1894 * See the License for the specific language governing permissions and 1895 * limitations under the License. 1896 */class eQ{constructor(e,t){this.position=e,this.inclusive=t}}function eX(e,t,r){let n=0;for(let i=0;i<e.position.length;i++){let a=t[i],s=e.position[i];if(n=a.field.isKeyField()?er.comparator(er.fromName(s.referenceValue),r.key):eL(s,r.data.field(a.field)),"desc"===a.dir&&(n*=-1),0!==n)break}return n}function eY(e,t){if(null===e)return null===t;if(null===t||e.inclusive!==t.inclusive||e.position.length!==t.position.length)return!1;for(let r=0;r<e.position.length;r++)if(!eD(e.position[r],t.position[r]))return!1;return!0}/** 1897 * @license 1898 * Copyright 2022 Google LLC 1899 * 1900 * Licensed under the Apache License, Version 2.0 (the "License"); 1901 * you may not use this file except in compliance with the License. 1902 * You may obtain a copy of the License at 1903 * 1904 * http://www.apache.org/licenses/LICENSE-2.0 1905 * 1906 * Unless required by applicable law or agreed to in writing, software 1907 * distributed under the License is distributed on an "AS IS" BASIS, 1908 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1909 * See the License for the specific language governing permissions and 1910 * limitations under the License. 1911 */class eZ{constructor(e,t="asc"){this.field=e,this.dir=t}}/** 1912 * @license 1913 * Copyright 2022 Google LLC 1914 * 1915 * Licensed under the Apache License, Version 2.0 (the "License"); 1916 * you may not use this file except in compliance with the License. 1917 * You may obtain a copy of the License at 1918 * 1919 * http://www.apache.org/licenses/LICENSE-2.0 1920 * 1921 * Unless required by applicable law or agreed to in writing, software 1922 * distributed under the License is distributed on an "AS IS" BASIS, 1923 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1924 * See the License for the specific language governing permissions and 1925 * limitations under the License. 1926 */class e1{}class e0 extends e1{constructor(e,t,r){super(),this.field=e,this.op=t,this.value=r}static create(e,t,r){return e.isKeyField()?"in"===t||"not-in"===t?this.createKeyFieldInFilter(e,t,r):new e3(e,t,r):"array-contains"===t?new e7(e,r):"in"===t?new te(e,r):"not-in"===t?new tt(e,r):"array-contains-any"===t?new tr(e,r):new e0(e,t,r)}static createKeyFieldInFilter(e,t,r){return"in"===t?new e6(e,r):new e9(e,r)}matches(e){let t=e.data.field(this.field);return"!="===this.op?null!==t&&this.matchesComparison(eL(t,this.value)):null!==t&&eA(this.value)===eA(t)&&this.matchesComparison(eL(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 e>0;case">=":return e>=0;default:return L()}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class e4 extends e1{constructor(e,t){super(),this.filters=e,this.op=t,this.ae=null}static create(e,t){return new e4(e,t)}matches(e){return e2(this)?void 0===this.filters.find(t=>!t.matches(e)):void 0!==this.filters.find(t=>t.matches(e))}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 e2(e){return"and"===e.op}function e5(e){for(let t of e.filters)if(t instanceof e4)return!1;return!0}class e3 extends e0{constructor(e,t,r){super(e,t,r),this.key=er.fromName(r.referenceValue)}matches(e){let t=er.comparator(e.key,this.key);return this.matchesComparison(t)}}class e6 extends e0{constructor(e,t){super(e,"in",t),this.keys=e8("in",t)}matches(e){return this.keys.some(t=>t.isEqual(e.key))}}class e9 extends e0{constructor(e,t){super(e,"not-in",t),this.keys=e8("not-in",t)}matches(e){return!this.keys.some(t=>t.isEqual(e.key))}}function e8(e,t){var r;return((null===(r=t.arrayValue)||void 0===r?void 0:r.values)||[]).map(e=>er.fromName(e.referenceValue))}class e7 extends e0{constructor(e,t){super(e,"array-contains",t)}matches(e){let t=e.data.field(this.field);return eF(t)&&eU(t.arrayValue,this.value)}}class te extends e0{constructor(e,t){super(e,"in",t)}matches(e){let t=e.data.field(this.field);return null!==t&&eU(this.value.arrayValue,t)}}class tt extends e0{constructor(e,t){super(e,"not-in",t)}matches(e){if(eU(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;let t=e.data.field(this.field);return null!==t&&!eU(this.value.arrayValue,t)}}class tr extends e0{constructor(e,t){super(e,"array-contains-any",t)}matches(e){let t=e.data.field(this.field);return!(!eF(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>eU(this.value.arrayValue,e))}}/** 1927 * @license 1928 * Copyright 2019 Google LLC 1929 * 1930 * Licensed under the Apache License, Version 2.0 (the "License");
1931 * you may not use this file except in compliance with the License. 1932 * You may obtain a copy of the License at 1933 * 1934 * http://www.apache.org/licenses/LICENSE-2.0 1935 * 1936 * Unless required by applicable law or agreed to in writing, software 1937 * distributed under the License is distributed on an "AS IS" BASIS, 1938 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1939 * See the License for the specific language governing permissions and 1940 * limitations under the License. 1941 */class tn{constructor(e,t=null,r=[],n=[],i=null,a=null,s=null){this.path=e,this.collectionGroup=t,this.orderBy=r,this.filters=n,this.limit=i,this.startAt=a,this.endAt=s,this.ue=null}}function ti(e,t=null,r=[],n=[],i=null,a=null,s=null){return new tn(e,t,r,n,i,a,s)}function ta(e){if(null===e.ue){let t=e.path.canonicalString();null!==e.collectionGroup&&(t+="|cg:"+e.collectionGroup),t+="|f:"+e.filters.map(e=>(function e(t){if(t instanceof e0)return t.field.canonicalString()+t.op.toString()+eK(t.value);if(e5(t)&&e2(t))return t.filters.map(t=>e(t)).join(",");{let r=t.filters.map(t=>e(t)).join(",");return`${t.op}(${r})`}})(e)).join(",")+"|ob:"+e.orderBy.map(e=>e.field.canonicalString()+e.dir).join(","),null==e.limit||(t+="|l:"+e.limit),e.startAt&&(t+="|lb:"+(e.startAt.inclusive?"b:":"a:")+e.startAt.position.map(e=>eK(e)).join(",")),e.endAt&&(t+="|ub:"+(e.endAt.inclusive?"a:":"b:")+e.endAt.position.map(e=>eK(e)).join(",")),e.ue=t}return e.ue}function ts(e,t){if(e.limit!==t.limit||e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;i<e.orderBy.length;i++){var r,n;if(r=e.orderBy[i],n=t.orderBy[i],!(r.dir===n.dir&&r.field.isEqual(n.field)))return!1}if(e.filters.length!==t.filters.length)return!1;for(let r=0;r<e.filters.length;r++)if(!function e(t,r){return t instanceof e0?r instanceof e0&&t.op===r.op&&t.field.isEqual(r.field)&&eD(t.value,r.value):t instanceof e4?r instanceof e4&&t.op===r.op&&t.filters.length===r.filters.length&&t.filters.reduce((t,n,i)=>t&&e(n,r.filters[i]),!0):void L()}(e.filters[r],t.filters[r]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!eY(e.startAt,t.startAt)&&eY(e.endAt,t.endAt)}function to(e){return er.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}/** 1942 * @license 1943 * Copyright 2017 Google LLC 1944 * 1945 * Licensed under the Apache License, Version 2.0 (the "License"); 1946 * you may not use this file except in compliance with the License. 1947 * You may obtain a copy of the License at 1948 * 1949 * http://www.apache.org/licenses/LICENSE-2.0 1950 * 1951 * Unless required by applicable law or agreed to in writing, software 1952 * distributed under the License is distributed on an "AS IS" BASIS, 1953 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1954 * See the License for the specific language governing permissions and 1955 * limitations under the License. 1956 */class tc{constructor(e,t=null,r=[],n=[],i=null,a="F",s=null,o=null){this.path=e,this.collectionGroup=t,this.explicitOrderBy=r,this.filters=n,this.limit=i,this.limitType=a,this.startAt=s,this.endAt=o,this.ce=null,this.le=null,this.he=null,this.startAt,this.endAt}}function tu(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 tl(e){return null!==e.collectionGroup}function th(e){if(null===e.ce){let t;e.ce=[];let r=new Set;for(let t of e.explicitOrderBy)e.ce.push(t),r.add(t.field.canonicalString());let n=e.explicitOrderBy.length>0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc";(t=new ef(et.comparator),e.filters.forEach(e=>{e.getFlattenedFilters().forEach(e=>{e.isInequality()&&(t=t.add(e.field))})}),t).forEach(t=>{r.has(t.canonicalString())||t.isKeyField()||e.ce.push(new eZ(t,n))}),r.has(et.keyField().canonicalString())||e.ce.push(new eZ(et.keyField(),n))}return e.ce}function tg(e){return e.le||(e.le=td(e,th(e))),e.le}function td(e,t){if("F"===e.limitType)return ti(e.path,e.collectionGroup,t,e.filters,e.limit,e.startAt,e.endAt);{t=t.map(e=>{let t="desc"===e.dir?"asc":"desc";return new eZ(e.field,t)});let r=e.endAt?new eQ(e.endAt.position,e.endAt.inclusive):null,n=e.startAt?new eQ(e.startAt.position,e.startAt.inclusive):null;return ti(e.path,e.collectionGroup,t,e.filters,e.limit,r,n)}}function tm(e,t){let r=e.filters.concat([t]);return new tc(e.path,e.collectionGroup,e.explicitOrderBy.slice(),r,e.limit,e.limitType,e.startAt,e.endAt)}function tp(e,t,r){return new tc(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,r,e.startAt,e.endAt)}function ty(e,t){return ts(tg(e),tg(t))&&e.limitType===t.limitType}function tf(e){return`${ta(tg(e))}|lt:${e.limitType}`}function tv(e){var t;let r;return`Query(target=${r=(t=tg(e)).path.canonicalString(),null!==t.collectionGroup&&(r+=" collectionGroup="+t.collectionGroup),t.filters.length>0&&(r+=`, filters: [${t.filters.map(e=>(function e(t){return t instanceof e0?`${t.field.canonicalString()} ${t.op} ${eK(t.value)}`:t instanceof e4?t.op.toString()+" {"+t.getFilters().map(e).join(" ,")+"}":"Filter"})(e)).join(", ")}]`),null==t.limit||(r+=", limit: "+t.limit),t.orderBy.length>0&&(r+=`, orderBy: [${t.orderBy.map(e=>`${e.field.canonicalString()} (${e.dir})`).join(", ")}]`),t.startAt&&(r+=", startAt: "+(t.startAt.inclusive?"b:":"a:")+t.startAt.position.map(e=>eK(e)).join(",")),t.endAt&&(r+=", endAt: "+(t.endAt.inclusive?"a:":"b:")+t.endAt.position.map(e=>eK(e)).join(",")),`Target(${r})`}; limitType=${e.limitType})`}function t_(e,t){return t.isFoundDocument()&&function(e,t){let r=t.key.path;return null!==e.collectionGroup?t.key.hasCollectionId(e.collectionGroup)&&e.path.isPrefixOf(r):er.isDocumentKey(e.path)?e.path.isEqual(r):e.path.isImmediateParentOf(r)}(e,t)&&function(e,t){for(let r of th(e))if(!r.field.isKeyField()&&null===t.data.field(r.field))return!1;return!0}(e,t)&&function(e,t){for(let r of e.filters)if(!r.matches(t))return!1;return!0}(e,t)&&(!e.startAt||!!function(e,t,r){let n=eX(e,t,r);return e.inclusive?n<=0:n<0}(e.startAt,th(e),t))&&(!e.endAt||!!function(e,t,r){let n=eX(e,t,r);return e.inclusive?n>=0:n>0}(e.endAt,th(e),t))}function tw(e){return(t,r)=>{let n=!1;for(let i of th(e)){let e=function(e,t,r){let n=e.field.isKeyField()?er.comparator(t.key,r.key):function(e,t,r){let n=t.data.field(e),i=r.data.field(e);return null!==n&&null!==i?eL(n,i):L()}(e.field,t,r);switch(e.dir){case"asc":return n;
1956case"desc":return -1*n;default:return L()}}(i,t,r);if(0!==e)return e;n=n||i.field.isKeyField()}return 0}}/** 1957 * @license 1958 * Copyright 2017 Google LLC 1959 * 1960 * Licensed under the Apache License, Version 2.0 (the "License"); 1961 * you may not use this file except in compliance with the License. 1962 * You may obtain a copy of the License at 1963 * 1964 * http://www.apache.org/licenses/LICENSE-2.0 1965 * 1966 * Unless required by applicable law or agreed to in writing, software 1967 * distributed under the License is distributed on an "AS IS" BASIS, 1968 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1969 * See the License for the specific language governing permissions and 1970 * limitations under the License. 1971 */class tk{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){let t=this.mapKeyFn(e),r=this.inner[t];if(void 0!==r){for(let[t,n]of r)if(this.equalsFn(t,e))return n}}has(e){return void 0!==this.get(e)}set(e,t){let r=this.mapKeyFn(e),n=this.inner[r];if(void 0===n)return this.inner[r]=[[e,t]],void this.innerSize++;for(let r=0;r<n.length;r++)if(this.equalsFn(n[r][0],e))return void(n[r]=[e,t]);n.push([e,t]),this.innerSize++}delete(e){let t=this.mapKeyFn(e),r=this.inner[t];if(void 0===r)return!1;for(let n=0;n<r.length;n++)if(this.equalsFn(r[n][0],e))return 1===r.length?delete this.inner[t]:r.splice(n,1),this.innerSize--,!0;return!1}forEach(e){eg(this.inner,(t,r)=>{for(let[t,n]of r)e(t,n)})}isEmpty(){return ed(this.inner)}size(){return this.innerSize}}/** 1972 * @license 1973 * Copyright 2017 Google LLC 1974 * 1975 * Licensed under the Apache License, Version 2.0 (the "License"); 1976 * you may not use this file except in compliance with the License. 1977 * You may obtain a copy of the License at 1978 * 1979 * http://www.apache.org/licenses/LICENSE-2.0 1980 * 1981 * Unless required by applicable law or agreed to in writing, software 1982 * distributed under the License is distributed on an "AS IS" BASIS, 1983 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1984 * See the License for the specific language governing permissions and 1985 * limitations under the License. 1986 */let tP=new em(er.comparator),tb=new em(er.comparator);function tE(...e){let t=tb;for(let r of e)t=t.insert(r.key,r);return t}function tR(e){let t=tb;return e.forEach((e,r)=>t=t.insert(e,r.overlayedDocument)),t}function tS(){return new tk(e=>e.toString(),(e,t)=>e.isEqual(t))}let tI=new em(er.comparator),tT=new ef(er.comparator);function tC(...e){let t=tT;for(let r of e)t=t.add(r);return t}let tH=new ef($);/** 1987 * @license 1988 * Copyright 2020 Google LLC 1989 * 1990 * Licensed under the Apache License, Version 2.0 (the "License"); 1991 * you may not use this file except in compliance with the License. 1992 * You may obtain a copy of the License at 1993 * 1994 * http://www.apache.org/licenses/LICENSE-2.0 1995 * 1996 * Unless required by applicable law or agreed to in writing, software 1997 * distributed under the License is distributed on an "AS IS" BASIS, 1998 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1999 * See the License for the specific language governing permissions and 2000 * limitations under the License. 2001 */function tW(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:el(t)?"-0":t}}function tA(e){return{integerValue:""+e}}/** 2002 * @license 2003 * Copyright 2018 Google LLC 2004 * 2005 * Licensed under the Apache License, Version 2.0 (the "License"); 2006 * you may not use this file except in compliance with the License. 2007 * You may obtain a copy of the License at 2008 * 2009 * http://www.apache.org/licenses/LICENSE-2.0 2010 * 2011 * Unless required by applicable law or agreed to in writing, software 2012 * distributed under the License is distributed on an "AS IS" BASIS, 2013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2014 * See the License for the specific language governing permissions and 2015 * limitations under the License. 2016 */class tD{constructor(){this._=void 0}}function tU(e,t){return e instanceof tM?eM(t)||t&&"doubleValue"in t?t:{integerValue:0}:null}class tL extends tD{}class tO extends tD{constructor(e){super(),this.elements=e}}function tN(e,t){let r=tB(t);for(let t of e.elements)r.some(e=>eD(e,t))||r.push(t);return{arrayValue:{values:r}}}class tK extends tD{constructor(e){super(),this.elements=e}}function tx(e,t){let r=tB(t);for(let t of e.elements)r=r.filter(e=>!eD(e,t));return{arrayValue:{values:r}}}
2016class tM extends tD{constructor(e,t){super(),this.serializer=e,this.Pe=t}}function tF(e){return eE(e.integerValue||e.doubleValue)}function tB(e){return eF(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}/** 2017 * @license 2018 * Copyright 2017 Google LLC 2019 * 2020 * Licensed under the Apache License, Version 2.0 (the "License"); 2021 * you may not use this file except in compliance with the License. 2022 * You may obtain a copy of the License at 2023 * 2024 * http://www.apache.org/licenses/LICENSE-2.0 2025 * 2026 * Unless required by applicable law or agreed to in writing, software 2027 * distributed under the License is distributed on an "AS IS" BASIS, 2028 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2029 * See the License for the specific language governing permissions and 2030 * limitations under the License. 2031 */class tV{constructor(e,t){this.field=e,this.transform=t}}class tq{constructor(e,t){this.version=e,this.transformResults=t}}class tj{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new tj}static exists(e){return new tj(void 0,e)}static updateTime(e){return new tj(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 tG(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class tz{}function t$(e,t){if(!e.hasLocalMutations||t&&0===t.fields.length)return null;if(null===t)return e.isNoDocument()?new t4(e.key,tj.none()):new tX(e.key,e.data,tj.none());{let r=e.data,n=e$.empty(),i=new ef(et.comparator);for(let e of t.fields)if(!i.has(e)){let t=r.field(e);null===t&&e.length>1&&(e=e.popLast(),t=r.field(e)),null===t?n.delete(e):n.set(e,t),i=i.add(e)}return new tY(e.key,n,new e_(i.toArray()),tj.none())}}function tJ(e,t,r,n){return e instanceof tX?function(e,t,r,n){if(!tG(e.precondition,t))return r;let i=e.value.clone(),a=t0(e.fieldTransforms,n,t);return i.setAll(a),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null}(e,t,r,n):e instanceof tY?function(e,t,r,n){if(!tG(e.precondition,t))return r;let i=t0(e.fieldTransforms,n,t),a=t.data;return(a.setAll(tZ(e)),a.setAll(i),t.convertToFoundDocument(t.version,a).setHasLocalMutations(),null===r)?null:r.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map(e=>e.field))}(e,t,r,n):tG(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):r}function tQ(e,t){var r,n;return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(r=e.fieldTransforms,n=t.fieldTransforms,!!(void 0===r&&void 0===n||!(!r||!n)&&J(r,n,(e,t)=>{var r,n;return e.field.isEqual(t.field)&&(r=e.transform,n=t.transform,r instanceof tO&&n instanceof tO||r instanceof tK&&n instanceof tK?J(r.elements,n.elements,eD):r instanceof tM&&n instanceof tM?eD(r.Pe,n.Pe):r instanceof tL&&n instanceof tL)})))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask))}class tX extends tz{constructor(e,t,r,n=[]){super(),this.key=e,this.value=t,this.precondition=r,this.fieldTransforms=n,this.type=0}getFieldMask(){return null}}class tY extends tz{constructor(e,t,r,n,i=[]){super(),this.key=e,this.data=t,this.fieldMask=r,this.precondition=n,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function tZ(e){let t=new Map;return e.fieldMask.fields.forEach(r=>{if(!r.isEmpty()){let n=e.data.field(r);t.set(r,n)}}),t}function t1(e,t,r){var n;let i=new Map;e.length===r.length||L();for(let a=0;a<r.length;a++){let s=e[a],o=s.transform,c=t.data.field(s.field);i.set(s.field,(n=r[a],o instanceof tO?tN(o,c):o instanceof tK?tx(o,c):n))}return i}function t0(e,t,r){let n=new Map;for(let i of e){let e=i.transform,a=r.data.field(i.field);n.set(i.field,e instanceof tL?function(e,t){let r={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:e.seconds,nanos:e.nanoseconds}}}};return t&&eS(t)&&(t=eI(t)),t&&(r.fields.__previous_value__=t),{mapValue:r}}(t,a):e instanceof tO?tN(e,a):e instanceof tK?tx(e,a):function(e,t){let r=tU(e,t),n=tF(r)+tF(e.Pe);return eM(r)&&eM(e.Pe)?tA(n):tW(e.serializer,n)}(e,a))}return n}class t4 extends tz{constructor(e,t){super(),this.key=e,this.prec
2031ondition=t,this.type=2,this.fieldTransforms=[]}getFieldMask(){return null}}class t2 extends tz{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=3,this.fieldTransforms=[]}getFieldMask(){return null}}/** 2032 * @license 2033 * Copyright 2017 Google LLC 2034 * 2035 * Licensed under the Apache License, Version 2.0 (the "License"); 2036 * you may not use this file except in compliance with the License. 2037 * You may obtain a copy of the License at 2038 * 2039 * http://www.apache.org/licenses/LICENSE-2.0 2040 * 2041 * Unless required by applicable law or agreed to in writing, software 2042 * distributed under the License is distributed on an "AS IS" BASIS, 2043 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2044 * See the License for the specific language governing permissions and 2045 * limitations under the License. 2046 */class t5{constructor(e,t,r,n){this.batchId=e,this.localWriteTime=t,this.baseMutations=r,this.mutations=n}applyToRemoteDocument(e,t){let r=t.mutationResults;for(let t=0;t<this.mutations.length;t++){let i=this.mutations[t];if(i.key.isEqual(e.key)){var n;n=r[t],i instanceof tX?function(e,t,r){let n=e.value.clone(),i=t1(e.fieldTransforms,t,r.transformResults);n.setAll(i),t.convertToFoundDocument(r.version,n).setHasCommittedMutations()}(i,e,n):i instanceof tY?function(e,t,r){if(!tG(e.precondition,t))return void t.convertToUnknownDocument(r.version);let n=t1(e.fieldTransforms,t,r.transformResults),i=t.data;i.setAll(tZ(e)),i.setAll(n),t.convertToFoundDocument(r.version,i).setHasCommittedMutations()}(i,e,n):function(e,t,r){t.convertToNoDocument(r.version).setHasCommittedMutations()}(0,e,n)}}}applyToLocalView(e,t){for(let r of this.baseMutations)r.key.isEqual(e.key)&&(t=tJ(r,e,t,this.localWriteTime));for(let r of this.mutations)r.key.isEqual(e.key)&&(t=tJ(r,e,t,this.localWriteTime));return t}applyToLocalDocumentSet(e,t){let r=tS();return this.mutations.forEach(n=>{let i=e.get(n.key),a=i.overlayedDocument,s=this.applyToLocalView(a,i.mutatedFields),o=t$(a,s=t.has(n.key)?null:s);null!==o&&r.set(n.key,o),a.isValidDocument()||a.convertToNoDocument(X.min())}),r}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),tC())}isEqual(e){return this.batchId===e.batchId&&J(this.mutations,e.mutations,(e,t)=>tQ(e,t))&&J(this.baseMutations,e.baseMutations,(e,t)=>tQ(e,t))}}class t3{constructor(e,t,r,n){this.batch=e,this.commitVersion=t,this.mutationResults=r,this.docVersions=n}static from(e,t,r){e.mutations.length===r.length||L();let n=tI,i=e.mutations;for(let e=0;e<i.length;e++)n=n.insert(i[e].key,r[e].version);return new t3(e,t,r,n)}}/** 2047 * @license 2048 * Copyright 2022 Google LLC 2049 * 2050 * Licensed under the Apache License, Version 2.0 (the "License"); 2051 * you may not use this file except in compliance with the License. 2052 * You may obtain a copy of the License at 2053 * 2054 * http://www.apache.org/licenses/LICENSE-2.0 2055 * 2056 * Unless required by applicable law or agreed to in writing, software 2057 * distributed under the License is distributed on an "AS IS" BASIS, 2058 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2059 * See the License for the specific language governing permissions and 2060 * limitations under the License. 2061 */class t6{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{ 2062 largestBatchId: ${this.largestBatchId}, 2063 mutation: ${this.mutation.toString()} 2064 }`}}/** 2065 * @license 2066 * Copyright 2023 Google LLC 2067 * 2068 * Licensed under the Apache License, Version 2.0 (the "License"); 2069 * you may not use this file except in compliance with the License. 2070 * You may obtain a copy of the License at 2071 * 2072 * http://www.apache.org/licenses/LICENSE-2.0 2073 * 2074 * Unless required by applicable law or agreed to in writing, software 2075 * distributed under the License is distributed on an "AS IS" BASIS, 2076 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2077 * See the License for the specific language governing permissions and 2078 * limitations under the License. 2079 */class t9{constructor(e,t,r){this.alias=e,this.aggregateType=t,this.fieldPath=r}}/** 2080 * @license 2081 * Copyright 2017 Google LLC 2082 * 2083 * Licensed under the Apache License, Version 2.0 (the "License");
2084 * you may not use this file except in compliance with the License. 2085 * You may obtain a copy of the License at 2086 * 2087 * http://www.apache.org/licenses/LICENSE-2.0 2088 * 2089 * Unless required by applicable law or agreed to in writing, software 2090 * distributed under the License is distributed on an "AS IS" BASIS, 2091 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2092 * See the License for the specific language governing permissions and 2093 * limitations under the License. 2094 */class t8{constructor(e,t){this.count=e,this.unchangedNames=t}}function t7(e){if(void 0===e)return A("GRPC error has no .code"),O.UNKNOWN;switch(e){case d.OK:return O.OK;case d.CANCELLED:return O.CANCELLED;case d.UNKNOWN:return O.UNKNOWN;case d.DEADLINE_EXCEEDED:return O.DEADLINE_EXCEEDED;case d.RESOURCE_EXHAUSTED:return O.RESOURCE_EXHAUSTED;case d.INTERNAL:return O.INTERNAL;case d.UNAVAILABLE:return O.UNAVAILABLE;case d.UNAUTHENTICATED:return O.UNAUTHENTICATED;case d.INVALID_ARGUMENT:return O.INVALID_ARGUMENT;case d.NOT_FOUND:return O.NOT_FOUND;case d.ALREADY_EXISTS:return O.ALREADY_EXISTS;case d.PERMISSION_DENIED:return O.PERMISSION_DENIED;case d.FAILED_PRECONDITION:return O.FAILED_PRECONDITION;case d.ABORTED:return O.ABORTED;case d.OUT_OF_RANGE:return O.OUT_OF_RANGE;case d.UNIMPLEMENTED:return O.UNIMPLEMENTED;case d.DATA_LOSS:return O.DATA_LOSS;default:return L()}}(m=d||(d={}))[m.OK=0]="OK",m[m.CANCELLED=1]="CANCELLED",m[m.UNKNOWN=2]="UNKNOWN",m[m.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",m[m.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",m[m.NOT_FOUND=5]="NOT_FOUND",m[m.ALREADY_EXISTS=6]="ALREADY_EXISTS",m[m.PERMISSION_DENIED=7]="PERMISSION_DENIED",m[m.UNAUTHENTICATED=16]="UNAUTHENTICATED",m[m.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",m[m.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",m[m.ABORTED=10]="ABORTED",m[m.OUT_OF_RANGE=11]="OUT_OF_RANGE",m[m.UNIMPLEMENTED=12]="UNIMPLEMENTED",m[m.INTERNAL=13]="INTERNAL",m[m.UNAVAILABLE=14]="UNAVAILABLE",m[m.DATA_LOSS=15]="DATA_LOSS";/** 2095 * @license 2096 * Copyright 2022 Google LLC 2097 * 2098 * Licensed under the Apache License, Version 2.0 (the "License"); 2099 * you may not use this file except in compliance with the License. 2100 * You may obtain a copy of the License at 2101 * 2102 * http://www.apache.org/licenses/LICENSE-2.0 2103 * 2104 * Unless required by applicable law or agreed to in writing, software 2105 * distributed under the License is distributed on an "AS IS" BASIS, 2106 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2107 * See the License for the specific language governing permissions and 2108 * limitations under the License. 2109 */let re=new n([4294967295,4294967295],0);function rt(e){let t=(new TextEncoder).encode(e),r=new i;return r.update(t),new Uint8Array(r.digest())}function rr(e){let t=new DataView(e.buffer),r=t.getUint32(0,!0),i=t.getUint32(4,!0),a=t.getUint32(8,!0),s=t.getUint32(12,!0);return[new n([r,i],0),new n([a,s],0)]}class rn{constructor(e,t,r){if(this.bitmap=e,this.padding=t,this.hashCount=r,t<0||t>=8)throw new ri(`Invalid padding: ${t}`);if(r<0||e.length>0&&0===this.hashCount)throw new ri(`Invalid hash count: ${r}`);if(0===e.length&&0!==t)throw new ri(`Invalid padding when bitmap length is 0: ${t}`);this.Ie=8*e.length-t,this.Te=n.fromNumber(this.Ie)}Ee(e,t,r){let i=e.add(t.multiply(n.fromNumber(r)));return 1===i.compare(re)&&(i=new n([i.getBits(0),i.getBits(1)],0)),i.modulo(this.Te).toNumber()}de(e){return 0!=(this.bitmap[Math.floor(e/8)]&1<<e%8)}mightContain(e){if(0===this.Ie)return!1;let[t,r]=rr(rt(e));for(let e=0;e<this.hashCount;e++){let n=this.Ee(t,r,e);if(!this.de(n))return!1}return!0}static create(e,t,r){let n=new rn(new Uint8Array(Math.ceil(e/8)),e%8==0?0:8-e%8,t);return r.forEach(e=>n.insert(e)),n}insert(e){if(0===this.Ie)return;let[t,r]=rr(rt(e));for(let e=0;e<this.hashCount;e++){let n=this.Ee(t,r,e);this.Ae(n)}}Ae(e){this.bitmap[Math.floor(e/8)]|=1<<e%8}}class ri extends Error{constructor(){super(...arguments),this.name="BloomFilterError"}}/** 2110 * @license 2111 * Copyright 2017 Google LLC 2112 * 2113 * Licensed under the Apache License, Version 2.0 (the "License"); 2114 * you may not use this file except in compliance with the License. 2115 * You may obtain a copy of the License at 2116 * 2117 * http://www.apache.org/licenses/LICENSE-2.0 2118 * 2119 * Unless required by applicable law or agreed to in writing, softw
2119are 2120 * distributed under the License is distributed on an "AS IS" BASIS, 2121 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2122 * See the License for the specific language governing permissions and 2123 * limitations under the License. 2124 */class ra{constructor(e,t,r,n,i){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=r,this.documentUpdates=n,this.resolvedLimboDocuments=i}static createSynthesizedRemoteEventForCurrentChange(e,t,r){let n=new Map;return n.set(e,rs.createSynthesizedTargetChangeForCurrentChange(e,t,r)),new ra(X.min(),n,new em($),tP,tC())}}class rs{constructor(e,t,r,n,i){this.resumeToken=e,this.current=t,this.addedDocuments=r,this.modifiedDocuments=n,this.removedDocuments=i}static createSynthesizedTargetChangeForCurrentChange(e,t,r){return new rs(r,t,tC(),tC(),tC())}}/** 2125 * @license 2126 * Copyright 2017 Google LLC 2127 * 2128 * Licensed under the Apache License, Version 2.0 (the "License"); 2129 * you may not use this file except in compliance with the License. 2130 * You may obtain a copy of the License at 2131 * 2132 * http://www.apache.org/licenses/LICENSE-2.0 2133 * 2134 * Unless required by applicable law or agreed to in writing, software 2135 * distributed under the License is distributed on an "AS IS" BASIS, 2136 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2137 * See the License for the specific language governing permissions and 2138 * limitations under the License. 2139 */class ro{constructor(e,t,r,n){this.Re=e,this.removedTargetIds=t,this.key=r,this.Ve=n}}class rc{constructor(e,t){this.targetId=e,this.me=t}}class ru{constructor(e,t,r=ek.EMPTY_BYTE_STRING,n=null){this.state=e,this.targetIds=t,this.resumeToken=r,this.cause=n}}class rl{constructor(){this.fe=0,this.ge=rd(),this.pe=ek.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){e.approximateByteSize()>0&&(this.we=!0,this.pe=e)}ve(){let e=tC(),t=tC(),r=tC();return this.ge.forEach((n,i)=>{switch(i){case 0:e=e.add(n);break;case 2:t=t.add(n);break;case 1:r=r.add(n);break;default:L()}}),new rs(this.pe,this.ye,e,t,r)}Ce(){this.we=!1,this.ge=rd()}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-=1,this.fe>=0||L()}Ne(){this.we=!0,this.ye=!0}}class rh{constructor(e){this.Le=e,this.Be=new Map,this.ke=tP,this.qe=rg(),this.Qe=new em($)}Ke(e){for(let t of e.Re)e.Ve&&e.Ve.isFoundDocument()?this.$e(t,e.Ve):this.Ue(t,e.key,e.Ve);for(let t of e.removedTargetIds)this.Ue(t,e.key,e.Ve)}We(e){this.forEachTarget(e,t=>{let r=this.Ge(t);switch(e.state){case 0:this.ze(t)&&r.De(e.resumeToken);break;case 1:r.Oe(),r.Se||r.Ce(),r.De(e.resumeToken);break;case 2:r.Oe(),r.Se||this.removeTarget(t);break;case 3:this.ze(t)&&(r.Ne(),r.De(e.resumeToken));break;case 4:this.ze(t)&&(this.je(t),r.De(e.resumeToken));break;default:L()}})}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.Be.forEach((e,r)=>{this.ze(r)&&t(r)})}He(e){let t=e.targetId,r=e.me.count,n=this.Je(t);if(n){let i=n.target;if(to(i)){if(0===r){let e=new er(i.path);this.Ue(t,e,eJ.newNoDocument(e,X.min()))}else 1===r||L()}else{let n=this.Ye(t);if(n!==r){let r=this.Ze(e),i=r?this.Xe(r,e,n):1;0!==i&&(this.je(t),this.Qe=this.Qe.insert(t,2===i?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch"))}}}}Ze(e){let t,r;let n=e.me.unchangedNames;if(!n||!n.bits)return null;let{bits:{bitmap:i="",padding:a=0},hashCount:s=0}=n;try{t=eR(i).toUint8Array()}catch(e){if(e instanceof ew)return D("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{r=new rn(t,a,s)}catch(e){return D(e instanceof ri?"BloomFilter error: ":"Applying bloom filter failed: ",e),null}return 0===r.Ie?null:r}Xe(e,t,r){return t.me.count===r-this.nt(e,t.targetId)?0:2}nt(e,t){let r=this.Le.getRemoteKeysForTarget(t),n=0;return r.forEach(r=>{let i=this.Le.tt(),a=`projects/${i.projectId}/databases/${i.database}/documents/${r.path.canonicalString()}`;e.mightContain(a)||(this.Ue(t,r,null),n++)}),n}rt(e){let t=new Map;this.Be.forEach((r,n)=>{let i=this.Je(n);if(i){if(r.current&&to(i.target)){let t=new er(i.target.path);null!==this.ke.get(t)||this.it(n,t)||this.Ue(n,t,eJ.newNoDocument(t,e))}r.be&&(t.set(n,r.ve()),r.Ce())}});let r=tC();this.qe.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{let t=this.Je(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1,!1)}),n&&(r=r.add(e))}),this.ke.forEach((t,r)=>r.setReadTime(e));let n=new ra(e,t,this.Qe,this.ke,r);return this.ke=tP,this.qe=rg(),this.Qe=new em($),n}$e(e,t){if(!this.ze(e))return;
2139let r=this.it(e,t.key)?2:0;this.Ge(e).Fe(t.key,r),this.ke=this.ke.insert(t.key,t),this.qe=this.qe.insert(t.key,this.st(t.key).add(e))}Ue(e,t,r){if(!this.ze(e))return;let n=this.Ge(e);this.it(e,t)?n.Fe(t,1):n.Me(t),this.qe=this.qe.insert(t,this.st(t).delete(e)),r&&(this.ke=this.ke.insert(t,r))}removeTarget(e){this.Be.delete(e)}Ye(e){let t=this.Ge(e).ve();return this.Le.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}xe(e){this.Ge(e).xe()}Ge(e){let t=this.Be.get(e);return t||(t=new rl,this.Be.set(e,t)),t}st(e){let t=this.qe.get(e);return t||(t=new ef($),this.qe=this.qe.insert(e,t)),t}ze(e){let t=null!==this.Je(e);return t||W("WatchChangeAggregator","Detected inactive target",e),t}Je(e){let t=this.Be.get(e);return t&&t.Se?null:this.Le.ot(e)}je(e){this.Be.set(e,new rl),this.Le.getRemoteKeysForTarget(e).forEach(t=>{this.Ue(e,t,null)})}it(e,t){return this.Le.getRemoteKeysForTarget(e).has(t)}}function rg(){return new em(er.comparator)}function rd(){return new em(er.comparator)}let rm={asc:"ASCENDING",desc:"DESCENDING"},rp={"<":"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"},ry={and:"AND",or:"OR"};class rf{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function rv(e,t){return e.useProto3Json||null==t?t:{value:t}}function r_(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 rw(e,t){return e.useProto3Json?t.toBase64():t.toUint8Array()}function rk(e){return e||L(),X.fromTimestamp(function(e){let t=eb(e);return new Q(t.seconds,t.nanos)}(e))}function rP(e,t){return rb(e,t).canonicalString()}function rb(e,t){let r=new Z(["projects",e.projectId,"databases",e.database]).child("documents");return void 0===t?r:r.child(t)}function rE(e){let t=Z.fromString(e);return rU(t)||L(),t}function rR(e,t){return rP(e.databaseId,t.path)}function rS(e,t){let r=rE(t);if(r.get(1)!==e.databaseId.projectId)throw new N(O.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+r.get(1)+" vs "+e.databaseId.projectId);if(r.get(3)!==e.databaseId.database)throw new N(O.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+r.get(3)+" vs "+e.databaseId.database);return new er(rC(r))}function rI(e,t){return rP(e.databaseId,t)}function rT(e){return new Z(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function rC(e){return e.length>4&&"documents"===e.get(4)||L(),e.popFirst(5)}function rH(e,t,r){return{name:rR(e,t),fields:r.value.mapValue.fields}}function rW(e,t){var r,n;let i;let a={structuredQuery:{}},s=t.path;null!==t.collectionGroup?(i=s,a.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(i=s.popLast(),a.structuredQuery.from=[{collectionId:s.lastSegment()}]),a.parent=rI(e,i);let o=function(e){if(0!==e.length)return function e(t){return t instanceof e0?function(e){if("=="===e.op){if(eV(e.value))return{unaryFilter:{field:rA(e.field),op:"IS_NAN"}};if(eB(e.value))return{unaryFilter:{field:rA(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(eV(e.value))return{unaryFilter:{field:rA(e.field),op:"IS_NOT_NAN"}};if(eB(e.value))return{unaryFilter:{field:rA(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:rA(e.field),op:rp[e.op],value:e.value}}}(t):t instanceof e4?function(t){let r=t.getFilters().map(t=>e(t));return 1===r.length?r[0]:{compositeFilter:{op:ry[t.op],filters:r}}}(t):L()}(e4.create(e,"and"))}(t.filters);o&&(a.structuredQuery.where=o);let c=function(e){if(0!==e.length)return e.map(e=>({field:rA(e.field),direction:rm[e.dir]}))}(t.orderBy);c&&(a.structuredQuery.orderBy=c);let u=rv(e,t.limit);return null!==u&&(a.structuredQuery.limit=u),t.startAt&&(a.structuredQuery.startAt={before:(r=t.startAt).inclusive,values:r.position}),t.endAt&&(a.structuredQuery.endAt={before:!(n=t.endAt).inclusive,values:n.position}),{_t:a,parent:i}}function rA(e){return{fieldPath:e.canonicalString()}}function rD(e){return et.fromServerFormat(e.fieldPath)}function rU(e){return e.length>=4&&"projects"===e.get(0)&&"databases"===e.get(2)}/** 2140 * @license 2141 * Copyright 2017 Google LLC 2142 * 2143 * Licensed under the Apache License, Version 2.0 (the "License");
2144 * you may not use this file except in compliance with the License. 2145 * You may obtain a copy of the License at 2146 * 2147 * http://www.apache.org/licenses/LICENSE-2.0 2148 * 2149 * Unless required by applicable law or agreed to in writing, software 2150 * distributed under the License is distributed on an "AS IS" BASIS, 2151 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2152 * See the License for the specific language governing permissions and 2153 * limitations under the License. 2154 */class rL{constructor(e,t,r,n,i=X.min(),a=X.min(),s=ek.EMPTY_BYTE_STRING,o=null){this.target=e,this.targetId=t,this.purpose=r,this.sequenceNumber=n,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=a,this.resumeToken=s,this.expectedCount=o}withSequenceNumber(e){return new rL(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new rL(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new rL(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new rL(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}/** 2155 * @license 2156 * Copyright 2017 Google LLC 2157 * 2158 * Licensed under the Apache License, Version 2.0 (the "License"); 2159 * you may not use this file except in compliance with the License. 2160 * You may obtain a copy of the License at 2161 * 2162 * http://www.apache.org/licenses/LICENSE-2.0 2163 * 2164 * Unless required by applicable law or agreed to in writing, software 2165 * distributed under the License is distributed on an "AS IS" BASIS, 2166 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2167 * See the License for the specific language governing permissions and 2168 * limitations under the License. 2169 */class rO{constructor(e){this.ct=e}}/** 2170 * @license 2171 * Copyright 2021 Google LLC 2172 * 2173 * Licensed under the Apache License, Version 2.0 (the "License"); 2174 * you may not use this file except in compliance with the License. 2175 * You may obtain a copy of the License at 2176 * 2177 * http://www.apache.org/licenses/LICENSE-2.0 2178 * 2179 * Unless required by applicable law or agreed to in writing, software 2180 * distributed under the License is distributed on an "AS IS" BASIS, 2181 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2182 * See the License for the specific language governing permissions and 2183 * limitations under the License. 2184 */class rN{constructor(){}It(e,t){this.Tt(e,t),t.Et()}Tt(e,t){if("nullValue"in e)this.dt(t,5);else if("booleanValue"in e)this.dt(t,10),t.At(e.booleanValue?1:0);else if("integerValue"in e)this.dt(t,15),t.At(eE(e.integerValue));else if("doubleValue"in e){let r=eE(e.doubleValue);isNaN(r)?this.dt(t,13):(this.dt(t,15),el(r)?t.At(0):t.At(r))}else if("timestampValue"in e){let r=e.timestampValue;this.dt(t,20),"string"==typeof r&&(r=eb(r)),t.Rt(`${r.seconds||""}`),t.At(r.nanos||0)}else if("stringValue"in e)this.Vt(e.stringValue,t),this.ft(t);else if("bytesValue"in e)this.dt(t,30),t.gt(eR(e.bytesValue)),this.ft(t);else if("referenceValue"in e)this.yt(e.referenceValue,t);else if("geoPointValue"in e){let r=e.geoPointValue;this.dt(t,45),t.At(r.latitude||0),t.At(r.longitude||0)}else"mapValue"in e?ez(e)?this.dt(t,Number.MAX_SAFE_INTEGER):ej(e)?this.wt(e.mapValue,t):(this.St(e.mapValue,t),this.ft(t)):"arrayValue"in e?(this.bt(e.arrayValue,t),this.ft(t)):L()}Vt(e,t){this.dt(t,25),this.Dt(e,t)}Dt(e,t){t.Rt(e)}St(e,t){let r=e.fields||{};for(let e of(this.dt(t,55),Object.keys(r)))this.Vt(e,t),this.Tt(r[e],t)}wt(e,t){var r,n;let i=e.fields||{};this.dt(t,53);let a="value",s=(null===(n=null===(r=i[a].arrayValue)||void 0===r?void 0:r.values)||void 0===n?void 0:n.length)||0;this.dt(t,15),t.At(eE(s)),this.Vt(a,t),this.Tt(i[a],t)}bt(e,t){let r=e.values||[];for(let e of(this.dt(t,50),r))this.Tt(e,t)}yt(e,t){this.dt(t,37),er.fromName(e).path.forEach(e=>{this.dt(t,60),this.Dt(e,t)})}dt(e,t){e.At(t)}ft(e){e.At(2)}}rN.vt=new rN;/** 2185 * @license 2186 * Copyright 2019 Google LLC 2187 * 2188 * Licensed under the Apache License, Version 2.0 (the "License");
2189 * you may not use this file except in compliance with the License. 2190 * You may obtain a copy of the License at 2191 * 2192 * http://www.apache.org/licenses/LICENSE-2.0 2193 * 2194 * Unless required by applicable law or agreed to in writing, software 2195 * distributed under the License is distributed on an "AS IS" BASIS, 2196 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2197 * See the License for the specific language governing permissions and 2198 * limitations under the License. 2199 */class rK{constructor(){this.un=new rx}addToCollectionParentIndex(e,t){return this.un.add(t),eo.resolve()}getCollectionParents(e,t){return eo.resolve(this.un.getEntries(t))}addFieldIndex(e,t){return eo.resolve()}deleteFieldIndex(e,t){return eo.resolve()}deleteAllFieldIndexes(e){return eo.resolve()}createTargetIndexes(e,t){return eo.resolve()}getDocumentsMatchingTarget(e,t){return eo.resolve(null)}getIndexType(e,t){return eo.resolve(0)}getFieldIndexes(e,t){return eo.resolve([])}getNextCollectionGroupToUpdate(e){return eo.resolve(null)}getMinOffset(e,t){return eo.resolve(ei.min())}getMinOffsetFromCollectionGroup(e,t){return eo.resolve(ei.min())}updateCollectionGroup(e,t,r){return eo.resolve()}updateIndexEntries(e,t){return eo.resolve()}}class rx{constructor(){this.index={}}add(e){let t=e.lastSegment(),r=e.popLast(),n=this.index[t]||new ef(Z.comparator),i=!n.has(r);return this.index[t]=n.add(r),i}has(e){let t=e.lastSegment(),r=e.popLast(),n=this.index[t];return n&&n.has(r)}getEntries(e){return(this.index[e]||new ef(Z.comparator)).toArray()}}new Uint8Array(0);class rM{constructor(e,t,r){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=r}static withCacheSize(e){return new rM(e,rM.DEFAULT_COLLECTION_PERCENTILE,rM.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}/** 2200 * @license 2201 * Copyright 2017 Google LLC 2202 * 2203 * Licensed under the Apache License, Version 2.0 (the "License"); 2204 * you may not use this file except in compliance with the License. 2205 * You may obtain a copy of the License at 2206 * 2207 * http://www.apache.org/licenses/LICENSE-2.0 2208 * 2209 * Unless required by applicable law or agreed to in writing, software 2210 * distributed under the License is distributed on an "AS IS" BASIS, 2211 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2212 * See the License for the specific language governing permissions and 2213 * limitations under the License. 2214 */rM.DEFAULT_COLLECTION_PERCENTILE=10,rM.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,rM.DEFAULT=new rM(41943040,rM.DEFAULT_COLLECTION_PERCENTILE,rM.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),rM.DISABLED=new rM(-1,0,0);/** 2215 * @license 2216 * Copyright 2017 Google LLC 2217 * 2218 * Licensed under the Apache License, Version 2.0 (the "License"); 2219 * you may not use this file except in compliance with the License. 2220 * You may obtain a copy of the License at 2221 * 2222 * http://www.apache.org/licenses/LICENSE-2.0 2223 * 2224 * Unless required by applicable law or agreed to in writing, software 2225 * distributed under the License is distributed on an "AS IS" BASIS, 2226 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2227 * See the License for the specific language governing permissions and 2228 * limitations under the License. 2229 */class rF{constructor(e){this.Ln=e}next(){return this.Ln+=2,this.Ln}static Bn(){return new rF(0)}static kn(){return new rF(-1)}}/** 2230 * @license 2231 * Copyright 2017 Google LLC 2232 * 2233 * Licensed under the Apache License, Version 2.0 (the "License"); 2234 * you may not use this file except in compliance with the License. 2235 * You may obtain a copy of the License at 2236 * 2237 * http://www.apache.org/licenses/LICENSE-2.0 2238 * 2239 * Unless required by applicable law or agreed to in writing, software 2240 * distributed under the License is distributed on an "AS IS" BASIS, 2241 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2242 * See the License for the specific language governing permissions and 2243 * limitations under the License. 2244 */class rB{constructor(){this.changes=new tk(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,eJ.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();let r=this.changes.get(t);return void 0!==r?eo.resolve(r):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}
2244assertNotApplied(){}}/** 2245 * @license 2246 * Copyright 2017 Google LLC 2247 * 2248 * Licensed under the Apache License, Version 2.0 (the "License"); 2249 * you may not use this file except in compliance with the License. 2250 * You may obtain a copy of the License at 2251 * 2252 * http://www.apache.org/licenses/LICENSE-2.0 2253 * 2254 * Unless required by applicable law or agreed to in writing, software 2255 * distributed under the License is distributed on an "AS IS" BASIS, 2256 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2257 * See the License for the specific language governing permissions and 2258 * limitations under the License. 2259 *//** 2260 * @license 2261 * Copyright 2022 Google LLC 2262 * 2263 * Licensed under the Apache License, Version 2.0 (the "License"); 2264 * you may not use this file except in compliance with the License. 2265 * You may obtain a copy of the License at 2266 * 2267 * http://www.apache.org/licenses/LICENSE-2.0 2268 * 2269 * Unless required by applicable law or agreed to in writing, software 2270 * distributed under the License is distributed on an "AS IS" BASIS, 2271 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2272 * See the License for the specific language governing permissions and 2273 * limitations under the License. 2274 */class rV{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}/** 2275 * @license 2276 * Copyright 2017 Google LLC 2277 * 2278 * Licensed under the Apache License, Version 2.0 (the "License"); 2279 * you may not use this file except in compliance with the License. 2280 * You may obtain a copy of the License at 2281 * 2282 * http://www.apache.org/licenses/LICENSE-2.0 2283 * 2284 * Unless required by applicable law or agreed to in writing, software 2285 * distributed under the License is distributed on an "AS IS" BASIS, 2286 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2287 * See the License for the specific language governing permissions and 2288 * limitations under the License. 2289 */class rq{constructor(e,t,r,n){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=r,this.indexManager=n}getDocument(e,t){let r=null;return this.documentOverlayCache.getOverlay(e,t).next(n=>(r=n,this.remoteDocumentCache.getEntry(e,t))).next(e=>(null!==r&&tJ(r.mutation,e,e_.empty(),Q.now()),e))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next(t=>this.getLocalViewOfDocuments(e,t,tC()).next(()=>t))}getLocalViewOfDocuments(e,t,r=tC()){let n=tS();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,r).next(e=>{let t=tE();return e.forEach((e,r)=>{t=t.insert(e,r.overlayedDocument)}),t}))}getOverlayedDocuments(e,t){let r=tS();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,tC()))}populateOverlays(e,t,r){let n=[];return r.forEach(e=>{t.has(e)||n.push(e)}),this.documentOverlayCache.getOverlays(e,n).next(e=>{e.forEach((e,r)=>{t.set(e,r)})})}computeViews(e,t,r,n){let i=tP,a=tS(),s=tS();return t.forEach((e,t)=>{let s=r.get(t.key);n.has(t.key)&&(void 0===s||s.mutation instanceof tY)?i=i.insert(t.key,t):void 0!==s?(a.set(t.key,s.mutation.getFieldMask()),tJ(s.mutation,t,s.mutation.getFieldMask(),Q.now())):a.set(t.key,e_.empty())}),this.recalculateAndSaveOverlays(e,i).next(e=>(e.forEach((e,t)=>a.set(e,t)),t.forEach((e,t)=>{var r;return s.set(e,new rV(t,null!==(r=a.get(e))&&void 0!==r?r:null))}),s))}recalculateAndSaveOverlays(e,t){let r=tS(),n=new em((e,t)=>e-t),i=tC();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next(e=>{for(let i of e)i.keys().forEach(e=>{let a=t.get(e);if(null===a)return;let s=r.get(e)||e_.empty();s=i.applyToLocalView(a,s),r.set(e,s);let o=(n.get(i.batchId)||tC()).add(e);n=n.insert(i.batchId,o)})}).next(()=>{let a=[],s=n.getReverseIterator();for(;s.hasNext();){let n=s.getNext(),o=n.key,c=n.value,u=tS();c.forEach(e=>{if(!i.has(e)){let n=t$(t.get(e),r.get(e));null!==n&&u.set(e,n),i=i.add(e)}}),a.push(this.documentOverlayCache.saveOverlays(e,o,u))}return eo.waitFor(a)}).next(()=>r)}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next(t=>this.recalculateAndSaveOverlays(e,t))}getDocumentsMatchingQuery(e,t,r,n){return er.isDocumentKey(t.path)&&null===t.collectionGroup&&0===t.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):tl(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,r,n):this.getDocumentsMatchingCollectionQuery(e,t,r,n)}getNextDocuments(e,t,r,n){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,r,n).next(i=>{let a=n-i.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,r.largestBatchId,n-i.size):eo.resolve(tS()),s=-1,o=i;return a.next(t=>eo.forEach(t,(t,r)=>(s<r.largestBatchId&&(s=r.largestBatchId),i.get(t)?eo.resolve():this.remoteDocumentCache.getEntry(e,t).next(e=>{o=o.insert(t,e)}))).next(()=>this.populateOverlays(e,t,i)).next(()=>this.computeViews(e,o,t,tC())).next(e=>({batchId:s,changes:tR(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new er(t)).next(e=>{let t=tE();
2289return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(e,t,r,n){let i=t.collectionGroup,a=tE();return this.indexManager.getCollectionParents(e,i).next(s=>eo.forEach(s,s=>{let o=new tc(s.child(i),null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt);return this.getDocumentsMatchingCollectionQuery(e,o,r,n).next(e=>{e.forEach((e,t)=>{a=a.insert(e,t)})})}).next(()=>a))}getDocumentsMatchingCollectionQuery(e,t,r,n){let i;return this.documentOverlayCache.getOverlaysForCollection(e,t.path,r.largestBatchId).next(a=>(i=a,this.remoteDocumentCache.getDocumentsMatchingQuery(e,t,r,i,n))).next(e=>{i.forEach((t,r)=>{let n=r.getKey();null===e.get(n)&&(e=e.insert(n,eJ.newInvalidDocument(n)))});let r=tE();return e.forEach((e,n)=>{let a=i.get(e);void 0!==a&&tJ(a.mutation,n,e_.empty(),Q.now()),t_(t,n)&&(r=r.insert(e,n))}),r})}}/** 2290 * @license 2291 * Copyright 2020 Google LLC 2292 * 2293 * Licensed under the Apache License, Version 2.0 (the "License"); 2294 * you may not use this file except in compliance with the License. 2295 * You may obtain a copy of the License at 2296 * 2297 * http://www.apache.org/licenses/LICENSE-2.0 2298 * 2299 * Unless required by applicable law or agreed to in writing, software 2300 * distributed under the License is distributed on an "AS IS" BASIS, 2301 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2302 * See the License for the specific language governing permissions and 2303 * limitations under the License. 2304 */class rj{constructor(e){this.serializer=e,this.hr=new Map,this.Pr=new Map}getBundleMetadata(e,t){return eo.resolve(this.hr.get(t))}saveBundleMetadata(e,t){return this.hr.set(t.id,{id:t.id,version:t.version,createTime:rk(t.createTime)}),eo.resolve()}getNamedQuery(e,t){return eo.resolve(this.Pr.get(t))}saveNamedQuery(e,t){return this.Pr.set(t.name,{name:t.name,query:function(e){let t=function(e){var t;let r,n=function(e){let t=rE(e);return 4===t.length?Z.emptyPath():rC(t)}(e.parent),i=e.structuredQuery,a=i.from?i.from.length:0,s=null;if(a>0){1===a||L();let e=i.from[0];e.allDescendants?s=e.collectionId:n=n.child(e.collectionId)}let o=[];i.where&&(o=function(e){var t;let r=function e(t){return void 0!==t.unaryFilter?function(e){switch(e.unaryFilter.op){case"IS_NAN":let t=rD(e.unaryFilter.field);return e0.create(t,"==",{doubleValue:NaN});case"IS_NULL":let r=rD(e.unaryFilter.field);return e0.create(r,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":let n=rD(e.unaryFilter.field);return e0.create(n,"!=",{doubleValue:NaN});case"IS_NOT_NULL":let i=rD(e.unaryFilter.field);return e0.create(i,"!=",{nullValue:"NULL_VALUE"});default:return L()}}(t):void 0!==t.fieldFilter?e0.create(rD(t.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 L()}}(t.fieldFilter.op),t.fieldFilter.value):void 0!==t.compositeFilter?e4.create(t.compositeFilter.filters.map(t=>e(t)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return L()}}(t.compositeFilter.op)):L()}(e);return r instanceof e4&&e5(t=r)&&e2(t)?r.getFilters():[r]}(i.where));let c=[];i.orderBy&&(c=i.orderBy.map(e=>new eZ(rD(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))));let u=null;i.limit&&(u=null==(r="object"==typeof(t=i.limit)?t.value:t)?null:r);let l=null;i.startAt&&(l=function(e){let t=!!e.before;return new eQ(e.values||[],t)}(i.startAt));let h=null;return i.endAt&&(h=function(e){let t=!e.before;return new eQ(e.values||[],t)}(i.endAt)),new tc(n,s,c,o,u,"F",l,h)}({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?tp(t,t.limit,"L"):t}(t.bundledQuery),readTime:rk(t.readTime)}),eo.resolve()}}/** 2305 * @license 2306 * Copyright 2022 Google LLC 2307 * 2308 * Licensed under the Apache License, Version 2.0 (the "License");
2309 * you may not use this file except in compliance with the License. 2310 * You may obtain a copy of the License at 2311 * 2312 * http://www.apache.org/licenses/LICENSE-2.0 2313 * 2314 * Unless required by applicable law or agreed to in writing, software 2315 * distributed under the License is distributed on an "AS IS" BASIS, 2316 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2317 * See the License for the specific language governing permissions and 2318 * limitations under the License. 2319 */class rG{constructor(){this.overlays=new em(er.comparator),this.Ir=new Map}getOverlay(e,t){return eo.resolve(this.overlays.get(t))}getOverlays(e,t){let r=tS();return eo.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&r.set(t,e)})).next(()=>r)}saveOverlays(e,t,r){return r.forEach((r,n)=>{this.ht(e,t,n)}),eo.resolve()}removeOverlaysForBatchId(e,t,r){let n=this.Ir.get(r);return void 0!==n&&(n.forEach(e=>this.overlays=this.overlays.remove(e)),this.Ir.delete(r)),eo.resolve()}getOverlaysForCollection(e,t,r){let n=tS(),i=t.length+1,a=new er(t.child("")),s=this.overlays.getIteratorFrom(a);for(;s.hasNext();){let e=s.getNext().value,a=e.getKey();if(!t.isPrefixOf(a.path))break;a.path.length===i&&e.largestBatchId>r&&n.set(e.getKey(),e)}return eo.resolve(n)}getOverlaysForCollectionGroup(e,t,r,n){let i=new em((e,t)=>e-t),a=this.overlays.getIterator();for(;a.hasNext();){let e=a.getNext().value;if(e.getKey().getCollectionGroup()===t&&e.largestBatchId>r){let t=i.get(e.largestBatchId);null===t&&(t=tS(),i=i.insert(e.largestBatchId,t)),t.set(e.getKey(),e)}}let s=tS(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>s.set(e,t)),!(s.size()>=n)););return eo.resolve(s)}ht(e,t,r){let n=this.overlays.get(r.key);if(null!==n){let e=this.Ir.get(n.largestBatchId).delete(r.key);this.Ir.set(n.largestBatchId,e)}this.overlays=this.overlays.insert(r.key,new t6(t,r));let i=this.Ir.get(t);void 0===i&&(i=tC(),this.Ir.set(t,i)),this.Ir.set(t,i.add(r.key))}}/** 2320 * @license 2321 * Copyright 2024 Google LLC 2322 * 2323 * Licensed under the Apache License, Version 2.0 (the "License"); 2324 * you may not use this file except in compliance with the License. 2325 * You may obtain a copy of the License at 2326 * 2327 * http://www.apache.org/licenses/LICENSE-2.0 2328 * 2329 * Unless required by applicable law or agreed to in writing, software 2330 * distributed under the License is distributed on an "AS IS" BASIS, 2331 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2332 * See the License for the specific language governing permissions and 2333 * limitations under the License. 2334 */class rz{constructor(){this.sessionToken=ek.EMPTY_BYTE_STRING}getSessionToken(e){return eo.resolve(this.sessionToken)}setSessionToken(e,t){return this.sessionToken=t,eo.resolve()}}/** 2335 * @license 2336 * Copyright 2017 Google LLC 2337 * 2338 * Licensed under the Apache License, Version 2.0 (the "License"); 2339 * you may not use this file except in compliance with the License. 2340 * You may obtain a copy of the License at 2341 * 2342 * http://www.apache.org/licenses/LICENSE-2.0 2343 * 2344 * Unless required by applicable law or agreed to in writing, software 2345 * distributed under the License is distributed on an "AS IS" BASIS, 2346 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2347 * See the License for the specific language governing permissions and 2348 * limitations under the License. 2349 */class r${constructor(){this.Tr=new ef(rJ.Er),this.dr=new ef(rJ.Ar)}isEmpty(){return this.Tr.isEmpty()}addReference(e,t){let r=new rJ(e,t);this.Tr=this.Tr.add(r),this.dr=this.dr.add(r)}Rr(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.Vr(new rJ(e,t))}mr(e,t){e.forEach(e=>this.removeReference(e,t))}gr(e){let t=new er(new Z([])),r=new rJ(t,e),n=new rJ(t,e+1),i=[];return this.dr.forEachInRange([r,n],e=>{this.Vr(e),i.push(e.key)}),i}pr(){this.Tr.forEach(e=>this.Vr(e))}Vr(e){this.Tr=this.Tr.delete(e),this.dr=this.dr.delete(e)}yr(e){let t=new er(new Z([])),r=new rJ(t,e),n=new rJ(t,e+1),i=tC();return this.dr.forEachInRange([r,n],e=>{i=i.add(e.key)}),i}containsKey(e){let t=new rJ(e,0),r=this.Tr.firstAfterOrEqual(t);return null!==r&&e.isEqual(r.key)}}class rJ{constructor(e,t){this.key=e,this.wr=t}static Er(e,t){return er.comparator(e.key,t.key)||$(e.wr,t.wr)}static Ar(e,t){return $(e.wr,t.wr)||er.comparator(e.key,t.key)}}/** 2350 * @license 2351 * Copyright 2017 Google LLC 2352 * 2353 * Licensed under the Apache License, Version 2.0 (the "License");
2354 * you may not use this file except in compliance with the License. 2355 * You may obtain a copy of the License at 2356 * 2357 * http://www.apache.org/licenses/LICENSE-2.0 2358 * 2359 * Unless required by applicable law or agreed to in writing, software 2360 * distributed under the License is distributed on an "AS IS" BASIS, 2361 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2362 * See the License for the specific language governing permissions and 2363 * limitations under the License. 2364 */class rQ{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.Sr=1,this.br=new ef(rJ.Er)}checkEmpty(e){return eo.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,r,n){let i=this.Sr;this.Sr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];let a=new t5(i,t,r,n);for(let t of(this.mutationQueue.push(a),n))this.br=this.br.add(new rJ(t.key,i)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return eo.resolve(a)}lookupMutationBatch(e,t){return eo.resolve(this.Dr(t))}getNextMutationBatchAfterBatchId(e,t){let r=this.vr(t+1),n=r<0?0:r;return eo.resolve(this.mutationQueue.length>n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return eo.resolve(0===this.mutationQueue.length?-1:this.Sr-1)}getAllMutationBatches(e){return eo.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){let r=new rJ(t,0),n=new rJ(t,Number.POSITIVE_INFINITY),i=[];return this.br.forEachInRange([r,n],e=>{let t=this.Dr(e.wr);i.push(t)}),eo.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new ef($);return t.forEach(e=>{let t=new rJ(e,0),n=new rJ(e,Number.POSITIVE_INFINITY);this.br.forEachInRange([t,n],e=>{r=r.add(e.wr)})}),eo.resolve(this.Cr(r))}getAllMutationBatchesAffectingQuery(e,t){let r=t.path,n=r.length+1,i=r;er.isDocumentKey(i)||(i=i.child(""));let a=new rJ(new er(i),0),s=new ef($);return this.br.forEachWhile(e=>{let t=e.key.path;return!!r.isPrefixOf(t)&&(t.length===n&&(s=s.add(e.wr)),!0)},a),eo.resolve(this.Cr(s))}Cr(e){let t=[];return e.forEach(e=>{let r=this.Dr(e);null!==r&&t.push(r)}),t}removeMutationBatch(e,t){0===this.Fr(t.batchId,"removed")||L(),this.mutationQueue.shift();let r=this.br;return eo.forEach(t.mutations,n=>{let i=new rJ(n.key,t.batchId);return r=r.delete(i),this.referenceDelegate.markPotentiallyOrphaned(e,n.key)}).next(()=>{this.br=r})}On(e){}containsKey(e,t){let r=new rJ(t,0),n=this.br.firstAfterOrEqual(r);return eo.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,eo.resolve()}Fr(e,t){return this.vr(e)}vr(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Dr(e){let t=this.vr(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}/** 2365 * @license 2366 * Copyright 2017 Google LLC 2367 * 2368 * Licensed under the Apache License, Version 2.0 (the "License"); 2369 * you may not use this file except in compliance with the License. 2370 * You may obtain a copy of the License at 2371 * 2372 * http://www.apache.org/licenses/LICENSE-2.0 2373 * 2374 * Unless required by applicable law or agreed to in writing, software 2375 * distributed under the License is distributed on an "AS IS" BASIS, 2376 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2377 * See the License for the specific language governing permissions and 2378 * limitations under the License. 2379 */class rX{constructor(e){this.Mr=e,this.docs=new em(er.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){let r=t.key,n=this.docs.get(r),i=n?n.size:0,a=this.Mr(t);return this.docs=this.docs.insert(r,{document:t.mutableCopy(),size:a}),this.size+=a-i,this.indexManager.addToCollectionParentIndex(e,r.path.popLast())}removeEntry(e){let t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){let r=this.docs.get(t);return eo.resolve(r?r.document.mutableCopy():eJ.newInvalidDocument(t))}getEntries(e,t){let r=tP;return t.forEach(e=>{let t=this.docs.get(e);r=r.insert(e,t?t.document.mutableCopy():eJ.newInvalidDocument(e))}),eo.resolve(r)}getDocumentsMatchingQuery(e,t,r,n){let i=tP,a=t.path,s=new er(a.child("")),o=this.docs.getIteratorFrom(s);for(;o.hasNext();){let{key:e,value:{document:s}}=o.getNext();if(!a.isPrefixOf(e.path))break;e.path.length>a.length+1||0>=function(e,t){let r=e.readTime.compareTo(t.readTime);return 0!==r?r:0!==(r=er.comparator(e.documentKey,t.documentKey))?r:$(e.largestBatchId,t.largestBatchId)}(new ei(s.readTime,s.key,-1),r)||(n.has(s.key)||t_(t,s))&&(i=i.insert(s.key,s.mutableCopy()))}return eo.resolve(i)}getAllFromCollectionGroup(e,t,r,n){L()}Or(e,t){return eo.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new rY(this)}getSize(e){return eo.resolve(this.size)}}class rY extends rB{constructor(e){super(),this.cr=e}applyChanges(e){let t=[];
vendor: 4,901 bytes, lines 2379-2409
2379return this.changes.forEach((r,n)=>{n.isValidDocument()?t.push(this.cr.addEntry(e,n)):this.cr.removeEntry(r)}),eo.waitFor(t)}getFromCache(e,t){return this.cr.getEntry(e,t)}getAllFromCache(e,t){return this.cr.getEntries(e,t)}}/** 2380 * @license 2381 * Copyright 2017 Google LLC 2382 * 2383 * Licensed under the Apache License, Version 2.0 (the "License"); 2384 * you may not use this file except in compliance with the License. 2385 * You may obtain a copy of the License at 2386 * 2387 * http://www.apache.org/licenses/LICENSE-2.0 2388 * 2389 * Unless required by applicable law or agreed to in writing, software 2390 * distributed under the License is distributed on an "AS IS" BASIS, 2391 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2392 * See the License for the specific language governing permissions and 2393 * limitations under the License. 2394 */class rZ{constructor(e){this.persistence=e,this.Nr=new tk(e=>ta(e),ts),this.lastRemoteSnapshotVersion=X.min(),this.highestTargetId=0,this.Lr=0,this.Br=new r$,this.targetCount=0,this.kr=rF.Bn()}forEachTarget(e,t){return this.Nr.forEach((e,r)=>t(r)),eo.resolve()}getLastRemoteSnapshotVersion(e){return eo.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return eo.resolve(this.Lr)}allocateTargetId(e){return this.highestTargetId=this.kr.next(),eo.resolve(this.highestTargetId)}setTargetsMetadata(e,t,r){return r&&(this.lastRemoteSnapshotVersion=r),t>this.Lr&&(this.Lr=t),eo.resolve()}Kn(e){this.Nr.set(e.target,e);let t=e.targetId;t>this.highestTargetId&&(this.kr=new rF(t),this.highestTargetId=t),e.sequenceNumber>this.Lr&&(this.Lr=e.sequenceNumber)}addTargetData(e,t){return this.Kn(t),this.targetCount+=1,eo.resolve()}updateTargetData(e,t){return this.Kn(t),eo.resolve()}removeTargetData(e,t){return this.Nr.delete(t.target),this.Br.gr(t.targetId),this.targetCount-=1,eo.resolve()}removeTargets(e,t,r){let n=0,i=[];return this.Nr.forEach((a,s)=>{s.sequenceNumber<=t&&null===r.get(s.targetId)&&(this.Nr.delete(a),i.push(this.removeMatchingKeysForTargetId(e,s.targetId)),n++)}),eo.waitFor(i).next(()=>n)}getTargetCount(e){return eo.resolve(this.targetCount)}getTargetData(e,t){let r=this.Nr.get(t)||null;return eo.resolve(r)}addMatchingKeys(e,t,r){return this.Br.Rr(t,r),eo.resolve()}removeMatchingKeys(e,t,r){this.Br.mr(t,r);let n=this.persistence.referenceDelegate,i=[];return n&&t.forEach(t=>{i.push(n.markPotentiallyOrphaned(e,t))}),eo.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.Br.gr(t),eo.resolve()}getMatchingKeysForTargetId(e,t){let r=this.Br.yr(t);return eo.resolve(r)}containsKey(e,t){return eo.resolve(this.Br.containsKey(t))}}/** 2395 * @license 2396 * Copyright 2017 Google LLC 2397 * 2398 * Licensed under the Apache License, Version 2.0 (the "License"); 2399 * you may not use this file except in compliance with the License. 2400 * You may obtain a copy of the License at 2401 * 2402 * http://www.apache.org/licenses/LICENSE-2.0 2403 * 2404 * Unless required by applicable law or agreed to in writing, software 2405 * distributed under the License is distributed on an "AS IS" BASIS, 2406 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2407 * See the License for the specific language governing permissions and 2408 * limitations under the License. 2409 */class r1{constructor(e,t){this.qr={},this.overlays={},this.Qr=new eu(0),this.Kr=!1,this.Kr=!0,this.$r=new rz,this.referenceDelegate=e(this),this.Ur=new rZ(this),this.indexManager=new rK,this.remoteDocumentCache=new rX(e=>this.referenceDelegate.Wr(e)),this.serializer=new rO(t),this.Gr=new rj(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Kr=!1,Promise.resolve()}get started(){return this.Kr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new rG,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let r=this.qr[e.toKey()];return r||(r=new rQ(t,this.referenceDelegate),this.qr[e.toKey()]=r),r}getGlobalsCache(){return this.$r}getTargetCache(){return this.Ur}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Gr}runTransaction(e,t,r){W("MemoryPersistence","Starting transaction:",e);let n=new r0(this.Qr.next());return this.referenceDelegate.zr(),r(n).next(e=>this.referenceDelegate.jr(n).next(()=>e)).toPromise().then(e=>(n.raiseOnCommittedEvent(),e))}Hr(e,t){return eo.or(Object.values(this.qr).map(r=>()=>r.containsKey(e,t)))}}class r0 extends ea{constructor(e){super(),this.currentSequenceNumber=e}}class r4{constructor(e){this.persistence=e,this.Jr=new r$,this.Yr=null}static Zr(e){return new r4(e)}get Xr(){if(this.Yr)return this.Yr;throw L()}addReference(e,t,r){return this.Jr.addReference(r,t),this.Xr.delete(r.toString()),eo.resolve()}removeReference(e,t,r){return this.Jr.removeReference(r,t),this.Xr.add(r.toString()),eo.resolve()}markPotentiallyOrphaned(e,t){return this.Xr.add(t.toString()),eo.resolve()}
2409removeTarget(e,t){this.Jr.gr(t.targetId).forEach(e=>this.Xr.add(e.toString()));let r=this.persistence.getTargetCache();return r.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.Xr.add(e.toString()))}).next(()=>r.removeTargetData(e,t))}zr(){this.Yr=new Set}jr(e){let t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return eo.forEach(this.Xr,r=>{let n=er.fromPath(r);return this.ei(e,n).next(e=>{e||t.removeEntry(n,X.min())})}).next(()=>(this.Yr=null,t.apply(e)))}updateLimboDocument(e,t){return this.ei(e,t).next(e=>{e?this.Xr.delete(t.toString()):this.Xr.add(t.toString())})}Wr(e){return 0}ei(e,t){return eo.or([()=>eo.resolve(this.Jr.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Hr(e,t)])}}/** 2410 * @license 2411 * Copyright 2017 Google LLC 2412 * 2413 * Licensed under the Apache License, Version 2.0 (the "License"); 2414 * you may not use this file except in compliance with the License. 2415 * You may obtain a copy of the License at 2416 * 2417 * http://www.apache.org/licenses/LICENSE-2.0 2418 * 2419 * Unless required by applicable law or agreed to in writing, software 2420 * distributed under the License is distributed on an "AS IS" BASIS, 2421 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2422 * See the License for the specific language governing permissions and 2423 * limitations under the License. 2424 */class r2{constructor(e,t,r,n){this.targetId=e,this.fromCache=t,this.$i=r,this.Ui=n}static Wi(e,t){let r=tC(),n=tC();for(let e of t.docChanges)switch(e.type){case 0:r=r.add(e.doc.key);break;case 1:n=n.add(e.doc.key)}return new r2(e,t.fromCache,r,n)}}/** 2425 * @license 2426 * Copyright 2023 Google LLC 2427 * 2428 * Licensed under the Apache License, Version 2.0 (the "License"); 2429 * you may not use this file except in compliance with the License. 2430 * You may obtain a copy of the License at 2431 * 2432 * http://www.apache.org/licenses/LICENSE-2.0 2433 * 2434 * Unless required by applicable law or agreed to in writing, software 2435 * distributed under the License is distributed on an "AS IS" BASIS, 2436 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2437 * See the License for the specific language governing permissions and 2438 * limitations under the License. 2439 */class r5{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}/** 2440 * @license 2441 * Copyright 2019 Google LLC 2442 * 2443 * Licensed under the Apache License, Version 2.0 (the "License"); 2444 * you may not use this file except in compliance with the License. 2445 * You may obtain a copy of the License at 2446 * 2447 * http://www.apache.org/licenses/LICENSE-2.0 2448 * 2449 * Unless required by applicable law or agreed to in writing, software 2450 * distributed under the License is distributed on an "AS IS" BASIS, 2451 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2452 * See the License for the specific language governing permissions and 2453 * limitations under the License. 2454 */class r3{constructor(){this.Gi=!1,this.zi=!1,this.ji=100,this.Hi=(0,w.G6)()?8:function(e){let t=e.match(/Android ([\d.]+)/i);return Number(t?t[1].split(".").slice(0,2).join("."):"-1")}((0,w.z$)())>0?6:4}initialize(e,t){this.Ji=e,this.indexManager=t,this.Gi=!0}getDocumentsMatchingQuery(e,t,r,n){let i={result:null};return this.Yi(e,t).next(e=>{i.result=e}).next(()=>{if(!i.result)return this.Zi(e,t,n,r).next(e=>{i.result=e})}).next(()=>{if(i.result)return;let r=new r5;return this.Xi(e,t,r).next(n=>{if(i.result=n,this.zi)return this.es(e,t,r,n.size)})}).next(()=>i.result)}es(e,t,r,n){return r.documentReadCount<this.ji?(H()<=_.in.DEBUG&&W("QueryEngine","SDK will not create cache indexes for query:",tv(t),"since it only creates cache indexes for collection contains","more than or equal to",this.ji,"documents"),eo.resolve()):(H()<=_.in.DEBUG&&W("QueryEngine","Query:",tv(t),"scans",r.documentReadCount,"local documents and returns",n,"documents as results."),r.documentReadCount>this.Hi*n?(H()<=_.in.DEBUG&&W("QueryEngine","The SDK decides to create cache indexes for query:",tv(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,tg(t))):eo.resolve())}Yi(e,t){if(tu(t))return eo.resolve(null);let r=tg(t);return this.indexManager.getIndexType(e,r).next(n=>0===n?null:(null!==t.limit&&1===n&&(r=tg(t=tp(t,null,"F"))),this.indexManager.getDocumentsMatchingTarget(e,r).next(n=>{let i=tC(...n);return this.Ji.getDocuments(e,i).next(n=>this.indexManager.getMinOffset(e,r).next(r=>{let a=this.ts(t,n);return this.ns(t,a,i,r.readTime)?this.Yi(e,tp(t,null,"F")):this.rs(e,a,t,r)}))})))}Zi(e,t,r,n){return tu(t)||n.isEqual(X.min())?eo.resolve(null):this.Ji.getDocuments(e,r).next(i=>{let a=this.ts(t,i);return this.ns(t,a,r,n)?eo.resolve(null):(H()<=_.in.DEBUG&&W("QueryEngine","Re-using previous result from %s to execute query: %s",n.toString(),tv(t)),this.rs(e,a,t,function(e,t){let r=e.toTimestamp().seconds,n=e.toTimestamp().nanoseconds+1;return new ei(X.fromTimestamp(1e9===n?new Q(r+1,0):new Q(r,n)),er.empty(),-1)}(n,0)).next(e=>e))})}ts(e,t){let r=new ef(tw(e));return t.forEach((t,n)=>{t_(e,n)&&(r=r.add(n))}),r}ns(e,t,r,n){if(null===e.limit)return!1;if(r.size!==t.size)return!0;let i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||i.version.compareTo(n)>0)}Xi(e,t,r){return H()<=_.in.DEBUG&&W("QueryEngine","Using full collection scan to execute query:",tv(t)),this.Ji.getDocumentsMatchingQuery(e,t,ei.min(),r)}rs(e,t,r,n){return this.Ji.getDocumentsMatchingQuery(e,r,n).next(e=>(t.forEach(t=>{e=e.insert(t.key,t)}),e))}}/** 2455 * @license 2456 * Copyright 2020 Google LLC 2457 * 2458 * Licensed under the Apache License, Version 2.0 (the "License");
2459 * you may not use this file except in compliance with the License. 2460 * You may obtain a copy of the License at 2461 * 2462 * http://www.apache.org/licenses/LICENSE-2.0 2463 * 2464 * Unless required by applicable law or agreed to in writing, software 2465 * distributed under the License is distributed on an "AS IS" BASIS, 2466 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2467 * See the License for the specific language governing permissions and 2468 * limitations under the License. 2469 */class r6{constructor(e,t,r,n){this.persistence=e,this.ss=t,this.serializer=n,this.os=new em($),this._s=new tk(e=>ta(e),ts),this.us=new Map,this.cs=e.getRemoteDocumentCache(),this.Ur=e.getTargetCache(),this.Gr=e.getBundleCache(),this.ls(r)}ls(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new rq(this.cs,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.cs.setIndexManager(this.indexManager),this.ss.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",t=>e.collect(t,this.os))}}async function r9(e,t){return await e.persistence.runTransaction("Handle user change","readonly",r=>{let n;return e.mutationQueue.getAllMutationBatches(r).next(i=>(n=i,e.ls(t),e.mutationQueue.getAllMutationBatches(r))).next(t=>{let i=[],a=[],s=tC();for(let e of n)for(let t of(i.push(e.batchId),e.mutations))s=s.add(t.key);for(let e of t)for(let t of(a.push(e.batchId),e.mutations))s=s.add(t.key);return e.localDocuments.getDocuments(r,s).next(e=>({hs:e,removedBatchIds:i,addedBatchIds:a}))})})}function r8(e){return e.persistence.runTransaction("Get last remote snapshot version","readonly",t=>e.Ur.getLastRemoteSnapshotVersion(t))}async function r7(e,t,r){let n=e.os.get(t);try{r||await e.persistence.runTransaction("Release target",r?"readwrite":"readwrite-primary",t=>e.persistence.referenceDelegate.removeTarget(t,n))}catch(e){if(!ec(e))throw e;W("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}e.os=e.os.remove(t),e._s.delete(n.target)}function ne(e,t,r){let n=X.min(),i=tC();return e.persistence.runTransaction("Execute query","readwrite",a=>(function(e,t,r){let n=e._s.get(r);return void 0!==n?eo.resolve(e.os.get(n)):e.Ur.getTargetData(t,r)})(e,a,tg(t)).next(t=>{if(t)return n=t.lastLimboFreeSnapshotVersion,e.Ur.getMatchingKeysForTargetId(a,t.targetId).next(e=>{i=e})}).next(()=>e.ss.getDocumentsMatchingQuery(a,t,r?n:X.min(),r?i:tC())).next(r=>{var n;let a;return n=t.collectionGroup||(t.path.length%2==1?t.path.lastSegment():t.path.get(t.path.length-2)),a=e.us.get(n)||X.min(),r.forEach((e,t)=>{t.readTime.compareTo(a)>0&&(a=t.readTime)}),e.us.set(n,a),{documents:r,Ts:i}}))}class nt{constructor(){this.activeTargetIds=tH}fs(e){this.activeTargetIds=this.activeTargetIds.add(e)}gs(e){this.activeTargetIds=this.activeTargetIds.delete(e)}Vs(){return JSON.stringify({activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()})}}class nr{constructor(){this.so=new nt,this.oo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,r){}addLocalQueryTarget(e,t=!0){return t&&this.so.fs(e),this.oo[e]||"not-current"}updateQueryState(e,t,r){this.oo[e]=t}removeLocalQueryTarget(e){this.so.gs(e)}isLocalQueryTarget(e){return this.so.activeTargetIds.has(e)}clearQueryState(e){delete this.oo[e]}getAllActiveQueryTargets(){return this.so.activeTargetIds}isActiveQueryTarget(e){return this.so.activeTargetIds.has(e)}start(){return this.so=new nt,Promise.resolve()}handleUserChange(e,t,r){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}/** 2470 * @license 2471 * Copyright 2019 Google LLC 2472 * 2473 * Licensed under the Apache License, Version 2.0 (the "License"); 2474 * you may not use this file except in compliance with the License. 2475 * You may obtain a copy of the License at 2476 * 2477 * http://www.apache.org/licenses/LICENSE-2.0 2478 * 2479 * Unless required by applicable law or agreed to in writing, softw
2479are 2480 * distributed under the License is distributed on an "AS IS" BASIS, 2481 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2482 * See the License for the specific language governing permissions and 2483 * limitations under the License. 2484 */class nn{_o(e){}shutdown(){}}/** 2485 * @license 2486 * Copyright 2019 Google LLC 2487 * 2488 * Licensed under the Apache License, Version 2.0 (the "License"); 2489 * you may not use this file except in compliance with the License. 2490 * You may obtain a copy of the License at 2491 * 2492 * http://www.apache.org/licenses/LICENSE-2.0 2493 * 2494 * Unless required by applicable law or agreed to in writing, software 2495 * distributed under the License is distributed on an "AS IS" BASIS, 2496 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2497 * See the License for the specific language governing permissions and 2498 * limitations under the License. 2499 */class ni{constructor(){this.ao=()=>this.uo(),this.co=()=>this.lo(),this.ho=[],this.Po()}_o(e){this.ho.push(e)}shutdown(){window.removeEventListener("online",this.ao),window.removeEventListener("offline",this.co)}Po(){window.addEventListener("online",this.ao),window.addEventListener("offline",this.co)}uo(){for(let e of(W("ConnectivityMonitor","Network connectivity changed: AVAILABLE"),this.ho))e(0)}lo(){for(let e of(W("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE"),this.ho))e(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}/** 2500 * @license 2501 * Copyright 2023 Google LLC 2502 * 2503 * Licensed under the Apache License, Version 2.0 (the "License"); 2504 * you may not use this file except in compliance with the License. 2505 * You may obtain a copy of the License at 2506 * 2507 * http://www.apache.org/licenses/LICENSE-2.0 2508 * 2509 * Unless required by applicable law or agreed to in writing, software 2510 * distributed under the License is distributed on an "AS IS" BASIS, 2511 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2512 * See the License for the specific language governing permissions and 2513 * limitations under the License. 2514 */let na=null;function ns(){return null===na?na=268435456+Math.round(2147483648*Math.random()):na++,"0x"+na.toString(16)}/** 2515 * @license 2516 * Copyright 2020 Google LLC 2517 * 2518 * Licensed under the Apache License, Version 2.0 (the "License"); 2519 * you may not use this file except in compliance with the License. 2520 * You may obtain a copy of the License at 2521 * 2522 * http://www.apache.org/licenses/LICENSE-2.0 2523 * 2524 * Unless required by applicable law or agreed to in writing, software 2525 * distributed under the License is distributed on an "AS IS" BASIS, 2526 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2527 * See the License for the specific language governing permissions and 2528 * limitations under the License. 2529 */let no={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};/** 2530 * @license 2531 * Copyright 2017 Google LLC 2532 * 2533 * Licensed under the Apache License, Version 2.0 (the "License"); 2534 * you may not use this file except in compliance with the License. 2535 * You may obtain a copy of the License at 2536 * 2537 * http://www.apache.org/licenses/LICENSE-2.0 2538 * 2539 * Unless required by applicable law or agreed to in writing, software 2540 * distributed under the License is distributed on an "AS IS" BASIS, 2541 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2542 * See the License for the specific language governing permissions and 2543 * limitations under the License. 2544 */class nc{constructor(e){this.Io=e.Io,this.To=e.To}Eo(e){this.Ao=e}Ro(e){this.Vo=e}mo(e){this.fo=e}onMessage(e){this.po=e}close(){this.To()}send(e){this.Io(e)}yo(){this.Ao()}wo(){this.Vo()}So(e){this.fo(e)}bo(e){this.po(e)}}/** 2545 * @license 2546 * Copyright 2017 Google LLC 2547 * 2548 * Licensed under the Apache License, Version 2.0 (the "License"); 2549 * you may not use this file except in compliance with the License. 2550 * You may obtain a copy of the License at 2551 * 2552 * http://www.apache.org/licenses/LICENSE-2.0 2553 * 2554 * Unless required by applicable law or agreed to in writing, softw
2554are 2555 * distributed under the License is distributed on an "AS IS" BASIS, 2556 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2557 * See the License for the specific language governing permissions and 2558 * limitations under the License. 2559 */let nu="WebChannelConnection";class nl extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;let t=e.ssl?"https":"http",r=encodeURIComponent(this.databaseId.projectId),n=encodeURIComponent(this.databaseId.database);this.Do=t+"://"+e.host,this.vo=`projects/${r}/databases/${n}`,this.Co="(default)"===this.databaseId.database?`project_id=${r}`:`project_id=${r}&database_id=${n}`}get Fo(){return!1}Mo(e,t,r,n,i){let a=ns(),s=this.xo(e,t.toUriEncodedString());W("RestConnection",`Sending RPC '${e}' ${a}:`,s,r);let o={"google-cloud-resource-prefix":this.vo,"x-goog-request-params":this.Co};return this.Oo(o,n,i),this.No(e,s,o,r).then(t=>(W("RestConnection",`Received RPC '${e}' ${a}: `,t),t),t=>{throw D("RestConnection",`RPC '${e}' ${a} failed with error: `,t,"url: ",s,"request:",r),t})}Lo(e,t,r,n,i,a){return this.Mo(e,t,r,n,i)}Oo(e,t,r){e["X-Goog-Api-Client"]=function(){return"gl-js/ fire/"+T}(),e["Content-Type"]="text/plain",this.databaseInfo.appId&&(e["X-Firebase-GMPID"]=this.databaseInfo.appId),t&&t.headers.forEach((t,r)=>e[r]=t),r&&r.headers.forEach((t,r)=>e[r]=t)}xo(e,t){let r=no[e];return`${this.Do}/v1/${t}:${r}`}terminate(){}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}No(e,t,r,n){let i=ns();return new Promise((s,u)=>{let l=new a;l.setWithCredentials(!0),l.listenOnce(o.COMPLETE,()=>{try{switch(l.getLastErrorCode()){case c.NO_ERROR:let t=l.getResponseJson();W(nu,`XHR for RPC '${e}' ${i} received:`,JSON.stringify(t)),s(t);break;case c.TIMEOUT:W(nu,`RPC '${e}' ${i} timed out`),u(new N(O.DEADLINE_EXCEEDED,"Request time out"));break;case c.HTTP_ERROR:let r=l.getStatus();if(W(nu,`RPC '${e}' ${i} failed with status:`,r,"response text:",l.getResponseText()),r>0){let e=l.getResponseJson();Array.isArray(e)&&(e=e[0]);let t=null==e?void 0:e.error;if(t&&t.status&&t.message){let e=function(e){let t=e.toLowerCase().replace(/_/g,"-");return Object.values(O).indexOf(t)>=0?t:O.UNKNOWN}(t.status);u(new N(e,t.message))}else u(new N(O.UNKNOWN,"Server responded with status "+l.getStatus()))}else u(new N(O.UNAVAILABLE,"Connection failed."));break;default:L()}}finally{W(nu,`RPC '${e}' ${i} completed.`)}});let h=JSON.stringify(n);W(nu,`RPC '${e}' ${i} sending request:`,n),l.send(t,"POST",h,r,15)})}Bo(e,t,r){let n=ns(),i=[this.Do,"/","google.firestore.v1.Firestore","/",e,"/channel"],a=g(),o=h(),c={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},m=this.longPollingOptions.timeoutSeconds;void 0!==m&&(c.longPollingTimeout=Math.round(1e3*m)),this.useFetchStreams&&(c.useFetchStreams=!0),this.Oo(c.initMessageHeaders,t,r),c.encodeInitMessageHeaders=!0;let p=i.join("");W(nu,`Creating RPC '${e}' stream ${n}: ${p}`,c);let y=a.createWebChannel(p,c),f=!1,v=!1,_=new nc({Io:t=>{v?W(nu,`Not sending because RPC '${e}' stream ${n} is closed:`,t):(f||(W(nu,`Opening RPC '${e}' stream ${n} transport.`),y.open(),f=!0),W(nu,`RPC '${e}' stream ${n} sending:`,t),y.send(t))},To:()=>y.close()}),w=(e,t,r)=>{e.listen(t,e=>{try{r(e)}catch(e){setTimeout(()=>{throw e},0)}})};return w(y,s.EventType.OPEN,()=>{v||(W(nu,`RPC '${e}' stream ${n} transport opened.`),_.yo())}),w(y,s.EventType.CLOSE,()=>{v||(v=!0,W(nu,`RPC '${e}' stream ${n} transport closed`),_.So())}),w(y,s.EventType.ERROR,t=>{v||(v=!0,D(nu,`RPC '${e}' stream ${n} transport errored:`,t),_.So(new N(O.UNAVAILABLE,"The operation could not be completed")))}),w(y,s.EventType.MESSAGE,t=>{var r;if(!v){let i=t.data[0];i||L();let a=i.error||(null===(r=i[0])||void 0===r?void 0:r.error);if(a){W(nu,`RPC '${e}' stream ${n} received error:`,a);let t=a.status,r=function(e){let t=d[e];if(void 0!==t)return t7(t)}(t),i=a.message;void 0===r&&(r=O.INTERNAL,i="Unknown error status: "+t+" with message "+a.message),v=!0,_.So(new N(r,i)),y.close()}else W(nu,`RPC '${e}' stream ${n} received:`,i),_.bo(i)}}),w(o,l.STAT_EVENT,t=>{t.stat===u.PROXY?W(nu,`RPC '${e}' stream ${n} detected buffering proxy`):t.stat===u.NOPROXY&&W(nu,`RPC '${e}' stream ${n} detected no buffering proxy`)}),setTimeout(()=>{_.wo()},0),_}}function nh(){return"undefined"!=typeof document?document:null}/** 2560 * @license 2561 * Copyright 2020 Google LLC 2562 * 2563 * Licensed under the Apache License, Version 2.0 (the "License");
2564 * you may not use this file except in compliance with the License. 2565 * You may obtain a copy of the License at 2566 * 2567 * http://www.apache.org/licenses/LICENSE-2.0 2568 * 2569 * Unless required by applicable law or agreed to in writing, software 2570 * distributed under the License is distributed on an "AS IS" BASIS, 2571 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2572 * See the License for the specific language governing permissions and 2573 * limitations under the License. 2574 */function ng(e){return new rf(e,!0)}/** 2575 * @license 2576 * Copyright 2017 Google LLC 2577 * 2578 * Licensed under the Apache License, Version 2.0 (the "License"); 2579 * you may not use this file except in compliance with the License. 2580 * You may obtain a copy of the License at 2581 * 2582 * http://www.apache.org/licenses/LICENSE-2.0 2583 * 2584 * Unless required by applicable law or agreed to in writing, software 2585 * distributed under the License is distributed on an "AS IS" BASIS, 2586 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2587 * See the License for the specific language governing permissions and 2588 * limitations under the License. 2589 */class nd{constructor(e,t,r=1e3,n=1.5,i=6e4){this.ui=e,this.timerId=t,this.ko=r,this.qo=n,this.Qo=i,this.Ko=0,this.$o=null,this.Uo=Date.now(),this.reset()}reset(){this.Ko=0}Wo(){this.Ko=this.Qo}Go(e){this.cancel();let t=Math.floor(this.Ko+this.zo()),r=Math.max(0,Date.now()-this.Uo),n=Math.max(0,t-r);n>0&&W("ExponentialBackoff",`Backing off for ${n} ms (base delay: ${this.Ko} ms, delay with jitter: ${t} ms, last attempt: ${r} ms ago)`),this.$o=this.ui.enqueueAfterDelay(this.timerId,n,()=>(this.Uo=Date.now(),e())),this.Ko*=this.qo,this.Ko<this.ko&&(this.Ko=this.ko),this.Ko>this.Qo&&(this.Ko=this.Qo)}jo(){null!==this.$o&&(this.$o.skipDelay(),this.$o=null)}
2589cancel(){null!==this.$o&&(this.$o.cancel(),this.$o=null)}zo(){return(Math.random()-.5)*this.Ko}}/** 2590 * @license 2591 * Copyright 2017 Google LLC 2592 * 2593 * Licensed under the Apache License, Version 2.0 (the "License"); 2594 * you may not use this file except in compliance with the License. 2595 * You may obtain a copy of the License at 2596 * 2597 * http://www.apache.org/licenses/LICENSE-2.0 2598 * 2599 * Unless required by applicable law or agreed to in writing, software 2600 * distributed under the License is distributed on an "AS IS" BASIS, 2601 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2602 * See the License for the specific language governing permissions and 2603 * limitations under the License. 2604 */class nm{constructor(e,t,r,n,i,a,s,o){this.ui=e,this.Ho=r,this.Jo=n,this.connection=i,this.authCredentialsProvider=a,this.appCheckCredentialsProvider=s,this.listener=o,this.state=0,this.Yo=0,this.Zo=null,this.Xo=null,this.stream=null,this.e_=0,this.t_=new nd(e,t)}n_(){return 1===this.state||5===this.state||this.r_()}r_(){return 2===this.state||3===this.state}start(){this.e_=0,4!==this.state?this.auth():this.i_()}async stop(){this.n_()&&await this.close(0)}s_(){this.state=0,this.t_.reset()}o_(){this.r_()&&null===this.Zo&&(this.Zo=this.ui.enqueueAfterDelay(this.Ho,6e4,()=>this.__()))}a_(e){this.u_(),this.stream.send(e)}async __(){if(this.r_())return this.close(0)}u_(){this.Zo&&(this.Zo.cancel(),this.Zo=null)}c_(){this.Xo&&(this.Xo.cancel(),this.Xo=null)}async close(e,t){this.u_(),this.c_(),this.t_.cancel(),this.Yo++,4!==e?this.t_.reset():t&&t.code===O.RESOURCE_EXHAUSTED?(A(t.toString()),A("Using maximum backoff delay to prevent overloading the backend."),this.t_.Wo()):t&&t.code===O.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.l_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.mo(t)}l_(){}auth(){this.state=1;let e=this.h_(this.Yo),t=this.Yo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,r])=>{this.Yo===t&&this.P_(e,r)},t=>{e(()=>{let e=new N(O.UNKNOWN,"Fetching auth token failed: "+t.message);return this.I_(e)})})}P_(e,t){let r=this.h_(this.Yo);this.stream=this.T_(e,t),this.stream.Eo(()=>{r(()=>this.listener.Eo())}),this.stream.Ro(()=>{r(()=>(this.state=2,this.Xo=this.ui.enqueueAfterDelay(this.Jo,1e4,()=>(this.r_()&&(this.state=3),Promise.resolve())),this.listener.Ro()))}),this.stream.mo(e=>{r(()=>this.I_(e))}),this.stream.onMessage(e=>{r(()=>1==++this.e_?this.E_(e):this.onNext(e))})}i_(){this.state=5,this.t_.Go(async()=>{this.state=0,this.start()})}I_(e){return W("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}h_(e){return t=>{this.ui.enqueueAndForget(()=>this.Yo===e?t():(W("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class np extends nm{constructor(e,t,r,n,i,a){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,r,n,a),this.serializer=i}T_(e,t){return this.connection.Bo("Listen",e,t)}E_(e){return this.onNext(e)}onNext(e){this.t_.reset();let t=function(e,t){let r;if("targetChange"in t){var n,i;t.targetChange;let a="NO_CHANGE"===(n=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===n?1:"REMOVE"===n?2:"CURRENT"===n?3:"RESET"===n?4:L(),s=t.targetChange.targetIds||[],o=(i=t.targetChange.resumeToken,e.useProto3Json?(void 0===i||"string"==typeof i||L(),ek.fromBase64String(i||"")):(void 0===i||i instanceof R||i instanceof Uint8Array||L(),ek.fromUint8Array(i||new Uint8Array))),c=t.targetChange.cause;r=new ru(a,s,o,c&&new N(void 0===c.code?O.UNKNOWN:t7(c.code),c.message||"")||null)}else if("documentChange"in t){t.documentChange;let n=t.documentChange;n.document,n.document.name,n.document.updateTime;let i=rS(e,n.document.name),a=rk(n.document.updateTime),s=n.document.createTime?rk(n.document.createTime):X.min(),o=new e$({mapValue:{fields:n.document.fields}}),c=eJ.newFoundDocument(i,a,s,o);r=new ro(n.targetIds||[],n.removedTargetIds||[],c.key,c)}else if("documentDelete"in t){t.documentDelete;let n=t.documentDelete;n.document;let i=rS(e,n.document),a=n.readTime?rk(n.readTime):X.min(),s=eJ.newNoDocument(i,a);r=new ro([],n.removedTargetIds||[],s.key,s)}else if("documentRemove"in t){t.documentRemove;let n=t.documentRemove;n.document;let i=rS(e,n.document);r=new ro([],n.removedTargetIds||[],i,null)}else{if(!("filter"in t))return L();{t.filter;let e=t.filter;e.targetId;
2604let{count:n=0,unchangedNames:i}=e,a=new t8(n,i);r=new rc(e.targetId,a)}}return r}(this.serializer,e),r=function(e){if(!("targetChange"in e))return X.min();let t=e.targetChange;return t.targetIds&&t.targetIds.length?X.min():t.readTime?rk(t.readTime):X.min()}(e);return this.listener.d_(t,r)}A_(e){let t={};t.database=rT(this.serializer),t.addTarget=function(e,t){let r;let n=t.target;if((r=to(n)?{documents:{documents:[rI(e,n.path)]}}:{query:rW(e,n)._t}).targetId=t.targetId,t.resumeToken.approximateByteSize()>0){r.resumeToken=rw(e,t.resumeToken);let n=rv(e,t.expectedCount);null!==n&&(r.expectedCount=n)}else if(t.snapshotVersion.compareTo(X.min())>0){r.readTime=r_(e,t.snapshotVersion.toTimestamp());let n=rv(e,t.expectedCount);null!==n&&(r.expectedCount=n)}return r}(this.serializer,e);let r=function(e,t){let r=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 L()}}(t.purpose);return null==r?null:{"goog-listen-tags":r}}(this.serializer,e);r&&(t.labels=r),this.a_(t)}R_(e){let t={};t.database=rT(this.serializer),t.removeTarget=e,this.a_(t)}}class ny extends nm{constructor(e,t,r,n,i,a){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,r,n,a),this.serializer=i}get V_(){return this.e_>0}start(){this.lastStreamToken=void 0,super.start()}l_(){this.V_&&this.m_([])}T_(e,t){return this.connection.Bo("Write",e,t)}E_(e){return e.streamToken||L(),this.lastStreamToken=e.streamToken,e.writeResults&&0!==e.writeResults.length&&L(),this.listener.f_()}onNext(e){var t,r;e.streamToken||L(),this.lastStreamToken=e.streamToken,this.t_.reset();let n=(t=e.writeResults,r=e.commitTime,t&&t.length>0?(void 0!==r||L(),t.map(e=>{let t;return(t=e.updateTime?rk(e.updateTime):rk(r)).isEqual(X.min())&&(t=rk(r)),new tq(t,e.transformResults||[])})):[]),i=rk(e.commitTime);return this.listener.g_(i,n)}p_(){let e={};e.database=rT(this.serializer),this.a_(e)}m_(e){let t={streamToken:this.lastStreamToken,writes:e.map(e=>(function(e,t){var r;let n;if(t instanceof tX)n={update:rH(e,t.key,t.value)};else if(t instanceof t4)n={delete:rR(e,t.key)};else if(t instanceof tY)n={update:rH(e,t.key,t.data),updateMask:function(e){let t=[];return e.fields.forEach(e=>t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof t2))return L();n={verify:rR(e,t.key)}}return t.fieldTransforms.length>0&&(n.updateTransforms=t.fieldTransforms.map(e=>(function(e,t){let r=t.transform;if(r instanceof tL)return{fieldPath:t.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(r instanceof tO)return{fieldPath:t.field.canonicalString(),appendMissingElements:{values:r.elements}};if(r instanceof tK)return{fieldPath:t.field.canonicalString(),removeAllFromArray:{values:r.elements}};if(r instanceof tM)return{fieldPath:t.field.canonicalString(),increment:r.Pe};throw L()})(0,e))),t.precondition.isNone||(n.currentDocument=void 0!==(r=t.precondition).updateTime?{updateTime:r_(e,r.updateTime.toTimestamp())}:void 0!==r.exists?{exists:r.exists}:L()),n})(this.serializer,e))};this.a_(t)}}/** 2605 * @license 2606 * Copyright 2017 Google LLC 2607 * 2608 * Licensed under the Apache License, Version 2.0 (the "License"); 2609 * you may not use this file except in compliance with the License. 2610 * You may obtain a copy of the License at 2611 * 2612 * http://www.apache.org/licenses/LICENSE-2.0 2613 * 2614 * Unless required by applicable law or agreed to in writing, software 2615 * distributed under the License is distributed on an "AS IS" BASIS, 2616 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2617 * See the License for the specific language governing permissions and 2618 * limitations under the License. 2619 */class nf extends class{}{constructor(e,t,r,n){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=r,this.serializer=n,this.y_=!1}w_(){if(this.y_)throw new N(O.FAILED_PRECONDITION,"The client has already been terminated.")}Mo(e,t,r,n){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([i,a])=>this.connection.Mo(e,rb(t,r),n,i,a)).catch(e=>{throw"FirebaseError"===e.name?(e.code===O.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new N(O.UNKNOWN,e.toString())})}Lo(e,t,r,n,i){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([a,s])=>this.connection.Lo(e,rb(t,r),n,a,s,i)).catch(e=>{throw"FirebaseError"===e.name?(e.code===O.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new N(O.UNKNOWN,e.toString())})}terminate(){this.y_=!0,this.connection.terminate()}}class nv{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.S_=0,this.b_=null,this.D_=!0}v_(){0===this.S_&&(this.C_("Unknown"),this.b_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this.b_=null,this.F_("Backend didn't respond within 10 seconds."),this.C_("Offline"),Promise.resolve())))}M_(e){"Online"===this.state?this.C_("Unknown"):(this.S_++,this.S_>=1&&(this.x_(),this.F_(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.C_("Offline")))}set(e){this.x_(),this.S_=0,"Online"===e&&(this.D_=!1),this.C_(e)}C_(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}F_(e){let t=`Could not reach Cloud Firestore backend. ${e} 2620This 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.D_?(A(t),this.D_=!1):W("OnlineStateTracker",t)}x_(){null!==this.b_&&(this.b_.cancel(),this.b_=null)}}/** 2621 * @license 2622 * Copyright 2017 Google LLC 2623 * 2624 * Licensed under the Apache License, Version 2.0 (the "License");
2625 * you may not use this file except in compliance with the License. 2626 * You may obtain a copy of the License at 2627 * 2628 * http://www.apache.org/licenses/LICENSE-2.0 2629 * 2630 * Unless required by applicable law or agreed to in writing, software 2631 * distributed under the License is distributed on an "AS IS" BASIS, 2632 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2633 * See the License for the specific language governing permissions and 2634 * limitations under the License. 2635 */class n_{constructor(e,t,r,n,i){this.localStore=e,this.datastore=t,this.asyncQueue=r,this.remoteSyncer={},this.O_=[],this.N_=new Map,this.L_=new Set,this.B_=[],this.k_=i,this.k_._o(e=>{r.enqueueAndForget(async()=>{nT(this)&&(W("RemoteStore","Restarting streams for network reachability change."),await async function(e){e.L_.add(4),await nk(e),e.q_.set("Unknown"),e.L_.delete(4),await nw(e)}(this))})}),this.q_=new nv(r,n)}}async function nw(e){if(nT(e))for(let t of e.B_)await t(!0)}async function nk(e){for(let t of e.B_)await t(!1)}function nP(e,t){e.N_.has(t.targetId)||(e.N_.set(t.targetId,t),nI(e)?nS(e):nq(e).r_()&&nE(e,t))}function nb(e,t){let r=nq(e);e.N_.delete(t),r.r_()&&nR(e,t),0===e.N_.size&&(r.r_()?r.o_():nT(e)&&e.q_.set("Unknown"))}function nE(e,t){if(e.Q_.xe(t.targetId),t.resumeToken.approximateByteSize()>0||t.snapshotVersion.compareTo(X.min())>0){let r=e.remoteSyncer.getRemoteKeysForTarget(t.targetId).size;t=t.withExpectedCount(r)}nq(e).A_(t)}function nR(e,t){e.Q_.xe(t),nq(e).R_(t)}function nS(e){e.Q_=new rh({getRemoteKeysForTarget:t=>e.remoteSyncer.getRemoteKeysForTarget(t),ot:t=>e.N_.get(t)||null,tt:()=>e.datastore.serializer.databaseId}),nq(e).start(),e.q_.v_()}function nI(e){return nT(e)&&!nq(e).n_()&&e.N_.size>0}function nT(e){return 0===e.L_.size}async function nC(e){e.q_.set("Online")}async function nH(e){e.N_.forEach((t,r)=>{nE(e,t)})}async function nW(e,t){e.Q_=void 0,nI(e)?(e.q_.M_(t),nS(e)):e.q_.set("Unknown")}async function nA(e,t,r){if(e.q_.set("Online"),t instanceof ru&&2===t.state&&t.cause)try{await async function(e,t){let r=t.cause;for(let n of t.targetIds)e.N_.has(n)&&(await e.remoteSyncer.rejectListen(n,r),e.N_.delete(n),e.Q_.removeTarget(n))}(e,t)}catch(r){W("RemoteStore","Failed to remove targets %s: %s ",t.targetIds.join(","),r),await nD(e,r)}else if(t instanceof ro?e.Q_.Ke(t):t instanceof rc?e.Q_.He(t):e.Q_.We(t),!r.isEqual(X.min()))try{let t=await r8(e.localStore);r.compareTo(t)>=0&&await function(e,t){let r=e.Q_.rt(t);
2635return r.targetChanges.forEach((r,n)=>{if(r.resumeToken.approximateByteSize()>0){let i=e.N_.get(n);i&&e.N_.set(n,i.withResumeToken(r.resumeToken,t))}}),r.targetMismatches.forEach((t,r)=>{let n=e.N_.get(t);if(!n)return;e.N_.set(t,n.withResumeToken(ek.EMPTY_BYTE_STRING,n.snapshotVersion)),nR(e,t);let i=new rL(n.target,t,r,n.sequenceNumber);nE(e,i)}),e.remoteSyncer.applyRemoteEvent(r)}(e,r)}catch(t){W("RemoteStore","Failed to raise snapshot:",t),await nD(e,t)}}async function nD(e,t,r){if(!ec(t))throw t;e.L_.add(1),await nk(e),e.q_.set("Offline"),r||(r=()=>r8(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{W("RemoteStore","Retrying IndexedDB access"),await r(),e.L_.delete(1),await nw(e)})}function nU(e,t){return t().catch(r=>nD(e,r,t))}async function nL(e){let t=nj(e),r=e.O_.length>0?e.O_[e.O_.length-1].batchId:-1;for(;nT(e)&&e.O_.length<10;)try{let n=await function(e,t){return e.persistence.runTransaction("Get next mutation batch","readonly",r=>(void 0===t&&(t=-1),e.mutationQueue.getNextMutationBatchAfterBatchId(r,t)))}(e.localStore,r);if(null===n){0===e.O_.length&&t.o_();break}r=n.batchId,function(e,t){e.O_.push(t);let r=nj(e);r.r_()&&r.V_&&r.m_(t.mutations)}(e,n)}catch(t){await nD(e,t)}nO(e)&&nN(e)}function nO(e){return nT(e)&&!nj(e).n_()&&e.O_.length>0}function nN(e){nj(e).start()}async function nK(e){nj(e).p_()}async function nx(e){let t=nj(e);for(let r of e.O_)t.m_(r.mutations)}async function nM(e,t,r){let n=e.O_.shift(),i=t3.from(n,t,r);await nU(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await nL(e)}async function nF(e,t){t&&nj(e).V_&&await async function(e,t){var r;if(function(e){switch(e){default:return L();case O.CANCELLED:case O.UNKNOWN:case O.DEADLINE_EXCEEDED:case O.RESOURCE_EXHAUSTED:case O.INTERNAL:case O.UNAVAILABLE:case O.UNAUTHENTICATED:return!1;case O.INVALID_ARGUMENT:case O.NOT_FOUND:case O.ALREADY_EXISTS:case O.PERMISSION_DENIED:case O.FAILED_PRECONDITION:case O.ABORTED:case O.OUT_OF_RANGE:case O.UNIMPLEMENTED:case O.DATA_LOSS:return!0}}(r=t.code)&&r!==O.ABORTED){let r=e.O_.shift();nj(e).s_(),await nU(e,()=>e.remoteSyncer.rejectFailedWrite(r.batchId,t)),await nL(e)}}(e,t),nO(e)&&nN(e)}async function nB(e,t){e.asyncQueue.verifyOperationInProgress(),W("RemoteStore","RemoteStore received new credentials");let r=nT(e);e.L_.add(3),await nk(e),r&&e.q_.set("Unknown"),await e.remoteSyncer.handleCredentialChange(t),e.L_.delete(3),await nw(e)}async function nV(e,t){t?(e.L_.delete(2),await nw(e)):t||(e.L_.add(2),await nk(e),e.q_.set("Unknown"))}function nq(e){var t,r,n;return e.K_||(e.K_=(t=e.datastore,r=e.asyncQueue,n={Eo:nC.bind(null,e),Ro:nH.bind(null,e),mo:nW.bind(null,e),d_:nA.bind(null,e)},t.w_(),new np(r,t.connection,t.authCredentials,t.appCheckCredentials,t.serializer,n)),e.B_.push(async t=>{t?(e.K_.s_(),nI(e)?nS(e):e.q_.set("Unknown")):(await e.K_.stop(),e.Q_=void 0)})),e.K_}function nj(e){var t,r,n;return e.U_||(e.U_=(t=e.datastore,r=e.asyncQueue,n={Eo:()=>Promise.resolve(),Ro:nK.bind(null,e),mo:nF.bind(null,e),f_:nx.bind(null,e),g_:nM.bind(null,e)},t.w_(),new ny(r,t.connection,t.authCredentials,t.appCheckCredentials,t.serializer,n)),e.B_.push(async t=>{t?(e.U_.s_(),await nL(e)):(await e.U_.stop(),e.O_.length>0&&(W("RemoteStore",`Stopping write stream with ${e.O_.length} pending writes`),e.O_=[]))})),e.U_}/** 2636 * @license 2637 * Copyright 2017 Google LLC 2638 * 2639 * Licensed under the Apache License, Version 2.0 (the "License"); 2640 * you may not use this file except in compliance with the License. 2641 * You may obtain a copy of the License at 2642 * 2643 * http://www.apache.org/licenses/LICENSE-2.0 2644 * 2645 * Unless required by applicable law or agreed to in writing, software 2646 * distributed under the License is distributed on an "AS IS" BASIS, 2647 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2648 * See the License for the specific language governing permissions and 2649 * limitations under the License. 2650 */class nG{constructor(e,t,r,n,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=r,this.op=n,this.removalCallback=i,this.deferred=new K,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,r,n,i){let a=new nG(e,t,Date.now()+r,n,i);return a.start(r),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new N(O.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 nz(e,t){if(A("AsyncQueue",`${t}: ${e}`),ec(e))return new N(O.UNAVAILABLE,`${t}: ${e}`);throw e}/** 2651 * @license 2652 * Copyright 2017 Google LLC 2653 * 2654 * Licensed under the Apache License, Version 2.0 (the "License");
2655 * you may not use this file except in compliance with the License. 2656 * You may obtain a copy of the License at 2657 * 2658 * http://www.apache.org/licenses/LICENSE-2.0 2659 * 2660 * Unless required by applicable law or agreed to in writing, software 2661 * distributed under the License is distributed on an "AS IS" BASIS, 2662 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2663 * See the License for the specific language governing permissions and 2664 * limitations under the License. 2665 */class n${constructor(e){this.comparator=e?(t,r)=>e(t,r)||er.comparator(t.key,r.key):(e,t)=>er.comparator(e.key,t.key),this.keyedMap=tE(),this.sortedSet=new em(this.comparator)}static emptySet(e){return new n$(e.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){let t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal((t,r)=>(e(t),!1))}add(e){let t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){let t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof n$)||this.size!==e.size)return!1;let t=this.sortedSet.getIterator(),r=e.sortedSet.getIterator();for(;t.hasNext();){let e=t.getNext().key,n=r.getNext().key;if(!e.isEqual(n))return!1}return!0}toString(){let e=[];return this.forEach(t=>{e.push(t.toString())}),0===e.length?"DocumentSet ()":"DocumentSet (\n "+e.join(" \n")+"\n)"}copy(e,t){let r=new n$;return r.comparator=this.comparator,r.keyedMap=e,r.sortedSet=t,r}}/** 2666 * @license 2667 * Copyright 2017 Google LLC 2668 * 2669 * Licensed under the Apache License, Version 2.0 (the "License"); 2670 * you may not use this file except in compliance with the License. 2671 * You may obtain a copy of the License at 2672 * 2673 * http://www.apache.org/licenses/LICENSE-2.0 2674 * 2675 * Unless required by applicable law or agreed to in writing, software 2676 * distributed under the License is distributed on an "AS IS" BASIS, 2677 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2678 * See the License for the specific language governing permissions and 2679 * limitations under the License. 2680 */class nJ{constructor(){this.W_=new em(er.comparator)}track(e){let t=e.doc.key,r=this.W_.get(t);r?0!==e.type&&3===r.type?this.W_=this.W_.insert(t,e):3===e.type&&1!==r.type?this.W_=this.W_.insert(t,{type:r.type,doc:e.doc}):2===e.type&&2===r.type?this.W_=this.W_.insert(t,{type:2,doc:e.doc}):2===e.type&&0===r.type?this.W_=this.W_.insert(t,{type:0,doc:e.doc}):1===e.type&&0===r.type?this.W_=this.W_.remove(t):1===e.type&&2===r.type?this.W_=this.W_.insert(t,{type:1,doc:r.doc}):0===e.type&&1===r.type?this.W_=this.W_.insert(t,{type:2,doc:e.doc}):L():this.W_=this.W_.insert(t,e)}G_(){let e=[];return this.W_.inorderTraversal((t,r)=>{e.push(r)}),e}}class nQ{constructor(e,t,r,n,i,a,s,o,c){this.query=e,this.docs=t,this.oldDocs=r,this.docChanges=n,this.mutatedKeys=i,this.fromCache=a,this.syncStateChanged=s,this.excludesMetadataChanges=o,this.hasCachedResults=c}static fromInitialDocuments(e,t,r,n,i){let a=[];return t.forEach(e=>{a.push({type:0,doc:e})}),new nQ(e,t,n$.emptySet(t),a,r,n,!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)&&ty(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;let t=this.docChanges,r=e.docChanges;if(t.length!==r.length)return!1;for(let e=0;e<t.length;e++)if(t[e].type!==r[e].type||!t[e].doc.isEqual(r[e].doc))return!1;return!0}}/** 2681 * @license 2682 * Copyright 2017 Google LLC 2683 * 2684 * Licensed under the Apache License, Version 2.0 (the "License"); 2685 * you may not use this file except in compliance with the License. 2686 * You may obtain a copy of the License at 2687 * 2688 * http://www.apache.org/licenses/LICENSE-2.0 2689 * 2690 * Unless required by applicable law or agreed to in writing, softw
2690are 2691 * distributed under the License is distributed on an "AS IS" BASIS, 2692 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2693 * See the License for the specific language governing permissions and 2694 * limitations under the License. 2695 */class nX{constructor(){this.z_=void 0,this.j_=[]}H_(){return this.j_.some(e=>e.J_())}}class nY{constructor(){this.queries=nZ(),this.onlineState="Unknown",this.Y_=new Set}terminate(){!function(e,t){let r=e.queries;e.queries=nZ(),r.forEach((e,r)=>{for(let e of r.j_)e.onError(t)})}(this,new N(O.ABORTED,"Firestore shutting down"))}}function nZ(){return new tk(e=>tf(e),ty)}async function n1(e,t){let r=3,n=t.query,i=e.queries.get(n);i?!i.H_()&&t.J_()&&(r=2):(i=new nX,r=t.J_()?0:1);try{switch(r){case 0:i.z_=await e.onListen(n,!0);break;case 1:i.z_=await e.onListen(n,!1);break;case 2:await e.onFirstRemoteStoreListen(n)}}catch(r){let e=nz(r,`Initialization of query '${tv(t.query)}' failed`);return void t.onError(e)}e.queries.set(n,i),i.j_.push(t),t.Z_(e.onlineState),i.z_&&t.X_(i.z_)&&n5(e)}async function n0(e,t){let r=t.query,n=3,i=e.queries.get(r);if(i){let e=i.j_.indexOf(t);e>=0&&(i.j_.splice(e,1),0===i.j_.length?n=t.J_()?0:1:!i.H_()&&t.J_()&&(n=2))}switch(n){case 0:return e.queries.delete(r),e.onUnlisten(r,!0);case 1:return e.queries.delete(r),e.onUnlisten(r,!1);case 2:return e.onLastRemoteStoreUnlisten(r);default:return}}function n4(e,t){let r=!1;for(let n of t){let t=n.query,i=e.queries.get(t);if(i){for(let e of i.j_)e.X_(n)&&(r=!0);i.z_=n}}r&&n5(e)}function n2(e,t,r){let n=e.queries.get(t);if(n)for(let e of n.j_)e.onError(r);e.queries.delete(t)}function n5(e){e.Y_.forEach(e=>{e.next()})}(y=p||(p={})).ea="default",y.Cache="cache";class n3{constructor(e,t,r){this.query=e,this.ta=t,this.na=!1,this.ra=null,this.onlineState="Unknown",this.options=r||{}}X_(e){if(!this.options.includeMetadataChanges){let t=[];for(let r of e.docChanges)3!==r.type&&t.push(r);e=new nQ(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.na?this.ia(e)&&(this.ta.next(e),t=!0):this.sa(e,this.onlineState)&&(this.oa(e),t=!0),this.ra=e,t}onError(e){this.ta.error(e)}Z_(e){this.onlineState=e;let t=!1;return this.ra&&!this.na&&this.sa(this.ra,e)&&(this.oa(this.ra),t=!0),t}sa(e,t){return!(e.fromCache&&this.J_())||(!this.options._a||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}ia(e){if(e.docChanges.length>0)return!0;let t=this.ra&&this.ra.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}oa(e){e=nQ.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.na=!0,this.ta.next(e)}J_(){return this.options.source!==p.Cache}}/** 2696 * @license 2697 * Copyright 2017 Google LLC 2698 * 2699 * Licensed under the Apache License, Version 2.0 (the "License"); 2700 * you may not use this file except in compliance with the License. 2701 * You may obtain a copy of the License at 2702 * 2703 * http://www.apache.org/licenses/LICENSE-2.0 2704 * 2705 * Unless required by applicable law or agreed to in writing, software 2706 * distributed under the License is distributed on an "AS IS" BASIS, 2707 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2708 * See the License for the specific language governing permissions and 2709 * limitations under the License. 2710 */class n6{constructor(e){this.key=e}}class n9{constructor(e){this.key=e}}class n8{constructor(e,t){this.query=e,this.Ta=t,this.Ea=null,this.hasCachedResults=!1,this.current=!1,this.da=tC(),this.mutatedKeys=tC(),this.Aa=tw(e),this.Ra=new n$(this.Aa)}get Va(){return this.Ta}ma(e,t){let r=t?t.fa:new nJ,n=t?t.Ra:this.Ra,i=t?t.mutatedKeys:this.mutatedKeys,a=n,s=!1,o="F"===this.query.limitType&&n.size===this.query.limit?n.last():null,c="L"===this.query.limitType&&n.size===this.query.limit?n.first():null;if(e.inorderTraversal((e,t)=>{let u=n.get(e),l=t_(this.query,t)?t:null,h=!!u&&this.mutatedKeys.has(u.key),g=!!l&&(l.hasLocalMutations||this.mutatedKeys.has(l.key)&&l.hasCommittedMutations),d=!1;u&&l?u.data.isEqual(l.data)?h!==g&&(r.track({type:3,doc:l}),d=!0):this.ga(u,l)||(r.track({type:2,doc:l}),d=!0,(o&&this.Aa(l,o)>0||c&&0>this.Aa(l,c))&&(s=!0)):!u&&l?(r.track({type:0,doc:l}),d=!0):u&&!l&&(r.track({type:1,doc:u}),d=!0,(o||c)&&(s=!0)),d&&(l?(a=a.add(l),i=g?i.add(e):i.delete(e)):(a=a.delete(e),i=i.delete(e)))}),null!==this.query.limit)for(;a.size>this.query.limit;){let e="F"===this.query.limitType?a.last():a.first();a=a.delete(e.key),i=i.delete(e.key),r.track({type:1,doc:e})}return{Ra:a,fa:r,ns:s,mutatedKeys:i}}ga(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}
2710applyChanges(e,t,r,n){let i=this.Ra;this.Ra=e.Ra,this.mutatedKeys=e.mutatedKeys;let a=e.fa.G_();a.sort((e,t)=>(function(e,t){let r=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return L()}};return r(e)-r(t)})(e.type,t.type)||this.Aa(e.doc,t.doc)),this.pa(r),n=null!=n&&n;let s=t&&!n?this.ya():[],o=0===this.da.size&&this.current&&!n?1:0,c=o!==this.Ea;return(this.Ea=o,0!==a.length||c)?{snapshot:new nQ(this.query,e.Ra,i,a,e.mutatedKeys,0===o,c,!1,!!r&&r.resumeToken.approximateByteSize()>0),wa:s}:{wa:s}}Z_(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({Ra:this.Ra,fa:new nJ,mutatedKeys:this.mutatedKeys,ns:!1},!1)):{wa:[]}}Sa(e){return!this.Ta.has(e)&&!!this.Ra.has(e)&&!this.Ra.get(e).hasLocalMutations}pa(e){e&&(e.addedDocuments.forEach(e=>this.Ta=this.Ta.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.Ta=this.Ta.delete(e)),this.current=e.current)}ya(){if(!this.current)return[];let e=this.da;this.da=tC(),this.Ra.forEach(e=>{this.Sa(e.key)&&(this.da=this.da.add(e.key))});let t=[];return e.forEach(e=>{this.da.has(e)||t.push(new n9(e))}),this.da.forEach(r=>{e.has(r)||t.push(new n6(r))}),t}ba(e){this.Ta=e.Ts,this.da=tC();let t=this.ma(e.documents);return this.applyChanges(t,!0)}Da(){return nQ.fromInitialDocuments(this.query,this.Ra,this.mutatedKeys,0===this.Ea,this.hasCachedResults)}}class n7{constructor(e,t,r){this.query=e,this.targetId=t,this.view=r}}class ie{constructor(e){this.key=e,this.va=!1}}class it{constructor(e,t,r,n,i,a){this.localStore=e,this.remoteStore=t,this.eventManager=r,this.sharedClientState=n,this.currentUser=i,this.maxConcurrentLimboResolutions=a,this.Ca={},this.Fa=new tk(e=>tf(e),ty),this.Ma=new Map,this.xa=new Set,this.Oa=new em(er.comparator),this.Na=new Map,this.La=new r$,this.Ba={},this.ka=new Map,this.qa=rF.kn(),this.onlineState="Unknown",this.Qa=void 0}get isPrimaryClient(){return!0===this.Qa}}async function ir(e,t,r=!0){let n;let i=iR(e),a=i.Fa.get(t);return a?(i.sharedClientState.addLocalQueryTarget(a.targetId),n=a.view.Da()):n=await ia(i,t,r,!0),n}async function ii(e,t){let r=iR(e);await ia(r,t,!0,!1)}async function ia(e,t,r,n){var i,a;let s;let o=await (i=e.localStore,a=tg(t),i.persistence.runTransaction("Allocate target","readwrite",e=>{let t;return i.Ur.getTargetData(e,a).next(r=>r?(t=r,eo.resolve(t)):i.Ur.allocateTargetId(e).next(r=>(t=new rL(a,r,"TargetPurposeListen",e.currentSequenceNumber),i.Ur.addTargetData(e,t).next(()=>t))))}).then(e=>{let t=i.os.get(e.targetId);return(null===t||e.snapshotVersion.compareTo(t.snapshotVersion)>0)&&(i.os=i.os.insert(e.targetId,e),i._s.set(a,e.targetId)),e})),c=o.targetId,u=e.sharedClientState.addLocalQueryTarget(c,r);return n&&(s=await is(e,t,c,"current"===u,o.resumeToken)),e.isPrimaryClient&&r&&nP(e.remoteStore,o),s}async function is(e,t,r,n,i){e.Ka=(t,r,n)=>(async function(e,t,r,n){let i=t.view.ma(r);i.ns&&(i=await ne(e.localStore,t.query,!1).then(({documents:e})=>t.view.ma(e,i)));let a=n&&n.targetChanges.get(t.targetId),s=n&&null!=n.targetMismatches.get(t.targetId),o=t.view.applyChanges(i,e.isPrimaryClient,a,s);return iw(e,t.targetId,o.wa),o.snapshot})(e,t,r,n);let a=await ne(e.localStore,t,!0),s=new n8(t,a.Ts),o=s.ma(a.documents),c=rs.createSynthesizedTargetChangeForCurrentChange(r,n&&"Offline"!==e.onlineState,i),u=s.applyChanges(o,e.isPrimaryClient,c);iw(e,r,u.wa);let l=new n7(t,r,s);return e.Fa.set(t,l),e.Ma.has(r)?e.Ma.get(r).push(t):e.Ma.set(r,[t]),u.snapshot}async function io(e,t,r){let n=e.Fa.get(t),i=e.Ma.get(n.targetId);if(i.length>1)return e.Ma.set(n.targetId,i.filter(e=>!ty(e,t))),void e.Fa.delete(t);e.isPrimaryClient?(e.sharedClientState.removeLocalQueryTarget(n.targetId),e.sharedClientState.isActiveQueryTarget(n.targetId)||await r7(e.localStore,n.targetId,!1).then(()=>{e.sharedClientState.clearQueryState(n.targetId),r&&nb(e.remoteStore,n.targetId),iv(e,n.targetId)}).catch(es)):(iv(e,n.targetId),await r7(e.localStore,n.targetId,!0))}async function ic(e,t){let r=e.Fa.get(t),n=e.Ma.get(r.targetId);e.isPrimaryClient&&1===n.length&&(e.sharedClientState.removeLocalQueryTarget(r.targetId),nb(e.remoteStore,r.targetId))}async function iu(e,t,r){var n;let i=(e.remoteStore.remoteSyncer.applySuccessfulWrite=id.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=im.bind(null,e),e);try{let e;let a=await function(e,t){let r,n;let i=Q.now(),a=t.reduce((e,t)=>
2710e.add(t.key),tC());return e.persistence.runTransaction("Locally write mutations","readwrite",s=>{let o=tP,c=tC();return e.cs.getEntries(s,a).next(e=>{(o=e).forEach((e,t)=>{t.isValidDocument()||(c=c.add(e))})}).next(()=>e.localDocuments.getOverlayedDocuments(s,o)).next(n=>{r=n;let a=[];for(let e of t){let t=function(e,t){let r=null;for(let n of e.fieldTransforms){let e=t.data.field(n.field),i=tU(n.transform,e||null);null!=i&&(null===r&&(r=e$.empty()),r.set(n.field,i))}return r||null}(e,r.get(e.key).overlayedDocument);null!=t&&a.push(new tY(e.key,t,function e(t){let r=[];return eg(t.fields,(t,n)=>{let i=new et([t]);if(eq(n)){let t=e(n.mapValue).fields;if(0===t.length)r.push(i);else for(let e of t)r.push(i.child(e))}else r.push(i)}),new e_(r)}(t.value.mapValue),tj.exists(!0)))}return e.mutationQueue.addMutationBatch(s,i,a,t)}).next(t=>{n=t;let i=t.applyToLocalDocumentSet(r,c);return e.documentOverlayCache.saveOverlays(s,t.batchId,i)})}).then(()=>({batchId:n.batchId,changes:tR(r)}))}(i.localStore,t);i.sharedClientState.addPendingMutation(a.batchId),n=a.batchId,(e=i.Ba[i.currentUser.toKey()])||(e=new em($)),e=e.insert(n,r),i.Ba[i.currentUser.toKey()]=e,await iP(i,a.changes),await nL(i.remoteStore)}catch(t){let e=nz(t,"Failed to persist write");r.reject(e)}}async function il(e,t){try{let r=await function(e,t){let r=t.snapshotVersion,n=e.os;return e.persistence.runTransaction("Apply remote event","readwrite-primary",i=>{var a;let s,o;let c=e.cs.newChangeBuffer({trackRemovals:!0});n=e.os;let u=[];
2710t.targetChanges.forEach((a,s)=>{var o;let c=n.get(s);if(!c)return;u.push(e.Ur.removeMatchingKeys(i,a.removedDocuments,s).next(()=>e.Ur.addMatchingKeys(i,a.addedDocuments,s)));let l=c.withSequenceNumber(i.currentSequenceNumber);null!==t.targetMismatches.get(s)?l=l.withResumeToken(ek.EMPTY_BYTE_STRING,X.min()).withLastLimboFreeSnapshotVersion(X.min()):a.resumeToken.approximateByteSize()>0&&(l=l.withResumeToken(a.resumeToken,r)),n=n.insert(s,l),o=l,(0===c.resumeToken.approximateByteSize()||o.snapshotVersion.toMicroseconds()-c.snapshotVersion.toMicroseconds()>=3e8||a.addedDocuments.size+a.modifiedDocuments.size+a.removedDocuments.size>0)&&u.push(e.Ur.updateTargetData(i,l))});let l=tP,h=tC();if(t.documentUpdates.forEach(r=>{t.resolvedLimboDocuments.has(r)&&u.push(e.persistence.referenceDelegate.updateLimboDocument(i,r))}),u.push((a=t.documentUpdates,s=tC(),o=tC(),a.forEach(e=>s=s.add(e)),c.getEntries(i,s).next(e=>{let t=tP;return a.forEach((r,n)=>{let i=e.get(r);n.isFoundDocument()!==i.isFoundDocument()&&(o=o.add(r)),n.isNoDocument()&&n.version.isEqual(X.min())?(c.removeEntry(r,n.readTime),t=t.insert(r,n)):!i.isValidDocument()||n.version.compareTo(i.version)>0||0===n.version.compareTo(i.version)&&i.hasPendingWrites?(c.addEntry(n),t=t.insert(r,n)):W("LocalStore","Ignoring outdated watch update for ",r,". Current version:",i.version," Watch version:",n.version)}),{Ps:t,Is:o}})).next(e=>{l=e.Ps,h=e.Is})),!r.isEqual(X.min())){let t=e.Ur.getLastRemoteSnapshotVersion(i).next(t=>e.Ur.setTargetsMetadata(i,i.currentSequenceNumber,r));u.push(t)}return eo.waitFor(u).next(()=>c.apply(i)).next(()=>e.localDocuments.getLocalViewOfDocuments(i,l,h)).next(()=>l)}).then(t=>(e.os=n,t))}(e.localStore,t);
2710t.targetChanges.forEach((t,r)=>{let n=e.Na.get(r);n&&(t.addedDocuments.size+t.modifiedDocuments.size+t.removedDocuments.size<=1||L(),t.addedDocuments.size>0?n.va=!0:t.modifiedDocuments.size>0?n.va||L():t.removedDocuments.size>0&&(n.va||L(),n.va=!1))}),await iP(e,r,t)}catch(e){await es(e)}}function ih(e,t,r){var n;if(e.isPrimaryClient&&0===r||!e.isPrimaryClient&&1===r){let r;let i=[];e.Fa.forEach((e,r)=>{let n=r.view.Z_(t);n.snapshot&&i.push(n.snapshot)}),(n=e.eventManager).onlineState=t,r=!1,n.queries.forEach((e,n)=>{for(let e of n.j_)e.Z_(t)&&(r=!0)}),r&&n5(n),i.length&&e.Ca.d_(i),e.onlineState=t,e.isPrimaryClient&&e.sharedClientState.setOnlineState(t)}}async function ig(e,t,r){e.sharedClientState.updateQueryState(t,"rejected",r);let n=e.Na.get(t),i=n&&n.key;if(i){let r=new em(er.comparator);r=r.insert(i,eJ.newNoDocument(i,X.min()));let n=tC().add(i),a=new ra(X.min(),new Map,new em($),r,n);await il(e,a),e.Oa=e.Oa.remove(i),e.Na.delete(t),ik(e)}else await r7(e.localStore,t,!1).then(()=>iv(e,t,r)).catch(es)}async function id(e,t){var r;let n=t.batch.batchId;try{let i=await (r=e.localStore).persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{let n=t.batch.keys(),i=r.cs.newChangeBuffer({trackRemovals:!0});return(function(e,t,r,n){let i=r.batch,a=i.keys(),s=eo.resolve();return a.forEach(e=>{s=s.next(()=>n.getEntry(t,e)).next(t=>{let a=r.docVersions.get(e);null!==a||L(),0>t.version.compareTo(a)&&(i.applyToRemoteDocument(t,r),t.isValidDocument()&&(t.setReadTime(r.commitVersion),n.addEntry(t)))})}),s.next(()=>e.mutationQueue.removeMutationBatch(t,i))})(r,e,t,i).next(()=>i.apply(e)).next(()=>r.mutationQueue.performConsistencyCheck(e)).next(()=>r.documentOverlayCache.removeOverlaysForBatchId(e,n,t.batch.batchId)).next(()=>r.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=tC();for(let r=0;r<e.mutationResults.length;++r)e.mutationResults[r].transformResults.length>0&&(t=t.add(e.batch.mutations[r].key));return t}(t))).next(()=>r.localDocuments.getDocuments(e,n))});iy(e,n,null),ip(e,n),e.sharedClientState.updateMutationState(n,"acknowledged"),await iP(e,i)}catch(e){await es(e)}}async function im(e,t,r){var n;try{let i=await (n=e.localStore).persistence.runTransaction("Reject batch","readwrite-primary",e=>{let r;
2710return n.mutationQueue.lookupMutationBatch(e,t).next(t=>(null!==t||L(),r=t.keys(),n.mutationQueue.removeMutationBatch(e,t))).next(()=>n.mutationQueue.performConsistencyCheck(e)).next(()=>n.documentOverlayCache.removeOverlaysForBatchId(e,r,t)).next(()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,r)).next(()=>n.localDocuments.getDocuments(e,r))});iy(e,t,r),ip(e,t),e.sharedClientState.updateMutationState(t,"rejected",r),await iP(e,i)}catch(e){await es(e)}}function ip(e,t){(e.ka.get(t)||[]).forEach(e=>{e.resolve()}),e.ka.delete(t)}function iy(e,t,r){let n=e.Ba[e.currentUser.toKey()];if(n){let i=n.get(t);i&&(r?i.reject(r):i.resolve(),n=n.remove(t)),e.Ba[e.currentUser.toKey()]=n}}function iv(e,t,r=null){for(let n of(e.sharedClientState.removeLocalQueryTarget(t),e.Ma.get(t)))e.Fa.delete(n),r&&e.Ca.$a(n,r);e.Ma.delete(t),e.isPrimaryClient&&e.La.gr(t).forEach(t=>{e.La.containsKey(t)||i_(e,t)})}function i_(e,t){e.xa.delete(t.path.canonicalString());let r=e.Oa.get(t);null!==r&&(nb(e.remoteStore,r),e.Oa=e.Oa.remove(t),e.Na.delete(r),ik(e))}function iw(e,t,r){for(let n of r)n instanceof n6?(e.La.addReference(n.key,t),function(e,t){let r=t.key,n=r.path.canonicalString();e.Oa.get(r)||e.xa.has(n)||(W("SyncEngine","New document in limbo: "+r),e.xa.add(n),ik(e))}(e,n)):n instanceof n9?(W("SyncEngine","Document no longer in limbo: "+n.key),e.La.removeReference(n.key,t),e.La.containsKey(n.key)||i_(e,n.key)):L()}function ik(e){for(;e.xa.size>0&&e.Oa.size<e.maxConcurrentLimboResolutions;){let t=e.xa.values().next().value;e.xa.delete(t);let r=new er(Z.fromString(t)),n=e.qa.next();e.Na.set(n,new ie(r)),e.Oa=e.Oa.insert(r,n),nP(e.remoteStore,new rL(tg(new tc(r.path)),n,"TargetPurposeLimboResolution",eu.oe))}}async function iP(e,t,r){let n=[],i=[],a=[];e.Fa.isEmpty()||(e.Fa.forEach((s,o)=>{a.push(e.Ka(o,t,r).then(t=>{var a;if((t||r)&&e.isPrimaryClient){let n=t?!t.fromCache:null===(a=null==r?void 0:r.targetChanges.get(o.targetId))||void 0===a?void 0:a.current;e.sharedClientState.updateQueryState(o.targetId,n?"current":"not-current")}if(t){n.push(t);let e=r2.Wi(o.targetId,t);i.push(e)}}))}),await Promise.all(a),e.Ca.d_(n),await async function(e,t){try{await e.persistence.runTransaction("notifyLocalViewChanges","readwrite",r=>eo.forEach(t,t=>eo.forEach(t.$i,n=>e.persistence.referenceDelegate.addReference(r,t.targetId,n)).next(()=>eo.forEach(t.Ui,n=>e.persistence.referenceDelegate.removeReference(r,t.targetId,n)))))}catch(e){if(!ec(e))throw e;W("LocalStore","Failed to update sequence numbers: "+e)}for(let r of t){let t=r.targetId;if(!r.fromCache){let r=e.os.get(t),n=r.snapshotVersion,i=r.withLastLimboFreeSnapshotVersion(n);e.os=e.os.insert(t,i)}}}(e.localStore,i))}async function ib(e,t){var r;if(!e.currentUser.isEqual(t)){W("SyncEngine","User change. New user:",t.toKey());let n=await r9(e.localStore,t);e.currentUser=t,r="'waitForPendingWrites' promise is rejected due to a user change.",e.ka.forEach(e=>{e.forEach(e=>{e.reject(new N(O.CANCELLED,r))})}),e.ka.clear(),e.sharedClientState.handleUserChange(t,n.removedBatchIds,n.addedBatchIds),await iP(e,n.hs)}}function iE(e,t){let r=e.Na.get(t);if(r&&r.va)return tC().add(r.key);{let r=tC(),n=e.Ma.get(t);if(!n)return r;for(let t of n){let n=e.Fa.get(t);r=r.unionWith(n.view.Va)}return r}}function iR(e){return e.remoteStore.remoteSyncer.applyRemoteEvent=il.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=iE.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=ig.bind(null,e),e.Ca.d_=n4.bind(null,e.eventManager),e.Ca.$a=n2.bind(null,e.eventManager),e}class iS{constructor(){this.kind="memory",this.synchronizeTabs=!1}async initialize(e){this.serializer=ng(e.databaseInfo.databaseId),this.sharedClientState=this.Wa(e),this.persistence=this.Ga(e),await this.persistence.start(),this.localStore=this.za(e),this.gcScheduler=this.ja(e,this.localStore),this.indexBackfillerScheduler=this.Ha(e,this.localStore)}ja(e,t){return null}Ha(e,t){return null}za(e){var t;return t=this.persistence,new r6(t,new r3,e.initialUser,this.serializer)}Ga(e){return new r1(r4.Zr,this.serializer)}Wa(e){return new nr}async terminate(){var e,t;null===(e=this.gcScheduler)||void 0===e||e.stop(),null===(t=this.indexBackfillerScheduler)||void 0===t||t.stop(),this.sharedCl
2710ientState.shutdown(),await this.persistence.shutdown()}}iS.provider={build:()=>new iS};class iI{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=>ih(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=ib.bind(null,this.syncEngine),await nV(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new nY}createDatastore(e){let t=ng(e.databaseInfo.databaseId),r=new nl(e.databaseInfo);return new nf(e.authCredentials,e.appCheckCredentials,r,t)}createRemoteStore(e){var t;return t=this.localStore,new n_(t,this.datastore,e.asyncQueue,e=>ih(this.syncEngine,e,0),ni.D()?new ni:new nn)}createSyncEngine(e,t){return function(e,t,r,n,i,a,s){let o=new it(e,t,r,n,i,a);return s&&(o.Qa=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){var e,t;await async function(e){W("RemoteStore","RemoteStore shutting down."),e.L_.add(5),await nk(e),e.k_.shutdown(),e.q_.set("Unknown")}(this.remoteStore),null===(e=this.datastore)||void 0===e||e.terminate(),null===(t=this.eventManager)||void 0===t||t.terminate()}}iI.provider={build:()=>new iI};/** 2711 * @license 2712 * Copyright 2020 Google LLC 2713 * 2714 * Licensed under the Apache License, Version 2.0 (the "License"); 2715 * you may not use this file except in compliance with the License. 2716 * You may obtain a copy of the License at 2717 * 2718 * http://www.apache.org/licenses/LICENSE-2.0 2719 * 2720 * Unless required by applicable law or agreed to in writing, software 2721 * distributed under the License is distributed on an "AS IS" BASIS, 2722 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2723 * See the License for the specific language governing permissions and 2724 * limitations under the License. 2725 *//** 2726 * @license 2727 * Copyright 2017 Google LLC 2728 * 2729 * Licensed under the Apache License, Version 2.0 (the "License"); 2730 * you may not use this file except in compliance with the License. 2731 * You may obtain a copy of the License at 2732 * 2733 * http://www.apache.org/licenses/LICENSE-2.0 2734 * 2735 * Unless required by applicable law or agreed to in writing, software 2736 * distributed under the License is distributed on an "AS IS" BASIS, 2737 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2738 * See the License for the specific language governing permissions and 2739 * limitations under the License. 2740 */class iT{constructor(e){this.observer=e,this.muted=!1}next(e){this.muted||this.observer.next&&this.Ya(this.observer.next,e)}error(e){this.muted||(this.observer.error?this.Ya(this.observer.error,e):A("Uncaught Error in snapshot listener:",e.toString()))}Za(){this.muted=!0}Ya(e,t){setTimeout(()=>{this.muted||e(t)},0)}}/** 2741 * @license 2742 * Copyright 2017 Google LLC 2743 * 2744 * Licensed under the Apache License, Version 2.0 (the "License"); 2745 * you may not use this file except in compliance with the License. 2746 * You may obtain a copy of the License at 2747 * 2748 * http://www.apache.org/licenses/LICENSE-2.0 2749 * 2750 * Unless required by applicable law or agreed to in writing, software 2751 * distributed under the License is distributed on an "AS IS" BASIS, 2752 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2753 * See the License for the specific language governing permissions and 2754 * limitations under the License. 2755 */class iC{constructor(e,t,r,n,i){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=r,this.databaseInfo=n,this.user=I.UNAUTHENTICATED,this.clientId=z.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=i,this.authCredentials.start(r,async e=>{W("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(r,e=>(W("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();let e=new K;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(r){let t=nz(r,"Failed to shutdown persistence");e.reject(t)}}),e.promise}}async function iH(e,t){e.asyncQueue.verifyOperationInProgress(),W("FirestoreClient","Initializing OfflineComponentProvider");let r=e.configuration;await t.initialize(r);let n=r.initialUser;e.setCredentialChangeListener(async e=>{n.isEqual(e)||(await r9(t.localStore,e),n=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function iW(e,t){e.asyncQueue.verifyOperationInProgress();let r=await iA(e);W("FirestoreClient","Initializing OnlineComponentProvider"),await t.initialize(r,e.configuration),e.setCredentialChangeListener(e=>nB(t.remoteStore,e)),e.setAppCheckTokenChangeListener((e,r)=>nB(t.remoteStore,r)),e._onlineComponents=t}
2755async function iA(e){if(!e._offlineComponents){if(e._uninitializedComponentsProvider){W("FirestoreClient","Using user provided OfflineComponentProvider");try{await iH(e,e._uninitializedComponentsProvider._offline)}catch(t){if(!("FirebaseError"===t.name?t.code===O.FAILED_PRECONDITION||t.code===O.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&t instanceof DOMException)||22===t.code||20===t.code||11===t.code))throw t;D("Error using user provided cache. Falling back to memory cache: "+t),await iH(e,new iS)}}else W("FirestoreClient","Using default OfflineComponentProvider"),await iH(e,new iS)}return e._offlineComponents}async function iD(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(W("FirestoreClient","Using user provided OnlineComponentProvider"),await iW(e,e._uninitializedComponentsProvider._online)):(W("FirestoreClient","Using default OnlineComponentProvider"),await iW(e,new iI))),e._onlineComponents}async function iU(e){let t=await iD(e),r=t.eventManager;return r.onListen=ir.bind(null,t.syncEngine),r.onUnlisten=io.bind(null,t.syncEngine),r.onFirstRemoteStoreListen=ii.bind(null,t.syncEngine),r.onLastRemoteStoreUnlisten=ic.bind(null,t.syncEngine),r}/** 2756 * @license 2757 * Copyright 2023 Google LLC 2758 * 2759 * Licensed under the Apache License, Version 2.0 (the "License"); 2760 * you may not use this file except in compliance with the License. 2761 * You may obtain a copy of the License at 2762 * 2763 * http://www.apache.org/licenses/LICENSE-2.0 2764 * 2765 * Unless required by applicable law or agreed to in writing, software 2766 * distributed under the License is distributed on an "AS IS" BASIS, 2767 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2768 * See the License for the specific language governing permissions and 2769 * limitations under the License. 2770 */function iL(e){let t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}/** 2771 * @license 2772 * Copyright 2020 Google LLC 2773 * 2774 * Licensed under the Apache License, Version 2.0 (the "License"); 2775 * you may not use this file except in compliance with the License. 2776 * You may obtain a copy of the License at 2777 * 2778 * http://www.apache.org/licenses/LICENSE-2.0 2779 * 2780 * Unless required by applicable law or agreed to in writing, software 2781 * distributed under the License is distributed on an "AS IS" BASIS, 2782 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2783 * See the License for the specific language governing permissions and 2784 * limitations under the License. 2785 */let iO=new Map;/** 2786 * @license 2787 * Copyright 2017 Google LLC 2788 * 2789 * Licensed under the Apache License, Version 2.0 (the "License"); 2790 * you may not use this file except in compliance with the License. 2791 * You may obtain a copy of the License at 2792 * 2793 * http://www.apache.org/licenses/LICENSE-2.0 2794 * 2795 * Unless required by applicable law or agreed to in writing, software 2796 * distributed under the License is distributed on an "AS IS" BASIS, 2797 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2798 * See the License for the specific language governing permissions and 2799 * limitations under the License. 2800 */function iN(e,t,r){if(!r)throw new N(O.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function iK(e){if(!er.isDocumentKey(e))throw new N(O.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function ix(e){if(er.isDocumentKey(e))throw new N(O.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function iM(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return e.length>20&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"==typeof e){if(e instanceof Array)return"an array";{var t;let r=(t=e).constructor?t.constructor.name:null;return r?`a custom ${r} object`:"an object"}}return"function"==typeof e?"a function":L()}function iF(e,t){if("_delegate"in e&&(e=e._delegate),!(e instanceof t)){if(t.name===e.constructor.name)throw new N(O.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{let r=iM(e);throw new N(O.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${r}`)}}return e}/** 2801 * @license 2802 * Copyright 2020 Google LLC 2803 * 2804 * Licensed under the Apache License, Version 2.0 (the "License");
2805 * you may not use this file except in compliance with the License. 2806 * You may obtain a copy of the License at 2807 * 2808 * http://www.apache.org/licenses/LICENSE-2.0 2809 * 2810 * Unless required by applicable law or agreed to in writing, software 2811 * distributed under the License is distributed on an "AS IS" BASIS, 2812 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2813 * See the License for the specific language governing permissions and 2814 * limitations under the License. 2815 */class iB{constructor(e){var t,r;if(void 0===e.host){if(void 0!==e.ssl)throw new N(O.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 N(O.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}(function(e,t,r,n){if(!0===t&&!0===n)throw new N(O.INVALID_ARGUMENT,`${e} and ${r} cannot be used together.`)})("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=iL(null!==(r=e.experimentalLongPollingOptions)&&void 0!==r?r:{}),function(e){if(void 0!==e.timeoutSeconds){if(isNaN(e.timeoutSeconds))throw new N(O.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (must not be NaN)`);if(e.timeoutSeconds<5)throw new N(O.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (minimum allowed value is 5)`);if(e.timeoutSeconds>30)throw new N(O.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){var t,r;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,r=e.experimentalLongPollingOptions,t.timeoutSeconds===r.timeoutSeconds)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class iV{constructor(e,t,r,n){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=r,this._app=n,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new iB({}),this._settingsFrozen=!1,this._terminateTask="notTerminated"}get app(){if(!this._app)throw new N(O.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 N(O.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 iB(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new M;switch(e.type){case"firstParty":return new q(e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new N(O.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){let t=iO.get(e);t&&(W("ComponentProvider","Removing Datastore"),iO.delete(e),t.terminate())}(this),Promise.resolve()}}/** 2816 * @license 2817 * Copyright 2020 Google LLC 2818 * 2819 * Licensed under the Apache License, Version 2.0 (the "License");
2820 * you may not use this file except in compliance with the License. 2821 * You may obtain a copy of the License at 2822 * 2823 * http://www.apache.org/licenses/LICENSE-2.0 2824 * 2825 * Unless required by applicable law or agreed to in writing, software 2826 * distributed under the License is distributed on an "AS IS" BASIS, 2827 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2828 * See the License for the specific language governing permissions and 2829 * limitations under the License. 2830 */class iq{constructor(e,t,r){this.converter=t,this._query=r,this.type="query",this.firestore=e}withConverter(e){return new iq(this.firestore,e,this._query)}}class ij{constructor(e,t,r){this.converter=t,this._key=r,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 iG(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new ij(this.firestore,e,this._key)}}class iG extends iq{constructor(e,t,r){super(e,t,new tc(r)),this._path=r,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){let e=this._path.popLast();return e.isEmpty()?null:new ij(this.firestore,null,new er(e))}withConverter(e){return new iG(this.firestore,e,this._path)}}function iz(e,t,...r){if(e=(0,w.m9)(e),iN("collection","path",t),e instanceof iV){let n=Z.fromString(t,...r);return ix(n),new iG(e,null,n)}{if(!(e instanceof ij||e instanceof iG))throw new N(O.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");let n=e._path.child(Z.fromString(t,...r));return ix(n),new iG(e.firestore,null,n)}}function i$(e,t,...r){if(e=(0,w.m9)(e),1==arguments.length&&(t=z.newId()),iN("doc","path",t),e instanceof iV){let n=Z.fromString(t,...r);return iK(n),new ij(e,null,new er(n))}{if(!(e instanceof ij||e instanceof iG))throw new N(O.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");let n=e._path.child(Z.fromString(t,...r));return iK(n),new ij(e.firestore,e instanceof iG?e.converter:null,new er(n))}}/** 2831 * @license 2832 * Copyright 2020 Google LLC 2833 * 2834 * Licensed under the Apache License, Version 2.0 (the "License"); 2835 * you may not use this file except in compliance with the License. 2836 * You may obtain a copy of the License at 2837 * 2838 * http://www.apache.org/licenses/LICENSE-2.0 2839 * 2840 * Unless required by applicable law or agreed to in writing, software 2841 * distributed under the License is distributed on an "AS IS" BASIS, 2842 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2843 * See the License for the specific language governing permissions and 2844 * limitations under the License. 2845 */class iJ{constructor(e=Promise.resolve()){this.Pu=[],this.Iu=!1,this.Tu=[],this.Eu=null,this.du=!1,this.Au=!1,this.Ru=[],this.t_=new nd(this,"async_queue_retry"),this.Vu=()=>{let e=nh();e&&W("AsyncQueue","Visibility state changed to "+e.visibilityState),this.t_.jo()},this.mu=e;let t=nh();t&&"function"==typeof t.addEventListener&&t.addEventListener("visibilitychange",this.Vu)}get isShuttingDown(){return this.Iu}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.fu(),this.gu(e)}enterRestrictedMode(e){if(!this.Iu){this.Iu=!0,this.Au=e||!1;let t=nh();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Vu)}}enqueue(e){if(this.fu(),this.Iu)return new Promise(()=>{});let t=new K;return this.gu(()=>this.Iu&&this.Au?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Pu.push(e),this.pu()))}async pu(){if(0!==this.Pu.length){try{await this.Pu[0](),this.Pu.shift(),this.t_.reset()}catch(e){if(!ec(e))throw e;W("AsyncQueue","Operation failed with retryable error: "+e)}this.Pu.length>0&&this.t_.Go(()=>this.pu())}}gu(e){let t=this.mu.then(()=>(this.du=!0,e().catch(e=>{let t;throw this.Eu=e,this.du=!1,A("INTERNAL UNHANDLED ERROR: ",(t=e.message||"",e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t)),e}).then(e=>(this.du=!1,e))));return this.mu=t,t}enqueueAfterDelay(e,t,r){this.fu(),this.Ru.indexOf(e)>-1&&(t=0);let n=nG.createAndSchedule(this,e,t,r,e=>this.yu(e));return this.Tu.push(n),n}fu(){this.Eu&&L()}verifyOperationInProgress(){}async wu(){let e;do e=this.mu,await e;while(e!==this.mu)}Su(e){for(let t of this.Tu)if(t.timerId===e)return!0;return!1}bu(e){return this.wu().then(()=>{for(let t of(this.Tu.sort((e,t)=>
2845e.targetTimeMs-t.targetTimeMs),this.Tu))if(t.skipDelay(),"all"!==e&&t.timerId===e)break;return this.wu()})}Du(e){this.Ru.push(e)}yu(e){let t=this.Tu.indexOf(e);this.Tu.splice(t,1)}}class iQ extends iV{constructor(e,t,r,n){super(e,t,r,n),this.type="firestore",this._queue=new iJ,this._persistenceKey=(null==n?void 0:n.name)||"[DEFAULT]"}async _terminate(){if(this._firestoreClient){let e=this._firestoreClient.terminate();this._queue=new iJ(e),this._firestoreClient=void 0,await e}}}function iX(e,t,r){r||(r="(default)");let n=(0,f.qX)(e,"firestore");if(n.isInitialized(r)){let e=n.getImmediate({identifier:r}),i=n.getOptions(r);if((0,w.vZ)(i,t))return e;throw new N(O.FAILED_PRECONDITION,"initializeFirestore() has already been called with different options. To avoid this error, call initializeFirestore() with the same options as when it was originally called, or call getFirestore() to return the already initialized instance.")}if(void 0!==t.cacheSizeBytes&&void 0!==t.localCache)throw new N(O.INVALID_ARGUMENT,"cache and cacheSizeBytes cannot be specified at the same time as cacheSizeBytes willbe deprecated. Instead, specify the cache size in the cache object");if(void 0!==t.cacheSizeBytes&&-1!==t.cacheSizeBytes&&t.cacheSizeBytes<1048576)throw new N(O.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");return n.initialize({options:t,instanceIdentifier:r})}function iY(e,t){let r="object"==typeof e?e:(0,f.Mq)(),n=(0,f.qX)(r,"firestore").getImmediate({identifier:"string"==typeof e?e:t||"(default)"});if(!n._initialized){let e=(0,w.P0)("firestore");e&&function(e,t,r,n={}){var i;let a=(e=iF(e,iV))._getSettings(),s=`${t}:${r}`;if("firestore.googleapis.com"!==a.host&&a.host!==s&&D("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),e._setSettings(Object.assign(Object.assign({},a),{host:s,ssl:!1})),n.mockUserToken){let t,r;if("string"==typeof n.mockUserToken)t=n.mockUserToken,r=I.MOCK_USER;else{t=(0,w.Sg)(n.mockUserToken,null===(i=e._app)||void 0===i?void 0:i.options.projectId);let a=n.mockUserToken.sub||n.mockUserToken.user_id;if(!a)throw new N(O.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");r=new I(a)}e._authCredentials=new F(new x(t,r))}}(n,...e)}return n}function iZ(e){if(e._terminated)throw new N(O.FAILED_PRECONDITION,"The client has already been terminated.");return e._firestoreClient||function(e){var t,r,n,i;let a=e._freezeSettings(),s=(i=e._databaseId,new eC(i,(null===(t=e._app)||void 0===t?void 0:t.options.appId)||"",e._persistenceKey,a.host,a.ssl,a.experimentalForceLongPolling,a.experimentalAutoDetectLongPolling,iL(a.experimentalLongPollingOptions),a.useFetchStreams));e._componentsProvider||(null===(r=a.localCache)||void 0===r?void 0:r._offlineComponentProvider)&&(null===(n=a.localCache)||void 0===n?void 0:n._onlineComponentProvider)&&(e._componentsProvider={_offline:a.localCache._offlineComponentProvider,_online:a.localCache._onlineComponentProvider}),e._firestoreClient=new iC(e._authCredentials,e._appCheckCredentials,e._queue,s,e._componentsProvider&&function(e){let t=null==e?void 0:e._online.build();return{_offline:null==e?void 0:e._offline.build(t),_online:t}}(e._componentsProvider))}(e),e._firestoreClient}/** 2846 * @license 2847 * Copyright 2020 Google LLC 2848 * 2849 * Licensed under the Apache License, Version 2.0 (the "License"); 2850 * you may not use this file except in compliance with the License. 2851 * You may obtain a copy of the License at 2852 * 2853 * http://www.apache.org/licenses/LICENSE-2.0 2854 * 2855 * Unless required by applicable law or agreed to in writing, software 2856 * distributed under the License is distributed on an "AS IS" BASIS, 2857 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2858 * See the License for the specific language governing permissions and 2859 * limitations under the License. 2860 *//** 2861 * @license 2862 * Copyright 2022 Google LLC 2863 * 2864 * Licensed under the Apache License, Version 2.0 (the "License"); 2865 * you may not use this file except in compliance with the License. 2866 * You may obtain a copy of the License at 2867 * 2868 * http://www.apache.org/licenses/LICENSE-2.0 2869 * 2870 * Unless required by applicable law or agreed to in writing, softw
2870are 2871 * distributed under the License is distributed on an "AS IS" BASIS, 2872 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2873 * See the License for the specific language governing permissions and 2874 * limitations under the License. 2875 */class i1{constructor(e="count",t){this._internalFieldPath=t,this.type="AggregateField",this.aggregateType=e}}class i0{constructor(e,t,r){this._userDataWriter=t,this._data=r,this.type="AggregateQuerySnapshot",this.query=e}data(){return this._userDataWriter.convertObjectMap(this._data)}}/** 2876 * @license 2877 * Copyright 2020 Google LLC 2878 * 2879 * Licensed under the Apache License, Version 2.0 (the "License"); 2880 * you may not use this file except in compliance with the License. 2881 * You may obtain a copy of the License at 2882 * 2883 * http://www.apache.org/licenses/LICENSE-2.0 2884 * 2885 * Unless required by applicable law or agreed to in writing, software 2886 * distributed under the License is distributed on an "AS IS" BASIS, 2887 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2888 * See the License for the specific language governing permissions and 2889 * limitations under the License. 2890 */class i4{constructor(e){this._byteString=e}static fromBase64String(e){try{return new i4(ek.fromBase64String(e))}catch(e){throw new N(O.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new i4(ek.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)}}/** 2891 * @license 2892 * Copyright 2020 Google LLC 2893 * 2894 * Licensed under the Apache License, Version 2.0 (the "License"); 2895 * you may not use this file except in compliance with the License. 2896 * You may obtain a copy of the License at 2897 * 2898 * http://www.apache.org/licenses/LICENSE-2.0 2899 * 2900 * Unless required by applicable law or agreed to in writing, software 2901 * distributed under the License is distributed on an "AS IS" BASIS, 2902 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2903 * See the License for the specific language governing permissions and 2904 * limitations under the License. 2905 */class i2{constructor(...e){for(let t=0;t<e.length;++t)if(0===e[t].length)throw new N(O.INVALID_ARGUMENT,"Invalid field name at argument $(i + 1). Field names must not be empty.");this._internalPath=new et(e)}isEqual(e){return this._internalPath.isEqual(e._internalPath)}}/** 2906 * @license 2907 * Copyright 2020 Google LLC 2908 * 2909 * Licensed under the Apache License, Version 2.0 (the "License"); 2910 * you may not use this file except in compliance with the License. 2911 * You may obtain a copy of the License at 2912 * 2913 * http://www.apache.org/licenses/LICENSE-2.0 2914 * 2915 * Unless required by applicable law or agreed to in writing, software 2916 * distributed under the License is distributed on an "AS IS" BASIS, 2917 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2918 * See the License for the specific language governing permissions and 2919 * limitations under the License. 2920 */class i5{constructor(e){this._methodName=e}}/** 2921 * @license 2922 * Copyright 2017 Google LLC 2923 * 2924 * Licensed under the Apache License, Version 2.0 (the "License"); 2925 * you may not use this file except in compliance with the License. 2926 * You may obtain a copy of the License at 2927 * 2928 * http://www.apache.org/licenses/LICENSE-2.0 2929 * 2930 * Unless required by applicable law or agreed to in writing, software 2931 * distributed under the License is distributed on an "AS IS" BASIS, 2932 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2933 * See the License for the specific language governing permissions and 2934 * limitations under the License. 2935 */class i3{constructor(e,t){if(!isFinite(e)||e<-90||e>90)throw new N(O.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new N(O.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 $(this._lat,e._lat)||$(this._long,e._long)}}/** 2936 * @license 2937 * Copyright 2024 Google LLC 2938 * 2939 * Licensed under the Apache License, Version 2.0 (the "License");
2940 * you may not use this file except in compliance with the License. 2941 * You may obtain a copy of the License at 2942 * 2943 * http://www.apache.org/licenses/LICENSE-2.0 2944 * 2945 * Unless required by applicable law or agreed to in writing, software 2946 * distributed under the License is distributed on an "AS IS" BASIS, 2947 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2948 * See the License for the specific language governing permissions and 2949 * limitations under the License. 2950 */class i6{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 r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}(this._values,e._values)}}/** 2951 * @license 2952 * Copyright 2017 Google LLC 2953 * 2954 * Licensed under the Apache License, Version 2.0 (the "License"); 2955 * you may not use this file except in compliance with the License. 2956 * You may obtain a copy of the License at 2957 * 2958 * http://www.apache.org/licenses/LICENSE-2.0 2959 * 2960 * Unless required by applicable law or agreed to in writing, software 2961 * distributed under the License is distributed on an "AS IS" BASIS, 2962 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2963 * See the License for the specific language governing permissions and 2964 * limitations under the License. 2965 */let i9=/^__.*__$/;class i8{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return null!==this.fieldMask?new tY(e,this.data,this.fieldMask,t,this.fieldTransforms):new tX(e,this.data,t,this.fieldTransforms)}}class i7{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return new tY(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function ae(e){switch(e){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw L()}}class at{constructor(e,t,r,n,i,a){this.settings=e,this.databaseId=t,this.serializer=r,this.ignoreUndefinedProperties=n,void 0===i&&this.vu(),this.fieldTransforms=i||[],this.fieldMask=a||[]}get path(){return this.settings.path}get Cu(){return this.settings.Cu}Fu(e){return new at(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}Mu(e){var t;let r=null===(t=this.path)||void 0===t?void 0:t.child(e),n=this.Fu({path:r,xu:!1});return n.Ou(e),n}Nu(e){var t;let r=null===(t=this.path)||void 0===t?void 0:t.child(e),n=this.Fu({path:r,xu:!1});return n.vu(),n}Lu(e){return this.Fu({path:void 0,xu:!0})}Bu(e){return am(e,this.settings.methodName,this.settings.ku||!1,this.path,this.settings.qu)}contains(e){return void 0!==this.fieldMask.find(t=>e.isPrefixOf(t))||void 0!==this.fieldTransforms.find(t=>e.isPrefixOf(t.field))}vu(){if(this.path)for(let e=0;e<this.path.length;e++)this.Ou(this.path.get(e))}Ou(e){if(0===e.length)throw this.Bu("Document fields must not be empty");if(ae(this.Cu)&&i9.test(e))throw this.Bu('Document fields cannot begin and end with "__"')}}class ar{constructor(e,t,r){this.databaseId=e,this.ignoreUndefinedProperties=t,this.serializer=r||ng(e)}Qu(e,t,r,n=!1){return new at({Cu:e,methodName:t,qu:r,path:et.emptyPath(),xu:!1,ku:n},this.databaseId,this.serializer,this.ignoreUndefinedProperties)}}function an(e){let t=e._freezeSettings(),r=ng(e._databaseId);return new ar(e._databaseId,!!t.ignoreUndefinedProperties,r)}class ai extends i5{_toFieldTransform(e){if(2!==e.Cu)throw 1===e.Cu?e.Bu(`${this._methodName}() can only appear at the top level of your update data`):e.Bu(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof ai}}class aa extends i5{_toFieldTransform(e){return new tV(e.path,new tL)}isEqual(e){return e instanceof aa}}function as(e,t,r,n=!1){return ao(r,e.Qu(n?4:3,t))}function ao(e,t){if(au(e=(0,w.m9)(e)))return al("Unsupported field value:",t,e),ac(e,t);if(e instanceof i5)return function(e,t){if(!ae(t.Cu))throw t.Bu(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.Bu(`${e._methodName}() is not currently supported inside arrays`);let r=e._toFieldTransform(t);r&&t.fieldTransforms.push(r)}(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.xu&&4!==t.Cu)throw t.Bu("Nested arrays are not supported");return function(e,t){let r=[],n=0;for(let i of e){let e=ao(i,t.Lu(n));null==e&&(e={nullValue:"NULL_VALUE"}),r.push(e),n++}return{arrayValue:{values:r}}}(e,t)}return function(e,t){var r,n,i;if(null===(e=(0,w.m9)(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return r=t.serializer,"number"==typeof(i=n=e)&&Number.isInteger(i)&&!el(i)&&i<=Number.MAX_SAFE_INTEGER&&i>=Number.MIN_SAFE_INTEGER?tA(n):tW(r,n);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){let r=Q.fromDate(e);return{timestampValue:r_(t.serializer,r)}}if(e instanceof Q){let r=new Q(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:r_(t.serializer,r)}}if(e instanceof i3)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof i4)return{bytesValue:rw(t.serializer,e._byteString)};if(e instanceof ij){let r=t.databaseId,n=e.firestore._databaseId;if(!n.isEqual(r))throw t.Bu(`Document reference is for database ${n.projectId}/${n.database} but should be for database ${r.projectId}/${r.database}`);return{referenceValue:rP(e.firestore._databaseId||t.databaseId,e._key.path)}}if(e instanceof i6)return{mapValue:{fields:{__type__:{stringValue:"__vector__"},value:{arrayValue:{values:e.toArray().map(e=>{if("number"!=typeof e)throw t.Bu("VectorValues must only contain numeric values.");return tW(t.serializer,e)})}}}}};
2965throw t.Bu(`Unsupported field value: ${iM(e)}`)}(e,t)}function ac(e,t){let r={};return ed(e)?t.path&&t.path.length>0&&t.fieldMask.push(t.path):eg(e,(e,n)=>{let i=ao(n,t.Mu(e));null!=i&&(r[e]=i)}),{mapValue:{fields:r}}}function au(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof Q||e instanceof i3||e instanceof i4||e instanceof ij||e instanceof i5||e instanceof i6)}function al(e,t,r){if(!au(r)||!("object"==typeof r&&null!==r&&(Object.getPrototypeOf(r)===Object.prototype||null===Object.getPrototypeOf(r)))){let n=iM(r);throw"an object"===n?t.Bu(e+" a custom object"):t.Bu(e+" "+n)}}function ah(e,t,r){if((t=(0,w.m9)(t))instanceof i2)return t._internalPath;if("string"==typeof t)return ad(e,t);throw am("Field path arguments must be of type string or ",e,!1,void 0,r)}let ag=RegExp("[~\\*/\\[\\]]");function ad(e,t,r){if(t.search(ag)>=0)throw am(`Invalid field path (${t}). Paths must not contain '~', '*', '/', '[', or ']'`,e,!1,void 0,r);try{return new i2(...t.split("."))._internalPath}catch(n){throw am(`Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,e,!1,void 0,r)}}function am(e,t,r,n,i){let a=n&&!n.isEmpty(),s=void 0!==i,o=`Function ${t}() called with invalid data`;r&&(o+=" (via `toFirestore()`)"),o+=". ";let c="";return(a||s)&&(c+=" (found",a&&(c+=` in field ${n}`),s&&(c+=` in document ${i}`),c+=")"),new N(O.INVALID_ARGUMENT,o+e+c)}function ap(e,t){return e.some(e=>e.isEqual(t))}/** 2966 * @license 2967 * Copyright 2020 Google LLC 2968 * 2969 * Licensed under the Apache License, Version 2.0 (the "License"); 2970 * you may not use this file except in compliance with the License. 2971 * You may obtain a copy of the License at 2972 * 2973 * http://www.apache.org/licenses/LICENSE-2.0 2974 * 2975 * Unless required by applicable law or agreed to in writing, software 2976 * distributed under the License is distributed on an "AS IS" BASIS, 2977 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2978 * See the License for the specific language governing permissions and 2979 * limitations under the License. 2980 */class ay{constructor(e,t,r,n,i){this._firestore=e,this._userDataWriter=t,this._key=r,this._document=n,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new ij(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){let e=new af(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){let t=this._document.data.field(av("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class af extends ay{data(){return super.data()}}function av(e,t){return"string"==typeof t?ad(e,t):t instanceof i2?t._internalPath:t._delegate._internalPath}class a_{}class aw extends a_{}function ak(e,t,...r){let n=[];for(let i of(t instanceof a_&&n.push(t),function(e){let t=e.filter(e=>e instanceof aE).length,r=e.filter(e=>e instanceof aP).length;if(t>1||t>0&&r>0)throw new N(O.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(...)))`.")}(n=n.concat(r)),n))e=i._apply(e);return e}class aP extends aw{constructor(e,t,r){super(),this._field=e,this._op=t,this._value=r,this.type="where"}static _create(e,t,r){return new aP(e,t,r)}_apply(e){let t=this._parse(e);return aD(e._query,t),new iq(e.firestore,e.converter,tm(e._query,t))}_parse(e){let t=an(e.firestore);return function(e,t,r,n,i,a,s){let o;if(i.isKeyField()){if("array-contains"===a||"array-contains-any"===a)throw new N(O.INVALID_ARGUMENT,`Invalid Query. You can't perform '${a}' queries on documentId().`);if("in"===a||"not-in"===a){aA(s,a);let t=[];for(let r of s)t.push(aW(n,e,r));o={arrayValue:{values:t}}}else o=aW(n,e,s)}else"in"!==a&&"not-in"!==a&&"array-contains-any"!==a||aA(s,a),o=as(r,t,s,"in"===a||"not-in"===a);return e0.create(i,a,o)}(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}function ab(e,t,r){let n=av("where",e);return aP._create(n,t,r)}class aE extends a_{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new aE(e,t)}_parse(e){let t=this._queryConstraints.map(t=>t._parse(e)).filter(e=>e.getFilters().length>0);return 1===t.length?t[0]:e4.create(t,this._getOperator())}_apply(e){let t=this._parse(e);return 0===t.getFilters().length?e:(function(e,t){let r=e;for(let e of t.getFlattenedFilters())aD(r,e),r=tm(r,e)}(e._query,t),new iq(e.firestore,e.converter,tm(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}
2980class aR extends aw{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new aR(e,t)}_apply(e){let t=function(e,t,r){if(null!==e.startAt)throw new N(O.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new N(O.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new eZ(t,r)}(e._query,this._field,this._direction);return new iq(e.firestore,e.converter,function(e,t){let r=e.explicitOrderBy.concat([t]);return new tc(e.path,e.collectionGroup,r,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(e._query,t))}}function aS(e,t="asc"){let r=av("orderBy",e);return aR._create(r,t)}class aI extends aw{constructor(e,t,r){super(),this.type=e,this._limit=t,this._limitType=r}static _create(e,t,r){return new aI(e,t,r)}_apply(e){return new iq(e.firestore,e.converter,tp(e._query,this._limit,this._limitType))}}function aT(e){return function(e,t){if(t<=0)throw new N(O.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}("limit",e),aI._create("limit",e,"F")}class aC extends aw{constructor(e,t,r){super(),this.type=e,this._docOrFields=t,this._inclusive=r}static _create(e,t,r){return new aC(e,t,r)}_apply(e){var t;let r=function(e,t,r,n){if(r[0]=(0,w.m9)(r[0]),r[0]instanceof ay)return function(e,t,r,n,i){if(!n)throw new N(O.NOT_FOUND,`Can't use a DocumentSnapshot that doesn't exist for ${r}().`);let a=[];for(let r of th(e))if(r.field.isKeyField())a.push(ex(t,n.key));else{let e=n.data.field(r.field);if(eS(e))throw new N(O.INVALID_ARGUMENT,'Invalid query. You are trying to start or end a query using a document for which the field "'+r.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){let e=r.field.canonicalString();throw new N(O.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.`)}a.push(e)}return new eQ(a,i)}(e._query,e.firestore._databaseId,t,r[0]._document,n);{let i=an(e.firestore);return function(e,t,r,n,i,a){let s=e.explicitOrderBy;if(i.length>s.length)throw new N(O.INVALID_ARGUMENT,`Too many arguments provided to ${n}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);let o=[];for(let a=0;a<i.length;a++){let c=i[a];if(s[a].field.isKeyField()){if("string"!=typeof c)throw new N(O.INVALID_ARGUMENT,`Invalid query. Expected a string for document ID in ${n}(), but got a ${typeof c}`);if(!tl(e)&&-1!==c.indexOf("/"))throw new N(O.INVALID_ARGUMENT,`Invalid query. When querying a collection and ordering by documentId(), the value passed to ${n}() must be a plain document ID, but '${c}' contains a slash.`);let r=e.path.child(Z.fromString(c));if(!er.isDocumentKey(r))throw new N(O.INVALID_ARGUMENT,`Invalid query. When querying a collection group and ordering by documentId(), the value passed to ${n}() must result in a valid document path, but '${r}' is not because it contains an odd number of segments.`);let i=new er(r);o.push(ex(t,i))}else{let e=as(r,n,c);o.push(e)}}return new eQ(o,a)}(e._query,e.firestore._databaseId,i,t,r,n)}}(e,this.type,this._docOrFields,this._inclusive);return new iq(e.firestore,e.converter,new tc((t=e._query).path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,r,t.endAt))}}function aH(...e){return aC._create("startAfter",e,!1)}function aW(e,t,r){if("string"==typeof(r=(0,w.m9)(r))){if(""===r)throw new N(O.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!tl(t)&&-1!==r.indexOf("/"))throw new N(O.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${r}' contains a '/' character.`);let n=t.path.child(Z.fromString(r));if(!er.isDocumentKey(n))throw new N(O.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${n}' is not because it has an odd number of segments (${n.length}).`);return ex(e,new er(n))}if(r instanceof ij)return ex(e,r._key);throw new N(O.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${iM(r)}.`)}function aA(e,t){if(!Array.isArray(e)||0===e.length)throw new N(O.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function aD(e,t){let r=function(e,t){for(let r of e)for(let e of r.getFlattenedFilters())if(t.indexOf(e.op)>=0)return e.op;return null}(e.filters,function(e){switch(e){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}}(t.op));if(null!==r)throw r===t.op?new N(O.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new N(O.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${r.toString()}' filters.`)}class aU{convertValue(e,t="none"){switch(eA(e)){case 0:return null;case 1:return e.booleanValue;case 2:return eE(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(eR(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 L()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,t="none"){let r={};return eg(e,(e,n)=>{r[e]=this.convertValue(n,t)}),r}convertVectorValue(e){var t,r,n;return new i6(null===(n=null===(r=null===(t=e.fields)||void 0===t?void 0:t.value.arrayValue)||void 0===r?void 0:r.values)||void 0===n?void 0:n.map(e=>eE(e.doubleValue)))}convertGeoPoint(e){return new i3(eE(e.latitude),eE(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":let r=eI(e);return null==r?null:this.convertValue(r,t);case"estimate":return this.convertTimestamp(eT(e));default:return null}}convertTimestamp(e){let t=eb(e);return new Q(t.seconds,t.nanos)}convertDocumentKey(e,t){let r=Z.fromString(e);rU(r)||L();let n=new eH(r.get(1),r.get(3)),i=new er(r.popFirst(5));return n.isEqual(t)||A(`Document ${i} contains a document reference within a different database (${n.projectId}/${n.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}/** 2981 * @license 2982 * Copyright 2020 Google LLC 2983 * 2984 * Licensed under the Apache License, Version 2.0 (the "License");
2985 * you may not use this file except in compliance with the License. 2986 * You may obtain a copy of the License at 2987 * 2988 * http://www.apache.org/licenses/LICENSE-2.0 2989 * 2990 * Unless required by applicable law or agreed to in writing, software 2991 * distributed under the License is distributed on an "AS IS" BASIS, 2992 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2993 * See the License for the specific language governing permissions and 2994 * limitations under the License. 2995 */class aL{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class aO extends ay{constructor(e,t,r,n,i,a){super(e,t,r,n,a),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){let t=new aN(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){let r=this._document.data.field(av("DocumentSnapshot.get",e));if(null!==r)return this._userDataWriter.convertValue(r,t.serverTimestamps)}}}class aN extends aO{data(e={}){return super.data(e)}}class aK{constructor(e,t,r,n){this._firestore=e,this._userDataWriter=t,this._snapshot=n,this.metadata=new aL(n.hasPendingWrites,n.fromCache),this.query=r}get docs(){let e=[];return this.forEach(t=>e.push(t)),e}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(e,t){this._snapshot.docs.forEach(r=>{e.call(t,new aN(this._firestore,this._userDataWriter,r.key,r,new aL(this._snapshot.mutatedKeys.has(r.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){let t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new N(O.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map(r=>{let n=new aN(e._firestore,e._userDataWriter,r.doc.key,r.doc,new aL(e._snapshot.mutatedKeys.has(r.doc.key),e._snapshot.fromCache),e.query.converter);return r.doc,{type:"added",doc:n,oldIndex:-1,newIndex:t++}})}{let r=e._snapshot.oldDocs;return e._snapshot.docChanges.filter(e=>t||3!==e.type).map(t=>{let n=new aN(e._firestore,e._userDataWriter,t.doc.key,t.doc,new aL(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter),i=-1,a=-1;return 0!==t.type&&(i=r.indexOf(t.doc.key),r=r.delete(t.doc.key)),1!==t.type&&(a=(r=r.add(t.doc)).indexOf(t.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return L()}}(t.type),doc:n,oldIndex:i,newIndex:a}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}/** 2996 * @license 2997 * Copyright 2020 Google LLC 2998 * 2999 * Licensed under the Apache License, Version 2.0 (the "License"); 3000 * you may not use this file except in compliance with the License. 3001 * You may obtain a copy of the License at 3002 * 3003 * http://www.apache.org/licenses/LICENSE-2.0 3004 * 3005 * Unless required by applicable law or agreed to in writing, software 3006 * distributed under the License is distributed on an "AS IS" BASIS, 3007 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3008 * See the License for the specific language governing permissions and 3009 * limitations under the License. 3010 */function ax(e){e=iF(e,ij);let t=iF(e.firestore,iQ);return(function(e,t,r={}){let n=new K;return e.asyncQueue.enqueueAndForget(async()=>(function(e,t,r,n,i){let a=new iT({next:o=>{a.Za(),t.enqueueAndForget(()=>n0(e,s));let c=o.docs.has(r);!c&&o.fromCache?i.reject(new N(O.UNAVAILABLE,"Failed to get document because the client is offline.")):c&&o.fromCache&&n&&"server"===n.source?i.reject(new N(O.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):i.resolve(o)},error:e=>i.reject(e)}),s=new n3(new tc(r.path),a,{includeMetadataChanges:!0,_a:!0});return n1(e,s)})(await iU(e),e.asyncQueue,t,r,n)),n.promise})(iZ(t),e._key).then(r=>(function(e,t,r){let n=r.docs.get(t._key),i=new aM(e);return new aO(e,i,t._key,n,new aL(r.hasPendingWrites,r.fromCache),t.converter)})(t,e,r))}class aM extends aU{constructor(e){super(),this.firestore=e}convertBytes(e){return new i4(e)}convertReference(e){let t=this.convertDocumentKey(e,this.firestore._databaseId);
3010return new ij(this.firestore,null,t)}}function aF(e){e=iF(e,iq);let t=iF(e.firestore,iQ),r=iZ(t),n=new aM(t);return(/** 3011 * @license 3012 * Copyright 2020 Google LLC 3013 * 3014 * Licensed under the Apache License, Version 2.0 (the "License"); 3015 * you may not use this file except in compliance with the License. 3016 * You may obtain a copy of the License at 3017 * 3018 * http://www.apache.org/licenses/LICENSE-2.0 3019 * 3020 * Unless required by applicable law or agreed to in writing, software 3021 * distributed under the License is distributed on an "AS IS" BASIS, 3022 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3023 * See the License for the specific language governing permissions and 3024 * limitations under the License. 3025 */function(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new N(O.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}(e._query),(function(e,t,r={}){let n=new K;return e.asyncQueue.enqueueAndForget(async()=>(function(e,t,r,n,i){let a=new iT({next:r=>{a.Za(),t.enqueueAndForget(()=>n0(e,s)),r.fromCache&&"server"===n.source?i.reject(new N(O.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(r)},error:e=>i.reject(e)}),s=new n3(r,a,{includeMetadataChanges:!0,_a:!0});return n1(e,s)})(await iU(e),e.asyncQueue,t,r,n)),n.promise})(r,e._query).then(r=>new aK(t,n,e,r)))}function aB(e,t,r){var n;e=iF(e,ij);let i=iF(e.firestore,iQ),a=(n=e.converter)?r&&(r.merge||r.mergeFields)?n.toFirestore(t,r):n.toFirestore(t):t;return aj(i,[(function(e,t,r,n,i,a={}){let s,o;let c=e.Qu(a.merge||a.mergeFields?2:0,t,r,i);al("Data must be an object, but it was:",c,n);let u=ac(n,c);if(a.merge)s=new e_(c.fieldMask),o=c.fieldTransforms;else if(a.mergeFields){let e=[];for(let n of a.mergeFields){let i=ah(t,n,r);if(!c.contains(i))throw new N(O.INVALID_ARGUMENT,`Field '${i}' is specified in your field mask but missing from your input data.`);ap(e,i)||e.push(i)}s=new e_(e),o=c.fieldTransforms.filter(e=>s.covers(e.field))}else s=null,o=c.fieldTransforms;return new i8(new e$(u),s,o)})(an(i),"setDoc",e._key,a,null!==e.converter,r).toMutation(e._key,tj.none())])}function aV(e,t,r,...n){e=iF(e,ij);let i=iF(e.firestore,iQ),a=an(i);return aj(i,[("string"==typeof(t=(0,w.m9)(t))||t instanceof i2?function(e,t,r,n,i,a){let s=e.Qu(1,t,r),o=[ah(t,n,r)],c=[i];if(a.length%2!=0)throw new N(O.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let e=0;e<a.length;e+=2)o.push(ah(t,a[e])),c.push(a[e+1]);let u=[],l=e$.empty();for(let e=o.length-1;e>=0;--e)if(!ap(u,o[e])){let t=o[e],r=c[e];r=(0,w.m9)(r);let n=s.Nu(t);if(r instanceof ai)u.push(t);else{let e=ao(r,n);null!=e&&(u.push(t),l.set(t,e))}}return new i7(l,new e_(u),s.fieldTransforms)}(a,"updateDoc",e._key,t,r,n):function(e,t,r,n){let i=e.Qu(1,t,r);al("Data must be an object, but it was:",i,n);let a=[],s=e$.empty();return eg(n,(e,n)=>{let o=ad(t,e,r);n=(0,w.m9)(n);let c=i.Nu(o);if(n instanceof ai)a.push(o);else{let e=ao(n,c);null!=e&&(a.push(o),s.set(o,e))}}),new i7(s,new e_(a),i.fieldTransforms)}(a,"updateDoc",e._key,t)).toMutation(e._key,tj.exists(!0))])}function aq(e){return aj(iF(e.firestore,iQ),[new t4(e._key,tj.none())])}function aj(e,t){return function(e,t){let r=new K;return e.asyncQueue.enqueueAndForget(async()=>iu(await iD(e).then(e=>e.syncEngine),t,r)),r.promise}(iZ(e),t)}/** 3026 * @license 3027 * Copyright 2022 Google LLC 3028 * 3029 * Licensed under the Apache License, Version 2.0 (the "License"); 3030 * you may not use this file except in compliance with the License. 3031 * You may obtain a copy of the License at 3032 * 3033 * http://www.apache.org/licenses/LICENSE-2.0 3034 * 3035 * Unless required by applicable law or agreed to in writing, software 3036 * distributed under the License is distributed on an "AS IS" BASIS, 3037 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3038 * See the License for the specific language governing permissions and 3039 * limitations under the License. 3040 */function aG(e){return function(e,t){let r=iF(e.firestore,iQ),n=iZ(r),i=function(e,t){let r=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.push(t(e[n],n,e));return r}(t,(e,t)=>new t9(t,e.aggregateType,e._internalFieldPath));return(function(e,t,r){let n=new K;return e.asyncQueue.enqueueAndForget(async()=>{try{let i=await iD(e).then(e=>e.datastore);n.resolve(async function(e,t,r){var n;let{request:i,ut:a,parent:s}=function(e,t,r,n){let{_t:i,parent:a}=rW(e,t),s={},o=[],c=0;
3040return r.forEach(e=>{let t="aggregate_"+c++;s[t]=e.alias,"count"===e.aggregateType?o.push({alias:t,count:{}}):"avg"===e.aggregateType?o.push({alias:t,avg:{field:rA(e.fieldPath)}}):"sum"===e.aggregateType&&o.push({alias:t,sum:{field:rA(e.fieldPath)}})}),{request:{structuredAggregationQuery:{aggregations:o,structuredQuery:i.structuredQuery},parent:i.parent},ut:s,parent:a}}(e.serializer,(t.he||(t.he=td(t,t.explicitOrderBy)),t.he),r);e.connection.Fo||delete i.parent;let o=(await e.Lo("RunAggregationQuery",e.serializer.databaseId,s,i,1)).filter(e=>!!e.result);1===o.length||L();let c=null===(n=o[0].result)||void 0===n?void 0:n.aggregateFields;return Object.keys(c).reduce((e,t)=>(e[a[t]]=c[t],e),{})}(i,t,r))}catch(e){n.reject(e)}}),n.promise})(n,e._query,i).then(t=>new i0(e,new aM(r),t))}(e,{count:new i1("count")})}function az(){return new aa("serverTimestamp")}new WeakMap,function(e=!0){T=f.Jn,(0,f.Xd)(new v.wA("firestore",(t,{instanceIdentifier:r,options:n})=>{let i=t.getProvider("app").getImmediate(),a=new iQ(new B(t.getProvider("auth-internal")),new G(t.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new N(O.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new eH(e.options.projectId,t)}(i,r),i);return n=Object.assign({useFetchStreams:e},n),a._setSettings(n),a},"PUBLIC").setMultipleInstances(!0)),(0,f.KN)(S,"4.7.3",void 0),(0,f.KN)(S,"4.7.3","esm2017")}()},7004:function(e,t,r){"use strict";r.d(t,{$C:function(){return _},V1:function(){return w}});var n,i=r(2238),a=r(4444),s=r(8463);function o(e,t){let r={};for(let n in e)e.hasOwnProperty(n)&&(r[n]=t(e[n]));return r}function c(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case"type.googleapis.com/google.protobuf.Int64Value":case"type.googleapis.com/google.protobuf.UInt64Value":{let t=Number(e.value);if(isNaN(t))throw Error("Data cannot be decoded from JSON: "+e);return t}default:throw Error("Data cannot be decoded from JSON: "+e)}return Array.isArray(e)?e.map(e=>c(e)):"function"==typeof e||"object"==typeof e?o(e,e=>c(e)):e}/** 3041 * @license 3042 * Copyright 2020 Google LLC 3043 * 3044 * Licensed under the Apache License, Version 2.0 (the "License"); 3045 * you may not use this file except in compliance with the License. 3046 * You may obtain a copy of the License at 3047 * 3048 * http://www.apache.org/licenses/LICENSE-2.0 3049 * 3050 * Unless required by applicable law or agreed to in writing, software 3051 * distributed under the License is distributed on an "AS IS" BASIS, 3052 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3053 * See the License for the specific language governing permissions and 3054 * limitations under the License. 3055 */let u="functions",l={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 h extends a.ZR{constructor(e,t,r){super(`${u}/${e}`,t||""),this.details=r}}/** 3056 * @license 3057 * Copyright 2017 Google LLC 3058 * 3059 * Licensed under the Apache License, Version 2.0 (the "License"); 3060 * you may not use this file except in compliance with the License. 3061 * You may obtain a copy of the License at 3062 * 3063 * http://www.apache.org/licenses/LICENSE-2.0 3064 * 3065 * Unless required by applicable law or agreed to in writing, software 3066 * distributed under the License is distributed on an "AS IS" BASIS, 3067 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3068 * See the License for the specific language governing permissions and 3069 * limitations under the License. 3070 */class g{constructor(e,t,r){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||r.get().then(e=>this.appCheck=e,()=>{})}async getAuthToken(){if(this.auth)try{let e=await this.auth.getToken();return null==e?void 0:e.accessToken}catch(e){return}}
3070async getMessagingToken(){if(this.messaging&&"Notification"in self&&"granted"===Notification.permission)try{return await this.messaging.getToken()}catch(e){return}}async getAppCheckToken(e){if(this.appCheck){let 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)}}}/** 3071 * @license 3072 * Copyright 2017 Google LLC 3073 * 3074 * Licensed under the Apache License, Version 2.0 (the "License"); 3075 * you may not use this file except in compliance with the License. 3076 * You may obtain a copy of the License at 3077 * 3078 * http://www.apache.org/licenses/LICENSE-2.0 3079 * 3080 * Unless required by applicable law or agreed to in writing, software 3081 * distributed under the License is distributed on an "AS IS" BASIS, 3082 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3083 * See the License for the specific language governing permissions and 3084 * limitations under the License. 3085 */let d="us-central1";class m{constructor(e,t,r,n,i=d,a){this.app=e,this.fetchImpl=a,this.emulatorOrigin=null,this.contextProvider=new g(t,r,n),this.cancelAllRequests=new Promise(e=>{this.deleteService=()=>Promise.resolve(e())});try{let e=new URL(i);this.customDomain=e.origin+("/"===e.pathname?"":e.pathname),this.region=d}catch(e){this.customDomain=null,this.region=i}}_delete(){return this.deleteService()}_url(e){let t=this.app.options.projectId;if(null!==this.emulatorOrigin){let r=this.emulatorOrigin;return`${r}/${t}/${this.region}/${e}`}return null!==this.customDomain?`${this.customDomain}/${e}`:`https://${this.region}-${t}.cloudfunctions.net/${e}`}}async function p(e,t,r,n){let i;r["Content-Type"]="application/json";try{i=await n(e,{method:"POST",body:JSON.stringify(t),headers:r})}catch(e){return{status:0,json:null}}let a=null;try{a=await i.json()}catch(e){}return{status:i.status,json:a}}async function y(e,t,r,n){var i;let a;let s={data:r=function e(t){if(null==t)return null;if(t instanceof Number&&(t=t.valueOf()),"number"==typeof t&&isFinite(t)||!0===t||!1===t||"[object String]"===Object.prototype.toString.call(t))return t;if(t instanceof Date)return t.toISOString();if(Array.isArray(t))return t.map(t=>e(t));if("function"==typeof t||"object"==typeof t)return o(t,t=>e(t));throw Error("Data cannot be encoded in JSON: "+t)}(r)},u={},g=await e.contextProvider.getContext(n.limitedUseAppCheckTokens);g.authToken&&(u.Authorization="Bearer "+g.authToken),g.messagingToken&&(u["Firebase-Instance-ID-Token"]=g.messagingToken),null!==g.appCheckToken&&(u["X-Firebase-AppCheck"]=g.appCheckToken);let d=(i=n.timeout||7e4,a=null,{promise:new Promise((e,t)=>{a=setTimeout(()=>{t(new h("deadline-exceeded","deadline-exceeded"))},i)}),cancel:()=>{a&&clearTimeout(a)}}),m=await Promise.race([p(t,s,u,e.fetchImpl),d.promise,e.cancelAllRequests]);if(d.cancel(),!m)throw new h("cancelled","Firebase Functions instance was deleted.");let y=function(e,t){let r,n=function(e){if(e>=200&&e<300)return"ok";switch(e){case 0:case 500: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 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline-exceeded"}return"unknown"}(e),i=n;try{let e=t&&t.error;if(e){let t=e.status;if("string"==typeof t){if(!l[t])return new h("internal","internal");n=l[t],i=t}let a=e.message;"string"==typeof a&&(i=a),r=e.details,void 0!==r&&(r=c(r))}}catch(e){}return"ok"===n?null:new h(n,i,r)}(m.status,m.json);if(y)throw y;if(!m.json)throw new h("internal","Response is not valid JSON object.");let f=m.json.data;if(void 0===f&&(f=m.json.result),void 0===f)throw new h("internal","Response is missing data field.");return{data:c(f)}}let f="@firebase/functions",v="0.11.8";/** 3086 * @license 3087 * Copyright 2020 Google LLC 3088 * 3089 * Licensed under the Apache License, Version 2.0 (the "License");
3090 * you may not use this file except in compliance with the License. 3091 * You may obtain a copy of the License at 3092 * 3093 * http://www.apache.org/licenses/LICENSE-2.0 3094 * 3095 * Unless required by applicable law or agreed to in writing, software 3096 * distributed under the License is distributed on an "AS IS" BASIS, 3097 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3098 * See the License for the specific language governing permissions and 3099 * limitations under the License. 3100 */function _(e=(0,i.Mq)(),t=d){let r=(0,i.qX)((0,a.m9)(e),u).getImmediate({identifier:t}),n=(0,a.P0)("functions");return n&&function(e,t,r){(0,a.m9)(e).emulatorOrigin=`http://${t}:${r}`}(r,...n),r}function w(e,t,r){var n;return n=(0,a.m9)(e),e=>(function(e,t,r,n){let i=e._url(t);return y(e,i,r,n)})(n,t,e,r||{})}n=fetch.bind(self),(0,i.Xd)(new s.wA(u,(e,{instanceIdentifier:t})=>{let r=e.getProvider("app").getImmediate();return new m(r,e.getProvider("auth-internal"),e.getProvider("messaging-internal"),e.getProvider("app-check-internal"),t,n)},"PUBLIC").setMultipleInstances(!0)),(0,i.KN)(f,v,void 0),(0,i.KN)(f,v,"esm2017")},6650:function(e,t,r){"use strict";r.d(t,{oq:function(){return ev},Jt:function(){return ef},cF:function(){return ew},iH:function(){return e_},B0:function(){return ey}});var n,i,a,s,o=r(2238),c=r(4444),u=r(8463);/** 3101 * @license 3102 * Copyright 2017 Google LLC 3103 * 3104 * Licensed under the Apache License, Version 2.0 (the "License"); 3105 * you may not use this file except in compliance with the License. 3106 * You may obtain a copy of the License at 3107 * 3108 * http://www.apache.org/licenses/LICENSE-2.0 3109 * 3110 * Unless required by applicable law or agreed to in writing, software 3111 * distributed under the License is distributed on an "AS IS" BASIS, 3112 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3113 * See the License for the specific language governing permissions and 3114 * limitations under the License. 3115 */let l="firebasestorage.googleapis.com",h="storageBucket";/** 3116 * @license 3117 * Copyright 2017 Google LLC 3118 * 3119 * Licensed under the Apache License, Version 2.0 (the "License"); 3120 * you may not use this file except in compliance with the License. 3121 * You may obtain a copy of the License at 3122 * 3123 * http://www.apache.org/licenses/LICENSE-2.0 3124 * 3125 * Unless required by applicable law or agreed to in writing, software 3126 * distributed under the License is distributed on an "AS IS" BASIS, 3127 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3128 * See the License for the specific language governing permissions and 3129 * limitations under the License. 3130 */class g extends c.ZR{constructor(e,t,r=0){super(d(e),`Firebase Storage: ${t} (${d(e)})`),this.status_=r,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,g.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return d(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage} 3131${this.customData.serverResponse}`:this.message=this._baseMessage}}function d(e){return"storage/"+e}function m(){return new g(a.UNKNOWN,"An unknown error occurred, please check the error payload for server response.")}function p(){return new g(a.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function y(){return new g(a.CANCELED,"User canceled the upload/download.")}function f(){return new g(a.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function v(e){return new g(a.INVALID_ARGUMENT,e)}function _(){return new g(a.APP_DELETED,"The Firebase app was deleted.")}function w(e,t){return new g(a.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function k(e){throw new g(a.INTERNAL_ERROR,"Internal error: "+e)}(n=a||(a={})).UNKNOWN="unknown",n.OBJECT_NOT_FOUND="object-not-found",n.BUCKET_NOT_FOUND="bucket-not-found",n.PROJECT_NOT_FOUND="project-not-found",n.QUOTA_EXCEEDED="quota-exceeded",n.UNAUTHENTICATED="unauthenticated",n.UNAUTHORIZED="unauthorized",n.UNAUTHORIZED_APP="unauthorized-app",n.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",n.INVALID_CHECKSUM="invalid-checksum",n.CANCELED="canceled",n.INVALID_EVENT_NAME="invalid-event-name",n.INVALID_URL="invalid-url",n.INVALID_DEFAULT_BUCKET="invalid-default-bucket",n.NO_DEFAULT_BUCKET="no-default-bucket",n.CANNOT_SLICE_BLOB="cannot-slice-blob",n.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",n.NO_DOWNLOAD_URL="no-download-url",n.INVALID_ARGUMENT="invalid-argument",n.INVALID_ARGUMENT_COUNT="invalid-argument-count",n.APP_DELETED="app-deleted",n.INVALID_ROOT_OPERATION="invalid-root-operation",n.INVALID_FORMAT="invalid-format",n.INTERNAL_ERROR="internal-error",n.UNSUPPORTED_ENVIRONMENT="unsupported-environment";/** 3132 * @license 3133 * Copyright 2017 Google LLC 3134 * 3135 * Licensed under the Apache License, Version 2.0 (the "License");
3136 * you may not use this file except in compliance with the License. 3137 * You may obtain a copy of the License at 3138 * 3139 * http://www.apache.org/licenses/LICENSE-2.0 3140 * 3141 * Unless required by applicable law or agreed to in writing, software 3142 * distributed under the License is distributed on an "AS IS" BASIS, 3143 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3144 * See the License for the specific language governing permissions and 3145 * limitations under the License. 3146 */class P{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){let e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){return"/b/"+encodeURIComponent(this.bucket)+"/o"}static makeFromBucketSpec(e,t){let r;try{r=P.makeFromUrl(e,t)}catch(t){return new P(e,"")}if(""===r.path)return r;throw new g(a.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+e+"'.")}static makeFromUrl(e,t){let r=null,n="([A-Za-z0-9.\\-_]+)",i=RegExp("^gs://"+n+"(/(.*))?$","i");function s(e){e.path_=decodeURIComponent(e.path)}let o=t.replace(/[.]/g,"\\."),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:RegExp(`^https?://${o}/v[A-Za-z0-9_]+/b/${n}/o(/([^?#]*).*)?$`,"i"),indices:{bucket:1,path:3},postModify:s},{regex:RegExp(`^https?://${t===l?"(?:storage.googleapis.com|storage.cloud.google.com)":t}/${n}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:s}];for(let t=0;t<c.length;t++){let n=c[t],i=n.regex.exec(e);if(i){let e=i[n.indices.bucket],t=i[n.indices.path];t||(t=""),r=new P(e,t),n.postModify(r);break}}if(null==r)throw new g(a.INVALID_URL,"Invalid URL '"+e+"'.");return r}}class b{constructor(e){this.promise_=Promise.reject(e)}getPromise(){return this.promise_}cancel(e=!1){}}function E(e){return"string"==typeof e||e instanceof String}function R(e){return S()&&e instanceof Blob}function S(){return"undefined"!=typeof Blob}function I(e,t,r,n){if(n<t)throw v(`Invalid value for '${e}'. Expected ${t} or greater.`);if(n>r)throw v(`Invalid value for '${e}'. Expected ${r} or less.`)}/** 3147 * @license 3148 * Copyright 2017 Google LLC 3149 * 3150 * Licensed under the Apache License, Version 2.0 (the "License"); 3151 * you may not use this file except in compliance with the License. 3152 * You may obtain a copy of the License at 3153 * 3154 * http://www.apache.org/licenses/LICENSE-2.0 3155 * 3156 * Unless required by applicable law or agreed to in writing, software 3157 * distributed under the License is distributed on an "AS IS" BASIS, 3158 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3159 * See the License for the specific language governing permissions and 3160 * limitations under the License. 3161 */function T(e,t,r){let n=t;return null==r&&(n=`https://${t}`),`${r}://${n}/v0${e}`}function C(e){let t=encodeURIComponent,r="?";for(let n in e)e.hasOwnProperty(n)&&(r=r+(t(n)+"=")+t(e[n])+"&");return r.slice(0,-1)}/** 3162 * @license 3163 * Copyright 2022 Google LLC 3164 * 3165 * Licensed under the Apache License, Version 2.0 (the "License"); 3166 * you may not use this file except in compliance with the License. 3167 * You may obtain a copy of the License at 3168 * 3169 * http://www.apache.org/licenses/LICENSE-2.0 3170 * 3171 * Unless required by applicable law or agreed to in writing, software 3172 * distributed under the License is distributed on an "AS IS" BASIS, 3173 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3174 * See the License for the specific language governing permissions and 3175 * limitations under the License. 3176 */function H(e,t){let r=e>=500&&e<600,n=-1!==[408,429].indexOf(e),i=-1!==t.indexOf(e);return r||n||i}(i=s||(s={}))[i.NO_ERROR=0]="NO_ERROR",i[i.NETWORK_ERROR=1]="NETWORK_ERROR",i[i.ABORT=2]="ABORT";/** 3177 * @license 3178 * Copyright 2017 Google LLC 3179 * 3180 * Licensed under the Apache License, Version 2.0 (the "License"); 3181 * you may not use this file except in compliance with the License. 3182 * You may obtain a copy of the License at 3183 * 3184 * http://www.apache.org/licenses/LICENSE-2.0 3185 * 3186 * Unless required by applicable law or agreed to in writing, softw
3186are 3187 * distributed under the License is distributed on an "AS IS" BASIS, 3188 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3189 * See the License for the specific language governing permissions and 3190 * limitations under the License. 3191 */class W{constructor(e,t,r,n,i,a,s,o,c,u,l,h=!0){this.url_=e,this.method_=t,this.headers_=r,this.body_=n,this.successCodes_=i,this.additionalRetryCodes_=a,this.callback_=s,this.errorCallback_=o,this.timeout_=c,this.progressCallback_=u,this.connectionFactory_=l,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_(){let e=(e,t)=>{let r=this.resolve_,n=this.reject_,i=t.connection;if(t.wasSuccessCode)try{let e=this.callback_(i,i.getResponse());void 0!==e?r(e):r()}catch(e){n(e)}else if(null!==i){let e=m();e.serverResponse=i.getErrorText(),n(this.errorCallback_?this.errorCallback_(i,e):e)}else n(t.canceled?this.appDelete_?_():y():p())};this.canceled_?e(!1,new A(!1,null,!0)):this.backoffId_=/** 3192 * @license 3193 * Copyright 2017 Google LLC 3194 * 3195 * Licensed under the Apache License, Version 2.0 (the "License"); 3196 * you may not use this file except in compliance with the License. 3197 * You may obtain a copy of the License at 3198 * 3199 * http://www.apache.org/licenses/LICENSE-2.0 3200 * 3201 * Unless required by applicable law or agreed to in writing, software 3202 * distributed under the License is distributed on an "AS IS" BASIS, 3203 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3204 * See the License for the specific language governing permissions and 3205 * limitations under the License. 3206 */function(e,t,r){let n=1,i=null,a=null,s=!1,o=0,c=!1;function u(...e){c||(c=!0,t.apply(null,e))}function l(t){i=setTimeout(()=>{i=null,e(g,2===o)},t)}function h(){a&&clearTimeout(a)}function g(e,...t){let r;if(c){h();return}if(e||2===o||s){h(),u.call(null,e,...t);return}n<64&&(n*=2),1===o?(o=2,r=0):r=(n+Math.random())*1e3,l(r)}let d=!1;function m(e){!d&&(d=!0,h(),!c&&(null!==i?(e||(o=2),clearTimeout(i),l(0)):e||(o=1)))}return l(0),a=setTimeout(()=>{s=!0,m(!0)},r),m}((e,t)=>{if(t){e(!1,new A(!1,null,!0));return}let r=this.connectionFactory_();this.pendingConnection_=r;let n=e=>{let t=e.loaded,r=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,r)};null!==this.progressCallback_&&r.addUploadProgressListener(n),r.send(this.url_,this.method_,this.body_,this.headers_).then(()=>{null!==this.progressCallback_&&r.removeUploadProgressListener(n),this.pendingConnection_=null;let t=r.getErrorCode()===s.NO_ERROR,i=r.getStatus();if(!t||H(i,this.additionalRetryCodes_)&&this.retry){e(!1,new A(!1,null,r.getErrorCode()===s.ABORT));return}e(!0,new A(-1!==this.successCodes_.indexOf(i),r))})},e,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 A{constructor(e,t,r){this.wasSuccessCode=e,this.connection=t,this.canceled=!!r}}function D(...e){let t="undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0;if(void 0!==t){let r=new t;for(let t=0;t<e.length;t++)r.append(e[t]);return r.getBlob()}if(S())return new Blob(e);throw new g(a.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}/** 3207 * @license 3208 * Copyright 2017 Google LLC 3209 * 3210 * Licensed under the Apache License, Version 2.0 (the "License"); 3211 * you may not use this file except in compliance with the License. 3212 * You may obtain a copy of the License at 3213 * 3214 * http://www.apache.org/licenses/LICENSE-2.0 3215 * 3216 * Unless required by applicable law or agreed to in writing, software 3217 * distributed under the License is distributed on an "AS IS" BASIS, 3218 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3219 * See the License for the specific language governing permissions and 3220 * limitations under the License. 3221 */let U={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class L{constructor(e,t){this.data=e,this.contentType=t||null}}function O(e){let t=[];for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);n<=127?t.push(n):n<=2047?t.push(192|n>>6,128|63&n):(64512&n)==55296?r<e.length-1&&(64512&e.charCodeAt(r+1))==56320?(n=65536|(1023&n)<<10|1023&e.charCodeAt(++r),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n)):t.push(239,191,189):(64512&n)==56320?t.push(239,191,189):t.push(224|n>>12,128|n>>6&63,128|63&n)}return new Uint8Array(t)}function N(e,t){let r;switch(e){case U.BASE64:{let r=-1!==t.indexOf("-"),n=-1!==t.indexOf("_");if(r||n)throw w(e,"Invalid character '"+(r?"-":"_")+"' found: is it base64url encoded?");break}case U.BASE64URL:{let r=-1!==t.indexOf("+"),n=-1!==t.indexOf("/");if(r||n)throw w(e,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");t=t.replace(/-/g,"+").replace(/_/g,"/")}}try{r=/** 3222 * @license 3223 * Copyright 2021 Google LLC 3224 * 3225 * Licensed under the Apache License, Version 2.0 (the "License");
3226 * you may not use this file except in compliance with the License. 3227 * You may obtain a copy of the License at 3228 * 3229 * http://www.apache.org/licenses/LICENSE-2.0 3230 * 3231 * Unless required by applicable law or agreed to in writing, software 3232 * distributed under the License is distributed on an "AS IS" BASIS, 3233 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3234 * See the License for the specific language governing permissions and 3235 * limitations under the License. 3236 */function(e){if("undefined"==typeof atob)throw new g(a.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)}(t)}catch(t){if(t.message.includes("polyfill"))throw t;throw w(e,"Invalid character found")}let n=new Uint8Array(r.length);for(let e=0;e<r.length;e++)n[e]=r.charCodeAt(e);return n}class K{constructor(e){var t;this.base64=!1,this.contentType=null;let r=e.match(/^data:([^,]+)?,/);if(null===r)throw w(U.DATA_URL,"Must be formatted 'data:[<mediatype>][;base64],<data>");let n=r[1]||null;null!=n&&(this.base64=(t=";base64",n.length>=t.length&&n.substring(n.length-t.length)===t),this.contentType=this.base64?n.substring(0,n.length-7):n),this.rest=e.substring(e.indexOf(",")+1)}}/** 3237 * @license 3238 * Copyright 2017 Google LLC 3239 * 3240 * Licensed under the Apache License, Version 2.0 (the "License"); 3241 * you may not use this file except in compliance with the License. 3242 * You may obtain a copy of the License at 3243 * 3244 * http://www.apache.org/licenses/LICENSE-2.0 3245 * 3246 * Unless required by applicable law or agreed to in writing, software 3247 * distributed under the License is distributed on an "AS IS" BASIS, 3248 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3249 * See the License for the specific language governing permissions and 3250 * limitations under the License. 3251 */class x{constructor(e,t){let r=0,n="";R(e)?(this.data_=e,r=e.size,n=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),r=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),r=e.length),this.size_=r,this.type_=n}size(){return this.size_}type(){return this.type_}slice(e,t){if(!R(this.data_))return new x(new Uint8Array(this.data_.buffer,e,t-e),!0);{var r;let n=(r=this.data_).webkitSlice?r.webkitSlice(e,t):r.mozSlice?r.mozSlice(e,t):r.slice?r.slice(e,t):null;return null===n?null:new x(n)}}static getBlob(...e){if(S()){let t=e.map(e=>e instanceof x?e.data_:e);return new x(D.apply(null,t))}{let t=e.map(e=>E(e)?function(e,t){switch(e){case U.RAW:return new L(O(t));case U.BASE64:case U.BASE64URL:return new L(N(e,t));case U.DATA_URL:return new L(function(e){let t=new K(e);return t.base64?N(U.BASE64,t.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw w(U.DATA_URL,"Malformed data URL.")}return O(t)}(t.rest)}(t),new K(t).contentType)}throw m()}(U.RAW,e).data:e.data_),r=0;t.forEach(e=>{r+=e.byteLength});let n=new Uint8Array(r),i=0;return t.forEach(e=>{for(let t=0;t<e.length;t++)n[i++]=e[t]}),new x(n,!0)}}uploadData(){return this.data_}}/** 3252 * @license 3253 * Copyright 2017 Google LLC 3254 * 3255 * Licensed under the Apache License, Version 2.0 (the "License"); 3256 * you may not use this file except in compliance with the License. 3257 * You may obtain a copy of the License at 3258 * 3259 * http://www.apache.org/licenses/LICENSE-2.0 3260 * 3261 * Unless required by applicable law or agreed to in writing, software 3262 * distributed under the License is distributed on an "AS IS" BASIS, 3263 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3264 * See the License for the specific language governing permissions and 3265 * limitations under the License. 3266 */function M(e){var t;let r;try{r=JSON.parse(e)}catch(e){return null}return"object"!=typeof(t=r)||Array.isArray(t)?null:r}function F(e){let t=e.lastIndexOf("/",e.length-2);return -1===t?e:e.slice(t+1)}/** 3267 * @license 3268 * Copyright 2017 Google LLC 3269 * 3270 * Licensed under the Apache License, Version 2.0 (the "License");
3271 * you may not use this file except in compliance with the License. 3272 * You may obtain a copy of the License at 3273 * 3274 * http://www.apache.org/licenses/LICENSE-2.0 3275 * 3276 * Unless required by applicable law or agreed to in writing, software 3277 * distributed under the License is distributed on an "AS IS" BASIS, 3278 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3279 * See the License for the specific language governing permissions and 3280 * limitations under the License. 3281 */function B(e,t){return t}class V{constructor(e,t,r,n){this.server=e,this.local=t||e,this.writable=!!r,this.xform=n||B}}let q=null;function j(){if(q)return q;let e=[];e.push(new V("bucket")),e.push(new V("generation")),e.push(new V("metageneration")),e.push(new V("name","fullPath",!0));let t=new V("name");t.xform=function(e,t){return!E(t)||t.length<2?t:F(t)},e.push(t);let r=new V("size");return r.xform=function(e,t){return void 0!==t?Number(t):t},e.push(r),e.push(new V("timeCreated")),e.push(new V("updated")),e.push(new V("md5Hash",null,!0)),e.push(new V("cacheControl",null,!0)),e.push(new V("contentDisposition",null,!0)),e.push(new V("contentEncoding",null,!0)),e.push(new V("contentLanguage",null,!0)),e.push(new V("contentType",null,!0)),e.push(new V("metadata","customMetadata",!0)),q=e}function G(e,t,r){let n=M(t);return null===n?null:function(e,t,r){let n={};n.type="file";let i=r.length;for(let e=0;e<i;e++){let i=r[e];n[i.local]=i.xform(n,t[i.server])}return Object.defineProperty(n,"ref",{get:function(){let t=new P(n.bucket,n.fullPath);return e._makeStorageReference(t)}}),n}(e,n,r)}function z(e,t){let r={},n=t.length;for(let i=0;i<n;i++){let n=t[i];n.writable&&(r[n.server]=e[n.local])}return JSON.stringify(r)}class ${constructor(e,t,r,n){this.url=e,this.method=t,this.handler=r,this.timeout=n,this.urlParams={},this.headers={},this.body=null,this.errorHandler=null,this.progressCallback=null,this.successCodes=[200],this.additionalRetryCodes=[]}}/** 3282 * @license 3283 * Copyright 2017 Google LLC 3284 * 3285 * Licensed under the Apache License, Version 2.0 (the "License"); 3286 * you may not use this file except in compliance with the License. 3287 * You may obtain a copy of the License at 3288 * 3289 * http://www.apache.org/licenses/LICENSE-2.0 3290 * 3291 * Unless required by applicable law or agreed to in writing, software 3292 * distributed under the License is distributed on an "AS IS" BASIS, 3293 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3294 * See the License for the specific language governing permissions and 3295 * limitations under the License. 3296 */function J(e){if(!e)throw m()}function Q(e,t){return function(r,n){let i=G(e,n,t);return J(null!==i),i}}function X(e){return function(t,r){var n,i;let s;return 401===t.getStatus()?s=t.getErrorText().includes("Firebase App Check token is invalid")?new g(a.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project."):new g(a.UNAUTHENTICATED,"User is not authenticated, please authenticate using Firebase Authentication and try again."):402===t.getStatus()?(n=e.bucket,s=new g(a.QUOTA_EXCEEDED,"Quota for bucket '"+n+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===t.getStatus()?(i=e.path,s=new g(a.UNAUTHORIZED,"User does not have permission to access '"+i+"'.")):s=r,s.status=t.getStatus(),s.serverResponse=r.serverResponse,s}}function Y(e){let t=X(e);return function(r,n){let i=t(r,n);if(404===r.getStatus()){var s;s=e.path,i=new g(a.OBJECT_NOT_FOUND,"Object '"+s+"' does not exist.")}return i.serverResponse=n.serverResponse,i}}function Z(e,t,r){let n=Object.assign({},r);return n.fullPath=e.path,n.size=t.size(),!n.contentType&&(n.contentType=t&&t.type()||"application/octet-stream"),n}class ee{constructor(e,t,r,n){this.current=e,this.total=t,this.finalized=!!r,this.metadata=n||null}}function et(e,t){let r=null;try{r=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){J(!1)}return J(!!r&&-1!==(t||["active"]).indexOf(r)),r}let er={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"};function en(e){switch(e){case"running":case"pausing":case"canceling":return er.RUNNING;case"paused":return er.PAUSED;case"success":return er.SUCCESS;case"canceled":return er.CANCELED;default:return er.ERROR}}/** 3297 * @license 3298 * Copyright 2017 Google LLC 3299 * 3300 * Licensed under the Apache License, Version 2.0 (the "License");
3301 * you may not use this file except in compliance with the License. 3302 * You may obtain a copy of the License at 3303 * 3304 * http://www.apache.org/licenses/LICENSE-2.0 3305 * 3306 * Unless required by applicable law or agreed to in writing, software 3307 * distributed under the License is distributed on an "AS IS" BASIS, 3308 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3309 * See the License for the specific language governing permissions and 3310 * limitations under the License. 3311 */class ei{constructor(e,t,r){"function"==typeof e||null!=t||null!=r?(this.next=e,this.error=null!=t?t:void 0,this.complete=null!=r?r:void 0):(this.next=e.next,this.error=e.error,this.complete=e.complete)}}/** 3312 * @license 3313 * Copyright 2017 Google LLC 3314 * 3315 * Licensed under the Apache License, Version 2.0 (the "License"); 3316 * you may not use this file except in compliance with the License. 3317 * You may obtain a copy of the License at 3318 * 3319 * http://www.apache.org/licenses/LICENSE-2.0 3320 * 3321 * Unless required by applicable law or agreed to in writing, software 3322 * distributed under the License is distributed on an "AS IS" BASIS, 3323 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3324 * See the License for the specific language governing permissions and 3325 * limitations under the License. 3326 */function ea(e){return(...t)=>{Promise.resolve().then(()=>e(...t))}}class es{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=s.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=s.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=s.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,r,n){if(this.sent_)throw k("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==n)for(let e in n)n.hasOwnProperty(e)&&this.xhr_.setRequestHeader(e,n[e].toString());return void 0!==r?this.xhr_.send(r):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw k("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw k("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return -1}}getResponse(){if(!this.sent_)throw k("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw k("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)}}class eo extends es{initXhr(){this.xhr_.responseType="text"}}function ec(){return new eo}/** 3327 * @license 3328 * Copyright 2017 Google LLC 3329 * 3330 * Licensed under the Apache License, Version 2.0 (the "License"); 3331 * you may not use this file except in compliance with the License. 3332 * You may obtain a copy of the License at 3333 * 3334 * http://www.apache.org/licenses/LICENSE-2.0 3335 * 3336 * Unless required by applicable law or agreed to in writing, software 3337 * distributed under the License is distributed on an "AS IS" BASIS, 3338 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3339 * See the License for the specific language governing permissions and 3340 * limitations under the License. 3341 */class eu{constructor(e,t,r=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=r,this._mappings=j(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals(a.CANCELED))this._needToFetchStatus=!0,this.completeTransitions_();else{let t=this.isExponentialBackoffExpired();if(H(e.status,[])){if(t)e=p();else{this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,this.completeTransitions_();return}}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals(a.CANCELED)?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise((e,t)=>
3341{this._resolve=e,this._reject=t,this._start()}),this._promise.then(null,()=>{})}isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}_makeProgressCallback(){let e=this._transferred;return t=>this._updateProgress(e+t)}_shouldDoResumable(e){return e.size()>262144}_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(e){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then(([t,r])=>{switch(this._state){case"running":e(t,r);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}})}_createResumable(){this._resolveToken((e,t)=>{let r=function(e,t,r,n,i){let a=t.bucketOnlyServerUrl(),s=Z(t,n,i),o={name:s.fullPath},c=T(a,e.host,e._protocol),u={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${n.size()}`,"X-Goog-Upload-Header-Content-Type":s.contentType,"Content-Type":"application/json; charset=utf-8"},l=z(s,r),h=new $(c,"POST",function(e){let t;et(e);try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){J(!1)}return J(E(t)),t},e.maxUploadRetryTime);return h.urlParams=o,h.headers=u,h.body=l,h.errorHandler=X(t),h}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),n=this._ref.storage._makeRequest(r,ec,e,t);this._request=n,n.getPromise().then(e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()},this._errorHandler)})}_fetchStatus(){let e=this._uploadUrl;this._resolveToken((t,r)=>{let n=function(e,t,r,n){let i=new $(r,"POST",function(e){let t=et(e,["active","final"]),r=null;try{r=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){J(!1)}r||J(!1);let i=Number(r);return J(!isNaN(i)),new ee(i,n.size(),"final"===t)},e.maxUploadRetryTime);return i.headers={"X-Goog-Upload-Command":"query"},i.errorHandler=X(t),i}(this._ref.storage,this._ref._location,e,this._blob),i=this._ref.storage._makeRequest(n,ec,t,r);this._request=i,i.getPromise().then(e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()},this._errorHandler)})}_continueUpload(){let e=262144*this._chunkMultiplier,t=new ee(this._transferred,this._blob.size()),r=this._uploadUrl;this._resolveToken((n,i)=>{let s;try{s=function(e,t,r,n,i,s,o,c){let u=new ee(0,0);if(o?(u.current=o.current,u.total=o.total):(u.current=0,u.total=n.size()),n.size()!==u.total)throw new g(a.SERVER_FILE_WRONG_SIZE,"Server recorded incorrect upload file size, please retry the upload.");let l=u.total-u.current,h=l;i>0&&(h=Math.min(h,i));let d=u.current,m=d+h,p={"X-Goog-Upload-Command":0===h?"finalize":l===h?"upload, finalize":"upload","X-Goog-Upload-Offset":`${u.current}`},y=n.slice(d,m);if(null===y)throw f();let v=new $(r,"POST",function(e,r){let i;let a=et(e,["active","final"]),o=u.current+h,c=n.size();return i="final"===a?Q(t,s)(e,r):null,new ee(o,c,"final"===a,i)},t.maxUploadRetryTime);return v.headers=p,v.body=y.uploadData(),v.progressCallback=c||null,v.errorHandler=X(e),v}(this._ref._location,this._ref.storage,r,this._blob,e,this._mappings,t,this._makeProgressCallback())}catch(e){this._error=e,this._transition("error");return}let o=this._ref.storage._makeRequest(s,ec,n,i,!1);this._request=o,o.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(){262144*this._chunkMultiplier*2<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken((e,t)=>{let r=function(e,t,r){let n=T(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime,a=new $(n,"GET",Q(e,r),i);return a.errorHandler=Y(t),a}(this._ref.storage,this._ref._location,this._mappings),n=this._ref.storage._makeRequest
3341(r,ec,e,t);this._request=n,n.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._transition("success")},this._metadataErrorHandler)})}_oneShotUpload(){this._resolveToken((e,t)=>{let r=function(e,t,r,n,i){let a=t.bucketOnlyServerUrl(),s={"X-Goog-Upload-Protocol":"multipart"},o=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();s["Content-Type"]="multipart/related; boundary="+o;let c=Z(t,n,i),u="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+z(c,r)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",l=x.getBlob(u,n,"\r\n--"+o+"--");if(null===l)throw f();let h={name:c.fullPath},g=T(a,e.host,e._protocol),d=e.maxUploadRetryTime,m=new $(g,"POST",Q(e,r),d);return m.urlParams=h,m.headers=s,m.body=l.uploadData(),m.errorHandler=X(t),m}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),n=this._ref.storage._makeRequest(r,ec,e,t);this._request=n,n.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")},this._errorHandler)})}_updateProgress(e){let 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":let t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":case"error":case"success":this._state=e,this._notifyObservers();break;case"canceled":this._error=y(),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(){let e=en(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,r,n){let i=new ei(t||void 0,r||void 0,n||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){let t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise(),this._observers.slice().forEach(e=>{this._notifyObserver(e)})}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(en(this._state)){case er.SUCCESS:ea(this._resolve.bind(null,this.snapshot))();break;case er.CANCELED:case er.ERROR:ea(this._reject.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(en(this._state)){case er.RUNNING:case er.PAUSED:e.next&&ea(e.next.bind(e,this.snapshot))();break;case er.SUCCESS:e.complete&&ea(e.complete.bind(e))();break;case er.CANCELED:case er.ERROR:default:e.error&&ea(e.error.bind(e,this._error))()}}resume(){let e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){let e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){let e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}/** 3342 * @license 3343 * Copyright 2019 Google LLC 3344 * 3345 * Licensed under the Apache License, Version 2.0 (the "License"); 3346 * you may not use this file except in compliance with the License. 3347 * You may obtain a copy of the License at 3348 * 3349 * http://www.apache.org/licenses/LICENSE-2.0 3350 * 3351 * Unless required by applicable law or agreed to in writing, software 3352 * distributed under the License is distributed on an "AS IS" BASIS, 3353 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3354 * See the License for the specific language governing permissions and 3355 * limitations under the License.
3356 */class el{constructor(e,t){this._service=e,t instanceof P?this._location=t:this._location=P.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new el(e,t)}get root(){let e=new P(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return F(this._location.path)}get storage(){return this._service}get parent(){let e=/** 3357 * @license 3358 * Copyright 2017 Google LLC 3359 * 3360 * Licensed under the Apache License, Version 2.0 (the "License"); 3361 * you may not use this file except in compliance with the License. 3362 * You may obtain a copy of the License at 3363 * 3364 * http://www.apache.org/licenses/LICENSE-2.0 3365 * 3366 * Unless required by applicable law or agreed to in writing, software 3367 * distributed under the License is distributed on an "AS IS" BASIS, 3368 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 3369 * See the License for the specific language governing permissions and 3370 * limitations under the License. 3371 */function(e){if(0===e.length)return null;let t=e.lastIndexOf("/");return -1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;let t=new P(this._location.bucket,e);return new el(this._service,t)}_throwIfRoot(e){if(""===this._location.path)throw new g(a.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 eh(e,t){let r=null==t?void 0:t[h];return null==r?null:P.makeFromBucketSpec(r,e)}class eg{constructor(e,t,r,n,i){this.app=e,this._authProvider=t,this._appCheckProvider=r,this._url=n,this._firebaseVersion=i,this._bucket=null,this._host=l,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,null!=n?this._bucket=P.makeFromBucketSpec(n,this._host):this._bucket=eh(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=P.makeFromBucketSpec(this._url,e):this._bucket=eh(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){I("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){I("time",0,Number.POSITIVE_INFINITY,e),this._maxOperationRetryTime=e}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;let e=this._authProvider.getImmediate({optional:!0});if(e){let t=await e.getToken();if(null!==t)return t.accessToken}return null}async _getAppCheckToken(){let 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 el(this,e)}_makeRequest(e,t,r,n,i=!0){if(this._deleted)return new b(_());{let a=function(e,t,r,n,i,a,s=!0){let o=C(e.urlParams),c=e.url+o,u=Object.assign({},e.headers);return t&&(u["X-Firebase-GMPID"]=t),null!==r&&r.length>0&&(u.Authorization="Firebase "+r),u["X-Firebase-Storage-Version"]="webjs/"+(null!=a?a:"AppManager"),null!==n&&(u["X-Firebase-AppCheck"]=n),new W(c,e.method,u,e.body,e.successCodes,e.additionalRetryCodes,e.handler,e.errorHandler,e.timeout,e.progressCallback,i,s)}(e,this._appId,r,n,t,this._firebaseVersion,i);return this._requests.add(a),a.getPromise().then(()=>this._requests.delete(a),()=>this._requests.delete(a)),a}}async makeRequestWithTokens(e,t){let[r,n]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,r,n).getPromise()}}let ed="@firebase/storage",em="0.13.2",ep="storage";function ey(e,t,r){var n;return(n=e=(0,c.m9)(e))._throwIfRoot("uploadBytesResumable"),new eu(n,new x(t),r)}function ef(e){return function(e){e._throwIfRoot("getDownloadURL");let t=function(e,t,r){let n=new $(T(t.fullServerUrl(),e.host,e._protocol),"GET",function(t,n){let i=G(e,n,r);return J(null!==i),function(e,t,r,n){let i=M(t);if(null===i||!E(i.downloadTokens))return null;let a=i.downloadTokens;if(0===a.length)return null;let s=encodeURIComponent;return a.split(",").map(t=>{let i=e.bucket,a=e.fullPath;return T("/b/"+s(i)+"/o/"+s(a),r,n)+C({alt:"media",token:t})})[0]}(i,n,e.host,e._protocol)},e.maxOperationRetryTime);return n.errorHandler=Y(t),n}(e.storage,e._location,j());return e.storage.makeRequestWithTokens(t,ec).then(e=>{if(null===e)throw new g(a.NO_DOWNLOAD_URL,"The given file does not have any download URLs.");return e})}(e=(0,c.m9)(e))}function ev(e){return function(e){e._throwIfRoot("deleteObject");let t=function(e,t){let r=new $(T(t.fullServerUrl(),e.host,e._protocol),"DELETE",function(e,t){},e.maxOperationRetryTime);return r.successCodes=[200,204],r.errorHandler=Y(t),r}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,ec)}(e=(0,c.m9)(e))}function e_(e,t){return function(e,t){if(!(t&&/^[A-Za-z]+:\/\//.test(t)))return function e(t,r){if(t instanceof eg){if(null==t._bucket)throw new g(a.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+h+"' property when initializing the app?");let n=new el(t,t._bucket);return null!=r?e(n,r):n}return void 0!==r?function(e,t){let r=function(e,t){let r=t.split("/").filter(e=>e.length>0).join("/");return 0===e.length?r:e+"/"+r}(e._location.path,t),n=new P(e._location.bucket,r);return new el(e.storage,n)}(t,r):t}(e,t);if(e instanceof eg)return new el(e,t);
3371throw v("To use ref(service, url), the first argument must be a Storage instance.")}(e=(0,c.m9)(e),t)}function ew(e=(0,o.Mq)(),t){e=(0,c.m9)(e);let r=(0,o.qX)(e,ep).getImmediate({identifier:t}),n=(0,c.P0)("storage");return n&&function(e,t,r,n={}){!function(e,t,r,n={}){e.host=`${t}:${r}`,e._protocol="http";let{mockUserToken:i}=n;i&&(e._overrideAuthToken="string"==typeof i?i:(0,c.Sg)(i,e.app.options.projectId))}(e,t,r,n)}(r,...n),r}(0,o.Xd)(new u.wA(ep,function(e,{instanceIdentifier:t}){return new eg(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t,o.Jn)},"PUBLIC").setMultipleInstances(!0)),(0,o.KN)(ed,em,""),(0,o.KN)(ed,em,"esm2017")},6531:function(e,t,r){"use strict";let n,i,a;r.d(t,{Lj:function(){return y},X3:function(){return p}});let s=(e,t)=>t.some(t=>e instanceof t),o=new WeakMap,c=new WeakMap,u=new WeakMap,l=new WeakMap,h=new WeakMap,g={get(e,t,r){if(e instanceof IDBTransaction){if("done"===t)return c.get(e);if("objectStoreNames"===t)return e.objectStoreNames||u.get(e);if("store"===t)return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return d(e[t])},set:(e,t,r)=>(e[t]=r,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function d(e){var t;if(e instanceof IDBRequest)return function(e){let t=new Promise((t,r)=>{let n=()=>{e.removeEventListener("success",i),e.removeEventListener("error",a)},i=()=>{t(d(e.result)),n()},a=()=>{r(e.error),n()};e.addEventListener("success",i),e.addEventListener("error",a)});return t.then(t=>{t instanceof IDBCursor&&o.set(t,e)}).catch(()=>{}),h.set(t,e),t}(e);if(l.has(e))return l.get(e);let r="function"==typeof(t=e)?t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(i||(i=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(m(this),e),d(o.get(this))}:function(...e){return d(t.apply(m(this),e))}:function(e,...r){let n=t.call(m(this),e,...r);return u.set(n,e.sort?e.sort():[e]),d(n)}:(t instanceof IDBTransaction&&function(e){if(c.has(e))return;let t=new Promise((t,r)=>{let n=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",a),e.removeEventListener("abort",a)},i=()=>{t(),n()},a=()=>{r(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",i),e.addEventListener("error",a),e.addEventListener("abort",a)});c.set(e,t)}(t),s(t,n||(n=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])))?new Proxy(t,g):t;return r!==e&&(l.set(e,r),h.set(r,e)),r}let m=e=>h.get(e);function p(e,t,{blocked:r,upgrade:n,blocking:i,terminated:a}={}){let s=indexedDB.open(e,t),o=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),r&&s.addEventListener("blocked",e=>r(e.oldVersion,e.newVersion,e)),o.then(e=>{a&&e.addEventListener("close",()=>a()),i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}function y(e,{blocked:t}={}){let r=indexedDB.deleteDatabase(e);return t&&r.addEventListener("blocked",e=>t(e.oldVersion,e)),d(r).then(()=>void 0)}let f=["get","getKey","getAll","getAllKeys","count"],v=["put","add","delete","clear"],_=new Map;function w(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t))return;if(_.get(t))return _.get(t);let r=t.replace(/FromIndex$/,""),n=t!==r,i=v.includes(r);if(!(r in(n?IDBIndex:IDBObjectStore).prototype)||!(i||f.includes(r)))return;let a=async function(e,...t){let a=this.transaction(e,i?"readwrite":"readonly"),s=a.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[r](...t),i&&a.done]))[0]};return _.set(t,a),a}g={...a=g,get:(e,t,r)=>w(e,t)||a.get(e,t,r),has:(e,t)=>!!w(e,t)||a.has(e,t)}}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[774,179],function(){return t(6840),t(9090)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.